Ожидаемый 2d массив, но вместо этого получил скалярный массив - PullRequest
0 голосов
/ 27 января 2019

Я получаю эту ошибку

ValueError: Ожидаемый 2D-массив, вместо него получен скалярный массив: array = 6.5.Измените ваши данные, используя array.reshape (-1, 1), если ваши данные имеют одну функцию, или 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)

1 Ответ

0 голосов
/ 27 января 2019

Вы должны понимать, как работает 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)
...