Pré-processamento de Dados

Tamanho: px
Começar a partir da página:

Download "Pré-processamento de Dados"

Transcrição

1 Pré-processamento de Dados Fabrício Olivetti de França Universidade Federal do ABC

2 Pré-Processamento dos Dados

3 Tópicos 1. Pré-Processamento dos Dados 2. Conceitos Básicos 3. Representação Textual 4. Padrões Recorrentes 5. Padronizando e Normalizando os Atributos 6. Paralelizando o Pré-Processamento 1

4 Conceitos Básicos

5 Data Sets Conjunto de objetos de dados. Objeto de dados é uma entidade: funcionário de uma empresa medições da atividade cerebral em um paciente descrição de uma ocorrência policial 2

6 Objetos de Dados Idade Local Valor do impulso elétrico etc. 3

7 Tipos de Atributos Categóricos: Nominal Binário Ordinal Numéricos: Intervalar Razão 4

8 Atributos Nominais Símbolos ou nomes descritivos: Descreve uma característica Não apresentam relação de ordem, apenas igualdade Ex.: ocupação, cor dos olhos, etc. 5

9 Atributos Binários Atributo nominal com apenas dois valores possíveis: 0 ou 1. Ex.: resultado de um exame, gênero, etc. 6

10 Atributos Ordinais Valores que apresentam ordem, mas não possuem relação de magnitude. Ex.: {péssimo, ruim, regular, bom, ótimo} 7

11 Atributos Intervalares Atributo numérico com relação de ordem e magnitude. Ex.: Temperatura de 20 C é 10 unidades mais quente do que 10 C. Não podemos dizer que 20 C é duas vezes mais quente do que 10 C. 8

12 Atributos Intervalares O 0 absoluto em Celsius está em C. 20 C está a de nenhum calor, o dobro desse calor seria ou C. 9

13 Atributos de Razões Atributos numéricos com a mesmas propriedades do intervalar, mas com um ponto-zero. Altura Contagem de palavras Temperatura em Kelvin 10

14 Representando Objetos Precisamos de uma representação numérica. Dados numéricos: ok! (ou quase sempre ok) Dados nominais: vetor binário Dados ordinais: rank 11

15 Representando Objetos Tabela 1: Base de Dados. Profissão Conceito Nota Engenheiro A 9.5 Professor B 8.4 Engenheiro A 7.3 Gerente D

16 Atributos Categóricos Binários Tabela 2: Base de Dados. Engenheiro Professor Gerente Conceito Nota A B A D

17 Atributos Ordinais Numéricos # conceitos = 5 Rank: 5, 4, 3, 2, 1 z = (rank 1) # 1 Tabela 3: Base de Dados. Engenheiro Professor Gerente Conceito Nota

18 Leitura da Base de Dados data Profissao = Engenheiro Professor Gerente Estudante deriving (Show, Read, Eq, Enum, Bounded) data Conceito = F D C B A deriving (Show, Read, Enum) type Nota = Double type Objeto = (Profissao, Conceito, Nota) type Objeto = [Double] 15

19 Leitura da Base de Dados parsefile :: String -> [Objeto] parsefile file = map parseline (lines file) where parseline l = toobj (words l) toobj [w1, w2, w3] = (read w1 :: Profissao, read w2 :: Conceito, read w3 :: Nota) A função words separa uma string em uma lista de strings cortando nos caracteres de espaço. 16

20 Leitura da Base de Dados transformdata :: [Objeto] -> [Objeto ] transformdata data = map parseobj data where parseobj (prof, conc, nota) = (binariza prof) ++ [rank conc, nota] 17

21 Leitura da Base de Dados binariza :: Profissao -> [Double] binariza p = map bool2double [p == p p <- profissoes] where profissoes = [minbound..] :: [Profissao] bool2double True = 1.0 bool2double _ =

22 Leitura da Base de Dados rank :: Conceito -> Double rank co = (fromenum co) / (fromenum A) where fromenum = fromintegral. fromenum 19

23 Fluxo dos Dados A leitura e transformação dos dados segue um fluxo bem definido. É fácil perceber que, enquanto uma linha do arquivo está sendo processada pela função transformdata, outra pode ser processada pela função parsefile. Arquivo parsefile transformdata 20

24 Representação Textual

25 Mineração de Textos Documentos de textos: Não possuem representação vetorial Interdependência dos atributos Tamanho variável 22

26 Textos como conjuntos Se representarmos os documentos de textos como o conjunto de suas palavras: D1 = Estou assistindo a uma aula de Big Data, mas tudo que aprendi foi Haskell durante a aula! D2 = Hoje aprendi Haskell na aula, será que o que aprendi será útil na minha vida? 23

