KNIME - Guia rápido
O desenvolvimento de modelos de aprendizado de máquina é sempre considerado um grande desafio devido à sua natureza enigmática. Geralmente, para desenvolver aplicativos de aprendizado de máquina, você deve ser um bom desenvolvedor com experiência em desenvolvimento orientado a comandos. A introdução do KNIME trouxe o desenvolvimento de modelos de Aprendizado de Máquina ao alcance de um homem comum.
KNIME fornece uma interface gráfica (uma GUI amigável) para todo o desenvolvimento. No KNIME, você simplesmente precisa definir o fluxo de trabalho entre os vários nós predefinidos fornecidos em seu repositório. KNIME fornece vários componentes predefinidos chamados nós para várias tarefas, como leitura de dados, aplicação de vários algoritmos de ML e visualização de dados em vários formatos. Portanto, para trabalhar com KNIME, nenhum conhecimento de programação é necessário. Não é emocionante?
Os próximos capítulos deste tutorial ensinarão a dominar a análise de dados usando vários algoritmos de ML bem testados.
A plataforma KNIME Analytics está disponível para Windows, Linux e MacOS. Neste capítulo, vamos examinar as etapas para instalar a plataforma no Mac. Se você usa Windows ou Linux, basta seguir as instruções de instalação fornecidas na página de download do KNIME. A instalação binária para todas as três plataformas está disponível na página do KNIME .
Instalação Mac
Baixe a instalação binária do site oficial do KNIME. Clique duas vezes no baixadodmgarquivo para iniciar a instalação. Quando a instalação for concluída, basta arrastar o ícone KNIME para a pasta Aplicativos, como visto aqui -
Clique duas vezes no ícone KNIME para iniciar a plataforma KNIME Analytics. Inicialmente, você será solicitado a configurar uma pasta de espaço de trabalho para salvar seu trabalho. Sua tela terá a seguinte aparência -
Você pode definir a pasta selecionada como padrão e da próxima vez que iniciar o KNIME, ele não
mostrar esta caixa de diálogo novamente.
Depois de um tempo, a plataforma KNIME será iniciada em sua área de trabalho. Este é o ambiente de trabalho onde você realizaria seu trabalho de análise. Vejamos agora as várias partes da bancada.
Quando o KNIME iniciar, você verá a seguinte tela -
Como foi marcado na captura de tela, o ambiente de trabalho consiste em várias visualizações. As visualizações que são de uso imediato para nós estão marcadas na captura de tela e listadas abaixo -
Workspace
Outline
Repositório de Nós
KNIME Explorer
Console
Description
À medida que avançamos neste capítulo, vamos aprender cada uma dessas visões em detalhes.
Visualização do espaço de trabalho
A visão mais importante para nós é a WorkspaceVisão. É aqui que você criaria seu modelo de aprendizado de máquina. A visualização da área de trabalho é destacada na captura de tela abaixo -
A captura de tela mostra um espaço de trabalho aberto. Você aprenderá em breve como abrir um espaço de trabalho existente.
Cada área de trabalho contém um ou mais nós. Você aprenderá a importância desses nós posteriormente no tutorial. Os nós são conectados por meio de setas. Geralmente, o fluxo do programa é definido da esquerda para a direita, embora isso não seja obrigatório. Você pode mover livremente cada nó em qualquer lugar da área de trabalho. As linhas de conexão entre os dois se moveriam de forma adequada para manter a conexão entre os nós. Você pode adicionar / remover conexões entre os nós a qualquer momento. Para cada nó, uma pequena descrição pode ser adicionada opcionalmente.
Vista de destaques
A visualização da área de trabalho pode não ser capaz de mostrar todo o fluxo de trabalho de uma vez. Essa é a razão pela qual a visualização do esboço é fornecida.
A visualização do contorno mostra uma visualização em miniatura de todo o espaço de trabalho. Há uma janela de zoom dentro desta visualização que você pode deslizar para ver as diferentes partes do fluxo de trabalho noWorkspace Visão.
Repositório de Nó
Esta é a próxima visão importante no ambiente de trabalho. O repositório Node lista os vários nós disponíveis para sua análise. Todo o repositório é bem categorizado com base nas funções do nó. Você encontrará categorias como -
IO
Views
Analytics
Em cada categoria, você encontrará várias opções. Basta expandir a visualização de cada categoria para ver o que você tem lá. Debaixo deIO categoria, você encontrará nós para ler seus dados em vários formatos de arquivo, como ARFF, CSV, PMML, XLS, etc.
Dependendo do formato dos dados da fonte de entrada, você selecionará o nó apropriado para ler seu conjunto de dados.
A esta altura, provavelmente você já entendeu o propósito de um nó. Um nó define um certo tipo de funcionalidade que você pode incluir visualmente em seu fluxo de trabalho.
O nó Analytics define os vários algoritmos de aprendizado de máquina, como Bayes, Clustering, Decision Tree, Ensemble Learning e assim por diante.
A implementação desses vários algoritmos de ML é fornecida nesses nós. Para aplicar qualquer algoritmo em sua análise, simplesmente escolha o nó desejado do repositório e inclua-o em sua área de trabalho. Conecte a saída do nó do leitor de dados à entrada deste nó de ML e seu fluxo de trabalho é criado.
Sugerimos que você explore os vários nós disponíveis no repositório.
KNIME Explorer
A próxima visão importante na bancada é a Explorer ver como mostrado na imagem abaixo -
As primeiras duas categorias listam os espaços de trabalho definidos no servidor KNIME. A terceira opção LOCAL é usada para armazenar todos os espaços de trabalho que você cria em sua máquina local. Experimente expandir essas guias para ver os vários espaços de trabalho predefinidos. Especialmente, expanda a guia EXEMPLOS.
KNIME fornece vários exemplos para você começar com a plataforma. No próximo capítulo, você usará um desses exemplos para se familiarizar com a plataforma.
Visualização do console
Como o nome indica, o Console view fornece uma visão das várias mensagens do console durante a execução de seu fluxo de trabalho.
o Console view é útil para diagnosticar o fluxo de trabalho e examinar os resultados analíticos.
Vista da descrição
A última visão importante que é de relevância imediata para nós é a DescriptionVisão. Esta visualização fornece uma descrição de um item selecionado na área de trabalho. Uma visão típica é mostrada na imagem abaixo -
A visualização acima mostra a descrição de um File Readernó. Quando você seleciona oFile Readernó em sua área de trabalho, você verá sua descrição nesta visualização. Clicar em qualquer outro nó mostra a descrição do nó selecionado. Assim, essa visualização se torna muito útil nos estágios iniciais de aprendizagem, quando você não conhece precisamente a finalidade dos vários nós na área de trabalho e / ou no repositório de nós.
Barra de ferramentas
Além das visualizações descritas acima, o workbench possui outras visualizações, como a barra de ferramentas. A barra de ferramentas contém vários ícones que facilitam uma ação rápida. Os ícones são habilitados / desabilitados dependendo do contexto. Você pode ver a ação que cada ícone executa passando o mouse sobre ele. A tela a seguir mostra a ação realizada porConfigure ícone.
Ativando / Desativando Visualizações
As várias visualizações que você viu até agora podem ser ativadas / desativadas facilmente. Clicar no ícone Fechar na visualização iráclosea vista. Para restaurar a vista, vá para oViewopção de menu e selecione a visualização desejada. A vista selecionada será adicionada ao workbench.
Agora, como você conhece o workbench, mostrarei como executar um fluxo de trabalho e estudar a análise realizada por ele.
KNIME forneceu vários bons fluxos de trabalho para facilitar o aprendizado. Neste capítulo, vamos pegar um dos fluxos de trabalho fornecidos na instalação para explicar os vários recursos e o poder da plataforma analítica. Usaremos um classificador simples baseado em umDecision Tree para o nosso estudo.
Carregando classificador de árvore de decisão
No KNIME Explorer, localize o seguinte fluxo de trabalho -
LOCAL / Example Workflows / Basic Examples / Building a Simple Classifier
Isso também é mostrado na imagem abaixo para sua referência rápida -
Clique duas vezes no item selecionado para abrir o fluxo de trabalho. Observe a visualização da área de trabalho. Você verá o fluxo de trabalho contendo vários nós. O objetivo deste fluxo de trabalho é prever o grupo de renda a partir dos atributos democráticos do conjunto de dados adulto retirado do UCI Machine Learning Repository. A tarefa deste modelo de ML é classificar as pessoas de uma região específica como tendo renda maior ou menor que 50 mil.
o Workspace ver junto com seu contorno é mostrado na imagem abaixo -
Observe a presença de vários nós captados do Nodesrepositório e conectado em um fluxo de trabalho por setas. A conexão indica que a saída de um nó é alimentada para a entrada do próximo nó. Antes de aprendermos a funcionalidade de cada um dos nós no fluxo de trabalho, vamos primeiro executar todo o fluxo de trabalho.
Executando Fluxo de Trabalho
Antes de examinarmos a execução do fluxo de trabalho, é importante entender o relatório de status de cada nó. Examine qualquer nó no fluxo de trabalho. Na parte inferior de cada nó, você encontrará um indicador de status contendo três círculos. O nó Aprendiz da Árvore de Decisão é mostrado na imagem abaixo -
O indicador de status é vermelho, indicando que este nó não foi executado até agora. Durante a execução, o círculo central amarelo acenderá. Na execução bem-sucedida, o último círculo fica verde. Existem mais indicadores para fornecer informações de status em caso de erros. Você os aprenderá quando ocorrer um erro no processamento.
Observe que atualmente os indicadores em todos os nós estão vermelhos, indicando que nenhum nó foi executado até agora. Para executar todos os nós, clique no seguinte item de menu -
Node → Execute All
Depois de um tempo, você descobrirá que cada indicador de status do nó agora ficou verde, indicando que não há erros.
No próximo capítulo, exploraremos a funcionalidade dos vários nós no fluxo de trabalho.
Se você verificar os nós no fluxo de trabalho, verá que ele contém o seguinte -
Leitor de arquivos,
Color Manager
Partitioning
Aprendiz da árvore de decisão
Preditor de árvore de decisão
Score
Mesa Interativa
Gráfico de dispersão
Statistics
Estes são facilmente vistos no Outline ver como mostrado aqui -
Cada nó fornece uma funcionalidade específica no fluxo de trabalho. Veremos agora como configurar esses nós para atender à funcionalidade desejada. Observe que discutiremos apenas os nós que são relevantes para nós no contexto atual de exploração do fluxo de trabalho.
Leitor de arquivos
O nó Leitor de arquivos é ilustrado na captura de tela abaixo -
Há alguma descrição na parte superior da janela fornecida pelo criador do fluxo de trabalho. Ele diz que esse nó lê o conjunto de dados adulto. O nome do arquivo éadult.csvconforme visto na descrição abaixo do símbolo do nó. oFile Reader tem duas saídas - uma vai para Color Manager nó e o outro vai para Statistics nó.
Se você clicar com o botão direito no File Manager, um menu pop-up seria exibido da seguinte maneira -
o ConfigureA opção de menu permite a configuração do nó. oExecutemenu executa o nó. Observe que, se o nó já tiver sido executado e estiver em um estado verde, este menu estará desabilitado. Além disso, observe a presença deEdit Note Descriptionopção de menu. Isso permite que você escreva a descrição do seu nó.
Agora, selecione o Configure opção de menu, ele mostra a tela que contém os dados do arquivo adult.csv como pode ser visto na imagem aqui -
Ao executar este nó, os dados serão carregados na memória. Todo o código do programa de carregamento de dados é escondido do usuário. Agora você pode apreciar a utilidade de tais nós - nenhuma codificação necessária.
Nosso próximo nó é o Color Manager.
Color Manager
Selecione os Color Managernó e entrar em sua configuração clicando com o botão direito nele. Uma caixa de diálogo de configurações de cores aparecerá. Selecione osincome coluna da lista suspensa.
Sua tela ficaria assim -
Observe a presença de duas restrições. Se o rendimento for inferior a 50K, o ponto de dados adquirirá a cor verde e se for superior ficará com a cor vermelha. Você verá os mapeamentos de pontos de dados quando examinarmos o gráfico de dispersão posteriormente neste capítulo.
Particionamento
No aprendizado de máquina, geralmente dividimos todos os dados disponíveis em duas partes. A parte maior é usada no treinamento do modelo, enquanto a parte menor é usada para teste. Existem diferentes estratégias usadas para particionar os dados.
Para definir o particionamento desejado, clique com o botão direito no Partitioning nó e selecione o Configureopção. Você veria a seguinte tela -
No caso, o modelador do sistema usou o Relative(%) e os dados são divididos na proporção de 80:20. Ao fazer a divisão, os pontos de dados são coletados aleatoriamente. Isso garante que seus dados de teste não sejam tendenciosos. No caso da amostragem Linear, os 20% restantes dos dados utilizados para o teste podem não representar corretamente os dados de treinamento, pois podem ser totalmente enviesados durante sua coleta.
Se você tiver certeza de que durante a coleta de dados, a aleatoriedade é garantida, então você pode selecionar a amostragem linear. Assim que seus dados estiverem prontos para treinar o modelo, alimente-os para o próximo nó, que é oDecision Tree Learner.
Aprendiz da árvore de decisão
o Decision Tree Learnernó como o nome sugere usa os dados de treinamento e constrói um modelo. Verifique a definição de configuração deste nó, que é ilustrada na captura de tela abaixo -
Como você vê o Class é income. Assim, a árvore seria construída com base na coluna de receita e é isso que estamos tentando alcançar neste modelo. Queremos uma separação de pessoas com renda maior ou menor que 50 mil.
Depois que este nó for executado com sucesso, seu modelo estará pronto para teste.
Preditor de árvore de decisão
O nó Preditor de árvore de decisão aplica o modelo desenvolvido ao conjunto de dados de teste e anexa as previsões do modelo.
A saída do preditor é alimentada para dois nós diferentes - Scorer e Scatter Plot. A seguir, examinaremos a saída da previsão.
Marcador
Este nó gera o confusion matrix. Para visualizá-lo, clique com o botão direito no nó. Você verá o seguinte menu popup -
Clique no View: Confusion Matrix opção de menu e a matriz irá aparecer em uma janela separada, conforme mostrado na imagem aqui -
Isso indica que a precisão do nosso modelo desenvolvido é de 83,71%. Se você não estiver satisfeito com isso, você pode brincar com outros parâmetros na construção do modelo, especialmente, você pode revisitar e limpar seus dados.
Gráfico de dispersão
Para ver o gráfico de dispersão da distribuição de dados, clique com o botão direito no Scatter Plot nó e selecione a opção de menu Interactive View: Scatter Plot. Você verá o seguinte gráfico -
O gráfico dá a distribuição de pessoas de diferentes grupos de renda com base no limite de 50K em dois pontos de cores diferentes - vermelho e azul. Estas foram as cores definidas em nossoColor Managernó. A distribuição é relativa à idade representada no eixo x. Você pode selecionar um recurso diferente para o eixo x, alterando a configuração do nó.
O diálogo de configuração é mostrado aqui, onde selecionamos o marital-status como um recurso para o eixo x.
Isso completa nossa discussão sobre o modelo predefinido fornecido pelo KNIME. Sugerimos que você pegue os outros dois nós (Estatísticas e Tabela Interativa) no modelo para seu auto-estudo.
Vamos agora passar para a parte mais importante do tutorial - criar seu próprio modelo.
Neste capítulo, você construirá seu próprio modelo de aprendizado de máquina para categorizar as plantas com base em alguns recursos observados. Usaremos o conhecidoiris conjunto de dados de UCI Machine Learning Repositorypara este propósito. O conjunto de dados contém três classes diferentes de plantas. Vamos treinar nosso modelo para classificar uma planta desconhecida em uma dessas três classes.
Começaremos criando um novo fluxo de trabalho em KNIME para criar nossos modelos de aprendizado de máquina.
Criação de fluxo de trabalho
Para criar um novo fluxo de trabalho, selecione a seguinte opção de menu no ambiente de trabalho KNIME.
File → New
Você verá a seguinte tela -
Selecione os New KNIME Workflow opção e clique no Nextbotão. Na próxima tela, será solicitado o nome desejado para o fluxo de trabalho e a pasta de destino para salvá-lo. Insira essas informações conforme desejado e clique emFinish para criar um novo espaço de trabalho.
Um novo espaço de trabalho com o nome fornecido seria adicionado ao Workspace ver como visto aqui -
Agora, você adicionará os vários nós nesta área de trabalho para criar seu modelo. Antes de adicionar nós, você deve baixar e preparar oiris conjunto de dados para nosso uso.
Preparando o conjunto de dados
Baixe o conjunto de dados iris do site UCI Machine Learning Repository Baixe o conjunto de dados Iris . O arquivo iris.data baixado está no formato CSV. Faremos algumas alterações para adicionar os nomes das colunas.
Abra o arquivo baixado em seu editor de texto favorito e adicione a seguinte linha no início.
sepal length, petal length, sepal width, petal width, class
Quando nosso File Reader o nó lê este arquivo, ele tomará automaticamente os campos acima como nomes de coluna.
Agora, você começará a adicionar vários nós.
Adicionando Leitor de Arquivo
Vou ao Node Repository visualizar, digite “arquivo” na caixa de pesquisa para localizar o File Readernó. Isso é visto na imagem abaixo -
Selecione e clique duas vezes no File Readerpara adicionar o nó ao espaço de trabalho. Como alternativa, você pode usar o recurso arrastar e soltar para adicionar o nó ao espaço de trabalho. Depois que o nó for adicionado, você terá que configurá-lo. Clique com o botão direito no nó e selecione oConfigureopção de menu. Você fez isso na lição anterior.
A tela de configurações se parece com a seguinte depois que o arquivo de dados é carregado.
Para carregar seu conjunto de dados, clique no Browsee selecione a localização do arquivo iris.data. O nó carregará o conteúdo do arquivo que é exibido na parte inferior da caixa de configuração. Quando estiver satisfeito que o arquivo de dados está localizado corretamente e carregado, clique noOK botão para fechar a caixa de diálogo de configuração.
Agora você adicionará algumas anotações a este nó. Clique com o botão direito no nó e selecioneNew Workflow Annotationopção de menu. Uma caixa de anotação apareceria na tela, conforme mostrado na imagem aqui:
Clique dentro da caixa e adicione a seguinte anotação -
Reads iris.data
Clique em qualquer lugar fora da caixa para sair do modo de edição. Redimensione e coloque a caixa ao redor do nó conforme desejado. Finalmente, clique duas vezes noNode 1 texto abaixo do nó para alterar esta string para o seguinte -
Loads data
Neste ponto, sua tela ficaria assim -
Agora vamos adicionar um novo nó para particionar nosso conjunto de dados carregado em treinamento e teste.
Adicionando Nó de Particionamento
No Node Repository janela de pesquisa, digite alguns caracteres para localizar o Partitioning nó, como visto na imagem abaixo -
Adicione o nó ao nosso espaço de trabalho. Defina sua configuração da seguinte forma -
Relative (%) : 95
Draw Randomly
A captura de tela a seguir mostra os parâmetros de configuração.
Em seguida, faça a conexão entre os dois nós. Para fazer isso, clique na saída doFile Reader nó, mantenha o botão do mouse clicado, uma linha de elástico aparecerá, arraste-a para a entrada de Partitioningnó, solte o botão do mouse. Uma conexão agora é estabelecida entre os dois nós.
Adicione a anotação, altere a descrição, posicione o nó e a vista de anotação conforme desejado. Sua tela deve se parecer com o seguinte nesta fase -
Em seguida, vamos adicionar o k-Means nó.
Adicionando o Nó K-Means
Selecione os k-Meansnó do repositório e inclua-o na área de trabalho. Se você deseja atualizar seus conhecimentos sobre o algoritmo k-Means, basta consultar sua descrição na visualização de descrição do ambiente de trabalho. Isso é mostrado na imagem abaixo -
A propósito, você pode consultar a descrição de diferentes algoritmos na janela de descrição antes de tomar uma decisão final sobre qual usar.
Abra a caixa de diálogo de configuração do nó. Usaremos os padrões para todos os campos, conforme mostrado aqui -
Clique OK para aceitar os padrões e fechar a caixa de diálogo.
Defina a anotação e a descrição para o seguinte -
Anotação: Classificar clusters
Descrição: realizar clustering
Conecte a saída superior do Partitioning nó para a entrada de k-Meansnó. Reposicione seus itens e sua tela deve ter a seguinte aparência -
A seguir, vamos adicionar um Cluster Assigner nó.
Adicionando Atribuidor de Cluster
o Cluster Assigneratribui novos dados a um conjunto existente de protótipos. Leva duas entradas - o modelo de protótipo e a tabela de dados contendo os dados de entrada. Procure a descrição do nó na janela de descrição que é mostrada na imagem abaixo -
Assim, para este nó, você deve fazer duas conexões -
A saída do PMML Cluster Model de Partitioning nó → Entrada de protótipos de Cluster Assigner
Saída da segunda partição de Partitioning nó → Dados de entrada de Cluster Assigner
Essas duas conexões são mostradas na imagem abaixo -
o Cluster Assignernão precisa de nenhuma configuração especial. Basta aceitar os padrões.
Agora, adicione algumas anotações e descrições a este nó. Reorganize seus nós. Sua tela deve ter a seguinte aparência -
Neste ponto, nosso agrupamento está concluído. Precisamos visualizar a saída graficamente. Para isso, vamos adicionar um gráfico de dispersão. Vamos definir as cores e formas para três classes de forma diferente no gráfico de dispersão. Assim, vamos filtrar a saída dok-Means nó primeiro através do Color Manager nó e então através Shape Manager nó.
Adicionando gerenciador de cores
Localize o Color Managernó no repositório. Adicione-o ao espaço de trabalho. Deixe a configuração com seus padrões. Observe que você deve abrir a caixa de diálogo de configuração e clicarOKpara aceitar os padrões. Defina o texto de descrição do nó.
Faça uma conexão a partir da saída de k-Means para a entrada de Color Manager. Sua tela ficaria assim neste estágio -
Adicionando Gerenciador de Forma
Localize o Shape Managerno repositório e inclua-o na área de trabalho. Deixe sua configuração com os padrões. Como o anterior, você deve abrir a janela de configuração e clicarOKpara definir padrões. Estabeleça a conexão a partir da saída deColor Manager para a entrada de Shape Manager. Defina a descrição do nó.
Sua tela deve ter a seguinte aparência -
Agora, você adicionará o último nó em nosso modelo, que é o gráfico de dispersão.
Adicionando Gráfico de Dispersão
Localizar Scatter Plotnó no repositório e inclua-o na área de trabalho. Conecte a saída deShape Manager para a entrada de Scatter Plot. Deixe a configuração para os padrões. Defina a descrição.
Por fim, adicione uma anotação de grupo aos três nós adicionados recentemente
Anotação: Visualização
Reposicione os nós conforme desejado. Sua tela deve ser semelhante à seguinte neste estágio.
Isso completa a tarefa de construção do modelo.
Para testar o modelo, execute as seguintes opções de menu: Node → Execute All
Se tudo correr bem, o sinal de status na parte inferior de cada nó ficará verde. Caso contrário, você precisará procurar oConsole visualize os erros, corrija-os e execute novamente o fluxo de trabalho.
Agora, você está pronto para visualizar a saída prevista do modelo. Para isso, clique com o botão direito noScatter Plot nó e selecione as seguintes opções de menu: Interactive View: Scatter Plot
Isso é mostrado na imagem abaixo -
Você veria o gráfico de dispersão na tela, conforme mostrado aqui -
Você pode executar diferentes visualizações alterando os eixos xey. Para fazer isso, clique no menu de configurações no canto superior direito do gráfico de dispersão. Um menu pop-up aparecerá conforme mostrado na imagem abaixo -
Você pode definir os vários parâmetros para o gráfico nesta tela para visualizar os dados de vários aspectos.
Isso completa nossa tarefa de construção de modelos.
KNIME fornece uma ferramenta gráfica para construir modelos de aprendizado de máquina. Neste tutorial, você aprendeu como baixar e instalar o KNIME em sua máquina.
Resumo
Você aprendeu as várias visualizações fornecidas no ambiente de trabalho KNIME. KNIME fornece vários fluxos de trabalho predefinidos para o seu aprendizado. Usamos um desses fluxos de trabalho para aprender os recursos do KNIME. O KNIME fornece vários nós pré-programados para ler dados em vários formatos, analisar dados usando vários algoritmos de ML e, finalmente, visualizar dados de muitas maneiras diferentes. No final do tutorial, você criou seu próprio modelo começando do zero. Usamos o conhecido conjunto de dados da íris para classificar as plantas usando o algoritmo k-Means.
Agora você está pronto para usar essas técnicas para suas próprias análises.
Trabalho futuro
Se você é um desenvolvedor e gostaria de usar os componentes KNIME em seus aplicativos de programação, ficará feliz em saber que o KNIME se integra nativamente com uma ampla variedade de linguagens de programação, como Java, R, Python e muito mais.