【发布时间】:2017-03-05 11:05:58
【问题描述】:
我需要使用具有自定义指标的 K 最近邻。我有一个适用于我的对象属性的公式。这意味着我有矩阵。该矩阵由向量组成,每个向量包含公式中使用的 3 个标量值。
我找到了如何在库 sklearn 的 KNeighborsClassifier 类中使用自定义指标。它只需要一个名为 metric 的参数,该参数可以是字符串或可调用的。所以......我已经创建了函数,但是这个函数第一次需要两个相同的数组包含 10 个标量值。我的意思是每个数组都包含 10 个值而不是 3 个。在随后的每次函数中,该函数都从我的矩阵中获取值。
我查看了调用堆栈,并且看到了从类BallTree 调用的函数。我已经阅读过这种结构,但我无法理解它如何转换我的数据或它在第一次传递给我的指标的方式。
前两个相同的数组是什么意思?
我通过这段代码实例化分类器
clf = KNeighborsClassifier(n_jobs=4, metric=custom_metric)
clf.fit(X, Y)
X 包含这样的值。
array([[2.400154, 0.07744107744107744, 96.80566400000001],
[2.39325, 0.07744107744107744, 97.219544],
[2.395162, 0.07744107744107744, 97.10519599999999],
[3.101635, 0.009788768675940238, 65.88368],
[3.09882, 0.009788768675940238, 65.97364499999999],
[3.099576, 0.009788768675940238, 65.956018]], dtype=object)
custom_metric 是我的功能。它现在什么都没有。
def custom_metric(x: np.ndarray, y: np.ndarray) -> float:
pass
x 和 y 的示例
array([ 0.02274535, 0.21161613, 0.41314247, 0.39046054, 0.1670481 ,
0.15515555, 0.13329802, 0.59103014, 0.26246693, 0.7727967 ])
正如我在上面写的那样,它们是相同的。
对不起,如果我的英语不清楚。
【问题讨论】:
标签: python machine-learning scikit-learn