ValueError: Ожидаемый 2D-массив, вместо него получен 1D-массив: - PullRequest
0 голосов
/ 03 июля 2018

Во время практики модели простой линейной регрессии я получил эту ошибку, Я думаю, что с моим набором данных что-то не так.

Вот мой набор данных:

Здесь независимая переменная X:

Здесь зависимая переменная Y:

Вот X_train

Вот Y_train

Это тело ошибки:

ValueError: Expected 2D array, got 1D array instead:
array=[ 7.   8.4 10.1  6.5  6.9  7.9  5.8  7.4  9.3 10.3  7.3  8.1].
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 pandas as pd
import matplotlib as pt

#import data set

dataset = pd.read_csv('Sample-data-sets-for-linear-regression1.csv')
x = dataset.iloc[:, 1].values
y = dataset.iloc[:, 2].values

#Spliting the dataset into Training set and Test Set
from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size= 0.2, random_state=0)

#linnear Regression

from sklearn.linear_model import LinearRegression

regressor = LinearRegression()
regressor.fit(x_train,y_train)

y_pred = regressor.predict(x_test)

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Если вы посмотрите документацию LinearRegression о scikit-learn .

подходит (X, y, образец_вес = нет)

X: пустой массив или разреженная матрица формы [n_samples, n_features]

предсказать (Х)

X: {массивоподобная, разреженная матрица}, форма = (n_samples, n_features)

Как видите, X имеет 2 измерения, где, как у ваших x_train и x_test явно есть одно. Как предложено, добавьте:

x_train = x_train.reshape(-1, 1)
x_test = x_test.reshape(-1, 1)

Перед подбором и прогнозированием модели.

0 голосов
/ 12 марта 2019

Вот ваш ответ.
Использование: y_pred = regressor.predict([[x_test]])

Это поможет.

0 голосов
/ 03 июля 2018

Вам нужно указать оба метода: fit и predict для двухмерных массивов. Ваши x_train, y_train и x_test в настоящее время только 1D. То, что предлагает консоль, должно работать:

x_train= x_train.reshape(-1, 1)
y_train= y_train.reshape(-1, 1)
x_test = x_test.reshape(-1, 1)

Используется numpy's reshape. На вопросы о reshape уже давали ответы, например, это должно отвечать на то, что означает reshape(-1,1): Что означает -1 в numpy rehape?

...