Sto utilizzando scikit-learn per alcune analisi dei dati e il mio set di dati ha alcuni valori mancanti (rappresentato da NA
). Carico i dati con genfromtxt
con dtype='f8'
e faccio formazione sul mio classificatore.Come far sì che gli SVM funzionino bene con i dati mancanti in scikit-learn?
La classificazione è bene su RandomForestClassifier
e GradientBoostingClassifier
oggetti, ma usando SVC
dal sklearn.svm
causa il seguente errore:
probas = classifiers[i].fit(train[traincv], target[traincv]).predict_proba(train[testcv])
File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 409, in predict_proba
X = self._validate_for_predict(X)
File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 534, in _validate_for_predict
X = atleast2d_or_csr(X, dtype=np.float64, order="C")
File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 84, in atleast2d_or_csr
assert_all_finite(X)
File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 20, in assert_all_finite
raise ValueError("array contains NaN or infinity")
ValueError: array contains NaN or infinity
Che cosa dà? Come posso fare in modo che SVM giochi bene con i dati mancanti? Tenendo presente che i dati mancanti funzionano bene per foreste casuali e altri classificatori.
Che dire di valori infiniti? Questo indica una strategia solo con NaN (cioè divisione per zero) – lefterav
Ho fatto questo ma la trasformazione ha cambiato i dati in un array non intero. Se non imputo la classificazione svm funziona bene, ma quando imputo i dati ottengo l'errore 'IndexError: solo interi, slice (': '), ellissi (' ... '), numpy.newaxis (' Nessuno ') e gli interi o gli array booleani sono indici validi'. Qualche consiglio ? –