如果结果变量中有 2 个类别,则通常执行逻辑回归。我刚刚尝试了 iris 数据集,其中物种为 y 变量,具有 3 个类别。我使用了以下代码:
import pandas as pd
import matplotlib.pylab as plt
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
from sklearn import datasets
iris = datasets.load_iris()
clf.fit(iris.data, iris.target)
logcoefdf = pd.DataFrame(data=clf.coef_,
columns=["SL", "SW", "PL", "PW"],
index=['setosa','versicolor','virginica'])
print(logcoefdf)
logcoefdf.plot.bar()
plt.show()
打印输出和系数图如下:
SL SW PL PW
setosa 0.414988 1.461297 -2.262141 -1.029095
versicolor 0.416640 -1.600833 0.577658 -1.385538
virginica -1.707525 -1.534268 2.470972 2.555382
(我已经按物种名称标记了行,但我不确定这是否正确)。
从上面的输出我得到以下情节:
这些结果的解释是什么?这是否意味着花瓣长度(PL)在setosa中最低而在virginica中最高?杂色品种的萼片宽度和花瓣宽度都较小?感谢您的洞察力。
编辑:如果我只使用 2 类虹膜数据集,我只会得到一组系数:
clf.fit(iris.data[0:100,:], iris.target[0:100])
print(clf.coef_)
输出:
[[-0.40731745 -1.46092371 2.24004724 1.00841492]]
是否正在对所有可能的类别组合执行逻辑回归,即 setosa vs versicolor、versicolor vs virginica 和 virginica vs setosa?
