当前位置:   article > 正文

【Python特征工程系列】教你利用逻辑回归模型分析特征重要性(源码)_逻辑回归 特征重要性

逻辑回归 特征重要性

这是Python特征工程系列原创文章,我的第191篇原创文章。

一、问题

应用背景介绍:      

        如果有一个包含数十个甚至数百个特征的数据集,每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的或不相关的,这会增加建模的复杂性并可能导致过拟合。特征重要性分析可以识别并关注最具信息量的特征,从而带来以下几个优势:

  • 改进模型性能
  • 能减少过度拟合
  • 更快训练和推理
  • 增强可解释性

前期相关回顾:

【Python特征工程系列】教你利用AdaBoost模型分析特征重要性(源码)

【Python特征工程系列】教你利用XGBoost模型分析特征重要性(源码)

【Python特征工程系列】利用梯度提升(GradientBoosting)模型分析特征重要性(源码)

【Python特征工程系列】8步教你用决策树模型分析特征重要性(源码)

【Python特征工程系列】利用随机森林模型分析特征重要性(源码)

本期相关知识:

       逻辑回归模型基于线性回归模型,通过应用逻辑函数(如sigmoid函数)将线性模型的输出映射到0到1之间,从而将其解释为概率。逻辑回归模型的输出表示某个样本属于某个类别的概率。使用sklearn库中的LogisticRegression类创建了一个逻辑回归模型。通过访问模型的coef_属性来获取特征的系数(权重),模型的系数(或权重)来衡量各个特征对预测结果的影响。较大的系数表示对结果影响较大,较小的系数表示对结果影响较小。

二、实现过程

导入第三方库

  1. import pandas as pd
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LogisticRegression
  4. import matplotlib.pyplot as plt
  5. import seaborn as sns

2.1 准备数据

  1. data = pd.read_csv(r'dataset.csv')
  2. df = pd.DataFrame(data)

图片

2.2 目标变量和特征变量

  1. target = 'target'
  2. features = df.columns.drop(target)

 特征变量如下:

图片

2.3 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(df[features], df[[target]], test_size=0.2, random_state=0)

 X_train如下:

图片

2.4 归一化

  1. # 归一化
  2. mm1 = MinMaxScaler() # 特征进行归一化
  3. X_train_m = mm1.fit_transform(X_train)
  4. mm2 = MinMaxScaler() # 标签进行归一化
  5. y_train_m = mm2.fit_transform(y_train)

LogisticRegression训练之前需要进行归一化处理!

2.5 训练模型

  1. model = LogisticRegression()
  2. model.fit(X_train_m, y_train_m)

2.6 提取特征重要性

  1. feature_importance = model.coef_[0]
  2. feature_names = features

 feature_importance如下:

图片

2.7 创建特征重要性的dataframe

importance_df = pd.DataFrame({'Feature': feature_names, 'Importance': feature_importance})

 importance_df如下:

图片

2.8 对特征重要性进行排序

importance_df = importance_df.sort_values(by='Importance', ascending=False)

排序后的 importance_df如下:

图片

2.9 可视化特征重要性

  1. plt.figure(figsize=(10, 6))
  2. sns.barplot(x='Importance', y='Feature', data=importance_df)
  3. plt.title('Feature Importance')
  4. plt.xlabel('Importance')
  5. plt.ylabel('Feature')
  6. plt.show()

 可视化结果如下:

图片

本期内容就到这里,我们下期再见!需要数据集和源码的小伙伴可以关注底部公众号添加作者微信

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/433535
推荐阅读
相关标签
  

闽ICP备14008679号