Master Scikit-learn: Guida definitiva a Sklearn in Python

Aprile 11, 2025

Scikit-learn, spesso chiamato sklearn, è una potente libreria open-source in Python per l'apprendimento automatico. Basata su NumPy, SciPy e Matplotlib, fornisce strumenti semplici ed efficienti per il data mining, l'analisi dei dati e la modellazione. Che siate principianti o esperti, l'API intuitiva di sklearn la rende ideale per costruire modelli predittivi. Dal suo rilascio nel 2007, sklearn è diventato una pietra miliare dell'ecosistema della scienza dei dati in Python, sostenuto da una vivace comunità. Supporta sia l'apprendimento supervisionato che quello non supervisionato, rendendolo versatile per compiti come la classificazione, la regressione, il clustering e la riduzione della dimensionalità.

Perché scegliere sklearn? La sua interfaccia coerente, l'ampia documentazione e la vasta gamma di algoritmi, come la regressione lineare, le macchine vettoriali di supporto e le foreste casuali, consentono una rapida prototipazione e distribuzione. Questa guida approfondisce le caratteristiche principali di sklearn, le applicazioni pratiche e le tecniche avanzate per aiutarvi a padroneggiare l'apprendimento automatico in Python.

Come iniziare con Scikit-learn

Per iniziare, installare sklearn usando pip:

bash
pip installare scikit-learn

In alternativa, utilizzare conda:

bash
conda installa scikit-learn

Assicurarsi di avere installato NumPy, SciPy e Pandas, in quanto dipendenze. Un ambiente virtuale (ad esempio, tramite venv O conda) consente di organizzare i progetti. Verificare l'installazione importando sklearn:

python
importare sklearn
print(sklearn.__version__)

Sklearn funziona perfettamente in Jupyter Notebook, rendendo più facile la sperimentazione. Scaricate i set di dati di esempio, come Iris o Boston Housing, direttamente da sklearn:

python
da sklearn.datasets import load_iris
iris = load_iris()

Concetti fondamentali di Scikit-learn

L'API di Sklearn ruota attorno a tre concetti chiave: stimatori, predittori, E trasformatori. Uno stimatore è un oggetto che apprende dai dati (ad esempio, un classificatore). I predittori forniscono previsioni (ad es, predire() ), mentre i trasformatori pre-elaborano i dati (ad esempio, scalando le caratteristiche). Il flusso di lavoro segue uno schema fit-transform-predict:

python
da sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scalato = scaler.fit_transform(X)

Preelaborazione dei dati è fondamentale. Sklearn offre strumenti come StandardScaler per la standardizzazione, OneHotEncoder per le variabili categoriche e Computer semplice per i valori mancanti. Utilizzare Condotte per concatenare le fasi di preelaborazione e modellazione:

python
da sklearn.pipeline import Pipeline
pipeline = Pipeline([('scaler', StandardScaler()), ('clf', LogisticRegression())])

Ciò garantisce trasformazioni coerenti durante l'addestramento e il test, riducendo gli errori.

Apprendimento supervisionato con sklearn

L'apprendimento supervisionato richiede dati etichettati. Sklearn eccelle in due tipi: classificazione e regressione.

  • Classificazione: Prevedere le categorie (ad esempio, spam vs. non spam). Provate la Regressione logistica:
  • pitone
da sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(X_train, y_train)
  • y_pred = clf.predict(X_test)
  • Altri algoritmi includono le Macchine a Vettori di Supporto (SVC) e gli alberi decisionali (Classificatore ad albero decisionale). Valutare i modelli con metriche come l'accuratezza o il punteggio F1:
  • pitone
da sklearn.metrics importa accuracy_score
  • print(accuracy_score(y_test, y_pred))
  • Regressione: Prevedere valori continui (ad esempio, i prezzi delle case). La regressione lineare è un punto fermo:
  • pitone
