KNeighborsClassifier 可接受的数据类型
Acceptable Data Types for KNeighborsClassifier
我原以为下面的代码只接受
y
的数据类型 category
,因为根据定义,分类器预测分类变量的值。但是在测试之后,我看到这个分类器接受 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 规范并确定一个 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
。
我原以为下面的代码只接受
y
的数据类型 category
,因为根据定义,分类器预测分类变量的值。但是在测试之后,我看到这个分类器接受 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 规范并确定一个 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
。