python - KNeighborsClassifier 的可接受数据类型
问题描述
我期望下面的代码只接受 的数据类型category
,y
因为根据定义,分类器会预测分类变量的值。但是经过测试,我看到这个分类器接受y
的值是integer
等object
。它是在幕后转换y
,category
还是这里发生了什么?
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier()
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
解决方案
不,在这方面实际上没有发生任何事情。我不知道你从哪里得到这个目标y
只能是类型category
(顺便说一句,这不是numpy dtype,而是 pandas 的东西)。但没有必要有这样的限制。
scikit-learn
内部使用调用的函数type_of_target
来检查目标y
是否符合API规范并确定a target_type
,即它是哪种分类任务。这是其文档字符串的摘录:
Examples
--------
>>> import numpy as np
>>> type_of_target([0.1, 0.6])
'continuous'
>>> type_of_target([1, -1, -1, 1])
'binary'
>>> type_of_target(['a', 'b', 'a'])
'binary'
>>> type_of_target([1.0, 2.0])
'binary'
>>> type_of_target([1, 0, 2])
'multiclass'
>>> type_of_target([1.0, 0.0, 3.0])
'multiclass'
>>> type_of_target(['a', 'b', 'c'])
'multiclass'
>>> type_of_target(np.array([[1, 2], [3, 1]]))
'multiclass-multioutput'
>>> type_of_target([[1, 2]])
'multilabel-indicator'
>>> type_of_target(np.array([[1.5, 2.0], [3.0, 1.6]]))
'continuous-multioutput'
>>> type_of_target(np.array([[0, 1], [1, 1]]))
'multilabel-indicator'
分类任务是以下任何一项:
['binary', 'multiclass', 'multiclass-multioutput',
'multilabel-indicator', 'multilabel-sequences']
所以元素的类型可以是int
,str
或object
,但不是float
。
推荐阅读
- random - 在 Twilio,你能
来自为来电提供的 URL 列表中的随机音频文件? - java - 使用相同的字符串写入多个文件而不挂起 UI
- java - 如何使用 @Query 注释创建本机查询以连接相关表
- c - 目录中的通用用户?
- php - 混合条件类型
- jmeter - 摘要报告中恒定吞吐量计时器、每秒事务数和吞吐量之间的关系
- git - 签出不同分支时删除 git 中未暂存的、未提交的文件
- javascript - JavaScript 中 list.Reverse() 的效率?
- shopify - 在没有 RSA 密钥或使用 301 重定向的情况下更新 AMP 缓存
- c - 登录到 Oracle 时 system() 返回 -1, errno=10