Che cos'è scikit-Learn (Sklearn)?

Autore

Bryan Clark

Senior Technology Advocate

Che cos'è scikit-learn (sklearn)?

Scikit-learn (spesso scritta come scikit-learn o sklearn) è una libreria di machine learning open source ampiamente utilizzata per Python.

Scikit-learn è una delle librerie di machine learning (ML) più utilizzate oggi. Scritto in Python, questo set di strumenti per la data science semplifica l'apprendimento automatico (ML) e la modellazione statistica dell'intelligenza artificiale (AI) con un'interfaccia coerente. Esso include moduli essenziali per la classificazione, la regressione, il clustering e la riduzione della dimensionalità, tutti basati sulle librerie NumPy, SciPy e Matplotlib. L'implementazione da zero di algoritmi di machine learning in Python può essere un'attività computazionale intensiva e soggetta a errori, che richiede competenze in algebra lineare, calcolo e ottimizzazione. Scikit-learn può rivelarsi una risorsa preziosa per attenuare questi problemi.

Sfruttando la solida suite di reti neurali pre-addestrate e algoritmi di machine learning di scikit-learn, i nuovi arrivati nel settore possono pre-elaborare in modo rapido ed efficace set di dati per applicazioni di apprendimento supervisionato, come la regressione o la classificazione. Questo passaggio può essere eseguito senza la necessità di una comprensione approfondita di concetti matematici complessi come l'algebra lineare, il calcolo o la cardinalità. Inoltre, questi strumenti facilitano i processi di apprendimento non supervisionato, tra cui il clustering e la riduzione della dimensionalità. Questi strumenti consentono agli utenti di concentrarsi su insight di livello superiore e sulla creazione di valore aziendale.

workflow scikit-learn
Diagramma di workflow di scikit-learn

Componenti di scikit-learn

Numpy: una delle librerie Python fondamentali per il calcolo scientifico. Fornisce un oggetto array e vari altri tipi di set di dati, insieme a numerose funzioni per operazioni efficienti sugli array durante l'utilizzo di scikit-learn.

Scipy: un'iniziativa guidata dalla comunità volta a creare e diffondere software open source per scopi di data science in Python. Nello specifico, la sua missione si concentra sullo sviluppo e sulla manutenzione del pacchetto Scipy, che è disponibile gratuitamente con una licenza open source (come la licenza Berkeley Software Distribution, nota anche come BSD) e accessibile pubblicamente tramite i repository GitHub all'interno dell'organizzazione Scipy.

Matplotlib: una libreria di plottaggio estesa e flessibile per Python che consente ai data scientist di trasformare il proprio set di dati in grafici, diagrammi e altre visualizzazioni. Matplotlib facilita l'analisi, l'esplorazione e la comunicazione dei dati, offrendo un set completo di strumenti e funzionalità.

Cython: estende le funzionalità di Python abilitando le chiamate dirette alle funzioni C e la dichiarazione esplicita dei tipi di set di dati C su variabili e attributi di classe. Questa funzionalità facilita la generazione di codice C altamente ottimizzato dal codice sorgente di Cython da utilizzare in sklearn.

Le ultime tendenze in materia di AI, proposte da esperti

Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Pre-elaborazione

Quando si lavora con scikit-learn, è essenziale assicurarsi che i dati di addestramento siano preparati e formattati correttamente prima dell'input nel modello di machine learning. Questo processo è noto come pre-elaborazione e scikit-learn fornisce una serie di strumenti per organizzare il set di dati. Un'attività comune in questa fase della pre-elaborazione di scikit-learn è la normalizzazione, in cui le caratteristiche numeriche vengono ridimensionate per avere grandezze simili utilizzando tecniche come MinMax Scaler o Standard Scaler. Se il set di dati deve essere codificato da variabili categoriali in rappresentazioni numeriche, One-Hot Encoding (OHE) o LabelEncoder (LE), possono renderli compatibili con il workflow del modello. OHE trasforma i valori dei dati categoriali in vettori binari, generando una nuova colonna per ogni categoria con 1 o 0 che indica la presenza o l'assenza della categoria. LE viene utilizzato nel machine learning in cui le etichette numeriche vengono assegnate a categorie o classi. A differenza di One-Hot Encoder, non crea nuove colonne ma sostituisce i valori categorici con valori interi. Può portare a problemi come il presupposto dell'ordinalità ed è meno comune di OHE nelle moderne pratiche di apprendimento automatico a causa dei suoi limiti.

