sklearn方法调参速查

python 机器学习

sklearn 方法速查表

分类方法描述
数据集加载sklearn.datasets.load_*加载小规模数据集
sklearn.datasets.fetch_*(data_home=None)加载大规模数据集
数据集划分sklearn.model_selection.train_test_split(arrays, *option)划分训练集和测试集
特征提取sklearn.feature_extraction.DictVectorizer(sparse=True)字典特征提取
sklearn.feature_extraction.text.CountVectorizer(stop_word=[])文本特征提取
特征预处理sklearn.preprocessing.MinMaxScaler(feature_range=(0,1))归一化
sklearn.preprocessing.StandardScaler()标准化
数据编码sklearn.preprocessing.OneHotEncoder(sparse_output=False)独热编码
sklearn.preprocessing.LabelEncoder()标签编码
特征降维sklearn.decomposition.PCA(n_components=None)主成分分析
估计器sklearn.pipeline.Pipeline管道,用于顺序执行多个步骤
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)K-近邻算法
sklearn.naive_bayes.MultinomialNB(alpha=1.0)朴素贝叶斯算法
sklearn.naive_bayes.GaussianNB()高斯朴素贝叶斯算法
sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None)决策树
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None)随机森林
sklearn.linear_model.LinearRegression(fit_intercept=True)线性回归
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate='invscaling', eta0=0.01)随机梯度下降回归
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, solver="auto", normalize=False)岭回归
模型评估sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)分类评估报告
sklearn.metrics.mean_squared_error(y_true, y_pred)均方误差
sklearn.metrics.log_loss(y_true, y_pred)对数损失
模型选择与调优sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)网格搜索交叉验证
转换器sklearn.preprocessing.StandardScaler()标准化
sklearn.preprocessing.OneHotEncoder(sparse_output=False)独热编码
sklearn.preprocessing.LabelEncoder()标签编码

K-近邻 (KNN)

  • 适用场景:小数据集、特征关系简单、需要解释距离权重的场景
  • 关键参数:n_neighbors(k值)、weights(距离加权)、p(距离度量)
  • 调参技巧:k值取奇数避免平票,用交叉验证选择最佳k;大数据集性能差
  • 概率特性:通过近邻类别比例估计概率,probability=True可输出概率
  • 注意事项:必须做特征标准化!维度灾难明显,高维数据慎用
param_grid = {
    'model__n_neighbors' : [3,5,7],
    'model__weights': ['uniform', 'distance'],
    'model__leaf_size': [20, 30, 40],  # 控制kd树/ball树的构建
    'model__p' : [1,2]
}

朴素贝叶斯

  • 类型对比
    • 高斯型:连续特征(如温度测量值)
    • 多项式型:离散计数(如文本词频)
    • 伯努利型:二元特征(如是否存在某个词)
  • 关键参数:alpha(平滑系数)
  • 调参技巧:alpha通常取0.1-1,小数据集需要更大alpha防过拟合
  • 概率特性:直接输出概率估计,适合需要置信度的场景
  • 优势:计算极快,适合实时系统;对缺失数据不敏感

决策树

  • 关键参数:max_depth(深度)、min_samples_split(节点分裂最小样本)
  • 调参技巧:优先限制最大深度,用网格搜索找最佳组合;特征多时用"sqrt"
  • 概率特性:叶节点样本比例作为概率估计
  • 优势:可解释性强,可视化方便;不需要特征缩放
  • 陷阱:容易过拟合,必须用剪枝参数;对样本扰动敏感

随机森林

  • 关键参数:n_estimators(树数量)、max_features(特征采样数)
  • 调参技巧:树数量越多越好(直到性能饱和),用并行计算加速
  • 概率特性:通过多棵树的投票比例估计概率
  • 优势:自带特征重要性评估;抗过拟合能力强
  • 注意事项:可能内存消耗大,调整n_jobs参数利用多核
param_grid = {
    'rf__n_estimators': [100, 200, 300], # 越大越好
    'rf__max_depth': [3, 5, None],
    'rf__min_samples_split': [2, 5],
    'rf__max_features': ['sqrt', 'log2'],
    'rf__class_weight': [None, 'balanced']
}

支持向量机 (SVM)

  • 类型选择
    • SVC(分类):适合小样本、高维度数据(如文本分类)
    • SVR(回归):用于非线性回归问题
  • 关键参数:C(正则化强度)、kernel(核函数)、gamma(核宽度)
  • 调参技巧:优先用RBF核;大数据集用linear核;gamma小值更抗噪
  • 概率特性:需设置probability=True(计算变慢),使用Platt缩放估计概率
  • 注意事项:必须做特征标准化!内存消耗大时调大cache_size参数

线性模型

  • 类型对比
    • 线性回归:基础线性关系
    • 岭回归:解决多重共线性(L2正则)
    • SGD:大数据集在线学习
  • 关键参数:alpha(正则强度)、penalty(正则类型)
  • 调参技巧:用StandardScaler标准化;SGD需要调整学习率策略
  • 概率特性:逻辑回归直接输出概率(sigmoid转换)
  • 优势:系数可解释性强;SGD适合海量数据

速查表(SVM补充)

分类方法关键参数
SVM分类sklearn.svm.SVCC, kernel, gamma, probability
SVM回归sklearn.svm.SVRC, kernel, gamma
模型评估metrics.accuracy_score分类准确率
metrics.f1_score类别不平衡时使用

调参黄金法则

  1. 先找学习率/树数量/SVM的C这类全局参数
  2. 再调单个模型复杂度参数(如树的深度、核函数)
  3. 最后处理类权重/样本权重等业务相关参数
  4. GridSearchCV时,先用大范围粗调,再小步微调

概率使用技巧

  • 输出概率:KNN、贝叶斯、决策树、随机森林、逻辑回归
  • 校准概率:SVM需要设置probability=True
  • 应用场景:排序任务(按概率排序)、集成学习(作为基模型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值