Mi chiedevo se ci sono classificatori che gestiscono valori nan/null in scikit-learn. Ho pensato che il regressore forestale casuale lo gestisse, ma ho ricevuto un errore quando ho chiamato lo predict
.classificatori in scikit-imparare che gestire nan/null
X_train = np.array([[1, np.nan, 3],[np.nan, 5, 6]])
y_train = np.array([1, 2])
clf = RandomForestRegressor(X_train, y_train)
X_test = np.array([7, 8, np.nan])
y_pred = clf.predict(X_test) # Fails!
Impossibile chiamare la previsione con qualsiasi algoritmo di apprendimento scikit con valori mancanti?
Modifica. Ora che ci penso, ha senso. Non è un problema durante l'allenamento, ma quando prevedi come ti direri quando la variabile è nullo? forse potresti semplicemente dividere in due modi e mediare il risultato? Sembra che k-NN funzioni bene finché la funzione di distanza ignora i valori nulli.
Edit 2 (vecchio e più saggio di me) Alcune librerie GBM (come ad esempio xgboost) usa un albero ternario invece di un albero binario proprio per questo scopo: 2 bambini per le decisione sì/no e 1 bambino per la decisione mancante. sklearn è using a binary tree
ho anche affrontare questo problema, immagino che è necessario rimuovere tale 'valori nan' con [questa classe] (http://scikit-learn.org/stable/modules/preprocessing.html) anche fonte [this] (http://www.markhneedham.com/blog/2013/11/09/python-making-scikit-learn-and-pandas-play-nice/) ma non riesco ancora a risolvere questo problema. Probabilmente [questo] (https://stackoverflow.com/questions/9365982/missing-values-in-scikits-machine-learning) aiuterà. – skwoi
Il problema qui è come dovrebbe essere rappresentato 'NaN' qui? è un problema comune in cui è necessario decidere come gestirli, è possibile eliminarli o sostituirli con un valore medio o qualche altro inidcator – EdChum