3
votes

sklearn: TypeError: fit () manquant 1 argument positionnel requis: 'x "

En essayant d'exécuter ce

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values ="NaN", strategy = "mean")
imputer = SimpleImputer.fit(X[:,1:3])
X[:,1:3] = SimpleImputer.transform(X[:,1:3])

j'obtiens une erreur

TypeError: fit () manquant 1 argument positionnel obligatoire: 'X'

Mais j'ai déjà fourni x, non? Quelle est la solution pour cela?


4 commentaires

Quelle est la valeur de x?


la méthode "fit" n'accepte que les tableaux numpy en entrée. alors assurez-vous qu'il est du bon type


dataset = pd.read_csv ('data.csv') X = dataset.iloc [:,: -1] .values ​​


@ gireesh4manu j'ai fourni ceci pour x


3 Réponses :


4
votes

Selon ce module Scikit-learn , la syntaxe correcte doit être :

imputer.fit(X[:,1:3 )

au lieu de:

imputer = SimpleImputer.fit (X [:, 1: 3])


5 commentaires

cela a fonctionné mais a soulevé une autre exception. En fait, j'essaie de remplacer la valeur "NaN" par la moyenne d'une autre observation


ValueError: l'entrée contient NaN, l'infini ou une valeur trop grande pour dtype ('float64').


X contient-il des valeurs NaN ou inf?


oui, il contient des valeurs NaN et c'est ce que j'essaie de remplacer par la moyenne d'une autre observation @sheldon


Consultez ce post: stackoverflow.com/questions/31323499/...



3
votes

Le code complètement travaillé ressemble à:

missing_values = np.nan

Veuillez faire attention à:

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
imputer = imputer.fit(X[:,1:3])
X[:,1:3] = imputer.transform(X[:,1:3])


0 commentaires

0
votes

Votre code:

from sklearn.impute import SimpleImputer  
imputer = SimpleImputer(missing_values=np.nan, strategy='mean',fill_value=None, verbose=0, copy=True)  
imputer = imputer.fit(X[:, 1:3])  
X[:, 1:3] = imputer.transform(X[:, 1:3])

Code correct:

from sklearn.impute import SimpleImputer
# PAY ATTENTION: to NaN as np.nan
imputer = SimpleImputer(**missing_values ="NaN"**, strategy = "mean")
imputer = SimpleImputer.fit(X[:,1:3])
# PAY ATTENTION: instead of "SimpleImputer.transform" use "imputer.transform"
X[:,1:3] = **SimpleImputer**.transform(X[:,1:3])


0 commentaires