Scikit-learn 学习思维导图

Scikit-learn 学习思维导图

Scikit-learn 数据预处理 模型选择 监督学习 无监督学习 模型评估 特征工程 数据缩放 缺失值处理 类别编码 交叉验证 网格搜索 随机搜索 线性模型 决策树 支持向量机 集成方法 聚类 降维 密度估计 准确率 混淆矩阵 ROC曲线 特征选择 特征提取 特征构造

说明

  • 数据预处理:包括数据缩放、缺失值处理和类别编码等。

  • 模型选择:通过交叉验证、网格搜索和随机搜索选择最佳模型。

  • 监督学习:涵盖线性模型、决策树、支持向量机和集成方法。

  • 无监督学习:包括聚类、降维和密度估计。

  • 模型评估:使用准确率、混淆矩阵和ROC曲线评估模型性能。

  • 特征工程:涉及特征选择、特征提取和特征构造。

  • 数据预处理

    • 数据缩放

      • StandardScaler: 标准化(z-score标准化),将特征转换为均值为0,方差为1的分布

        • 适用场景:特征分布不同量级,对异常值敏感
        • 优点:保持异常值的影响,可用于有监督学习
        • 缺点:受异常值影响较大
        python 复制代码
        from sklearn.preprocessing import StandardScaler
        scaler = StandardScaler()
        X_scaled = scaler.fit_transform(X)
      • MinMaxScaler: 归一化,将特征缩放到[0,1]区间

        • 适用场景:特征分布相对集中,对异常值不敏感
        • 优点:保持零值,压缩所有特征到相同尺度
        • 缺点:不能处理新数据中超出范围的值
        python 复制代码
        from sklearn.preprocessing import MinMaxScaler
        scaler = MinMaxScaler()
        X_scaled = scaler.fit_transform(X)
    • 缺失值处理

      • SimpleImputer: 使用均值、中位数或常数填充缺失值

        • 适用场景:数据缺失随机,比例不高
        • 优点:实现简单,计算快速
        • 缺点:可能引入偏差
        python 复制代码
        from sklearn.impute import SimpleImputer
        imputer = SimpleImputer(strategy='mean')
        X_imputed = imputer.fit_transform(X)
      • IterativeImputer: 使用其他特征预测缺失值

        • 适用场景:特征间存在相关性
        • 优点:考虑特征关系,填充更准确
        • 缺点:计算复杂,耗时较长
    • 类别编码

      • LabelEncoder: 将类别转换为整数编码
        • 适用场景:标签编码
        • 优点:简单直观
        • 缺点:产生序数关系
      • OneHotEncoder: 独热编码
        • 适用场景:类别特征,无序性
        • 优点:不引入序数关系
        • 缺点:产生稀疏矩阵,维度灾难

完整示例:

  • 模型选择

    • 交叉验证 (cross_val_score)

      • 适用场景:评估模型泛化性能
      • 优点:减少过拟合风险,结果更可靠
      • 缺点:计算开销大
      python 复制代码
      from sklearn.model_selection import cross_val_score
      scores = cross_val_score(model, X, y, cv=5)
      print(f"交叉验证分数: {scores.mean():.3f} (+/- {scores.std() * 2:.3f})")
    • 网格搜索 (GridSearchCV)

      • 适用场景:穷举超参数组合
      • 优点:可找到最优参数组合
      • 缺点:计算量大,耗时长
      python 复制代码
      from sklearn.model_selection import GridSearchCV
      param_grid = {'max_depth': [3,5,7], 'min_samples_split': [2,3,4]}
      grid_search = GridSearchCV(model, param_grid, cv=5)
      grid_search.fit(X, y)
      print(f"最佳参数: {grid_search.best_params_}")
  • 监督学习

    • 线性回归 (LinearRegression)

      • 适用场景:特征与目标呈线性关系
      • 优点:模型简单,可解释性强
      • 缺点:无法处理非线性关系
      python 复制代码
      from sklearn.linear_model import LinearRegression
      model = LinearRegression()
      model.fit(X, y)
      y_pred = model.predict(X_test)
    • 决策树 (DecisionTreeClassifier)

      • 适用场景:分类问题,特征重要性分析
      • 优点:易于理解,可处理非线性关系
      • 缺点:容易过拟合
      python 复制代码
      from sklearn.tree import DecisionTreeClassifier
      model = DecisionTreeClassifier(max_depth=3)
      model.fit(X, y)
  • 无监督学习

    • K均值聚类 (KMeans)

      • 适用场景:数据分组,客户细分
      • 优点:简单高效
      • 缺点:需预先指定簇数
      python 复制代码
      from sklearn.cluster import KMeans
      kmeans = KMeans(n_clusters=3)
      clusters = kmeans.fit_predict(X)
    • 主成分分析 (PCA)

      • 适用场景:降维,特征提取
      • 优点:可降低维度,保留主要信息
      • 缺点:特征不易解释
      python 复制代码
      from sklearn.decomposition import PCA
      pca = PCA(n_components=2)
      X_reduced = pca.fit_transform(X)
  • 模型评估

    • 分类报告 (classification_report)

      • 适用场景:分类模型评估
      • 优点:全面的评估指标
      • 缺点:需要真实标签
      python 复制代码
      from sklearn.metrics import classification_report
      print(classification_report(y_true, y_pred))
    • ROC曲线 (roc_curve)

      • 适用场景:二分类模型评估
      • 优点:可视化模型性能
      • 缺点:仅适用于二分类
      python 复制代码
      from sklearn.metrics import roc_curve, auc
      fpr, tpr, _ = roc_curve(y_true, y_pred_proba)
      roc_auc = auc(fpr, tpr)
  • 特征工程

    • 特征选择 (SelectKBest)

      • 适用场景:降维,去除无关特征
      • 优点:减少过拟合,提高效率
      • 缺点:可能丢失有用信息
      python 复制代码
      from sklearn.feature_selection import SelectKBest, f_classif
      selector = SelectKBest(f_classif, k=5)
      X_selected = selector.fit_transform(X, y)
    • 多项式特征 (PolynomialFeatures)

      • 适用场景:非线性特征构造
      • 优点:捕捉非线性关系
      • 缺点:特征数量增长快
      python 复制代码
      from sklearn.preprocessing import PolynomialFeatures
      poly = PolynomialFeatures(degree=2)
      X_poly = poly.fit_transform(X)
相关推荐
蓝婷儿8 分钟前
Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
python·机器学习·近邻算法
IT古董2 小时前
【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(3)决策树回归模型(Decision Tree Regression)
神经网络·机器学习·回归
烟锁池塘柳03 小时前
【大模型】解码策略:Greedy Search、Beam Search、Top-k/Top-p、Temperature Sampling等
人工智能·深度学习·机器学习
Blossom.1185 小时前
机器学习在智能供应链中的应用:需求预测与物流优化
人工智能·深度学习·神经网络·机器学习·计算机视觉·机器人·语音识别
葫三生7 小时前
如何评价《论三生原理》在科技界的地位?
人工智能·算法·机器学习·数学建模·量子计算
IT古董11 小时前
【第二章:机器学习与神经网络概述】03.类算法理论与实践-(3)决策树分类器
神经网络·算法·机器学习
学技术的大胜嗷15 小时前
离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
人工智能·深度学习·yolo·目标检测·机器学习
还有糕手15 小时前
西南交通大学【机器学习实验10】
人工智能·机器学习
想知道哇19 小时前
机器学习入门:决策树的欠拟合与过拟合
人工智能·机器学习
go546315846519 小时前
修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
人工智能·算法·机器学习·架构·音视频·无人机