Estoy usando scikit-learn para algunos análisis de datos, y mi conjunto de datos tiene algunos valores faltantes (representados por NA
). Cargué los datos con genfromtxt
con dtype='f8'
y voy a entrenar mi clasificador.¿Cómo hacer que los SVM jueguen bien con los datos faltantes en scikit-learn?
La clasificación está muy bien en RandomForestClassifier
y GradientBoostingClassifier
objetos, pero utilizando SVC
de sklearn.svm
provoca el error siguiente:
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
Lo que da? ¿Cómo puedo hacer que SVM juegue bien con la información faltante? Teniendo en cuenta que los datos faltantes funcionan bien para los bosques aleatorios y otros clasificadores ..
¿Qué hay de los valores infinitos? Esto indica una estrategia solo con NaN (es decir, división por cero) – lefterav
Lo hice pero la transformación cambió los datos a una matriz no entera. Si no imputo, la clasificación svm funciona bien, pero cuando imputo los datos obtengo el error 'IndexError: solo enteros, slices (': '), elipsis (' ... '), numpy.newaxis (' Ninguno ') y las matrices enteras o booleanas son índices válidos'. Algun consejo ? –