【问题标题】:Value Error: Expected 2D array, got 1D array instead:值错误:预期的 2D 数组,得到 1D 数组:
【发布时间】: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]])))

【问题讨论】:

    标签: python machine-learning regression svm


    【解决方案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()

      【讨论】:

        猜你喜欢
        • 2021-05-14
        • 2018-09-16
        • 2020-12-18
        • 1970-01-01
        • 2021-12-29
        • 2018-12-11
        • 2020-11-02
        • 2018-08-26
        相关资源
        最近更新 更多