O que é o scikit-learn (sklearn)?

Autora

Bryan Clark

Senior Technology Advocate

O que é o scikit-learn (sklearn)?

O Scikit-learn (muitas vezes escrito como scikit-learn ou sklearn) é uma biblioteca de aprendizado de máquina de código aberto amplamente usada para o Python.

O scikit-learn é uma das bibliotecas de aprendizado de máquina (ML) mais usadas atualmente. Escrito em Python, esse conjunto de ferramentas de ciência de dados simplifica a inteligência artificial (IA), o ML e a modelagem estatística com uma interface consistente. Inclui módulos essenciais para classificação, regressão, agrupamento e redução de dimensionalidade, todos construídos sobre as bibliotecas NumPy, SciPy e Matplotlib. Implementar algoritmos de aprendizado de máquina a partir do zero em Python pode ser uma tarefa computacionalmente intensa e propensa a erros, exigindo conhecimento de álgebra linear, cálculo e otimização. O scikit-learn pode ser um recurso valioso para mitigar esses problemas.

Ao aproveitar o pacote robusto de redes neurais pré-treinadas e algoritmos de aprendizado de máquina do scikit-learn, os recém-chegados ao campo podem pré-processar conjuntos de dados de forma rápida e eficaz para aplicações de aprendizado supervisionado, como regressão ou classificação. Essa etapa pode ser realizada sem a necessidade de um conhecimento profundo de conceitos matemáticos complexos, como álgebra linear, cálculo ou cardinalidade. Além disso, essas ferramentas facilitam processos de aprendizado não supervisionado, incluindo agrupamento e redução de dimensionalidade. Essas ferramentas permitem que os usuários se concentrem em insights de nível superior e na criação de valor comercial.

fluxo de trabalho do scikit-learn
diagrama de fluxo de trabalho do scikit-learn

Componentes do scikit-learn

Numpy: uma das bibliotecas Python cruciais para computação científica. Ela fornece um objeto de matriz e vários outros tipos de conjuntos de dados, juntamente com inúmeras funções para operações eficientes em matrizes durante o uso do scikit-learn.

Scipy: um empreendimento impulsionado pela comunidade que visa criar e disseminar software de código aberto para fins de ciência de dados em Python. Especificamente, sua missão se concentra no desenvolvimento e manutenção do pacote Scipy, que está disponível gratuitamente sob uma licença de código aberto (como uma licença de Distribuição de Software de Berkeley, também conhecida como BSD) e acessível publicamente através de repositórios GitHub dentro da organização Scipy.

Matplotlib: uma biblioteca de plotagem extensa e flexível para Python que capacita os cientistas de dados a transformar seu conjunto de dados em gráficos informativos, gráficos e outras visualizações. Ao fornecer um conjunto abrangente de ferramentas e funcionalidades, o Matplotlib facilita a análise, a exploração e a comunicação de dados.

Cython: amplia os recursos do Python ao permitir chamadas diretas para funções C e declaração explícita de tipos de conjuntos de dados C em variáveis e atributos de classe. Esse recurso facilita a geração de código C altamente otimizado a partir do código-fonte do Cython para uso no sklearn.

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Pré-processamento

Ao trabalhar com o scikit-learn, é essencial garantir que os dados de treinamento sejam devidamente preparados e formatados antes de serem inseridos no modelo de aprendizado de máquina. Esse processo é conhecido como pré-processamento, e o scikit-learn oferece uma série de ferramentas para ajudar a organizar o conjunto de dados. Uma tarefa comum durante esse estágio no pré-processamento do scikit-learn é a normalização, onde as funcionalidades numéricas são dimensionadas para ter magnitudes semelhantes usando técnicas como MinMax Scaler ou Standard Scaler. Se o conjunto de dados precisar ser codificado a partir de variáveis categóricas em representações numéricas, One-Hot Encoding (OHE) ou LabelEncoder (LE) podem torná-los compatíveis com o fluxo de trabalho do modelo. A OHE transforma valores de dados categóricos em vetores binários, resultando em uma nova coluna para cada categoria com 1 ou 0 indicando a presença ou ausência da categoria. O LE é usado em aprendizado de máquina, onde rótulos numéricos são atribuídos a categorias ou classes. Ao contrário do One-Hot Encoder, ele não cria novas colunas, mas substitui valores categóricos por valores inteiros. Pode levar a problemas como a suposição de ordinalidade e é menos comum do que a OHE nas práticas modernas de aprendizado de máquina devido às suas limitações.

