【问题标题】:Python SkLearn: ValueError: Found input variables with inconsistent numbers samples: [1173, 294]Python SkLearn:ValueError:找到数字不一致的输入变量样本:[1173、294]
【发布时间】:2019-12-14 13:49:10
【问题描述】:

我知道我在 train_test_split 期间正确分配了测试和训练 x 和 y 变量。但是,我对 x 使用了 TfidfVectorizer,对 y 使用了 MultiLabelBinarizer,X 和 Y 以不同的维度结束。因此,我收到以下错误:

ValueError:发现输入变量的数量不一致 样本:[1173, 294]

我还没有找到使输入和目标具有相同尺寸的方法。 以下是我的代码:

xTrain, xTest, yTrain, yTest = train_test_split(x, y, test_size=0.20)

nb_clf = MultinomialNB()
sgd = SGDClassifier()
lr = LogisticRegression()
mn = MultinomialNB()

xTrain = csr_matrix(xTrain).toarray()
xTest = csr_matrix(xTest).toarray()
yTrain = csr_matrix(yTrain).toarray()

print("xTrain.shape = " + str(xTrain.shape))
print("xTest.shape = " + str(xTest.shape))
print("yTrain.shape = " + str(yTrain.shape))
print("yTest.shape = " + str(yTest.shape))

for classifier in [nb_clf, sgd, lr, mn]:
    clf = MultiOutputRegressor(classifier)
    clf.fit(xTrain.astype("U"), xTest.astype("U"))
    y_pred = clf.predict(yTest)
    print("\ny_pred:")
    print(y_pred)

以下是打印语句的输出:

xTrain.shape = (1173, 13725)
xTest.shape = (294, 13725)
yTrain.shape = (1173, 28)
yTest.shape = (294, 28)

【问题讨论】:

  • 您没有在任何地方将yTest 设置为csr_matrix 吗?

标签: python numpy machine-learning scikit-learn


【解决方案1】:

那是因为您在模型中放入了错误的训练和测试数据。更正这行代码:

clf.fit(xTrain.astype("U"), xTest.astype("U"))

到这里:

clf.fit(xTrain.astype("U"), yTrain.astype("U"))

【讨论】:

    【解决方案2】:

    你不应该适合xtrainytrain 吗??

    clf.fit(xTrain.astype("U"), yTrain.astype("U"))
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的错误。这个错误的原因是我们在预测时使用了X_train,在计算错误时使用了y_test。要做的就是写 X_test 而不是 X_train。因为大小不匹配。你必须确保你的步骤是正确的。当我写这篇文章时,问题就解决了。 Found input variables with inconsistent numbers samples

      【讨论】:

        猜你喜欢
        • 2019-06-06
        • 2017-10-26
        • 2021-02-17
        • 2021-02-25
        • 2019-03-22
        • 2020-11-03
        • 2018-04-13
        • 2020-12-14
        • 2021-01-20
        相关资源
        最近更新 更多