ValueError:期望的2D数组,而是将1D数组转换为2D后得到1D数组

时间:2019-08-07 22:16:41

标签: python arrays numpy scikit-learn

我调查了其他答案,但仍然不明白问题为何持续存在。

使用Iris数据集的经典机器学习实践。

代码:

dataset=load_iris()

X = np.array(dataset.data)
y = np.array(dataset.target)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

model = KNeighborsClassifier()
model.fit(X_train, y_train)

prediction=model.predict(X_test)

所有数组的形状:

  1. X形:(150,4)
  2. y形状:(150,)
  3. X_train:(105,4)
  4. X_test:(45,4)
  5. y_train:(105,)
  6. y_test(45,)
  7. 预测:(45,)

尝试打印此 model.score(y_test,预测),我得到了错误。 我尝试使用.reshape(-1,1)将y_test和预测转换为2D数组,但又遇到另一个错误:查询数据维必须与训练数据维匹配。

这不仅与解决方案有关,还在于了解问题所在。

1 个答案:

答案 0 :(得分:0)

查看您使用的功能的签名和文档字符串通常很有用。例如model.score

Parameters
----------
X : array-like, shape = (n_samples, n_features)
    Test samples.

y : array-like, shape = (n_samples) or (n_samples, n_outputs)
    True labels for X.
在文档字符串中显示

,以向您显示应提供的确切输入类型。

您将在这里model.score(X_test, y_test)

model.score既可以根据X_test进行预测,也可以与y_test进行比较