contentintech
Intermediate

Machine Learning Cheatsheet

Quick-reference scikit-learn API, algorithms, and evaluation metrics at a glance.

scikit-learnregressionclassificationmodel-evaluation
NotesCheatsheet

Data Prep

Split & Scale

from sklearn.model_selection import train_test_split
X_tr, X_te, y_tr, y_te = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42)

from sklearn.preprocessing import (
    StandardScaler, MinMaxScaler, OneHotEncoder)
StandardScaler().fit_transform(X)   # zero mean, unit var
OneHotEncoder(handle_unknown="ignore")

Pipelines

from sklearn.pipeline import make_pipeline
from sklearn.compose import ColumnTransformer
pipe = make_pipeline(StandardScaler(), LogisticRegression())
pipe.fit(X_tr, y_tr); pipe.predict(X_te)

Estimators

Regression

from sklearn.linear_model import (
    LinearRegression, Ridge, Lasso, ElasticNet)
LinearRegression()
Ridge(alpha=1.0)        # L2
Lasso(alpha=0.1)        # L1, sparse
ElasticNet(alpha=0.1, l1_ratio=0.5)

Classification

from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
LogisticRegression(C=1.0, max_iter=1000)
KNeighborsClassifier(n_neighbors=7)
SVC(kernel="rbf", C=1.0, probability=True)

Ensembles

from sklearn.ensemble import (
    RandomForestClassifier,
    HistGradientBoostingClassifier)
RandomForestClassifier(n_estimators=300, n_jobs=-1)
HistGradientBoostingClassifier(learning_rate=0.05,
    max_iter=500, early_stopping=True)
# xgboost / lightgbm for tabular SOTA

Unsupervised

from sklearn.cluster import KMeans, DBSCAN
from sklearn.decomposition import PCA
KMeans(n_clusters=4, n_init="auto").fit(X)
DBSCAN(eps=0.5, min_samples=5).fit(X)
PCA(n_components=2).fit_transform(X)

Model Selection

from sklearn.model_selection import (
    cross_val_score, GridSearchCV,
    RandomizedSearchCV, StratifiedKFold)
cross_val_score(model, X, y, cv=5, scoring="f1")
GridSearchCV(model, param_grid, cv=5,
    scoring="roc_auc", n_jobs=-1).fit(X, y)
# .best_params_  .best_score_  .best_estimator_

Metrics

Metric Formula
PrecisionTP/(TP+FP)
RecallTP/(TP+FN)
F12PR/(P+R)
R21 - SSres/SStot
from sklearn.metrics import (
    accuracy_score, precision_score, recall_score,
    f1_score, roc_auc_score, confusion_matrix,
    classification_report,
    mean_squared_error, mean_absolute_error, r2_score)
roc_auc_score(y, proba)
mean_squared_error(y, pred, squared=False)  # RMSE
classification_report(y, pred)

Rules of Thumb

# Overfit  -> more data, regularize, simpler model
# Underfit -> richer model, more features
# Imbalance-> F1/AUC, class_weight="balanced", resample
# Always fit scalers on TRAIN only (via Pipeline)
# Tune with CV, report on held-out TEST once
import joblib; joblib.dump(model, "m.pkl")

Section navigation