27 Textos como conjuntos Se representarmos os documentos de textos como o conjunto de suas palavras: D1 = {Estou, assistindo, a, uma, aula, de, Big, Data, mas, tudo, que, aprendi, foi, Haskell, durante, aula!} D2 = {Hoje, aprendi, Haskell, na, aula, será, que, o, útil, minha, vida?} 24

28 Textos como conjuntos Calculando a similaridade de Jaccard, temos: D1 D2 = {que, aprendi, Haskell} D1 D2 = {Estou, assistindo, a, uma, aula, de, Big, Data, mas, tudo, que, aprendi, foi, Haskell, durante, aula!, Hoje, na, aula, será, o, útil, minha, vida?} J(D1, D2) = 3 24 = Essa representação é conhecida como Bag-of-Words, em que geramos os atributos do texto como atributos categóricos. 25

29 Normalização do Texto Pode ser interessante padronizar a forma do texto para termos serem considerados como um elemento único do conjunto independente de como é escrito. Por exemplo: Estou, estou, estou, aula!, aula, aula?, útil, util. D1 = {estou, assistindo, a, uma, aula, de, big, data, mas, tudo, que, aprendi, foi, haskell, durante, aula} D2 = {hoje, aprendi, haskell, na, aula, sera, que, o, util, minha, vida} J(D1, D2) = 4 23 =

30 Eliminação de atributos irrelevantes Podemos eliminar palavras que não apresentam significado sozinhas: D1 = {estou, assistindo, aula, big, data, tudo, aprendi, haskell, durante, aula} D2 = {hoje, aprendi, haskell, aula, sera, util, minha, vida} J(D1, D2) = 4 14 =

31 Bag-of-Words type Doc = String type Token = String bagofwords :: [Doc] -> [[Token]] bagofwords docs = naovazio $ map tokeniza docs where tokeniza doc = nub $ filter maisde2 $ map normaliza (words doc) normaliza palavra = map tolower $ filter isalphanum palavra maisde2 palavra = (length palavra) > 2 naovazio xs = filter (not. null) xs 28

32 Bag-of-Words A função tolower converte um caractere maiúsculo para minúsculo, e a função isalphanum retorna verdadeiro se o caractere é uma letra do alfabeto ou um número. 29

33 Fluxo dos Dados O fluxo dos dados pode ser descrito com o seguinte fluxograma: map tokeniza words map normaliza filter isalphanum map tolower naovazio nub filter maisde2 30

34 Term-Frequency Se um termo aparece repetidas vezes em um documento, isso significa que ele pode ter uma importância maior do que os outros termos. No nosso exemplo, a repetição do termo Haskell indica um dos temas dos nossos documentos. 31

35 Term-Frequency A informação de frequência pode ser importante para a representação de nossos documentos. Podemos fazer então: fn(t, d) = f (t, d), d com f (t, d) sendo a frequência do termo t no documento d e d a quantidade de termos no documento d. 32

36 Term-Frequency A ideia para computar os vetores TF é primeiro representar cada documento como uma lista (token, 1.0) e, em seguida: Ordenar essa lista pelo token Agrupar os itens com mesmo token Somar os valores em cada grupo Dividir os valores pelo número de tokens 33

37 TF type Freq = Double tf :: [Doc] -> [[(Token, Freq)]] tf docs = naovazio $ map tokeniza docs where tokeniza doc = fn $ map normtupla (words doc) normtupla w = (normaliza w, 1.0) 34

38 TF fn :: [(Token, Double)] -> [(Token, Freq)] A partir desse momento trabalharemos frequentemente com bases de dados representadas como listas de tuplas. Essas tuplas devem ser encaradas como chave e valor, respectivamente. Para tornar o código mais legível, vamos definir as funções mapbykey, foldbykey, groupbykey, sortbykey 35

39 mapbykey mapbykey aplica a função g apenas no valor da tupla, deixando a chave intacta: mapbykey g = map (\(k,v) -> (k, g v)) 36

40 foldbykey foldbykey assume uma lista de tuplas chave-valor em que todas as chaves são iguais. Essa função aplica foldl1 apenas nos valores das tuplas, resultando em uma tupla (k, v) em que k é a chave de todas as tuplas e v o resultado da operação fold: foldbykey g = foldl1 (\(k1,v1) (k2,v2) -> (k1, g v1 v2)) 37

41 sortbykey sortbykey ordena uma lista de tuplas pela chave: sortbykey = sortby ordenatupla ordenatupla :: (Ord a) => (a, t) -> (a, t) -> Ordering ordenatupla (a1,b1) (a2,b2) a1 < a2 = LT a1 > a2 = GT a1 == a2 = EQ 38

