Olá, Visitante. Por favor entre ou registe-se se ainda não for membro.

Entrar com nome de utilizador, password e duração da sessão
 

Autor Tópico: Machine learning  (Lida 10703 vezes)

vbm

  • Hero Member
  • *****
  • Mensagens: 13742
    • Ver Perfil
Re: Machine learning
« Responder #40 em: 2017-10-30 22:05:16 »
lol

CCandido

  • Newbie
  • *
  • Mensagens: 4
    • Ver Perfil
Re: Machine learning
« Responder #41 em: 2017-11-04 15:30:12 »
Boas,
estava aqui de volta deste tópico e acho que posso dar algumas dicas.
Vou tentar ser um bocado leigo só mesmo porque sou de informática e por vezes é complicado perceber o conhecimento das outras pessoas sobre o tema. Vou tentar fazer algumas analogias também para deixar claro.

1) Linguagem de programação
O Python é simplesmente uma linguagem de programação. Há N linguagens de programação cada uma com as suas caracteristícas. Assim como os automóveis. Podemos ter um carro que anda muito bebe pouco e é desconfortável; podemos ter outro que é super confortável, consumos baixos e não anda muito. E é com base nisto que vou falar do Python.

- Claramente o Python é o primeiro carro. É "leve" e é capaz de processar toneladas de dados num piscar de olhos. Por outro lado peca noutros lados como a facilidade de compreensão do código em si. As contribuições online. O facto de haver poucas contribuições online vai obrigar-vos a terem que se sentar e a aprender a fazer... tudo! de raiz. É doloroso. É como montar um carro em versão planeta Agostini: vai ser custoso.

- Depois há outras linguagens que são mais "humanas", mais perceptíveis de se trabalhar. E eu venho falar-vos aqui um bocado do Java.
Que fique claro o seguinte: Eu não sou de todo defensor/Evangelista do Java. O Java tem N particularidades que o fazem muito mais lento que muitas das outras linguagem de programação mas para malta que gosta de chegar rápido aos seus objetivos (como eu  :P) é simplesmente o trade-off: Que se lixe a velocidade de execução, prefiro perceber o que faço.

Então vá: Não vou explicar como programar Java, vou explicar como esta conversa pode ajudar-vos no que querem.

O Java é uma linguagem modular.
Eu programo uma Classe. Meto a Class num Pacote/biblioteca (ficheiro de extensão .jar) e depois reutilizo noutro projecto.
Ou seja, imaginem hipoteticamente que eu faço uma biblioteca que vai ao googlefinance e dado o <Código-Mercado><Código-empresa> eu obtenho o histórico de 1 ano para trás.
A seguir posso pegar nesta biblioteca e usa-la num outro projecto que use esses dados para alguma coisa. Mais uma analogia: neste modelo não vamos montar um carro à planeta agostini, vamos montar um carro à IKEA: temos 1 motor, 1 chassis, 4 portas, 4 rodas, etc. e é "só" seguir o manual para montar.

Para além disto, o Java tem uma comunidade gigante. É daquelas comunidades que dá a sensação do: "Já tudo foi inventado" e os developers querem publicar os seus trabalhos, as suas bibliotecas, e ver o mundo a usa-las. E aqui é que está a magia. Toda a gente publica as coisas num repositório online (chamado Maven). Basta meter 1 linha de texto num ficheiro e automaticamente temos a biblioteca do gajo no pc pronta a usar.

Imaginem o seguinte cenário de construção <Frase de Necessidade> -> <Pesquisa pela solução> -> <Solução>

Necessidade: "Preciso de algo para ler sites e sacar algumas infos de tabelas e afins"
Pesquisa: No google: Java how to parse a website
Solução: https://stackoverflow.com/questions/2835505/how-to-scan-a-website-or-page-for-info-and-bring-it-into-my-program
A resposta a este gajo diz: "Usa uma biblioteca como o JSOUP". vou ao site, vejo meia duzia de exemplos, meto a biblioteca no meu projeto e está feito: já tenho uma base para ler outros sites.

Necessidade: "Preciso de algo para ler texto de imagens porque nem todos os sites publicam em texto"
Pesquisa: No google: Java how to read text from image
Solução: https://stackoverflow.com/questions/22531656/api-to-read-text-from-image-file-using-ocr
na Resposta o gajo sugere, mais uma vez, uma biblioteca. Lia meia duzia de exemplos, integrava no meu projeto e: done.

Ok até agora dei exemplos da tanga. Vou agora focar no que aqui se fala.

Necessidade: "preciso de machine learning em java"
Pesquisa: no google: java machine learning libraries
Solução: https://jaxenter.com/weka-collection-of-ml-algorithms-java-128964.html
Não tenho solução porque estou a falar disto agora :D Mas o que faria: vi o Weka aí e vou pegar por aí.
Vou ver se a biblioteca é publica: (Google: Maven weka -> https://mvnrepository.com/artifact/nz.ac.waikato.cms.weka/weka-stable/3.8.0 -> Afirmativo)
Vou procurar exemplos (Google: weka tutorial (Não, isto não vai mostrar resultados da Shakira)) e se fizerem isto vão ver a quantidade de resultados que sai.


Qual a vantagem então de usar o Weka??
o Weka foi desenvolvido por um gajo que queria fazer machine learning (neste caso, até foi uma faculdade), e possivelmente o Weka ja tem funcionalidades tipo:
Injetam dados na aplicação, chamam um método qualquer e aquilo cospe logo resultados com base em histórico. Às vezes a dificuldade mesmo é perceber o que realmente queremos após vermos a quantidade de funcionalidades disponiveis.
Mas vá, só para concluir.

Vamos analisar um exemplo do Weka. Oh wait.. Não é preciso, basta ir ao youtube: https://www.youtube.com/watch?v=m7kpIBGEdkI

Portanto, conclusão:

Não escolham uma linguagem por ser rápida mas sim uma que vos deixe confortável. Procurem sempre linguagens que exista comunidades de suporte gigantes para vos minimizar o esforço. Usem o stackoverflow porque metade do que precisam de saber foi perguntado por alguém no passado. Se não são programadores, tentem escolher uma linguagem em que "se fale em inglês com o computador", ie, linguagem de alto nível, se forem para uma que é só operações ( tipo $3 - {Div($2,3) ... ) rapidamente vão se cansar.

Abraços

JoaoAP

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 4778
    • Ver Perfil
Re: Machine learning
« Responder #42 em: 2017-11-05 00:38:38 »
Agradeço o que escreveste sobre o Python. Talvez aprenda um pouco lá para o ano.
Java, para mim não.

Prefiro algo feito e algo que possa "mexer" e acrescentar. Como R e Python.

Qual a tua opinião sobre o R?
Os excelentes packages dele... para mim são algo que o faz distinguir pela positiva e ser cada vez mais usado academicamente.

edit: já nem me lembrava que tinha aberto um tópico sobre o R.
Se puderes deixar lá o teu comentário, agradeço: http://www.thinkfn.com/forumbolsaforex/index.php/topic,4899.0.html
« Última modificação: 2017-11-05 00:42:31 por JoaoAP »