Click here to load reader
View
61
Download
1
Embed Size (px)
Java Libraries for Data Science
John [email protected]_godoi
Here is John Godoi speaking
Bacharel em Cincia da Computao pelo ICT - UNIFESP - SJC
Mestrando em Cincia da Computao pelo ICT - UNIFESP - SJC
Here is John Godoi speaking
Bacharel em Cincia da Computao pelo ICT - UNIFESP - SJC
Mestrando em Cincia da Computao pelo ICT - UNIFESP - SJC
Pesquisador bolsista do Centro de Arqueologia e Antropologia Forense da
UNIFESP
http://www.lawrence.edu/academics/s
tudy/anthropology
http://www.lawrence.edu/academics/study/anthropology
Here is John Godoi speaking
Bacharel em Cincia da Computao pelo ICT - UNIFESP - SJC
Mestrando em Cincia da Computao pelo ICT - UNIFESP - SJC
Pesquisador bolsista do Centro de Arqueologia e Antropologia Forense da
UNIFESP
~ 5 anos como Desenvolvedor Java (Spring, Hibernate, Struts, Maven, )
Here is John Godoi speaking
Bacharel em Cincia da Computao pelo ICT - UNIFESP - SJC
Mestrando em Cincia da Computao pelo ICT - UNIFESP - SJC
Pesquisador bolsista do Centro de Arqueologia e Antropologia Forense da
UNIFESP
~ 5 anos como Desenvolvedor Java (Spring, Hibernate, Struts, Maven, )
Computao forense em multimdia
Processamento de Imagens
Aprendizado de Mquina
For Todays Graduate, Just One Word: Statistics - NyTimes
People think of field archaeology as Indiana Jones, but much of what you really do
is data analysis, - Ms. Grimes - Google
I keep saying that the sexy job in the next 10 years will be statisticians, said Hal
Varian, chief economist at Google. And Im not kidding.
But the big problem is going to be the ability of humans to use, analyze and make
sense of the data. - an economist and director of the MITs Center for Digital
Business
http://www.nytimes.com/2009/08/06/technology/06stats.html
http://www.nytimes.com/2009/08/06/technology/06stats.html
O que Cincia dos Dados?
Uma forma de definir cincia dos dados como uma passo revolucionrio da interdisciplinaridade de reas
como:
Anlise de negocios que incorporam
Cincia da Computao,
Modelagem,
Estatsticas,
Anlises,
e matemtica.
http://datascience.nyu.edu/what-is-data-science
http://datascience.nyu.edu/what-is-data-science
As 3 fases da Cincia dos Dados
1. Organizar os dados
a localizao fsica e
estrutura dos dados so planejadas
e executadas
http://www.datascientists.net/what-is-data-science
http://www.datascientists.net/what-is-data-science
As 3 fases da Cincia dos Dados
1. Organizar os dados
a localizao fsica e
estrutura dos dados so planejadas
e executadas
2. Empacotar os dados
Prottipos so criados,
as estatsticas so realizadas
e a visualizao criada.
http://www.datascientists.net/what-is-data-science
http://www.datascientists.net/what-is-data-science
As 3 fases da Cincia dos Dados
1. Organizar os dados
a localizao fsica e
estrutura dos dados so planejadas
e executadas
2. Empacotar os dados
Prottipos so criados,
as estatsticas so realizadas
e a visualizao criada.
3. Entregar os dados
A histria contada
http://www.datascientists.net/what-is-data-science
http://www.datascientists.net/what-is-data-science
Organizao
Conhea o domnio
1. O que so os dados?
O que representa cada registro?
Como esses dados foram obtidos ou devem ser obtidos?
Conhea o domnio
1. O que so os dados?
O que representa cada registro?
Como esses dados foram obtidos ou devem ser obtidos?
2. Qual a relao entre os dados?
Entre cada registro
Entre cada coluna (varivel)
Conhea o domnio
1. O que so os dados?
O que representa cada registro?
Como esses dados foram obtidos ou devem ser obtidos?
2. Qual a relao entre os dados?
Entre cada registro
Entre cada coluna (varivel)
3. O que voc quer descobrir nos dados?
O que se espera entender a respeito dos dados?
Qual o valor esperado a ser obtido com a anlise desses dados?
Tipos comuns de arquivos
Tipos comuns de arquivos
CSV
Arquivos em ASC, em que cada coluna separada por vrgulas ,
Tipos comuns de arquivos
CSV private static final String [] FILE_HEADER_MAPPING = {AUTHORS, TITLE, YEAR, SOURCE};public List loadArticlesFromCSV(String filename) {
ArrayList articles = Lists.newArrayList();
try {
FileReader reader = new FileReader(filename);
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING);
CSVParser csvFileParser = new CSVParser(reader, csvFileFormat);
List csvRecords = csvFileParser.getRecords();
for (int i = 1; i < csvRecords.size(); i++) {
Article article = new Article();
CSVRecord csvRecord = csvRecords.get(i);
article.setCiteQuantity(csvRecord.get(AUTHORS));
//...
articles.add(article);
}
} catch (Exception e) {
e.printStackTrace();
}
return articles;
OpenCSV
Biblioteca Apache para leitura
de arquivos CSV
http://opencsv.sourceforge.net/
http://opencsv.sourceforge.net/
Tipos comuns de arquivos
DAT
Podem ser binrios ou estarem em asc
necessrio conhecer como os dados esto organizados
Pode ser similar ao CSVDataInputStream input = new DataInputStream(new FileInputStream( "data.dat")); while (input.available() > 0) {
int x = input.readInt();
System.out.println(x);
}
input.close();
http://stackoverflow.com/questions/23141851/reading-a-dat-file-into-an-array-in-java
http://stackoverflow.com/questions/23141851/reading-a-dat-file-into-an-array-in-java
Tipos comuns de arquivos
JSON
composto por duas estruturas:
Uma coleo de pares de chaves/valores que representa um objeto.
Uma lista ordenada de valores.
http://www.json.org/
http://www.json.org/
Tipos comuns de arquivos
JSON
composto por duas estruturas:
Uma coleo de pares de chaves/valores que representa um objeto.
Uma lista ordenada de valores.
{"value1":1,"value2":"abc"}
https://github.com/google/gson
https://github.com/google/gson
Tipos comuns de arquivos
JSON
composto por duas estruturas:
Uma coleo de pares de chaves/valores que representa um objeto.
Uma lista ordenada de valores.
{"value1":1,"value2":"abc"}
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
https://github.com/google/gson
https://github.com/google/gson
Tipos comuns de arquivos
JSON
composto por duas estruturas:
Uma coleo de pares de chaves/valores que representa um objeto.
Uma lista ordenada de valores.
{"value1":1,"value2":"abc"}
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
https://github.com/google/gson
https://github.com/google/gson
Tipos comuns de arquivos
XML
Arquivo, em asc, que usa estrutura baseada
em rvore (DOM) formada por tags
29
mkyong
http://www.mkyong.com/java/jaxb-hello-world-example/
http://www.mkyong.com/java/jaxb-hello-world-example/
Tipos comuns de arquivos
XML
Arquivo, em asc, que usa estrutura baseada
em rvore (DOM) formada por tags
http://www.mkyong.com/java/jaxb-hello-world-example/
@XmlRootElement
public class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
//outros getters e setters
}
JAXB
API do JavaX para
manipulao de arquivos XML
http://www.mkyong.com/java/jaxb-hello-world-example/
Tipos comuns de arquivos
XML
Arquivo, em asc, que usa estrutura baseada
em rvore (DOM) formada por tags
http://www.mkyong.com/java/jaxb-hello-world-example/
File file = new File("C:\\file.xml");
JAXBContext jaxbContext =
JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller =
jaxbContext.createUnmarshaller();
Customer customer = (Customer)
jaxbUnmarshaller.unmarshal(file);
System.out.println(customer);
JAXB
API do JavaX para
manipulao de arquivos XML
http://www.mkyong.com/java/jaxb-hello-world-example/
Representao de Dados
Collections com tipos primitivos
Streams
Inseridas na Collection API do Java 8
Suporte a tipos primitivos sem a realizao de autoboxing
Paralelizao nativa do processamento dos dados
API Funcional
Collections com tipos primitivos
Streams
Inseridas na Collection API do Java 8
Suporte a tipos primitivos sem a realizao de autoboxing
Paralelizao nativa do processamento dos dados
API Funcional
public class StatisticalProcessor {
public static double calculateAverage(double ...values) {
return DoubleStream.of(val