42 groupbykey groupbykey agrupa uma lista ordenada de tuplas gerando uma lista de listas, com cada lista agrupando as tuplas de mesma chave: groupbykey = groupby agrupatupla agrupatupla :: (Eq a) => (a, t0) -> (a, t0) -> Bool agrupatupla (a1, b1) (a2, b2) = a1==a2 groupbykey [(1,0.1), (1,0.2), (2,0.1)] == [ [(1,0.1),(1,0.2)], [2,0.1] ] 39

43 TF fn :: [(Token, Double)] -> [(Token, Freq)] fn tokens = mapbykey (/n) $ map (foldbykey (+)) $ groupbykey $ sortbykey tokens where n = length tokens 40

44 Fluxo dos Dados O fluxo dos dados pode ser descrito com o seguinte fluxograma: map tokeniza words map normaliza sortbykey groupbykey mapbykey map foldbykey 41

45 Inverse Document Frequency Algumas palavras aparecem com uma frequência muito superior as demais, como: e, que, ou, etc. Essas palavras não costumam apresentar um significado discriminatório e, portanto, podem ter um peso menor. Para isso podemos multiplicar o TF por: idf (t) = log D {d D : t D} 42

46 TF-IDF Como veremos mais adiante, é possível pensar no vetor IDF como uma matriz associativa. Para isso utilizaremos o HashMap do Haskell. idf :: [[(Token, Freq)]] -> M.HashMap Token Freq idf corpus = M.fromList $ mapbykey (\v -> log (n/v)) $ map (foldbykey (+)) $ groupbykey $ sortbykey $ map (\ (k,v) -> (k,1)) $ concat corpus where n = length corpus 43

47 HashMap -- importa a biblioteca HashMap.Strict apelidade de M import qualified Data.HashMap.Strict as M -- cria um mapa M.HashMap Integer Double da lista de tuplas mapa = M.fromList [(1, 0.1), (2, 0.3), (3, 0.04)] mapa M.! 2 -- retorna 0.3 concat [ [1,2], [3,4] ] = [1,2,3,4] 44

48 TF-IDF tfidf :: [[(Token, Freq)]] -> M.HashMap Token Freq -> [[(Token, Freq)]] tfidf tf idf = map multidf tf where multidf = mapbykey (\(k,v) -> (k, v * (idf M.! k)) ) 45

49 Fluxo dos Dados O fluxo dos dados pode ser descrito com o seguinte fluxograma: map multidf mapbykey concat map sortbykey fromlist mapbykey map foldbykey groupbykey 46

50 Padrões Recorrentes

51 Padrões de sequência de funções Nos exemplos anteriores, podemos perceber um padrão recorrente de chamada de funções utilizadas em diversas soluções: map (foldbykey (+)) $ groupbykey $ sortbykey Esse padrão precede a chamada de uma função map que transforma um valor em uma tupla chave-valor (k, v). 49

52 Padrões de sequência de funções Basicamente esse padrão combina os valores das tuplas com a mesma chave utilizando uma função (nos exemplos utilizamos (+)). É interessante, então, criar a função: combine :: Ord k => (v -> v -> v) -> [(k, v)] -> [(k, v)] combine f xs = map (foldbykey f) $ groupbykey $ sortbykey xs Com isso, muitas funções se tornam sequências de combine. map. 50

53 fn fn :: [(Token, Double)] -> [(Token, Freq)] fn tokens = mapbykey (/n) $ combine (+) tokens where n = length tokens 51

54 idf Como veremos mais adiante, é possível pensar no vetor IDF como uma matriz associativa. Para isso utilizaremos o HashMap do Haskell. idf :: [[(Token, Freq)]] -> M.HashMap Token Freq idf corpus = M.fromList $ mapbykey (\v -> log (n/v)) $ combine (+) $ mapbykey (\v -> 1) $ concat corpus where n = length corpus 52

55 Padronizando e Normalizando os Atributos

56 Padronização Muitos algoritmos de Aprendizado de Máquina supõem que os valores dos atributos seguem N(0, 1). Se um atributo não segue esse padrão, pode dominar a função-objetivo e se tornar importante demais. 53

57 Padronização Dado uma matriz de dados X, podemos padronizar os valores de cada um de seus elementos como: ˆX i,j = X i,j X i,j σ j 54

58 Padronização padroniza :: [[Double]] -> [[Double]] padroniza x = mapcolunas padroniza x padroniza :: [Double] -> [Double] padroniza x = devmedia./ sigma where media xs = (sum xs) / n devmedia = x.- (media x) sigma = sqrt $ media $ devmedia.** 2 n = length x 55

