SuperAPI AI 工具集

scikit-learn

数据与分析

查看项目

更新于 10-21 19:53

技能介绍

用途

本技能为使用 scikit-learn 进行机器学习任务提供全面指导。scikit-learn 是 Python 中经典的机器学习标准库,适用于分类、回归、聚类、降维、预处理、模型评估,以及构建可用于生产的机器学习流水线。

主要能力

1. 监督学习

提供分类与回归的完整算法集合,包括:

  • 线性模型:Logistic Regression、Linear Regression、Ridge、Lasso、ElasticNet
  • 树模型:Decision Trees、Random Forest、Gradient Boosting
  • 支持向量机:SVC、SVR(多种核函数)
  • 集成方法:AdaBoost、Voting、Stacking
  • 神经网络:MLPClassifier、MLPRegressor
  • 其他:Naive Bayes、K-Nearest Neighbors

适用场景:分类用于预测离散类别(如垃圾邮件检测、图像分类、欺诈检测);回归用于预测连续值(如价格预测、需求预测)。

2. 无监督学习

通过聚类与降维发现无标签数据中的模式。

  • 聚类:K-Means、MiniBatchKMeans、DBSCAN、HDBSCAN、OPTICS、AgglomerativeClustering、高斯混合模型、MeanShift、SpectralClustering、BIRCH
  • 降维:PCA、TruncatedSVD、NMF、t-SNE、UMAP、Isomap、LLE、FastICA、LatentDirichletAllocation

适用场景:客户分群、异常检测、数据可视化、特征降维、探索性数据分析、主题建模、图像压缩。

3. 模型评估与选择

  • 交叉验证策略:KFold、StratifiedKFold(分类)、TimeSeriesSplit(时序数据)、GroupKFold(分组样本)
  • 超参数调优:GridSearchCV(穷举搜索)、RandomizedSearchCV(随机采样)、HalvingGridSearchCV(逐次减半)
  • 指标:分类(accuracy、precision、recall、F1、ROC AUC、混淆矩阵);回归(MSE、RMSE、MAE、R²、MAPE);聚类(轮廓系数、Calinski-Harabasz、Davies-Bouldin)

适用场景:客观比较模型性能、寻找最优超参数、通过交叉验证防止过拟合、用学习曲线理解模型行为。

4. 数据预处理

  • 缩放与归一化:StandardScaler、MinMaxScaler、RobustScaler、Normalizer
  • 类别编码:OneHotEncoder、OrdinalEncoder、LabelEncoder
  • 缺失值处理:SimpleImputer、KNNImputer、IterativeImputer
  • 特征工程:PolynomialFeatures、KBinsDiscretizer、特征选择(RFE、SelectKBest、SelectFromModel)

适用场景:训练需要缩放特征的算法(SVM、KNN、神经网络)之前;将类别变量转为数值;系统化处理缺失数据;为线性模型创建非线性特征。

5. 流水线与组合

  • Pipeline:顺序串联转换器与估计器
  • ColumnTransformer:对不同列应用不同预处理
  • FeatureUnion:并行组合多个转换器
  • TransformedTargetRegressor:转换目标变量

优势:防止交叉验证中的数据泄漏、简化代码、支持联合超参数调优、保证训练与预测的一致性。

使用方式

安装:

uv pip install scikit-learn

可选安装可视化依赖:

uv pip install matplotlib seaborn

常与以下库配合使用:

uv pip install pandas numpy

快速入门(分类示例):

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42
)

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train_scaled, y_train)

y_pred = model.predict(X_test_scaled)
print(classification_report(y_test, y_pred))

混合数据类型完整流水线示例:

from 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

numeric_features = ['age', 'income']
categorical_features = ['gender', 'occupation']

numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='median')),
    ('scaler', StandardScaler())
])

categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('onehot', OneHotEncoder(handle_unknown='ignore'))
])

preprocessor = ColumnTransformer([
    ('num', numeric_transformer, numeric_features),
    ('cat', categorical_transformer, categorical_features)
])

model = Pipeline([
    ('preprocessor', preprocessor),
    ('classifier', GradientBoostingClassifier(random_state=42))
])

model.fit(X_train, y_train)
y_pred = model.predict(X_test)

示例脚本:

  • python scripts/classification_pipeline.py:演示混合数据类型处理、交叉验证模型比较、GridSearchCV 超参数调优、多指标评估、特征重要性分析。
  • python scripts/clustering_analysis.py:演示寻找最优聚类数(肘部法、轮廓分析)、比较多种聚类算法(K-Means、DBSCAN、Agglomerative、高斯混合)、无真实标签下的聚类质量评估、PCA 投影可视化。

适用场景

  • 构建分类或回归模型
  • 执行聚类或降维
  • 为机器学习预处理与转换数据
  • 用交叉验证评估模型性能
  • 用网格或随机搜索调优超参数
  • 为生产工作流创建 ML 流水线
  • 为任务比较不同算法
  • 处理结构化(表格)与文本数据
  • 需要可解释的经典机器学习方法

最佳实践

  • 始终使用 Pipeline:防止数据泄漏并保证一致性。
  • 仅在训练数据上拟合:测试集只做 transform,不做 fit。
  • 分类任务使用分层切分(stratify=y)以保持类别分布。
  • 设置 random_state 以保证可复现性。
  • 选择合适指标:平衡数据用 accuracy、F1;不平衡数据用 precision、recall、ROC AUC、Balanced Accuracy;成本敏感场景定义自定义 scorer。
  • 需要缩放特征的算法:SVM、KNN、神经网络、PCA、带正则的线性/逻辑回归、K-Means。不需要缩放的算法:树模型(决策树、随机森林、梯度提升)、朴素贝叶斯。

常见问题排查

  • ConvergenceWarning:增大 max_iter 或缩放特征,例如 LogisticRegression(max_iter=1000)。
  • 测试集表现差(过拟合):使用正则化、交叉验证或更简单的模型,例如 Ridge(alpha=1.0),或用 cross_val_score(model, X, y, cv=5)。
  • 大数据集内存错误:使用面向大数据的算法,如 SGDClassifier,或聚类用 MiniBatchKMeans(n_clusters=8, batch_size=100)。

参考文档

技能内含以下参考文件:

  • references/quick_reference.md:常用导入模式、安装说明、工作流模板、算法选择速查表、常见模式与陷阱、性能优化建议。
  • references/supervised_learning.md:线性模型、SVM、决策树与集成、KNN、朴素贝叶斯、神经网络、算法选择指南。
  • references/unsupervised_learning.md:各聚类算法参数与用例、降维技术、异常与新样本检测、高斯混合模型、方法选择指南。
  • references/model_evaluation.md:交叉验证策略、超参数调优方法、分类/回归/聚类指标、学习与验证曲线、模型选择最佳实践。
  • references/preprocessing.md:特征缩放与归一化、类别编码、缺失值填补、特征工程技术、自定义转换器。
  • references/pipelines_and_composition.md:流水线构建与使用、ColumnTransformer 处理混合数据类型、FeatureUnion 并行转换、端到端完整示例、最佳实践。

限制

本资料未提供该技能的具体收费、价格、平台支持范围或性能效果数据,相关内容暂未提供。