La pre-elaborazione può comportare anche la selezione delle caratteristiche, in cui un sottoinsieme di caratteristiche pertinenti di scikit-learn potrebbe essere scelto per l'addestramento dei modelli. Questo passaggio può essere eseguito rimuovendo le colonne irrilevanti o utilizzando tecniche come l'eliminazione delle caratteristiche ricorsive (RFE) o l'informazione reciproca (MI). L'eliminazione ricorsiva delle caratteristiche è una tecnica utilizzata per selezionare le caratteristiche più importanti in un set di dati rimuovendo e riaddestrando iterativamente un modello con un set di caratteristiche ridotto, identificando infine le caratteristiche più performanti. L'informazione reciproca misura la quantità di informazioni che una variabile casuale contiene su un'altra e ciò le consente di identificare quali caratteristiche sono altamente correlate o rilevanti per un risultato obiettivo. Questo metodo è utile per selezionare variabili informative. Inoltre, la gestione dei valori mancanti è fondamentale e scikit-learn offre vari metodi per imputare queste lacune, come l'imputazione media/mediana, il riempimento in avanti/all'indietro o altri approcci più sofisticati.

Per eseguire queste attività, scikit-learn contiene una suite completa di strumenti di pre-elaborazione. Le classi StandardScaler e MinMaxScaler sono scelte comuni per il ridimensionamento delle caratteristiche numeriche, mentre OneHotEncoder è ideale per le variabili categoriche. Per l'imputazione del valore mancante, la classe SimpleImputer fornisce una gamma di metodi tra cui scegliere. Combinando questi strumenti in modi creativi, è possibile creare una solida pipeline di pre-elaborazione per garantire un maggiore apprendimento automatico, prestazioni e precisione dei modelli.

Ad esempio, StandardScaler può essere utilizzato per standardizzare le caratteristiche numeriche dei dati, seguito da OneHotEncoder per trasformare le variabili categoriali in rappresentazioni numeriche. Per ogni categoria univoca in una variabile categoriale, viene creata una nuova caratteristica binaria (0 o 1). Se un'osservazione ha la categoria "X", allora per la caratteristica corrispondente a "X" il valore viene impostato su 1 e tutte le altre caratteristiche vengono impostate su 0. Questo processo può anche essere definito come estrazione di caratteristiche. Concatenando queste operazioni, è possibile preparare un set di dati unificato pronto per l'addestramento dei modelli di machine learning.

AI Academy

Diventa un esperto di AI

Acquisisci le conoscenze necessarie per dare priorità agli investimenti nell'AI alla base della crescita aziendale. Inizia oggi stesso con la nostra AI Academy gratuita e guida il futuro dell'AI nella tua organizzazione.

Metriche

Scikit-learn fornisce una serie di metriche integrate per i problemi di classificazione e regressione, aiutando così nel processo decisionale relativo all'ottimizzazione o alla selezione del modello. Nel contesto del machine learning e in particolare con scikit-learn, un modello di regressione è un tipo di modello predittivo che stima i risultati continui in base alle caratteristiche di input. A differenza dei modelli di classificazione che prevedono etichette discrete o categorie, i modelli di regressione vengono utilizzati quando si vuole prevedere una quantità.

Per le attività di classificazione, le metriche includono accuratezza, precisione, richiamo, punteggio F1 e area sotto la curva ROC (AUC-ROC).

  • Precisione: misura la proporzione di previsioni corrette rispetto alle previsioni totali.

  • Precisione: si concentra sulle previsioni positive, quantificando il numero di elementi selezionati pertinenti.

  • Richiamo: noto anche come sensibilità, il richiamo valuta la capacità del modello di trovare tutte le istanze pertinenti.

  • Punteggio F1: la media armonica della precisione e del richiamo, che fornisce un equilibrio tra queste due metriche.

  • AUC-ROC: una metrica per valutare le prestazioni di un modello di classificazione in cui l'output è una probabilità. Rappresenta visivamente il compromesso tra il tasso di veri positivi (TPR) e il tasso di falsi positivi (FPR).

Per le attività di regressione, le metriche di valutazione più comuni in scikit-learn includono errore medio assoluto (MAE), radice dell'errore quadratico medio (RMSE), punteggio R^2 ed errore quadratico medio (MSE).

  • MAE: misura l'entità media degli errori senza considerare la loro direzione.

  • RMSE: la radice quadrata della media degli errori al quadrato, che dà più peso agli errori più grandi.

  • Punteggio R2: noto anche come coefficiente di determinazione, questo punteggio rappresenta la proporzione della varianza nella variabile dipendente che è prevedibile dalle variabili indipendenti.

  • MSE: calcola la differenza quadratica media tra i valori previsti ed effettivi, offrendo una misura della vicinanza degli adattamenti ai punti dati.

