Data Preprocessing
Master the essential data preparation techniques: scaling numeric features, encoding categorical variables, handling missing values, and extracting features from text and images.
Feature Scaling
Many ML algorithms perform better when features are on similar scales. Scikit-learn provides several scalers:
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler # StandardScaler: zero mean, unit variance (best for most cases) scaler = StandardScaler() X_scaled = scaler.fit_transform(X_train) # MinMaxScaler: scale to [0, 1] range scaler = MinMaxScaler() X_normed = scaler.fit_transform(X_train) # RobustScaler: uses median/IQR, robust to outliers scaler = RobustScaler() X_robust = scaler.fit_transform(X_train) # IMPORTANT: fit on train, transform on test X_test_scaled = scaler.transform(X_test) # No fit!
transform() on test data. Using fit_transform() on test data causes data leakage and inflated metrics.
Encoding Categorical Variables
from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder, LabelEncoder # OneHotEncoder: for nominal categories (no order) ohe = OneHotEncoder(sparse_output=False, handle_unknown="ignore") X_encoded = ohe.fit_transform(X_categorical) # OrdinalEncoder: for ordered categories oe = OrdinalEncoder(categories=[["low", "medium", "high"]]) X_ordinal = oe.fit_transform(X_categorical) # LabelEncoder: for target variable encoding le = LabelEncoder() y_encoded = le.fit_transform(y_labels)
Handling Missing Values
from sklearn.impute import SimpleImputer, KNNImputer # Simple strategies: mean, median, most_frequent, constant imputer = SimpleImputer(strategy="median") X_filled = imputer.fit_transform(X_with_nans) # KNN-based imputation (uses similar samples) knn_imp = KNNImputer(n_neighbors=5) X_knn = knn_imp.fit_transform(X_with_nans) # For categorical columns cat_imp = SimpleImputer(strategy="most_frequent") X_cat_filled = cat_imp.fit_transform(X_categorical)
Feature Extraction
from sklearn.feature_extraction.text import TfidfVectorizer # Text feature extraction with TF-IDF tfidf = TfidfVectorizer(max_features=5000, stop_words="english") X_text = tfidf.fit_transform(documents) # Polynomial feature generation from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2, include_bias=False) X_poly = poly.fit_transform(X_numeric)
Scaler Comparison
| Scaler | Method | Best For |
|---|---|---|
| StandardScaler | z = (x - mean) / std | General purpose, SVM, logistic regression |
| MinMaxScaler | x' = (x - min) / (max - min) | Neural networks, bounded features |
| RobustScaler | Uses median and IQR | Data with outliers |
| MaxAbsScaler | x' = x / max(|x|) | Sparse data |
Next: Model Selection
Learn how to choose the right algorithm, tune hyperparameters, and properly evaluate model performance.
Next: Model Selection →Ready to Go Deeper?
Live instructor-led courses from our partners. Affiliate disclosure.
AI & ML Courses - 30% Off
Live instructor-led AI, machine learning, data science, and cloud courses for working professionals. Use code Limited30 at checkout.
EdurekaDataCamp - AI & Data Science
Hands-on Python, machine learning, and AI courses with interactive exercises and real projects.
DataCampedX - Top AI Courses
University-level AI courses from MIT, Harvard, Stanford. Earn certificates that employers recognize.
edX