web-dev-qa-db-ja.com

ValueError:2D配列が期待されますが、代わりに1D配列が取得されました:

単純な線形回帰モデルを実行しているときにこのエラーが発生しましたが、データセットに何か問題があると思います。

これが私のデータセットです:

ここに独立変数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)

ありがとうございました

6
danyialKhan

fitpredict の両方のメソッドに2D配列を与える必要があります。 _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の reshape を使用します。 reshapeに関する質問は過去に回答されました。たとえば、これはreshape(-1,1)の意味に答えるはずです: numpy reshapeで-1はどういう意味ですか?

5
ryan.nanson

これがあなたの答えです。
使用:y_pred = regressor.predict([[x_test]])

それが役立ちます。

4
ALİ TAŞKIRAN

LinearRegression of scikit-learn のドキュメントを見ると。

fit(X、y、sample_weight = None)

X:numpy配列または形状のスパース行列[n_samples、n_features]

predict(X)

X:{配列のようなスパース行列}、形状=(n_samples、n_features)

ご覧のとおり、Xには2つのディメンションがあり、x_trainおよびx_test明らかに1つあります。提案されたように、追加します:

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

モデルを近似および予測する前。

3
Vishwas Sathish