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。