web-dev-qa-db-fra.com

ValueError: tableau 2D attendu, tableau 1D à la place:

En pratiquant le modèle de régression linéaire simple, j'ai eu cette erreur, je pense qu'il y a un problème avec mon ensemble de données.

Voici mon ensemble de données:

Voici la variable indépendante X:

Voici la variable dépendante Y:

Voici X_train

Voici Y_train

C'est le corps de l'erreur:

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.

Et voici mon code:

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)

Merci

6
danyialKhan

Vous devez donner à la fois les tableaux 2D des méthodes fit et predict . Vos x_train, y_train Et x_test Ne sont actuellement que 1D. Ce qui est suggéré par la console devrait fonctionner:

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

Il utilise reshape de numpy. Des questions sur reshape ont été répondues dans le passé, ceci devrait par exemple répondre à ce que reshape(-1,1) signifie: Que signifie -1 dans la refonte numpy?

5
ryan.nanson

Voici votre réponse.
Utilisez: y_pred = regressor.predict([[x_test]])

Ça aidera.

4
ALİ TAŞKIRAN

Si vous regardez la documentation de LinearRegression de scikit-learn .

fit (X, y, sample_weight = None)

X: tableau numpy ou matrice de forme éparse [n_samples, n_features]

prédire (X)

X: {matrice de type tableau, clairsemée}, forme = (n_échantillons, n_fonctions)

Comme vous pouvez le voir, X a 2 dimensions, où as, votre x_train et x_test en avoir clairement un. Comme suggéré, ajoutez:

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

Avant d'ajuster et de prédire le modèle.

3
Vishwas Sathish