J'essaie juste de faire une régression linéaire simple mais cette erreur me laisse perplexe car:
regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values)
qui produit:
ValueError: Found arrays with inconsistent numbers of samples: [ 1 999]
Ces sélections doivent avoir les mêmes dimensions et doivent être des tableaux numpy, alors que me manque-t-il?
Il semble que sklearn nécessite la forme de données de (numéro de ligne, numéro de colonne). Si votre forme de données est (numéro de ligne), comme (999, )
, cela ne fonctionnera pas. En utilisant numpy.reshape()
, vous devriez passer à (999, 1)
, par exemple. en utilisant
data.reshape((999,1))
Dans mon cas, cela a fonctionné avec ça.
On dirait que vous utilisez pandas dataframe (du nom df2).
Vous pouvez également faire ce qui suit:
regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].to_frame(), df2.iloc[1:1000, 2].to_frame())
NOTE: J'ai supprimé les "valeurs" car cela convertit la série pandas en numpy.ndarray et numpy.ndarray n'a pas d'attribut to_frame ().
Vu dans le cours fondamental d’apprentissage en profondeur Udacity:
df = pd.read_csv('my.csv')
...
regr = LinearRegression()
regr.fit(df[['column x']], df[['column y']])
Je pense que l'argument "X" de regr.fit doit être une matrice, donc ce qui suit devrait fonctionner.
regr = LinearRegression()
regr.fit(df2.iloc[1:1000, [5]].values, df2.iloc[1:1000, 2].values)
J'ai rencontré cette erreur car j'ai converti mes données en np.array
. J'ai résolu le problème en convertissant mes données en un np.matrix
et en prenant la transposition.
ValueError: regr.fit(np.array(x_list), np.array(y_list))
Correct: regr.fit(np.transpose(np.matrix(x_list)), np.transpose(np.matrix(y_list)))
expects X(feature matrix)
Essayez de mettre vos fonctionnalités dans un tuple comme ceci:
features = ['TV', 'Radio', 'Newspaper'] X = data [features]
Comme il a été mentionné ci-dessus, l'argument X doit être une matrice ou un tableau numpy de dimensions connues. Donc, vous pourriez probablement utiliser ceci:
df2.iloc[1:1000, 5:some_last_index].values
Ainsi, votre cadre de données sera converti en un tableau avec des dimensions connues et vous n'aurez pas besoin de le remodeler.
J'ai fait face à un problème similaire. Le problème dans mon cas était, le nombre de lignes dans X n'était pas égal au nombre de lignes dans y.
en d'autres termes, le nombre d'entrées dans les colonnes de caractéristiques n'était pas égal au nombre d'entrées dans la variable cible, car j'avais supprimé certaines lignes des colonnes de fonctionnalités.
Pour analyser deux tableaux (array1 et array2), ils doivent répondre aux deux exigences suivantes:
1) Ils doivent être un numpy.ndarray
Vérifier avec
type(array1)
# and
type(array2)
Si ce n'est pas le cas pour au moins l'un d'entre eux effectue
array1 = numpy.ndarray(array1)
# or
array2 = numpy.ndarray(array2)
2) Les dimensions doivent être les suivantes:
array1.shape #shall give (N, 1)
array2.shape #shall give (N,)
N est le nombre d'éléments contenus dans le tableau. Pour fournir à array1 le bon nombre d'axes, procédez comme suit:
array1 = array1[:, numpy.newaxis]