Ad esempio, in uno scenario di valutazione del rischio di credito che utilizza scikit-learn, la metrica dell'area sotto la curva caratteristica operativa del ricevitore (AUC-ROC) è fondamentale per valutare le prestazioni del modello. Questa metrica misura la capacità del modello di distinguere tra i mutuatari che sono risultati inadempienti sui prestiti e quelli che non lo sono stati, in base a caratteristiche quali reddito, rapporto debito/reddito e storia lavorativa. I valori AUC-ROC più vicini a 1 indicano modelli migliori con maggiori funzionalità, che aiutano i dirigenti bancari a determinare l'idoneità del modello per le decisioni di prestito o a identificare le aree di miglioramento.

Le metriche di Scikit-learn consentono una valutazione approfondita dei modelli di machine learning in diverse attività e scenari. La comprensione di queste metriche aiuta a interpretare le prestazioni del modello, a identificare potenziali aree di miglioramento e, in ultima analisi, a selezionare o ottimizzare il modello con le migliori prestazioni per un problema specifico.

Casi d'uso di scikit-learn

Rilevamento dello spam via e-mail: gli algoritmi di classificazione di Scikit-learn, tra cui la regressione logistica o le macchine vettoriali di supporto (SVM), aiutano a filtrare le e-mail indesiderate classificandole come spam o meno. Sklearn è inoltre in grado di eseguire la convalida incrociata utilizzando cross_val_score per valutare la capacità del classificatore Naïve Bayes di distinguere tra e-mail spam e non spam. Sklearn utilizza la convalida incrociata per addestrare e testare il modello in 5 diverse suddivisioni dei dati. In questo modo si ottiene una metrica media delle prestazioni che consente di avere un'idea migliore delle prestazioni del modello su e-mail nuove e non ancora visualizzate.

Previsione dei prezzi delle case: Scikit-learn può essere utilizzato per tecniche di regressione quali la regressione lineare per stimare i prezzi delle case in base a caratteristiche quali ubicazione, dimensioni e servizi, aiutando gli acquirenti a prendere decisioni informate. Scikit-learn si integra perfettamente con le librerie di visualizzazione dei dati come Plotly e Matplotlib. Ciò consente di ottenere visualizzazioni che migliorano la comprensione e l'interpretazione dei risultati della regressione, facilitando così un processo decisionale più informato in un caso d'uso come questo.

Rilevamento della malattie delle foglie di faggio: l'algoritmo Decision Trees di scikit-learn può essere utilizzato nelle foreste degli Stati Uniti orientali per rilevare la malattia delle foglie di faggio (BLD). Analizzando fattori come l'età degli alberi, la posizione e le condizioni delle foglie, il modello può identificare i faggi a rischio di BLD. Utilizzando il machine learning e gli approcci basati sui dati, è possibile individuare gli alberi più vulnerabili e implementare strategie per proteggerli.

Rilevamento di anomalie: nella cybersecurity, il clustering k-means di scikit-learn può essere utilizzato per rilevare modelli o comportamenti insoliti che potrebbero segnalare una potenziale violazione di sicurezza. Raggruppando punti dati simili, k-means aiuta a identificare gli outlier, ovvero i punti dati che si discostano in modo significativo dal cluster stabilito, come potenziali anomalie. Queste anomalie potrebbero indicare tentativi di accesso non autorizzati, attività di malware o altre azioni dannose. Il rilevamento tempestivo di tali anomalie, utilizzando sklearn, consente ai team di cybersecurity di indagare e mitigare rapidamente le minacce, migliorando il livello di sicurezza di un'Organizzazione.

Valutazione del rischio di credito: gli istituti finanziari utilizzano l'algoritmo Random Forests di Scikit-learn per identificare le caratteristiche più importanti, come la storia creditizia, il reddito e il rapporto debito/reddito, nella valutazione del rischio di credito per i potenziali mutuatari. Classificando l'importanza delle variabili con Random Forests, gli istituti di credito possono prendere decisioni più informate su chi approvare per i prestiti e a quali tassi di interesse.

Ricerca genomica: Sklearn può applicare tecniche tra cui l'analisi delle componenti principali (PCA) per ridurre la complessità dei dati genetici, facilitando l'identificazione di modelli significativi senza farsi sopraffare dal rumore.

Analisi del testo: quando si ha a che fare con documenti o set di dati di grandi dimensioni, la riduzione della dimensionalità aiuta a riassumere e visualizzare in modo efficiente temi o argomenti chiave, il che è fondamentale per aree come l'analisi del sentiment o i sistemi di raccomandazione dei contenuti.

