Click here to load reader

John Godoi - Bibliotecas Java para ciência de dados - #oowBR #JavaOneBR

  • View
    61

  • Download
    1

Embed Size (px)

Text of John Godoi - Bibliotecas Java para ciência de dados - #oowBR #JavaOneBR

  • 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

Search related