我正在使用Scikit-learn在Python中实现一个多项式逻辑回归模型。这是我的代码:
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。我错过了什么?
逻辑回归3类分类器示例说明了拟合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)