2016-11-19 6 views
0

Ich versuche, meine Daten vorzuverarbeiten, indem ich den fehlenden Wert durch den Mittelwert ersetze.Scikit-learn: Fehler beim Ersetzen fehlender Daten

Mein Code ist wie folgt:

#Load the Data 
import numpy as np 
data_2 = np.genfromtxt('data.csv', delimiter=',', skip_header=1) 

#the missing values in my dataset are identified by value = 0 
#I'm trying to replace the missing values in the third column 
from sklearn.preprocessing import Imputer 
imp = Imputer(missing_values=0, strategy='mean', axis=0) 
imp.fit(data_2[:, 2]) 

läuft es gab aber diese Warnungen:

/Users/user1/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
    DeprecationWarning) 

/Users/user1/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
    DeprecationWarning) 

aber mein Hauptproblem ist, dass es die fehlenden Daten nicht ausfüllte, druckte ich die Daten vor und nach der Anpassung und keine Änderung.

Was mache ich falsch?

Update: Hier sind wenige Zeilen meines Datensatz:
6,148,72,35,0,33.6,0.627,50,1
1,85,66,29,0,26.6,0.351,31, 0
8,183,64,0,0,23.3,0.672,32,1
1,89,66,23,94,28.1,0.167,21,0

+0

Können Sie ein paar Zeilen data.csv teilen? –

+0

passen Sie den Drucker nur auf die zweite Spalte 'imp.fit (data_2 [:, 2])'. Kann das dein Problem sein? die Spalte darf keine Nullen haben ... – MMF

+0

Es hat Nullwerte. Davon bin ich überzeugt. – Salma

Antwort

1
  • Die ersten Zeilen Ihnen geteilt enthält keine Nullwerte, wird also schwer zu erklären
  • Betrachten Sie dies leicht u pdated Version Ihres Datensatzes, um Sie zu verstehen.

    6,148,72,35,0,33.6,0.627,50,1 
    1,85,,29,0,26.6,0.351,, 
    ,183,64,,0,,0.672,32,1 
    1,89,66,23,94,28.1,0.167,21,0 
    
  • Es gibt eine einfache Möglichkeit, fehlende Werte um Füllung durch die Bibliothek Pandas mit

    #Load Libraries and data 
    import pandas as pd 
    df = pd.read_csv('data.csv',names=[1,2,3,4,5,6,7,8,9]) 
    
    #Fill the Null values with the mean 
    df = df.fillna(df.mean()) 
    
  • Namen Argument in read_csv Funktion verwendet wird Namen der Spalte der CSV zu geben Datei

  • fillna() Funktion füllt die fehlenden Werte .

+0

Das Problem ist, dass in meinem Datensatz die Nullen NN entsprechen, also ist es nicht korrekt, den Mittelwert direkt zu berechnen und die fehlenden Werte zu füllen. Ich nehme an, dass ich die folgenden Werte [0,3, 4, 5, 0, 1] habe, wenn ich den Mittelwert unter Zählen der Nullen = 2,167 berechne, ohne sie = 3,25, also ist eine einfache Mittelwertberechnung nicht korrekt Ich sollte den Median verwenden – Salma

+0

Also, was ist der Mittelwert Sie wollen für [0,3, 4, 5, 0, 1] –

Verwandte Themen