我正在使用Scikit-learn在Python中实现一个多项logistic回归模型。这是我的密码:
X = pd.concat([each for each in feature_cols], axis=1)
y = train[["<5", "5-6", "6-7", "7-8", "8-9", "9-10"]]
lm = LogisticRegression(multi_class='multinomial', solver='lbfgs')
lm.fit(X, y)
但是,当ValueError: bad input shape (50184, 6)
试图执行最后一行代码时,我会得到它。
X
是一个有50184行7列的DataFrame
。y
还有50184行,但有6列。
我最终想要预测的是什么(<5,5-6,等等)结果就落空了。本例中使用的所有自变量和因变量都是虚拟列,其二进制值为0或1。我遗漏了什么?
发布于 2015-12-01 04:10:33
Logistic回归三级分类器示例说明了LogisticRegression
是如何使用向量而不是矩阵输入的,在本例中是iris
数据集的target
变量,编码为值[0, 1, 2]
。
要将虚拟矩阵转换为一个系列,您可以用不同的整数乘每一列,然后--假设它是pandas.DataFrame
--只需对结果调用.sum(axis=1)
。类似于:
for i, col in enumerate(y.columns.tolist(), 1):
y.loc[:, col] *= i
y = y.sum(axis=1)
https://stackoverflow.com/questions/34012100
复制相似问题