Nau*_*lid 1 machine-learning scikit-learn logistic-regression coefficients
我对此有点新意.我在python scikit-learn中使用了一个简单的Logistic回归分类器.我有4个功能.我的代码是
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state = 42)
classifier = LogisticRegression(random_state = 0, C=100)
classifier.fit(X_train, y_train)
coef = classifier.coef_[0]
print (coef)
[-1.07091645 -0.07848958 0.66913624 0.43500273]
Run Code Online (Sandbox Code Playgroud)
小智 8
我已在下面回答了您的问题,但根据您的问题和评论,您似乎还在了解逻辑回归.我可以推荐高级数据分析(http://www.stat.cmu.edu/~cshalizi/ADAfaEPoV/),它有一个关于逻辑回归的伟大章节,以及统计学习要素或统计学习简介教科书.话题.
我想知道coef数组表示什么?
系数数组是系数值列表.值按X_train数据集中的列顺序排序.即-1.07091645是X_train中第一列的系数值,-0.07848958是第二列的系数值,依此类推.
因此,评论中的等式将变为:
-1.07091645*f1 + -0.07848958*f2 + 0.66913624*f3 + 0.43500273*f4
我们可以使用这些coef*功能排名吗?
我猜你正试图对功能的重要性进行排名,如果我误解了你的问题就纠正我,我会相应地编辑帖子.
首先,确保您使用的变量具有可比性非常重要.例如,假设数据集中的前两个变量是年龄(以年为单位)和收入(以美元为单位).
这意味着年龄增加一年将使结果变量减少-1.07091645,收入增加一美元将使结果减少-0.07848958.现在,一年增加的效果远远高于一美元的增长,但年龄(一年)的单位增长不能轻易与收入的单位增长(一美元)相比.
那么在这种情况下,年龄比收入更重要吗?很难说.
解决此问题的一种常见方法是将每个变量缩放到相同的范围.这样至少你可以比较类似的步骤变化.但是,这可能会使系数值的解释更加困难,因为您不确定缩放变量中的单位变化对应于什么.
这是否意味着最后两个特征在分类结果中最重要?
不,正如@Vivek Kumar在评论中指出的那样,你应该看一下绝对价值.因此,在这种情况下,如果您认为变量具有可比性,那么按重要性排序,它是1,3,4,2.
逻辑是,即使第一个变量具有负系数,改变该变量的效果更大,同时保持所有其他变量不变大于改变变量2,3或4之一的效果.
当你在做简单的逻辑回归时,你试图确定它Y是真/假、1/0、是/否……等等。对吗?
您拥有这些X可能有助于您做出决定的功能。基本逻辑回归背后的数学使用 sigmoid 函数(又名逻辑函数),在 Numpy/Python 中如下所示:
y = 1/(1 + np.exp(-x) )
Run Code Online (Sandbox Code Playgroud)
在x这种情况下是你的特点和COEF的线性组合:
coeaf[0] + coef[1] * feature[0] + coef[2] * coef[1] # etc.
Run Code Online (Sandbox Code Playgroud)
随着这增加,逻辑函数接近 1,随着它减少,它逐渐接近 0。
当您将系数和特征插入逻辑函数时,它会输出一个数字,即您的样本为真的概率。它的准确程度取决于您对数据进行建模和拟合的程度。逻辑回归的目标是找到正确拟合数据并最小化误差的这些系数。由于逻辑函数输出概率,因此您可以使用它对最不可能到最可能进行排序。
如果您使用的是 Numpy,您可以取一个样本X和您的系数,并将它们插入到逻辑方程中:
import numpy as np
X = np.array([1, .2 , .1, 1.5]) # one element from your data set
c = np.array([.5, .1, -.7, .2]) # the coefficients that (hopefully) minimize error
z = X @ c.T # matrix multiply - linear combination
y = 1/(1 + np.exp(-z) # logistic function
Run Code Online (Sandbox Code Playgroud)
y将是您的模型认为该样本X为真的概率。
| 归档时间: |
|
| 查看次数: |
12863 次 |
| 最近记录: |