Come imputare i valori mancanti sulla gamma NumPy creato da train_test_split da pandas.DataFrame?
-
16-10-2019 - |
Domanda
sto lavorando sul set di dati con un sacco di NA valori con sklearn e pandas.DataFrame. Ho implementato diverse strategie di imputazione per le diverse colonne dei nomi delle colonne a base dataframe. Per esempio AN predittore 'var1' io imputo con 0 di e per 'var2' con media.
Quando provo ad attraversare convalidare il mio modello usando train_test_split mi restituisce un nparray che non ha i nomi delle colonne. Come posso imputare valori mancanti in questo nparray?
P.S. Io non imputare valori nel set di dati originale mancante prima di sciogliersi di proposito in modo continuo a insiemi di test e validazione a parte.
Soluzione
Si può solo lanciare la vostra nparray dal retro train_test_split in un panda dataframe in modo da poter effettuare la sua stessa strategia. Questo è molto comune a quello che faccio quando si tratta di panda e scikit. Ad esempio,
a = train_test_split
new_df = pd.DataFrame(a)
Altri suggerimenti
Dal link che hai menzionato nel commento, i trenini e di test dovrebbe essere sotto forma di un dataframe se avete seguito la prima spiegazione.
In questo caso, si potrebbe fare qualcosa di simile:
df[variable] = df[variable].fillna(df[variable].median())
Sono disponibili opzioni su cosa per riempire i valori N / A con, controllare il link. http://pandas.pydata.org/pandas-docs/stable/missing_data.html
Se avete seguito la seconda spiegazione, utilizzando la convalida incrociata di sklearn, è possibile implementare il suggerimento di mike1886 di trasformare le matrici in dataframes e quindi utilizzare l'opzione fillna.