【问题标题】:Expected 2d array but got scalar array instead预期的二维数组,但得到了标量数组
【发布时间】:2019-06-20 13:47:14
【问题描述】:

我收到了这个错误

ValueError:预期的 2D 数组,得到的是标量数组:array=6.5。 如果您的数据有 单个特征或 array.reshape(1, -1) 如果它包含单个样本。

在执行这段代码时

# SVR

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.svm import SVR

# Load dataset
dataset = pd.read_csv('Position_Salaries.csv')

X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

# Fitting the SVR to the data set
regressor = SVR(kernel = 'rbf', gamma = 'auto')
regressor.fit(X, y)

# Predicting a new result 
y_pred = regressor.predict(6.5)

【问题讨论】:

  • 欢迎来到 StackOverflow。请注意,将“请帮忙”放在标题甚至问题中都无济于事。在这里发帖的每个人都希望以某种方式获得帮助。还请阅读您在输入问题时收到的说明:代码应使用相应的工具栏按钮进行格式化。

标签: python machine-learning anaconda spyder data-science


【解决方案1】:
# Predicting a new result with Linear Regression
X_test = np.array([[6.5]])
print(lin_reg.predict(X_test))

# Predicting a new result with Polynomial Regression
print(lin_reg_2.predict(poly_reg.fit_transform(X_test)))

【讨论】:

  • 这个答案没有帮助,因为你没有解释原来的问题是什么,或者你如何在这里解决它
【解决方案2】:

您需要了解 SVM 的工作原理。您的训练数据是一个形状为(n_samples, n_features) 的矩阵。这意味着,您的 SVM 在 n_features 维度的特征空间中运行。因此,它无法预测标量输入的值,除非 n_features 为 1。您只能预测维度为 n_features 的向量的值。因此,如果您的数据集有 5 列,您可以预测任意 5 列的行向量的值。请参见下面的示例。

import numpy as np
from sklearn.svm import SVR

# Data: 200 instances of 5 features each
X = randint(1, 100, size=(200, 5))
y = randint(0, 2, size=200)

reg = SVR()
reg.fit(X, y)

y_test = np.array([[0, 1, 2, 3, 4]])    # Input to .predict must be 2-dimensional
reg.predict(y_test)

【讨论】:

  • @Muhammad 所以,如果可能的答案是您问题的正确答案,那么接受它是合适的。
  • @MuhammadKhubaibNasir 如果答案解决了您的问题,请接受 - 请参阅What should I do when someone answers my question?
  • 感谢@desertnaut 的告知,以后我会小心的
猜你喜欢
  • 2019-08-17
  • 2020-05-11
  • 1970-01-01
  • 2018-06-06
  • 2021-03-01
  • 2019-10-07
  • 2021-11-15
  • 2019-09-19
  • 2019-09-11
相关资源
最近更新 更多