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.