值错误:预期的 2D 数组,得到 1D 数组:
Posted
技术标签:
【中文标题】值错误:预期的 2D 数组,得到 1D 数组:【英文标题】:Value Error: Expected 2D array, got 1D array instead: 【发布时间】:2021-12-28 03:39:00 【问题描述】:在练习支持向量回归模型时遇到此错误
这是我的数据集:
这里是自变量X:
这里是因变量Y:
这里是 X_train
这里是 Y_train
错误正文:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-40-2de23298b092> in <module>()
----> 1 sc_y.inverse_transform(regressor.predict(sc_X.transform([[6.5]])))
1 frames
/usr/local/lib/python3.7/dist-packages/sklearn/preprocessing/_data.py in inverse_transform(self, X, copy)
1020 estimator=self,
1021 dtype=FLOAT_DTYPES,
-> 1022 force_all_finite="allow-nan",
1023 )
1024
/usr/local/lib/python3.7/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
763 "Reshape your data either using array.reshape(-1, 1) if "
764 "your data has a single feature or array.reshape(1, -1) "
--> 765 "if it contains a single sample.".format(array)
766 )
767
ValueError: Expected 2D array, got 1D array instead:
array=[0.01150915].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values
y = y.reshape(len(y), 1)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(X, y)
sc_y.inverse_transform(regressor.predict(sc_X.transform([[6.5]])))
【问题讨论】:
【参考方案1】:问题在于您在代码的最后一行中提供给sc_X.transform())
的测试输入[[6.5]]
。
尝试找到 X 的形状并使用numpy.shape
测试输入,并确保两种情况下的维度数都应为 2。所以你会得到类似(Xi, Xj)
,(Ti, Tj)
的东西。此外,Xj 必须与 Tj 相同(基本上特征数量必须与训练和测试数据匹配)
【讨论】:
【参考方案2】:如果您的数据集有 8 列,则选择 X 和 y 的方法如下
values = dataset.values
X = values[:,0:8]
y = values[:,8]
从那里获取,还要注意 values 已被弃用,而是 to_numpy()
【讨论】:
以上是关于值错误:预期的 2D 数组,得到 1D 数组:的主要内容,如果未能解决你的问题,请参考以下文章
“ValueError:预期的 2D 数组,得到 1D 数组”的问题
使用 OneHotEncoder 出现错误“预期的二维数组,而是得到一维数组”
将 2D numpy 数组重塑为 3 个具有 x,y 索引的 1D 数组
Numpy quirk:将函数应用于两个 1D 数组的所有对,以获得一个 2D 数组