Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将sklearn函数应用于数据帧会产生ValueError(“未知标签类型:%r";%y”)_Python_Pandas_Scikit Learn - Fatal编程技术网

Python 将sklearn函数应用于数据帧会产生ValueError(“未知标签类型:%r";%y”)

Python 将sklearn函数应用于数据帧会产生ValueError(“未知标签类型:%r";%y”),python,pandas,scikit-learn,Python,Pandas,Scikit Learn,以下代码给出了一条错误消息: >>> 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(

以下代码给出了一条错误消息:

    >>> 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
>>将熊猫作为pd导入
>>>从sklearn导入预处理,支持向量机
>>>数据帧({“a”:[0,1,2],“b”:[0,1,2],“c”:[0,1,2]})
>>>clf=svm.SVC()
>>>df=df.apply(λx:preprocessing.scale(x))
>>>clf.fit(df[“a”、“b”]、df[“c”])
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Alexander\Anaconda\lib\site packages\sklearn\svm\base.py”,lin
151,合身
y=自我验证目标(y)
文件“C:\Users\Alexander\Anaconda\lib\site packages\sklearn\svm\base.py”,lin
515,在_验证_目标
检查\u分类\u目标(y)
文件“C:\Users\Alexander\Anaconda\lib\site packages\sklearn\utils\multiclass”。
y“,第173行,检查分类目标
提升值错误(“未知标签类型:%r”%y)
ValueError:未知标签类型:0-1.224745
1    0.000000
2    1.224745
名称:c,数据类型:float64

熊猫数据帧的数据类型不是一个对象,因此应用sklearn svm函数应该可以,但由于某些原因,它无法识别分类标签。导致此问题的原因是什么?

问题是,在缩放步骤之后,标签是浮点值的,这不是有效的标签类型;如果您转换为
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)

尝试
df[[“a”,“b”]]。值
df[“c”]。值
SKLearn通常需要数组,而不是数据帧。同样的问题,错误消息是:raise VALUERROR(“未知标签类型:%r”%y)VALUERROR:未知标签类型:数组([-1.22474487,0,1.22474487]),当我尝试运行
df=df.apply(lambda x:preprocessing.scale(x))
我收到一个错误
TypeError:(“无法将ufunc subtract输出从dtype('float64')转换为dtype('int64')…
这很奇怪-我收到一些警告,我省略了这些警告,但没有错误消息..您使用的是什么版本的python?我使用的是python 2.7.11。