返回信息流lz做了一个实验,用sklearn的KNeighborsClassifier分类器,K取[1,1000],观察auc值的变化,效果图如下所示:
整体的趋势竟然是下降的,难道K=1是最好的么?这显然不符合KNN的原理啊...有谁能解释一下么[ema1]
代码如下:(用的是一个二分类的数据集,取了1000个样本)
import matplotlib.pyplot as plt
k_range = list(range(1, 1001))
aucs = []
for k in k_range:
if k%10==0:
print(k)
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(new_train_data[:1001],y_train[:1001])
y_prb_1 = knn.predict_proba(new_train_data[:1001])[:, 1]
# 得到误判率、命中率、门限
fpr, tpr, thresholds = roc_curve(y_train[:1001], y_prb_1)
# 计算auc
roc_auc = auc(fpr, tpr)
aucs.append(roc_auc)
plt.plot(k_range, aucs)
plt.xlabel('K')
plt.ylabel('auc')
plt.show()
这是一条镜像帖。来源:北邮人论坛 / python / #23157同步于 2018/11/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】sklearn KNN算法问题
adong
2018/11/22镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。