首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
4.1 分类变量
4.1.1 One-Hot 编码(虚拟变量)
4.1.2 数字可以编码分类变量
4.2 分箱、离散化、线性模型与树
4.3 交互特征与多项式特征
4.4 单变量非线性变换
4.5 自动化特征选择
4.5.1 单变量统计
4.5.2 基于模型的特征选择
4.5.3 迭代特征选择
4.6 利用专家知识
5.1 交叉验证
5.1.1 scikit-learn 中的交叉验证
5.1.2 交叉验证的优点
5.1.3 分层k 折交叉验证和其他策略
5.2 网格搜索
5.2.1 简单网格搜索
5.2.2 参数过拟合的风险与验证集
5.2.3 带交叉验证的网格搜索
5.3 评估指标与评分
5.3.1 牢记目标
5.3.2 二分类指标
5.3.3 多分类指标
5.3.4 回归指标
5.3.5 在模型选择中使用评估指标
6.1 用预处理进行参数选择
6.2 构建管道
6.3 在网格搜索中使用管道
6.4 通用的管道接口
6.4.1 用make_pipeline 方便地创建管道
6.4.2 访问步骤属性
6.4.3 访问网格搜索管道中的属性
6.5 网格搜索预处理步骤与模型参数
6.6 网格搜索选择使用哪个模型
7.1 用字符串表示的数据类型
7.2 示例应用:电影评论的情感分析
7.3 将文本数据表示为词袋
7.3.1 将词袋应用于玩具数据集
7.3.2 将词袋应用于电影评论
7.4 停用词
7.5 用tf-idf 缩放数据
7.6 研究模型系数
7.7 多个单词的词袋(n元分词)
7.8 分词、词干提取与词形还原
7.9 主题建模与文档聚类
8.1 处理机器学习问题
8.2 从原型到生产
8.3 测试生产系统
8.4 构建你自己的估计器
8.5 下一步怎么走
8.5.1 理论
8.5.2 其他机器学习框架和包
8.5.3 排序、推荐系统与其他学习类型
8.5.4 概率建模、推断与概率编程
8.5.5 神经网络
8.5.6 推广到更大的数据集
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(下)
小册名称:Python机器学习基础教程(下)
### 7.6 研究模型系数 在Python机器学习实践中,模型系数的研究是理解和优化模型性能的关键步骤之一。模型系数不仅揭示了特征对预测目标的影响程度,还能帮助我们进行特征选择、模型解释以及预防过拟合等问题。本章将深入探讨如何在Python中研究各种机器学习模型的系数,特别是针对线性模型、决策树中的特征重要性、以及集成方法如随机森林和梯度提升树(GBDT)中的系数或特征重要性评估。 #### 7.6.1 线性模型系数解析 线性模型,如线性回归(Linear Regression)和逻辑回归(Logistic Regression),是理解模型系数最直接和基础的场景。这些模型的系数直接表示了每个特征对预测目标(在回归中是连续值,在分类中是概率的对数比)的线性影响。 ##### 7.6.1.1 线性回归系数 在线性回归中,模型试图找到一组系数(β),使得预测值(ŷ)与实际值(y)之间的误差平方和最小。这些系数β就是每个特征x_i的权重,表示了特征对预测目标y的直接线性影响。 ```python from sklearn.linear_model import LinearRegression import numpy as np import pandas as pd # 假设X为特征矩阵,y为目标变量 # ... (加载数据的代码) model = LinearRegression() model.fit(X, y) # 查看系数 coef = model.coef_ print("模型系数:", coef) # 可以进一步将系数与特征名称对应起来 feature_names = X.columns coef_df = pd.DataFrame(list(zip(feature_names, coef)), columns=['特征', '系数']) print(coef_df) ``` 通过上述代码,我们可以清晰地看到每个特征对应的系数,正值表示特征与目标呈正相关,负值表示负相关,系数的绝对值大小反映了影响的强弱。 ##### 7.6.1.2 逻辑回归系数 逻辑回归虽然用于分类问题,但其模型系数的解释与线性回归相似,只不过这里的系数表示的是特征对目标类别概率对数值(即logit)的影响。 ```python from sklearn.linear_model import LogisticRegression # 假设X为特征矩阵,y为二分类目标变量 # ... (加载数据的代码) model = LogisticRegression() model.fit(X, y) # 查看系数 coef = model.coef_ print("模型系数:", coef) # 如果有多分类问题,coef_将是一个二维数组,每行对应一个类别的系数 if model.coef_.ndim > 1: for i, class_coef in enumerate(model.coef_): print(f"类别{i}的系数:", class_coef) # 同样可以将系数与特征名称对应起来 ``` #### 7.6.2 决策树与集成方法的特征重要性 对于非线性模型,如决策树和基于树的集成方法(随机森林、梯度提升树等),虽然它们不直接提供像线性模型那样的系数,但可以通过评估特征的重要性来间接理解特征对模型预测的贡献。 ##### 7.6.2.1 决策树特征重要性 决策树在构建过程中会基于信息增益(或基尼不纯度减少)来选择最佳分割点,而特征重要性则通常通过计算每个特征在所有分割点上的平均信息增益(或基尼不纯度减少)来衡量。 ```python from sklearn.tree import DecisionTreeClassifier # 假设X为特征矩阵,y为目标变量 # ... (加载数据的代码) model = DecisionTreeClassifier() model.fit(X, y) # 查看特征重要性 importances = model.feature_importances_ feature_names = X.columns importances_df = pd.DataFrame(list(zip(feature_names, importances)), columns=['特征', '重要性']) importances_df.sort_values(by='重要性', ascending=False, inplace=True) print(importances_df) ``` ##### 7.6.2.2 随机森林特征重要性 随机森林作为决策树的集成,其特征重要性评估通常更为稳定和准确。随机森林中的每棵树都会计算特征重要性,最终的特征重要性是这些树的重要性评分的平均值。 ```python from sklearn.ensemble import RandomForestClassifier # 假设X为特征矩阵,y为目标变量 # ... (加载数据的代码) model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X, y) # 查看特征重要性 importances = model.feature_importances_ feature_names = X.columns importances_df = pd.DataFrame(list(zip(feature_names, importances)), columns=['特征', '重要性']) importances_df.sort_values(by='重要性', ascending=False, inplace=True) print(importances_df) ``` ##### 7.6.2.3 梯度提升树(GBDT)特征重要性 梯度提升树(如XGBoost、LightGBM等)也提供了特征重要性的评估方法,其原理与随机森林类似,但在构建模型时采用了不同的优化策略。 ```python import xgboost as xgb # 假设DMatrix用于XGBoost dtrain = xgb.DMatrix(X, label=y) params = { 'max_depth': 3, 'eta': 0.1, 'objective': 'binary:logistic', 'eval_metric': 'logloss' } num_round = 100 bst = xgb.train(params, dtrain, num_round) # 查看特征重要性 importances = bst.get_fscore() importances = {k: v[0] for k, v in importances.items()} feature_names = X.columns importances_df = pd.DataFrame(list(importances.items()), columns=['特征', '重要性']) importances_df.sort_values(by='重要性', ascending=False, inplace=True) print(importances_df) ``` #### 7.6.3 系数与特征重要性的实际应用 1. **特征选择**:通过评估特征的重要性和系数,可以识别出对模型预测贡献最大的特征,从而进行特征选择,简化模型并可能提高性能。 2. **模型解释**:在业务场景中,理解哪些因素影响了预测结果至关重要。模型系数和特征重要性提供了这一视角,帮助非技术背景的人员理解模型决策的依据。 3. **过拟合预防**:当某些特征的系数或重要性异常高时,可能意味着模型过于依赖这些特征,从而导致过拟合。此时,可以通过调整模型参数、增加正则化项或去除这些特征来改进模型。 4. **模型优化**:根据特征的重要性和系数,可以调整数据预处理步骤(如特征缩放、编码转换)或尝试不同的模型配置,以进一步提升模型性能。 #### 总结 研究模型系数和特征重要性是机器学习项目中不可或缺的一环。通过深入理解这些参数,我们不仅能够更好地解释模型预测背后的逻辑,还能指导我们进行特征选择、模型优化和过拟合预防等工作。在Python中,无论是线性模型还是基于树的模型,都有现成的工具和方法来帮助我们完成这些任务。希望本章内容能为读者在Python机器学习实践中提供有价值的参考。
上一篇:
7.5 用tf-idf 缩放数据
下一篇:
7.7 多个单词的词袋(n元分词)
该分类下的相关小册推荐:
Python数据分析与挖掘实战(上)
Python自动化办公实战
Python编程轻松进阶(一)
Python合辑5-格式化字符串
Python机器学习基础教程(上)
Python编程轻松进阶(三)
Python合辑11-闭包函数
Python机器学习实战
Python高性能编程与实战
Python编程轻松进阶(四)
Python合辑7-集合、列表与元组
Python合辑12-面向对象