O pré-processamento também pode envolver a seleção de funcionalidades, onde um subconjunto de funcionalidades relevantes do scikit-learn pode ser escolhido para o treinamento de modelo. Essa etapa pode ser realizada removendo colunas irrelevantes ou usando técnicas como eliminação recursiva de funcionalidades (RFE) ou informações mútuas (MI). A eliminação recursiva de funcionalidades é uma técnica usada para selecionar as funcionalidades mais importantes em um conjunto de dados, removendo e treinando novamente um modelo com um conjunto de funcionalidades reduzido, identificando, em última análise, as funcionalidades com melhor desempenho. Informações mútuas mede a quantidade de informações que uma variável aleatória contém sobre outra, permitindo que ela identifique quais funcionalidades são altamente correlacionadas ou relevantes para um resultado-alvo. Esse método é útil para selecionar variáveis informativas. Além disso, lidar com missing values é crucial, e o scikit-learn oferece vários métodos para imputar essas lacunas, como imputação de média/mediana, preenchimento direto/preenchimento reverso ou outras abordagens mais sofisticadas.

Para executar essas tarefas, o scikit-learn contém um pacote abrangente de ferramentas de pré-processamento. As classes StandardScaler e MinMaxScaler são escolhas populares para dimensionar funcionalidades numéricas, enquanto o OneHotEncoder é ideal para variáveis categóricas. Para imputação de missing values, a classe SimpleImputer oferece uma variedade de métodos para escolher. Ao combinar essas ferramentas de maneira criativa, pode ser criado um pipeline robusto de pré-processamento para garantir maior aprendizado de máquina, desempenho e precisão do modelo.

Por exemplo, o StandardScaler pode ser usado para padronizar as funcionalidades numéricas dos dados, seguidos pelo OneHotEncoder para transformar variáveis categóricas em representações numéricas. Para cada categoria única em uma variável categórica, uma nova funcionalidade binária (0 ou 1) é criada. Se uma observação tiver a categoria "X", então, para a funcionalidade correspondente a "X", o valor será definido como 1 e todas as outras funcionalidades serão definidas como 0. Esse processo também pode ser chamado de extração de funcionalidade. Ao encadear essas operações, pode-se preparar um conjunto de dados unificado pronto para o treinamento de modelos de aprendizado de máquina.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Métrica

O scikit-learn fornece uma variedade de métricas integradas para problemas de classificação e regressão, auxiliando, assim, no processo de tomada de decisão em relação à otimização ou seleção de modelos. No contexto do aprendizado de máquina e especificamente com o scikit-learn, um modelo de regressão é um tipo de modelo preditivo que estima resultados contínuos com base em funcionalidades de entrada. Diferentemente dos modelos de classificação que preveem rótulos ou categorias discretas, os modelos de regressão são usados quando se deseja prever uma quantidade.

Para tarefas de classificação,  as métricas incluem exatidão, precisão, recall, pontuação F1 e área sob a curva ROC (AUC-ROC).

  • Exatidão: mede a proporção de previsões corretas em relação ao total de previsões.

  • Precisão: concentra-se em previsões positivas, quantificando quantos itens selecionados são relevantes.

  • Recall: também conhecido como sensibilidade, o recall avalia a capacidade do modelo de encontrar todas as instâncias relevantes.

  • Pontuação F1: a média harmônica de precisão e do recall, fornecendo um equilíbrio entre essas duas métricas.

  • AUC-ROC: uma métrica para avaliar o desempenho de um modelo de classificação onde a saída é uma probabilidade. Representa visualmente o dilema entre a taxa de verdadeiros positivos (TPR) e a taxa de falsos positivos (FPR).

Para tarefas de regressão, as métricas de avaliação comuns no scikit-learn incluem o erro absoluto médio (MAE), o erro quadrático médio (RMSE), a pontuação R^2 e o erro quadrático médio (MSE).

  • MAE: mede a magnitude média dos erros sem considerar sua direção.

  • RMSE: a raiz quadrada da média dos erros quadrados, dando mais peso a erros maiores.

  • Pontuação R2: também conhecida como coeficiente de determinação, essa pontuação representa a proporção da variância na variável dependente que é previsível a partir das variáveis independentes.

  • MSE: calcula a diferença média quadrática entre os valores previstos e reais, oferecendo uma medida de quão próximos estão os ajustes dos pontos de dados.

