我对此有点新鲜。 我在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]
答案 0 :(得分:5)
我已在下面回答了您的问题,但根据您的问题和评论,您似乎还在了解逻辑回归。我可以推荐高级数据分析(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之一的效果。
答案 1 :(得分:1)
当你进行简单的逻辑回归时,你试图确定X
是真/假,1/0,是/否......等等吗?
您有这些功能y = 1/(1 + np.exp(-x) )
可以帮助您做出决定。基本逻辑回归背后的数学使用sigmoid函数(也就是逻辑函数),在Numpy / Python中看起来像:
x
在这种情况下,coeaf[0] + coef[1] * feature[0] + coef[2] * coef[1] # etc.
是您的要素和coef:
X
随着这增加了逻辑函数接近1并且随着它减小,它渐近地接近0。
当你将系数和特征插入逻辑函数时,它会吐出一个数字,即你的样本是真实的概率。它的准确程度取决于您对数据进行建模和拟合的程度。逻辑回归的目标是找到适合您数据的系数并最大限度地减少错误。因为逻辑函数输出概率,所以您可以使用它来最不可能排名。
如果你正在使用Numpy,你可以取样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
和你的系数,并将它们插入逻辑方程式中:
y
X
将是您的模型认为此样本chmod 600 /usr/local/etc/stunnel/key.pem
为真的概率。