59 Fluxo dos Dados O fluxo dos dados pode ser descrito com o seguinte fluxograma: mapcolunas padroniza media devmedia./.** 2 media 56

60 Escalonamento Algoritmos baseados em métodos de gradiente tendem a se beneficiar quando os atributos estão entre [0, 1]. ˆX i,j = X i,j min X :,j max X :,j min X :,j 57

61 Padronização maxminscale :: [[Double]] -> [[Double]] maxminscale x = mapcolunas maxminscale x maxminscale :: [Double] -> [Double] maxminscale x = map scale x where scale xi = (xi - minimum x) / (maximum x - minimum x) 58

62 Normalização Finalmente podemos normalizar cada amostra da base utilizando a normalização de vetores: X i,j ˆX i,j = X i p 59

63 Padronização normaliza :: [[Double]] -> [[Double]] normaliza x = map normaliza x where normaliza xi = xi./ (norma xi) norma xi = sqrt. sum $ xi.^ 2 60

64 Paralelizando o Pré-Processamento

65 Paralelizando chunks Conforme vimos na aula anterior, ao paralelizar um programa objetivamos minimizar o número de sparks e tentar distribuir a tarefa de forma homogênea entre as threads. 62

66 Paralelizando chunks Para isso adotamos a estratégia de dividir nossos dados em pedaços (denominados chunks), processar cada chunk em paralelo e, em seguida, juntar os resultados. 63

67 Paralelizando chunks Vamos continuar utilizando o tipo ChunksOf definido anteriormente para representar nossos arquivos distribuídos entre diversas máquinas. 64

68 Paralelizando Leitura dos Dados Com isso, nossa função de processamento dos dados em paralelo simplesmente aplica a função transformdata em cada um dos chunks em paralelo. transformdatapar :: ChunksOf [Objeto] -> ChunksOf [Objeto ] transformdatapar chunks = (map transformdata chunks using parlist rdeepseq) Note que nenhuma alteração é necessária para a função transformdata que continuará recebendo o tipo [Objeto] e retornando [Objeto ]. 65

69 Paralelizando a Padronização Na padronização, não podemos calcular as três partes da equação em paralelo. Além disso, temos um outro desafio, recebemos pedaços de linhas, mas temos que trabalhar com as colunas: padroniza :: [[Double]] -> [[Double]] padroniza x = mapcolunas padroniza x padroniza :: [Double] -> [Double] padroniza x = (x.- media)./ sigma where media = (sum x) / n sigma = sqrt $ sum $ (x.- media).** 2 n = fromintegral $ length x 66

70 Paralelizando a Padronização Primeiro, vamos alterar a assinatura da função para sabermos onde queremos chegar: padronizapar :: ChunksOf [[Double]] -> ChunksOf [[Double]] padronizapar chunks = parmap padroniza chunks where padroniza = map (\xi -> (xi.-. media)./. desvio) media = mapreduce id (.+.) chunks desvio = map (\x -> sqrt (x/n)) $ mapreduce desvquad (.+.) chunks desvquad xi = (xi.-. media).**2 n = sum $ map length chunks 67

71 Paralelizando a Normalização A implementação paralela de normaliza pode ser feita diretamente aplicando a versão sequencial em cada chunk. normalizapar :: ChunksOf [[Double]] -> ChunksOf [[Double]] normalizapar chunks = parmap normaliza chunks normaliza :: [[Double]] -> [[Double]] normaliza x = map normaliza x where normaliza xi = xi./ (norma xi) norma xi = sqrt. sum $ xi.^ 2 68

72 Paralelizando o TF Da forma que organizamos o algoritmo de TF, utilizando map e combine, basta aplicar a função tf em cada chunk. tfpar :: ChunksOf [Doc] -> ChunksOf [[(Token, Freq)]] tfpar chunks = parmap tf chunks tf :: [[Token]] -> [[(Token, Freq)]] tf docs = map normfreq docs where normfreq doc = fn $ map (\w -> (w, 1.0)) doc 69

73 Paralelizando a o IDF Para paralelizar o IDF, precisamos calcular a contagem de quantos documentos contém cada token em cada chunk. Em seguida, é necessário combinar os resultados de cada chunk para então calcular o idf. idfpar :: ChunksOf [[(Token, Freq)]] -> M.HashMap Token Freq idfpar chunks = M.fromList $ mapbykey (\v -> log (n/v)) $ combine (+) $ concat $ (map idf chunks using parlist rdeepseq) where n = sum $ map length chunks idf :: [[(Token, Freq)]] -> [(Token, Freq)] idf corpus = combine (+) $ map (\(k,v) -> (k,1) ) $ concat corpus 70