Por exemplo, em um cenário de avaliação de risco de crédito que usa o scikit-learn, a área sob a métrica da curva de característica de operação do receptor (AUC-ROC) é crucial na avaliação do desempenho do modelo. Essa métrica mede a capacidade do modelo de distinguir entre mutuários que não pagaram os empréstimos e aqueles que os pagaram, com base em funcionalidades que incluem renda, relação dívida/receita e histórico profissional. Valores de AUC-ROC mais próximos de 1 significam modelos melhores com maiores recursos de diferenciação, auxiliando os gerentes de bancos a determinar a adequação do modelo para decisões de empréstimos ou identificar áreas para melhoria.

As métricas do scikit-learn permitem uma avaliação completa dos modelos de aprendizado de máquina em diferentes tarefas e cenários. Compreender essas métricas ajuda a interpretar o desempenho do modelo, identificar áreas potenciais de melhoria e, em última análise, selecionar ou otimizar o modelo com melhor desempenho para um problema específico.

Casos de uso do Scikit-learn

Detecção de spam de e-mail: os algoritmos de classificação do scikit-learn, incluindo a regressão logística ou máquinas de vetores de suporte (SVM), ajudam a filtrar e-mails indesejados, categorizando-os como spam ou não. O sklearn também tem a capacidade de validação cruzada usando cross_val_score para avaliar o quão bem o classificador Naïve Bayes pode distinguir entre e-mails de spam e não spam. O sklearn usa validação cruzada para treinar e testar o modelo em cinco divisões diferentes de seus dados. Isso gera uma métrica de desempenho médio, que dá uma ideia melhor de como o modelo pode se comportar em e-mails novos não vistos.

Previsão de preços de casas: o scikit-learn pode ser usado para técnicas de regressão, como regressão linear, para estimar preços de casas com base em funcionalidades como localização, tamanho e comodidades, ajudando os compradores a tomar decisões informadas. O scikit-learn integra-se sem dificuldades a bibliotecas de visualização de dados, como Plotly e Matplotlib. Isso permite visualizações que aprimoram a compreensão e a interpretação dos resultados da regressão, facilitando a tomada de decisão mais bem informadas em casos de uso como esse.

Detecção da doença das folhas de faia: o algoritmo de árvores de decisão do scikit-Learn pode ser usado nas florestas do leste dos EUA para detectar a doença das folhas de faia (BLD). Ao analisar fatores como idade da árvore, localização e condição da folha, o modelo pode identificar faias em risco de BLD. Usando aprendizado de máquina e abordagens baseadas em dados, as árvores mais vulneráveis podem ser identificadas e estratégias podem ser implementadas para protegê-las.

Detecção de anomalias: em cibersegurança, o agrupamento k-means do scikit-learn pode ser empregado para detectar padrões ou comportamentos incomuns que podem sinalizar possíveis violações de segurança. Ao agrupar pontos de dados semelhantes, o k-means ajuda a identificar valores discrepantes, pontos de dados que se desviam significativamente dos agrupamentos estabelecidos, como possíveis anomalias. Essas anomalias podem indicar tentativas de acesso não autorizadas, atividades de malware ou outras ações maliciosas. A detecção oportuna de tais anomalias, usando o sklearn, permite que as equipes de cibersegurança investiguem e mitiguem ameaças rapidamente, aprimorando a postura de segurança de uma organização.

Avaliação de risco de crédito: instituições financeiras usam o algoritmo florestas aleatórias do scikit-learn para identificar as funcionalidades mais importantes, como histórico de crédito, renda e índice de dívida sobre renda, ao avaliar o risco de crédito para potenciais mutuários. Ao classificar a importância das variáveis com florestas aleatórias, credores podem tomar decisões mais bem informadas sobre quem aprovar para empréstimos e a quais taxas de juros.

Pesquisa genômica: o sklearn pode aplicar técnicas, incluindo análise de componentes principais (PCA) para reduzir a complexidade dos dados genéticos, facilitando a identificação de padrões significativos sem ser sobrecarregado por ruído.

