Python 如何找到logistic回归模型中特征的重要性?

Python 如何找到logistic回归模型中特征的重要性?,python,machine-learning,scikit-learn,logistic-regression,Python,Machine Learning,Scikit Learn,Logistic Regression,我有一个用逻辑回归算法训练的二元预测模型。我想知道哪些特征(预测器)对决定积极或消极类别更重要。我知道scikit学习包中有coef\u参数,但我不知道它是否足以说明重要性。另一件事是我如何根据负类和正类的重要性来评估coef\uu值。我也读过关于标准化回归系数的书,但我不知道它是什么 假设有一些特征,如肿瘤大小、肿瘤重量等,可以决定是否为恶性。我想知道哪些特征对恶性和非恶性预测更重要。在线性分类模型(Logistic模型)中一个给定参数的“影响”的最简单选择之一是考虑其系数倍的大小,即数据中相

我有一个用逻辑回归算法训练的二元预测模型。我想知道哪些特征(预测器)对决定积极或消极类别更重要。我知道scikit学习包中有
coef\u
参数,但我不知道它是否足以说明重要性。另一件事是我如何根据负类和正类的重要性来评估
coef\uu
值。我也读过关于标准化回归系数的书,但我不知道它是什么


假设有一些特征,如肿瘤大小、肿瘤重量等,可以决定是否为恶性。我想知道哪些特征对恶性和非恶性预测更重要。在线性分类模型(Logistic模型)中一个给定参数的“影响”的最简单选择之一是考虑其系数倍的大小,即数据中相应参数的标准偏差。

考虑这个例子:

import numpy as np    
from sklearn.linear_model import LogisticRegression

x1 = np.random.randn(100)
x2 = 4*np.random.randn(100)
x3 = 0.5*np.random.randn(100)
y = (3 + x1 + x2 + x3 + 0.2*np.random.randn()) > 0
X = np.column_stack([x1, x2, x3])

m = LogisticRegression()
m.fit(X, y)

# The estimated coefficients will all be around 1:
print(m.coef_)

# Those values, however, will show that the second parameter
# is more influential
print(np.std(X, 0)*m.coef_)
获得类似结果的另一种方法是检查标准化参数的模型拟合系数:

m.fit(X / np.std(X, 0), y)
print(m.coef_)
请注意,这是最基本的方法,并且存在许多其他用于查找特征重要性或参数影响的技术(使用p值、自举分数、各种“判别指数”等)


我很肯定你会在上得到更有趣的答案。

你能举个例子让事情更具体吗?比如说,有一些特征,比如肿瘤大小、肿瘤重量等,可以决定是否恶性。我想知道哪些特征对恶性和非恶性预测更重要。有道理吗?谢谢你的解释。还有一件事,m.coef的负值是什么意思?这是否意味着它对消极阶层的决定更具歧视性?对于正值也是同样的问题。负系数意味着相应特征的值越高,分类就越倾向于负类。@PeterFranek让我们看看你的反例在实践中的效果:注意结果模型是如何“聪明”的足以估计相关特征的较小系数,从而正确得出第三个值更重要的结论。试着想出一个有效的反例;)更一般地说,请注意,“如何理解(已拟合的)X型模型中特征的重要性”和“如何理解一般数据中最具影响力的特征”的问题是不同的。根据您的拟合过程,对于相同的数据,您可能最终使用不同的模型-某些特征可能被一个模型认为更重要,而其他特征可能被另一个模型认为更重要。当最初以某种“有效”的方式对模型进行估计时,“模型内”的重要特征“在一般数据中”才是重要的。特别是,如果数据中最重要的特征对输出具有非线性依赖性,则大多数线性模型可能无法发现这一点,无论您如何戏弄它们。因此,记住建模和模型解释之间的差异是很好的。