74 Padrão de paralelismo Note que o padrão de paralelismo do cálculo do IDF difere dos anteriores pois é necessário o uso do combine no lugar de foldl1 e a aplicação de concat na saída do map. 71

75 Padrão de paralelismo Uma função genérica pode ser escrita da seguinte forma e aplicada em muitas situações em que trabalhamos com lista de tuplas: mapreducebykey :: (NFData k, NFData v, Ord k) => (a -> (k, v)) -> (v -> v -> v) -> ChunksOf [a mapreducebykey f g xs = combine g $ concat $ (map f xs using parlist rdeepseq) where f xi = combine g $ map f xi 72

76 Padrão de paralelismo Nossa função idfpar ficaria: idfpar :: ChunksOf [[(Token, Freq)]] -> M.HashMap Token Freq idfpar chunks = M.fromList $ mapbykey (\v -> log (n/v)) $ mapreducebykey (\(k,v) -> (k,1)) (+) $ parmap concat chunks where n = sum $ map length chunks 73

Pré-processamento dos Dados e Análise Exploratória

Pré-processamento dos Dados e Análise Exploratória Pré-processamento dos Dados e Análise Exploratória Prof. Fabrício Olivetti de França Universidade Federal do ABC Processando os dados Data Sets Conjunto de objetos de dados. Objeto de dados é uma entidade:

Leia mais

Sumarizando Dados. Fabrício Olivetti de França. Universidade Federal do ABC

Sumarizando Dados. Fabrício Olivetti de França. Universidade Federal do ABC Sumarizando Dados Fabrício Olivetti de França Universidade Federal do ABC Sumarizando os dados Sumarização Antes de extrair informações da base de dados, é importante entender seu conteúdo. Sumarização:

Leia mais

Programação Paralela. com Haskell. Fabrício Olivetti de França. Universidade Federal do ABC

Programação Paralela. com Haskell. Fabrício Olivetti de França. Universidade Federal do ABC Programação Paralela com Haskell Fabrício Olivetti de França Universidade Federal do ABC Trabalhando com Vetores e Matrizes Vetores Em muitos algoritmos de Mineração de Dados, trabalharemos com vetores

Leia mais

MapReduce Mapeando e reduzindo

MapReduce Mapeando e reduzindo MapReduce Mapeando e reduzindo Prof. Fabrício Olivetti de França Universidade Federal do ABC Motivação Vimos até então que nosso maior problema é a quantidade de dados. O processamento não pode ser distribuído

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.

Leia mais

Aula 7 Medidas de Distância. Profa. Elaine Faria UFU

Aula 7 Medidas de Distância. Profa. Elaine Faria UFU Aula 7 Medidas de Distância Profa. Elaine Faria UFU - 2017 Agradecimentos Este material é baseado No livro Tan et al, 2006 Nos slides do prof Andre C. P. L. F. Carvalho Agradecimentos Ao professor André

Leia mais

Programação Funcional em Haskell

Programação Funcional em Haskell Funções Genéricas sobre Listas Junho - 2009 1 Funções Genéricas 2 Introdução Em Haskell, como em qualquer linguagem funcional, funções são objetos de primeira classe, em que funções não avaliadas podem

Leia mais

Aprendizado de Máquina (Machine Learning)

Aprendizado de Máquina (Machine Learning) Ciência da Computação (Machine Learning) Aula 02 Representação dos dados Pré-processamento Max Pereira Tipo de Dados Os atributos usados para descrever objetos de dados podem ser de diferentes tipos: Quantitativos

Leia mais

Aula 6 Mineração Streams Representação dos Dados. Profa. Elaine Faria UFU

Aula 6 Mineração Streams Representação dos Dados. Profa. Elaine Faria UFU Aula 6 Mineração Streams Representação dos Dados Profa. Elaine Faria UFU - 2017 Agradecimentos Este material é baseado No livro Tan et al, 2006 Nos slides do prof. Andre C. P. L. F. Carvalho Agradecimentos

Leia mais

Funções de Ordem Superior

Funções de Ordem Superior Programação Funcional UFOP DECOM 2014.1 Aula prática 15 Funções de Ordem Superior Sumário Resumo Uma função é conhecida como função de ordem superior quando ela tem uma função como argumento ou resulta

Leia mais

Programação Funcional Capítulo 3 Tipos e Classes

Programação Funcional Capítulo 3 Tipos e Classes Programação Funcional Capítulo 3 Tipos e Classes José Romildo Malaquias 2012.1 Departamento de Computação Universidade Federal de Ouro Preto 1 / 68 1 Valores, expressões e tipos 2 Listas 3 Tuplas 4 Funções

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2014 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas Programação Funcional 4 a Aula Listas Pedro Vasconcelos DCC/FCUP 2014 Listas Listas são coleções de elementos: em que a ordem é significativa; possivelmente com elementos repetidos. Listas em Haskell Uma

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2012 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:

Leia mais

Programação Funcional Aulas 5 & 6

Programação Funcional Aulas 5 & 6 Programação Funcional Aulas 5 & 6 Sandra Alves DCC/FCUP 2016/17 Definições usando outras funções Podemos definir funções usando outras previamente definidas (por exemplo: do prelúdio-padrão). Exemplo:

Leia mais

Programação Funcional

Programação Funcional Programação Funcional Lucília Camarão de Figueiredo Universidade Federal de Ouro Preto [email protected] Aula 07: Funções de Ordem Superior 1 INTRODUÇÃO Uma função é chamada função de ordem superior

Leia mais

Funções de Ordem Superior

Funções de Ordem Superior Programação Funcional Capítulo 7 Funções de Ordem Superior José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2013.2 1/37 1 Funções de Ordem Superior 2 Composição de funções

Leia mais

MINERAÇÃO DE DADOS. Thiago Marzagão MINERAÇÃO DE TEXTOS. [email protected]. Thiago Marzagão (UnB) MINERAÇÃO DE DADOS 1/2016 1 / 25

MINERAÇÃO DE DADOS. Thiago Marzagão MINERAÇÃO DE TEXTOS. marzagao.1@osu.edu. Thiago Marzagão (UnB) MINERAÇÃO DE DADOS 1/2016 1 / 25 MINERAÇÃO DE DADOS Thiago Marzagão [email protected] MINERAÇÃO DE TEXTOS Thiago Marzagão (UnB) MINERAÇÃO DE DADOS 1/2016 1 / 25 transformando textos em dados Documento 1: "Não trabalho para ter clientes;

Leia mais

Algoritmos - 3. Alexandre Diehl. Departamento de Física - UFPel

Algoritmos - 3. Alexandre Diehl. Departamento de Física - UFPel Algoritmos - 3 Alexandre Diehl Departamento de Física - UFPel Estrutura sequencial Estrutura condicional Estrutura de repetição PCF2017 2 Estrutura sequencial As ações ao longo do algoritmo são executadas

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução ao FORTRAN Professor Leandro Augusto Frata Fernandes [email protected] Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

Programação Funcional. Capítulo 21. Parsers. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2018.

Programação Funcional. Capítulo 21. Parsers. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2018. Programação Funcional Capítulo 21 Parsers José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2018.2 1/51 1 Parsers 2 Definindo um tipo para parsers 3 Parsers básicos 4

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Introdução ao FORTRAN Professor Hugo de Oliveira Barbalho [email protected] Material produzido pelo professor: Leandro Augusto Frata Fernandes ([email protected])

Leia mais

Organização de Computadores I

Organização de Computadores I Organização de Computadores I Aula 5 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte5.html Organização de Computadores I Aula 5 1/21 Tópicos Representação de números negativos: Sinal-magnitude.

Leia mais

Aula prática 14. Expressão Lambda

Aula prática 14. Expressão Lambda Programação Funcional UFOP DECOM 2014.1 Aula prática 14 Expressão Lambda Sumário Resumo Expressões lambdas são funções anônimas que podem ser usadas como qualquer outro valor de primeira classe. Nesta

Leia mais

Programação de Computadores:

Programação de Computadores: Instituto de C Programação de Computadores: Introdução ao FORTRAN Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Introdução ao FORTRAN Cinco aspectos

Leia mais

Lista de Exercício de Linguagens de Programação Prog. Funcional

Lista de Exercício de Linguagens de Programação Prog. Funcional UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE CIÊNCIA E TECNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO Lista de Exercício de Linguagens de Programação Prog. Funcional 1) Construa uma função del_posicao_n ::

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 18 a Aula Plataforma Haskell

