首页 > 解决方案 > ValueError: Found input variables with contrast numbers of samples: [75, 1] 在 Python 中是什么意思?

问题描述

我正在观看 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

代码截图

标签: pythonmachine-learningscikit-learnknn

解决方案


return您的代码中最后一条语句的缩进是错误的。它应该是

def predict(self, X_test):
    predictions=[]
    for row in X_test:
        label = random.choice(self.Y_train)
        predictions.append(label)

    return predictions

推荐阅读