2015-12-17 2 views
2

Следующий код выдает сообщение об ошибке:Применение функции sklearn к панд dataframe дает ValueError («Неизвестный тип метки:% г»% г)

>>> import pandas as pd 
    >>> from sklearn import preprocessing, svm 
    >>> df = pd.DataFrame({"a": [0,1,2], "b":[0,1,2], "c": [0,1,2]}) 
    >>> clf = svm.SVC() 
    >>> df = df.apply(lambda x: preprocessing.scale(x)) 
    >>> clf.fit(df[["a", "b"]], df["c"]) 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "C:\Users\Alexander\Anaconda\lib\site-packages\sklearn\svm\base.py", lin 
    151, in fit 
     y = self._validate_targets(y) 
     File "C:\Users\Alexander\Anaconda\lib\site-packages\sklearn\svm\base.py", lin 
    515, in _validate_targets 
     check_classification_targets(y) 
     File "C:\Users\Alexander\Anaconda\lib\site-packages\sklearn\utils\multiclass. 
    y", line 173, in check_classification_targets 
     raise ValueError("Unknown label type: %r" % y) 
    ValueError: Unknown label type: 0 -1.224745 
    1 0.000000 
    2 1.224745 
    Name: c, dtype: float64 

DTYPE из панд DataFrame не является объектом, так применение функции sklearn svm должно быть прекрасным, но по какой-то причине оно не распознает метки классификации. Что вызывает эту проблему?

+0

Try 'ДФ [[ "а", "б"]] values' и' ДФ [ "с"] values' SKLearn обычно ожидает массивы, а не кадры данных. –

+0

же проблема, сообщение об ошибке: – Alex

+0

поднять ValueError («Неизвестный тип метки:% г»% г) ValueError: Неизвестный тип метки: массив ([- 1,22474487, 0, 1,22474487]) – Alex

ответ

4

Проблема заключается в том, что после шага масштабирования метки являются float -значными, что не является допустимым типом метки; если преобразовать в int или str он должен работать:..

In [32]: clf.fit(df[["a", "b"]], df["c"].astype(int)) 
Out[32]: 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, 
    decision_function_shape=None, degree=3, gamma='auto', kernel='rbf', 
    max_iter=-1, probability=False, random_state=None, shrinking=True, 
    tol=0.001, verbose=False) 
Смежные вопросы