在 Python 中实现逻辑回归时 Scikit-learn ValueError
Posted
技术标签:
【中文标题】在 Python 中实现逻辑回归时 Scikit-learn ValueError【英文标题】:Scikit-learn ValueError when implementing logistic regression in Python 【发布时间】:2014-09-17 22:22:59 【问题描述】:我是机器学习的新手,我正在尝试使用 scikit-learn 在 Python 中设置逻辑回归以进行预测。我已经设置了一个小型模拟数据集,但是在扩展此代码以适用于更大的数据集时,我遇到了有关 ValueError 的问题。这是我的代码:
inputData = np.genfromtxt(file, skip_header=1, unpack=True)
print "X array shape: ",inputData.shape
inputAnswers = np.genfromtxt(file2, skip_header=1, unpack=True)
print "Y array shape: ",inputAnswers.shape
logreg = LogisticRegression(penalty='l2',C=2.0)
logreg.fit(inputData, inputAnswers)
inputData 二维数组(矩阵)有 149 行和 231 列。我正在尝试将其拟合到具有 149 行的 inputAnswers 数组,正确对应于 inputData 数组的 149 行。但是,这是我收到的输出:
X array shape: (231, 149)
Y array shape: (149,)
Traceback (most recent call last):
File "LogRegTry_rawData.py", line 26, in <module>
logreg.fit(inputData, inputAnswers)
File "[path]", line 676, in fit
(X.shape[0], y.shape[0]))
ValueError: X and y have incompatible shapes.
X has 231 samples, but y has 149.
我了解错误的含义,但我不确定为什么会出现这种情况以及如何解决它。任何帮助是极大的赞赏。谢谢!
【问题讨论】:
【参考方案1】:在形状中,第一个元素是行数,第二个元素是列数。所以你有 231 个条目,只有 149 个标签。尝试转置您的数据:inputData.T
【讨论】:
谢谢!我使用了 np.transpose() 函数,这很有效。我想知道为什么 np.genfromtxt 将其读取为“倒置”,但是... unpack=True 正在转置数据以上是关于在 Python 中实现逻辑回归时 Scikit-learn ValueError的主要内容,如果未能解决你的问题,请参考以下文章
Scikit-learn 逻辑回归的性能比 Python 中自己编写的逻辑回归差
机器学习系列7 基于Python的Scikit-learn库构建逻辑回归模型
python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?
使用 scikit-learn python 的逻辑回归输出不匹配