Pedro Vasconcelos DCC/FCUP. Programação Funcional 18 a Aula Plataforma Haskell Programação Funcional 18 a Aula Plataforma Haskell Pedro Vasconcelos DCC/FCUP 2014 A plataforma Haskell Compilador e interpretador (GHC/GHCi) Ferramentas de desenvolvimento Um conjunto de módulos de base:

Leia mais

Estruturas de Dados Estruturas de Dados Fundamentais

Estruturas de Dados Estruturas de Dados Fundamentais Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando

Leia mais

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 7 Expressões Lambda José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/64 1 Valores de primeira classe 2 Expressão lambda 3 Aplicação

Leia mais

Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves

Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves Linguagens de Programação Programação Funcional e Haskell Programação Interativa Thiago Alves 1 Introdução Vimos como Haskell pode ser usado para escrever programas batch que recebem todas suas entradas

Leia mais

Aula 2: Resumo de Dados

Aula 2: Resumo de Dados Aula 2: Resumo de Dados Professor: José Luiz Padilha da Silva email: [email protected] Departamento de Estatística Universidade Federal do Paraná Curitiba, 2018 José Luiz Padilha da Silva (UFPR) ce003

Leia mais

SCC0173 Mineração de Dados Biológicos

SCC0173 Mineração de Dados Biológicos SCC073 Mineração de Dados Biológicos Análise Exploratória de Dados Parte A: Revisão de Estatística Descritiva Elementar Prof. Ricardo J. G. B. Campello SCC / ICMC / USP Tópicos Análise Exploratória de

