ValueError: Expected 2D array, got 1D array 相反,在将 1D 数组转换为 2D 后坚持

Posted

技术标签:

【中文标题】ValueError: Expected 2D array, got 1D array 相反,在将 1D 数组转换为 2D 后坚持【英文标题】:ValueError: Expected 2D array, got 1D array instead insists after converting 1D array to 2D 【发布时间】:2019-12-15 14:14:50 【问题描述】:

我查看了其他答案,但仍然无法理解为什么问题仍然存在。

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)

所有数组的形状:

    X 形状:(150, 4) y 形状:(150,) X_train: (105, 4) X_test: (45, 4) y_train: (105,) y_test (45,) 预测:(45,)

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

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

【问题讨论】:

【参考方案1】:

查看您使用的函数的签名和文档字符串通常很有用。 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 的比较

【讨论】:

我遇到了多么意想不到的问题。我的心在千里之外。谢谢!

以上是关于ValueError: Expected 2D array, got 1D array 相反,在将 1D 数组转换为 2D 后坚持的主要内容,如果未能解决你的问题,请参考以下文章

ValueError: Expected 2D array, got 1D array instead:

ValueError: Expected 2D array, got 1D array instead:

如何在 sklearn/python 中修复“ValueError: Expected 2D array, got 1D array”?

ValueError: Expected 2D array, got 1D array instead , euclidean distance

sklearn中报错ValueError: Expected 2D array, got 1D array instead:

添加层到 resnet[keras] 的顶部:ValueError: Input 0 is incompatible with layer conv2d_transpose_1: expected n