KNN关于超参数的问题
来源:4-6 网格搜索与k近邻算法中更多超参数
XTZ3344441
2018-05-19
%%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更加超呢??
1回答
-
liuyubobobo
2018-05-19
参数p是在weight为distance的时候才有意义,你可以理解成weight更加“超”。但这里的更加“超”只是层级上的一个选择关系而已,很难说distance的选择比p的选择更重要。
这就好比我们本科毕业以后会选择去读研还是去工作。读研要选择去哪个学校读,读什么专业;工作要选择去哪个厂工作,在哪个部门做什么职位。这些选择具有层级性,决定了上一层选择,才能去看下一层选择。但很难说上层选择更重要。每一个选择都很重要:)
022018-11-06
相似问题