Leia mais

Listas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro

Listas em Haskell. Listas. Linguagem Haskell. Maria Adriana Vidigal de Lima. Faculdade de Computação - UFU. Setembro em Haskell Linguagem Haskell Faculdade de Computação - UFU Setembro - 2009 em Haskell 1 em Haskell Noções sobre Construção de por Compreensão Funções Sobre Processamento de Fundamentos em Haskell Noções

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos Programação Funcional 13 a Aula Definição de tipos Pedro Vasconcelos DCC/FCUP 2014 Declarações de sinónimos Podemos dar um nome novo a um tipo existente usando uma declaração de sinónimo. Exemplo (do prelúdio-padrão):

Leia mais

Informática para Ciências e Engenharias 2013/14. Teórica 7

Informática para Ciências e Engenharias 2013/14. Teórica 7 Informática para Ciências e Engenharias 2013/14 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes

Leia mais

Métodos Computacionais em Física

Métodos Computacionais em Física Métodos Computacionais em Física Tatiana G. Rappoport [email protected] 214-2 Variáveis indexadas (arrays) Diversos problemas requerem o uso de vetores ou matrizes: Um conjunto de dados do mesmo tipo

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional

Leia mais

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Algoritmos e Estrutura de Dados Aula 02 Listas em Python Algoritmos e Estrutura de Dados Aula 02 Listas em Python Profa. Alana Oliveira e Prof. Davi Viana [email protected] e [email protected] Se não entender, pergunte! 2 1 Dados e Tipos de Dados Um dado

Leia mais

Extraindo atributos de textos. Prof. Fabrício Olivetti de França

Extraindo atributos de textos. Prof. Fabrício Olivetti de França Extraindo atributos de textos Prof. Fabrício Olivetti de França Configuração Faça o download do Anaconda Python: https://www.continuum.io/downloads E do notebook: http://folivetti.github.io/courses/lcon2016/

Leia mais

Haddop, MapReduce e Spark

Haddop, MapReduce e Spark Haddop, MapReduce e Spark Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Conceitos Básicos 2. MapReduce 3. Spark 4. Transformações Básicas 5. Ações Básicas 1 Conceitos Básicos Hadoop

Leia mais

Arquitetura de Computadores Sistema de Numeração. Apresentado por Prof. Fred Sauer Mat. Elaborado por Prof. Ricardo Quintão

Arquitetura de Computadores Sistema de Numeração. Apresentado por Prof. Fred Sauer Mat. Elaborado por Prof. Ricardo Quintão Arquitetura de Computadores Sistema de Numeração Apresentado por Prof. Fred Sauer Mat. Elaborado por Prof. Ricardo Quintão A base de representação numérica de um número está relacionada com a quantidade

Leia mais

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21 AULA 21 MATRIZES - PARTE 1 21.1 Definição e Manipulação de Matrizes Sabemos como definir variáveis de um novo tipo de dados, denominado vetor, que representam seqüências de valores de um mesmo tipo. Por

Leia mais

Redes Neurais Artificiais

Redes Neurais Artificiais Redes Neurais Artificiais Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Redes Neurais Biológicas 2. Neurônio Artificial 3. Rede Neural Artificial 4. Keras 1 Redes Neurais Biológicas

Leia mais

Manipulação básica de dados no PDI

Manipulação básica de dados no PDI Manipulação básica de dados no PDI Conjunto de steps para transformação Categoria Transform Criação de novos campos Uso de expressões Adição de constantes Cálculo de valores Conversão de formatos Correspondência

Leia mais

Programação Funcional