da sklearn.linear_model import LinearRegression
reg = LinearRegression()
  • reg.fit(X_train, y_train)
  • Opzioni avanzate come Ridge o Lasso gestiscono la regolarizzazione. Misurare le prestazioni con l'errore quadratico medio (MSE):
  • pitone
da sklearn.metrics import mean_squared_error
  • print(mean_squared_error(y_test, y_pred))

Apprendimento non supervisionato con sklearn

L'apprendimento non supervisionato trova modelli nei dati non etichettati. Sklearn supporta il clustering e la riduzione della dimensionalità.

  • Raggruppamento: Raggruppare punti dati simili. K-Means è molto diffuso:
  • pitone
da sklearn.cluster importa KMeans
kmeans = KMeans(n_cluster=3)
  • cluster = kmeans.fit_predict(X)
  • DBSCAN gestisce meglio i cluster non sferici per gli insiemi di dati complessi.
  • Riduzione della dimensionalità: Ridurre le caratteristiche preservando le informazioni. L'analisi delle componenti principali (PCA) è ampiamente utilizzata:
  • pitone
da sklearn.decomposition import PCA
pca = PCA(n_componenti=2)
  • X_ridotto = pca.fit_transform(X)
  • Visualizzazione di dati ad alta dimensionalità con t-SNE per l'analisi esplorativa.

Selezione e valutazione del modello

Per garantire la solidità dei modelli, sklearn offre strumenti per la validazione e la messa a punto. Convalida incrociata valuta la generalizzazione:

python
da sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores.mean())

Regolazione dell'iperparametro ottimizza i modelli. Utilizzare GridSearchCV:

python
da sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.1, 1, 10]}
grid = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)

La suddivisione dei dati in set di addestramento e di prova impedisce l'overfitting:

python
da sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,2)

Caratteristiche avanzate e suggerimenti

I metodi ensemble di Sklearn, come Random Forest e Gradient Boosting, combinano i modelli per ottenere prestazioni migliori:

python
da sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)

Gestire insiemi di dati sbilanciati con tecniche come SMOTE (via squilibrio-apprendimento) o i pesi delle classi. Salvare i modelli per riutilizzarli:

pitone
importare joblib
joblib.dump(clf, 'model.pkl')
clf = joblib.load('model.pkl')

Selezione delle caratteristiche con SelezionareKBest o l'eliminazione ricorsiva delle caratteristiche (RFE) migliora l'efficienza.

Esempio del mondo reale: Prevedere i prezzi delle case

Costruiamo un modello di regressione usando il dataset Boston Housing (o un dataset simile, dato che Boston è deprecato). Caricare i dati:

pitone
importare pandas come pd
da sklearn.datasets import fetch_california_housing
abitazioni = fetch_california_housing()
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = abitazione.target

Preelaborazione e formazione:

pitone
da sklearn.pipeline import Pipeline
da sklearn.preprocessing import StandardScaler
da sklearn.linear_model import LinearRegression

pipeline = Pipeline([('scaler', StandardScaler()), ('reg', LinearRegression())])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
print(mean_squared_error(y_test, y_pred))

Interpretare i coefficienti per comprendere l'importanza delle caratteristiche. Visualizzare le predizioni con Matplotlib per ottenere approfondimenti.

Conclusioni e risorse

Scikit-learn semplifica l'apprendimento automatico grazie a un'API unificata e a strumenti robusti. Dalla preelaborazione alla modellazione avanzata, consente ai data scientist di affrontare in modo efficiente i problemi del mondo reale. Approfondite il tema con sklearn documentazione ufficiale, le competizioni Kaggle o libri come Hands-On Machine Learning with Scikit-learn, Keras e TensorFlow.

Carmatec offre un sistema robusto, scalabile e ad alte prestazioni. Soluzioni Python su misura per accelerare il vostro trasformazione digitale. Dalle applicazioni web alle integrazioni con l'intelligenza artificiale, il nostro esperto Sviluppatori Python creare soluzioni intelligenti e pronte per il futuro che favoriscano la crescita dell'azienda.

it_ITItalian