ValueError: Found input variables with contrast numbers of samples: [75, 1] 在 Python 中是啥意思?
Posted
技术标签:
【中文标题】ValueError: Found input variables with contrast numbers of samples: [75, 1] 在 Python 中是啥意思?【英文标题】:What does ValueError: Found input variables with inconsistent numbers of samples: [75, 1] signify in Python?ValueError: Found input variables with contrast numbers of samples: [75, 1] 在 Python 中是什么意思? 【发布时间】:2018-12-16 03:53:09 【问题描述】:我正在观看 Youtube 上的“编写我们的第一个分类器 - 机器学习食谱 #5”机器学习视频。我按照示例进行操作,但不确定为什么我无法运行代码。
注意:这不是 KNN 分类器的最终代码。这是初始测试阶段。
#implementing KNN Classifier without using import statement
import random
class ScrappyKNN():
def fit(self, X_train, Y_train):
self.X_train=X_train
self.Y_train=Y_train
def predict(self, X_test):
predictions=[]
for row in X_test:
label = random.choice(self.Y_train)
predictions.append(label)
return predictions
from sklearn.datasets import load_iris
iris=load_iris()
X=iris.data
Y=iris.target
from sklearn.cross_validation import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.5)
clf=ScrappyKNN()
clf.fit (X_train,Y_train)
predictions_result=clf.predict(X_test)
from sklearn.metrics import accuracy_score
print(accuracy_score(Y_test,predictions_result))
我收到错误“ValueError:找到样本数量不一致的输入变量:[75, 1]”。我相信列表中存在一些大小不一致,因为训练和测试数据集从 150 个样本中分成 75 个样本(我使用了 test_size=0.5)。我真的被困在这个了。你能告诉我这个错误是什么意思吗?我搜索了有关堆栈溢出的类似答案,但不幸的是,无法找出导致此错误的原因。我是使用 Python 进行机器学习的新手。有人可以帮帮我吗?
这是完整的堆栈跟踪
/Users/joyjitchatterjee/anaconda3/envs/machinelearning/bin/python /Users/joyjitchatterjee/PycharmProjects/untitled1/ml_5.py
Traceback (most recent call last):
File "/Users/joyjitchatterjee/PycharmProjects/untitled1/ml_5.py", line 36, in <module>
print(accuracy_score(Y_test,predictions_result))
File "/Users/joyjitchatterjee/anaconda3/envs/machinelearning/lib/python3.6/site-packages/sklearn/metrics/classification.py", line 176, in accuracy_score
y_type, y_true, y_pred = _check_targets(y_true, y_pred)
File "/Users/joyjitchatterjee/anaconda3/envs/machinelearning/lib/python3.6/site-packages/sklearn/metrics/classification.py", line 71, in _check_targets
check_consistent_length(y_true, y_pred)
File "/Users/joyjitchatterjee/anaconda3/envs/machinelearning/lib/python3.6/site-packages/sklearn/utils/validation.py", line 173, in check_consistent_length
" samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [75, 4]
Process finished with exit code 1
Screenshot of code
【问题讨论】:
可能是this thread 会有所帮助! 您的班级正在返回random.choice
,没有经过培训。您应该澄清,因为有人可能会选择此代码作为最终代码。
【参考方案1】:
您的代码中最后一个return
语句的缩进是错误的。应该是
def predict(self, X_test):
predictions=[]
for row in X_test:
label = random.choice(self.Y_train)
predictions.append(label)
return predictions
【讨论】:
现在,错误已更改为“ValueError:找到样本数量不一致的输入变量:[75, 4]”。 @JoyjitChatterjee 我用我更新的预测功能编辑运行了你的代码,它工作正常。您使用的是哪个 Python 和 sklearn 版本? 我正在使用 Python 3.6.5 和 sklearn 版本 0.19.0。我正在使用 Anaconda 和 Pycharm。 你能贴出你的代码截图吗?我认为你错过了一些缩进。在这里看到这个repl.it/@gambit16/PeacefulSlushyCrash 这里是截图。 i.stack.imgur.com/ZCtM7.png 我还检查了您的链接,并且它运行良好。谢谢。我相信有一些我没有注意到的缩进问题。我将您的缩进代码复制到我的编辑器中,它运行良好。你能告诉我在缩进时错过了什么吗? :)以上是关于ValueError: Found input variables with contrast numbers of samples: [75, 1] 在 Python 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
ValueError: Input 0 is in compatible with layer model: expected shape=(None, 14999, 7), found shape=
ValueError: Input 0 is in compatible with layer conv_1: expected ndim=3, found ndim=4
如何修复:ValueError: Input 0 is in compatible with layer lstm_2: expected ndim=3, found ndim=2
已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`
已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`
已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`