Integrazione degli LLM in scikit-learn

Scikit-learn si concentra principalmente sugli algoritmi di machine learning, ma può essere esteso per incorporare modelli linguistici di grandi dimensioni (LLM). Sebbene originariamente incentrato su modelli tradizionali come alberi decisionali, macchine vettoriali di supporto e algoritmi di clustering, l'ecosistema flessibile di scikit-learn consente l'Integrazione con gli LLM tramite configurazioni di application programming interface (API). Ciò include lo sfruttamento di modelli come la serie GPT di OpenAI e altre opzioni fornite dalla comunità, come i modelli Anthropic o AzureChatOpenAI.

Il processo di integrazione è semplificato in modo simile a progetti quali Auto-GPT, rendendolo accessibile agli sviluppatori che hanno familiarità con il flusso di lavoro di scikit-learn. Scikit-learn fornisce risorse sul suo sito GitHub, inclusi tutorial che guidano gli utenti nell'Esplora degli open source LLMs. Questa configurazione facilita l'implementazione del modello LLM scelto tramite credenziali API, consentendo a scikit-learn di trarre beneficio da funzionalità di elaborazione del linguaggio naturale.

Requisiti

Una conoscenza approfondita degli ambienti Python, NumPy, SciPy, Pandas e Matplotlib è essenziale per sfruttare l'efficienza di scikit-learn, poiché costituiscono la base della pre-elaborazione dei dati, dell'ingegneria delle caratteristiche e della visualizzazione nelle pipeline di machine learning. Queste librerie forniscono le basi per la pre-elaborazione dei dati, l'ingegneria delle caratteristiche e la visualizzazione nelle pipeline di machine learning. La familiarità con le loro funzionalità consente una gestione efficiente dei set di dati, la selezione delle caratteristiche pertinenti e la visualizzazione dei risultati, portando in ultima analisi a un miglioramento delle prestazioni del modello.

Ambiente Python

 

Un'installazione autonoma di Python e delle sue dipendenze, che ti consenta di isolare i requisiti del tuo progetto e garantire la coerenza tra i diversi progetti. Può essere creato utilizzando strumenti come conda o virtualenv.

Numpy

 

Una libreria che fornisce supporto per array e matrici multidimensionali di grandi dimensioni, insieme a un'ampia gamma di funzioni matematiche ad alte prestazioni per manipolarli. È un pacchetto fondamentale per il calcolo scientifico in Python.

Scipy

 

Una libreria che si basa su NumPy, fornendo funzioni per applicazioni scientifiche e ingegneristiche, come l'elaborazione dei segnali, algebra lineare, ottimizzazione e statistica. È ampiamente utilizzata in campi come la fisica, l'ingegneria e l'analisi dei dati.

Pandas

 

Una libreria che fornisce strutture e funzioni di dati per gestire in modo efficiente i dati strutturati, compresi i dati tabulari come fogli di calcolo e tabelle SQL. È particolarmente utile per la pulizia, il filtraggio, il raggruppamento e l'unione dei dati.

Matplotlib

 

Una libreria di grafici che fornisce un'ampia gamma di strumenti di visualizzazione, consentendo di creare grafici, tabelle e diagrammi 2D e 3D di alta qualità. Viene spesso usata insieme a NumPy e Pandas per visualizzare dati scientifici.

Sviluppi futuri

Mentre scikit-learn continua a evolversi, sono in corso sforzi per ampliare le sue funzionalità con tecniche di ensemble avanzate e approcci di meta-apprendimento. Sfruttando la potenza delle reti neurali insieme agli algoritmi tradizionali, scikit-learn mira a fornire un kit di strumenti completo che soddisfi una gamma sempre più ampia di sfide di machine learning. Questi sviluppi promettono di renderlo ancora più accessibile per i professionisti che desiderano utilizzare tecnologie all'avanguardia nel loro lavoro.

Soluzioni correlate
IBM® watsonx.ai

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e una minima quantità di dati.

Esplora watsonx.ai
Soluzioni di intelligenza artificiale

Metti l'AI al servizio della tua azienda con l'esperienza leader di settore e il portfolio di soluzioni di IBM nel campo dell'AI.

Esplora le soluzioni AI
Consulenza e servizi per l'intelligenza artificiale (AI)

I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.

Esplora i servizi AI
Prossimi passi

Attraverso l'AI, IBM Concert scopre insight di importanza chiave sulle operazioni e fornisce raccomandazioni specifiche per migliorare le applicazioni. Scopri come Concert può migliorare il tuo business.

Esplora Concert Esplora le soluzioni di automazione dei processi aziendali