Análise de texto: ao lidar com grandes documentos ou conjuntos de dados, a redução de dimensionalidade ajuda a resumir e visualizar temas ou tópicos importantes de forma eficiente, o que é crucial para áreas como análise de sentimento ou sistemas de recomendação de conteúdo.

Integração do LLM no scikit-learn

O scikit-learn concentra-se principalmente em algoritmos de aprendizado de máquina, mas pode ser estendido para incorporar grandes modelos de linguagem (LLMs). Embora originalmente centrado em modelos tradicionais, como árvores de decisão, máquinas de vetores de suporte e algoritmos de agrupamento, o ecossistema flexível do scikit-learn permite a integração com LLMs por meio de configurações de interface de programação de aplicativos (API). Isso inclui o aproveitamento de modelos como a série GPT da OpenAI e outras opções contribuídas pela comunidade, como os modelos Anthropic ou AzureChatOpenAI.

O processo de integração é otimizado de forma semelhante a projetos como o Auto-GPT, tornando-o acessível a desenvolvedores familiarizados com o fluxo de trabalho do scikit-learn. O scikit-learn oferece recursos em seu site do GitHub , incluindo tutoriais que orientam os usuários a explorar LLMs de código aberto. Essa configuração facilita a implementação do modelo LLM escolhido por meio de credenciais de API, permitindo que o scikit-learn se beneficie de recursos aprimorados de processamento de linguagem natural.

Requisitos

Conhecer os ambientes Python, NumPy, SciPy, Pandas e Matplotlib é essencial para utilizar a eficiência do scikit-learn, pois eles formam uma base de pré-processamento de dados, engenharia de funcionalidades e visualização em pipelines de aprendizado de máquina. Essas bibliotecas fornecem a base para pré-processamento de dados, engenharia de funcionalidades e visualização em pipelines de aprendizado de máquina. A familiaridade com seus recursos permite o manuseio eficiente de conjuntos de dados, a seleção de funcionalidades relevantes e a visualização de resultados, o que leva a um melhor desempenho do modelo.

Ambiente Python

 

Uma instalação independente do Python e suas dependências, permitindo que você isole os requisitos do seu projeto e garanta a consistência entre diferentes projetos. Pode ser criado usando ferramentas como conda ou virtualenv.

Numpy

 

Uma biblioteca compatível com grandes arrays e matrizes multidimensionais, juntamente com uma ampla gama de funções matemáticas de alto desempenho para manipulá-las. É um pacote fundamental para computação científica em Python.

Scipy

 

Uma biblioteca que se baseia no NumPy, fornecendo funções para aplicações científicas e de engenharia, como processamento de sinais, álgebra linear, otimização e estatísticas. É amplamente utilizado em campos como física, engenharia e análise de dados.

Pandas

 

Uma biblioteca que fornece estruturas de dados e funções para lidar de forma eficiente com dados estruturados, incluindo dados tabulares como planilhas e tabelas SQL. É particularmente útil para limpeza, filtragem, agrupamento e mesclagem de dados.

Matplotlib

 

Uma biblioteca de plotagem que fornece uma ampla gama de ferramentas de visualização, permitindo criar plotagens, tabelas e gráficos 2D e 3D de alta qualidade. Frequentemente, é usado em conjunto com o NumPy e o Pandas para visualizar dados científicos.

Desenvolvimentos futuros

Conforme o scikit-learn continua evoluindo, estão em andamento esforços para expandir seus recursos com técnicas avançadas de conjunto e abordagens de meta-aprendizado. Ao aproveitar o poder das redes neurais ao lado de algoritmos tradicionais, o scikit-learn visa fornecer um toolkit abrangente que atende a uma variedade cada vez maior de desafios de aprendizado de máquina. Esses desenvolvimentos prometem tornar ainda mais acessível para profissionais que buscam aproveitar tecnologias de ponta em seu trabalho.

Soluções relacionadas
IBM watsonx.ai

Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.

Conheça o watsonx.ai
Soluções de inteligência artificial

Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.

Explore as soluções de IA
Consultoria e serviços em IA

Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.

Explore os serviços de IA
Dê o próximo passo

Obtenha acesso completo aos recursos que abrangem o ciclo de vida do desenvolvimento da IA. Produza soluções poderosas de IA com interfaces fáceis de usar, fluxos de trabalhos e acesso a APIs e SDKs padrão do setor.

Explore o watsonx.ai Agende uma demonstração em tempo real