Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Machine learning in Python with scikit-learn. Use for classification, regression, clustering, model evaluation, and ML pipelines.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-22 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 165% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 210% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 161% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 656% | 0% |
This skill provides comprehensive guidance for machine learning tasks using scikit-learn, the industry-standard Python library for classical machine learning. Use this skill for classification, regression, clustering, dimensionality reduction, preprocessing, model evaluation, and building production-ready ML pipelines.
bash# Install scikit-learn using uv uv uv pip install scikit-learn # Optional: Install visualization dependencies uv uv pip install matplotlib seaborn # Commonly used with uv uv pip install pandas numpy
Use the scikit-learn skill when:
pythonfrom sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report # Split data X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, stratify=y, random_state=42 ) # Preprocess scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Train model model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_train_scaled, y_train) # Evaluate y_pred = model.predict(X_test_scaled) print(classification_report(y_test, y_pred))
pythonfrom sklearn.pipeline import Pipeline from sklearn.compose import ColumnTransformer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.impute import SimpleImputer from sklearn.ensemble import GradientBoostingClassifier # Define feature types numeric_features = ['age', 'income'] categorical_features = ['gender', 'occupation'] # Create preprocessing pipelines numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler()) ]) categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('onehot', OneHotEncoder(handle_unknown='ignore')) ]) # Combine transformers preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Full pipeline model = Pipeline([ ('preprocessor', preprocessor), ('classifier', GradientBoostingClassifier(random_state=42)) ]) # Fit and predict model.fit(X_train, y_train) y_pred = model.predict(X_test)
Comprehensive algorithms for classification and regression tasks.
Key algorithms:
When to use:
See: references/supervised_learning.md for detailed algorithm documentation, parameters, and usage examples.
Discover patterns in unlabeled data through clustering and dimensionality reduction.
Clustering algorithms:
Dimensionality reduction:
When to use:
See: references/unsupervised_learning.md for detailed documentation.
Tools for robust model evaluation, cross-validation, and hyperparameter tuning.
Cross-validation strategies:
Hyperparameter tuning:
Metrics:
When to use:
See: references/model_evaluation.md for comprehensive metrics and tuning strategies.
Transform raw data into formats suitable for machine learning.
Scaling and normalization:
Encoding categorical variables:
Handling missing values:
Feature engineering:
When to use:
See: references/preprocessing.md for detailed preprocessing techniques.
Build reproducible, production-ready ML workflows.
Key components:
Benefits:
When to use:
See: references/pipelines_and_composition.md for comprehensive pipeline patterns.
Run a complete classification workflow with preprocessing, model comparison, hyperparameter tuning, and evaluation:
bashpython scripts/classification_pipeline.py
This script demonstrates:
Perform clustering analysis with algorithm comparison and visualization:
bashpython scripts/clustering_analysis.py
This script demonstrates:
This skill includes comprehensive reference files for deep dives into specific topics:
File: references/quick_reference.md
File: references/supervised_learning.md
File: references/unsupervised_learning.md
File: references/model_evaluation.md
File: references/preprocessing.md
File: references/pipelines_and_composition.md
python import pandas as pd df = pd.read_csv('data.csv') X = df.drop('target', axis=1) y = df['target']
python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, stratify=y, random_state=42 )
python from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.compose import ColumnTransformer
# Handle numeric and categorical features separately preprocessor = ColumnTransformer( ('num', StandardScaler(), numeric_features), ('cat', OneHotEncoder(), categorical_features) ])
python model = Pipeline([ ('preprocessor', preprocessor), ('classifier', RandomForestClassifier(random_state=42)) ])
python from sklearn.model_selection import GridSearchCV
param_grid = { 'classifier__n_estimators': 100, 200], 'classifier__max_depth': 10, 20, None] }
grid_search = GridSearchCV(model, param_grid, cv=5) grid_search.fit(X_train, y_train)
python from sklearn.metrics import classification_report
best_model = grid_search.best_estimator_ y_pred = best_model.predict(X_test) print(classification_report(y_test, y_pred))
python from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() X_scaled = scaler.fit_transform(X)
python from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score
scores = ] for k in range(2, 11): kmeans = KMeans(n_clusters=k, random_state=42) labels = kmeans.fit_predict(X_scaled) scores.append(silhouette_score(X_scaled, labels))
optimal_k = range(2, 11)np.argmax(scores)]
python model = KMeans(n_clusters=optimal_k, random_state=42) labels = model.fit_predict(X_scaled)
python from sklearn.decomposition import PCA
pca = PCA(n_components=2) X_2d = pca.fit_transform(X_scaled)
plt.scatter(X_2d:, 0], X_2d:, 1], c=labels, cmap='viridis')
Pipelines prevent data leakage and ensure consistency:
python# Good: Preprocessing in pipeline pipeline = Pipeline([ ('scaler', StandardScaler()), ('model', LogisticRegression()) ]) # Bad: Preprocessing outside (can leak information) X_scaled = StandardScaler().fit_transform(X)
Never fit on test data:
python# Good scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Only transform # Bad scaler = StandardScaler() X_all_scaled = scaler.fit_transform(np.vstack([X_train, X_test]))
Preserve class distribution:
pythonX_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, stratify=y, random_state=42 )
pythonmodel = RandomForestClassifier(n_estimators=100, random_state=42)
Algorithms requiring feature scaling:
Algorithms not requiring scaling:
Issue: Model didn't converge Solution: Increase max_iter or scale features
pythonmodel = LogisticRegression(max_iter=1000)
Issue: Overfitting Solution: Use regularization, cross-validation, or simpler model
python# Add regularization model = Ridge(alpha=1.0) # Use cross-validation scores = cross_val_score(model, X, y, cv=5)
Solution: Use algorithms designed for large data
python# Use SGD for large datasets from sklearn.linear_model import SGDClassifier model = SGDClassifier() # Or MiniBatchKMeans for clustering from sklearn.cluster import MiniBatchKMeans model = MiniBatchKMeans(n_clusters=8, batch_size=100)
Other measured skills in the registry, with their headline benchmark lift.