Programação Funcional Programação Funcional com Haskell Fabrício Olivetti de França Universidade Federal do ABC Paradigma Funcional Paradigmas Em muitos cursos de Computação e Engenharia iniciam com paradigma imperativo. Exemplo

Leia mais

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número inteiro

Leia mais

Jarley Nóbrega

Jarley Nóbrega 1 Jarley Nóbrega [email protected] Pentaho Data Integration Agenda Manipulação de dados no PDI Controlando o fluxo de dados Transformações no rowset Tratamento de erros e validação de dados Manipulação

Leia mais

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número

Leia mais

Regressão Polinomial e Simbólica

Regressão Polinomial e Simbólica Regressão Polinomial e Simbólica Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Variáveis Não-Lineares 2. Regressão Simbólica 1 Variáveis Não-Lineares Variáveis Não-Lineares Considere

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Um verificador de tautologia

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Um verificador de tautologia Programação Funcional 14 a Aula Um verificador de tautologias Pedro Vasconcelos DCC/FCUP 2014 Proposições lógicas Uma proposição lógica é construida apartir de: constantes T, F (verdade e falsidade) variáveis

Leia mais

Ficha 1 Noções de sequência e decisão em algoritmia

Ficha 1 Noções de sequência e decisão em algoritmia Ficha 1 Noções de sequência e decisão em algoritmia 1. Ler uma temperatura em Celsius e converter para Fahrenheit. Elabore o algoritmo e especifique as estruturas de dados necessárias para a resolução

Leia mais

Prof. MSc. David Roza José 1/39

Prof. MSc. David Roza José 1/39 1/39 Eliminação de Gauss Objetivos: Saber resolver pequenos sistemas de equações com o método gráfico e regra de Cramer; Compreender como implementar a eliminação progressiva e substituição regressiva;

Leia mais

Capítulo 1 - Lógica e Algoritmos

Capítulo 1 - Lógica e Algoritmos 1. Introdução à Lógica de Programação Capítulo 1 - Lógica e Algoritmos A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir

Leia mais

Introdução à Programação uma Abordagem Funcional

Introdução à Programação uma Abordagem Funcional Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres [email protected] CT VII - Sala 34 Departamento de Informática Centro Tecnológico

Leia mais

Profª Ana Lúcia Lima Marreiros Maia Profª Fabiana Cristina Bertoni

Profª Ana Lúcia Lima Marreiros Maia Profª Fabiana Cristina Bertoni Profª Ana Lúcia Lima Marreiros Maia Profª Fabiana Cristina Bertoni Motivação e Objetivos Etapas do Desenvolvimento de um Sistema de Recuperação de Informações (SRI): Pré-processamento; Representação; Extração

Leia mais

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Solução básica viável inicial Marina Andretta ICMC-USP 10 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 7 a Aula Funções de ordem superior

Pedro Vasconcelos DCC/FCUP. Programação Funcional 7 a Aula Funções de ordem superior Programação Funcional 7 a Aula Funções de ordem superior Pedro Vasconcelos DCC/FCUP 2013 Funções de ordem superior Uma função é de ordem superior se tem um argumento que é uma função ou um resultado que

Leia mais

Introdução à Ciência da Computação II

Introdução à Ciência da Computação II Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça

Leia mais

Programação Funcional. Aula 6. Listas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

Programação Funcional. Aula 6. Listas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011. Programação Funcional Aula 6 Listas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/104 1 Listas 2 Strings 3 Seqüências aritméticas 4 Casamento de padrão com

Leia mais

Interpolação polinomial

Interpolação polinomial Quarto roteiro de exercícios no Scilab Cálculo Numérico Rodrigo Fresneda 8 de abril de 0 Guia para respostas: Entregue suas respostas às tarefas contidas no roteiro de cada uma das quatro atividades, incluindo

Leia mais

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33

Leia mais

Python + Spark = PySpark. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Python + Spark = PySpark. Prof. Fabrício Olivetti de França Universidade Federal do ABC Python + Spark = PySpark Prof. Fabrício Olivetti de França Universidade Federal do ABC Spark Plataforma para processamento de dados em larga escala. Baseado em transformações preguiçosas dos dados. Estende

Leia mais

Álgebra Linear Semana 03

Álgebra Linear Semana 03 Álgebra Linear Semana 3 Diego Marcon de Abril de 27 Conteúdo Dependência e independência linear 2 Independência linear e sistemas lineares 3 3 Transformações lineares 4 4 Matriz de uma transformação linear

Leia mais

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP Primeiro Exercício programa: Como o Google ordena páginas MAP-2121 para EPUSP 1 Instruções gerais Os exercícios computacionais pedidos na disciplina Cálculo Numérico têm por objetivo fundamental familiarizar

Leia mais