単純な線形回帰モデルを実行しているときにこのエラーが発生しましたが、データセットに何か問題があると思います。
これはエラー本文です。
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)
ありがとうございました
fit
と predict
の両方のメソッドに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はどういう意味ですか?
これがあなたの答えです。
使用:y_pred = regressor.predict([[x_test]])
それが役立ちます。
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)
モデルを近似および予測する前。