《机器学习实战流程指南》

《机器学习实战流程指南》

机器学习项目不是「调个模型」就结束,而是有相对固定的工程流程。本文基于《机器学习实战》的资料体系,整理从数据到模型上线验收的完整步骤。

1 教程与项目资源

2 标准流程总览

1. 明确问题(分类 / 回归 / 聚类 / 降维) 2. 获取并清洗数据 3. 特征工程(预处理、构造、选择) 4. 划分训练 / 验证 / 测试集 5. 选择模型并训练(多个基线对比) 6. 评估与调优(交叉验证、超参搜索) 7. 上线、监控、迭代

3 数据清洗(pandas)

import pandas as pd df = pd.read_csv("data.csv") # 缺失值统计 print(df.isnull().sum()) # 处理缺失:删除行 / 填充均值 df = df.dropna(subset=["label"]) df["age"].fillna(df["age"].mean(), inplace=True) # 查看类别分布(判断是否不平衡) print(df["label"].value_counts()) # 去除重复 df = df.drop_duplicates()

4 特征工程要点

  • 归一化/标准化:数值型特征用 StandardScaler,尤其对距离类模型(KNN、SVM)。
  • 类别特征编码:LabelEncoder(有序)或 OneHotEncoder(无序)。
  • 特征选择:用相关系数、SelectKBest,或随机森林的 feature_importances_ 筛选。
  • 合理性检查:类别特征是否被误读为数值(如性别用 0/1 但被当作连续值)。

5 训练与评估

from sklearn.model_selection import train_test_split, cross_val_score from sklearn.metrics import accuracy_score, confusion_matrix, precision_recall_fscore_support X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 多个基线模型对比 from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.svm import SVC for name, model in [ ("LR", LogisticRegression(max_iter=1000)), ("RF", RandomForestClassifier(n_estimators=100, random_state=42)), ("SVM", SVC()), ]: model.fit(X_train, y_train) acc = model.score(X_test, y_test) print(f"{name}: {acc:.4f}")

混淆矩阵与更细粒度的指标:

from sklearn.metrics import confusion_matrix, classification_report y_pred = clf.predict(X_test) print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

6 常见陷阱

  • 只用一个固定 random_state 的划分:对随机性敏感的模型应加交叉验证。
  • 测试集复用过多:反复用同一测试集调参会导致过拟合测试集,应保留最终验收的 hold-out 集。
  • 不检查类别不平衡:不平衡数据上 accuracy 会失真,需看 precision/recall/F1 或改用加权模型。

7 小结

先跑通最简单的基线模型,再逐步加特征工程与复杂模型;每次改动只改一个变量,并用统一的评估方法对比,才能可持续地提升模型效果。

阅读 — · 全站 —
🎸 我的歌单 0 首