请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

KNN关于超参数的问题

%%time
best_method = ""
best_p = -1
best_score = 0.0
best_k = -1

for method in ["uniform","distance"]:
    for k in range(1,10):
        for p in range(1,6):
            knn_clf = KNeighborsClassifier(n_neighbors = k,weights = method,p=p)
            knn_clf.fit(X_train,y_train)
            score = knn_clf.score(X_test,y_test)
            if score > best_score:
                best_k = k
                best_method = method
                best_p = p
                best_score = score
                
print("best_score = ",best_method)
print("best_p = ",best_p)
print("best_score = ",best_score)
print("best_k = ",best_k)


best_score =  uniform
best_p =  2
best_score =  0.9916666666666667
best_k =  4
Wall time: 36.7 s


best_score =  distance
best_p =  2
best_score =  0.9888888888888889
best_k =  3
Wall time: 17.4 s

既然p是在weight为distance时才有存在的意义

那2这个结果的理解是不是可以看出,相对而言,选择对的weight比选择对的p更加重要,weight更加超呢??

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-05-19 23:08:19

参数p是在weight为distance的时候才有意义,你可以理解成weight更加“超”。但这里的更加“超”只是层级上的一个选择关系而已,很难说distance的选择比p的选择更重要。


这就好比我们本科毕业以后会选择去读研还是去工作。读研要选择去哪个学校读,读什么专业;工作要选择去哪个厂工作,在哪个部门做什么职位。这些选择具有层级性,决定了上一层选择,才能去看下一层选择。但很难说上层选择更重要。每一个选择都很重要:)

0 回复 有任何疑惑可以回复我~
  • 为什么p只有在distance下才有意义呢
    回复 有任何疑惑可以回复我~ 2018-11-05 21:01:45
  • 在这里我犯了一个大错误。你说的对,p在weight下也有意义。可以参考这里:https://coding.imooc.com/learn/questiondetail/39378.html  抱歉!
    回复 有任何疑惑可以回复我~ 2018-11-06 02:34:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信