寻找超参数

best_score = 0.0
best_k = -1
for k in range(1,11):
    knn_clf = KNeighborsClassifier(n_neighbors=k)
    knn_clf.fit(X_train,y_train)
    score = knn_clf.score(X_test,y_test)
    if score > best_score:
        best_k = k
        best_score = score
        
print('best_k =>',best_k)
print('best_score =>',best_score)

是否考虑距离这个参数

best_method=''
best_score = 0.0
best_k = -1
for method in ['uniform','distance']:
    for k in range(1,11):
        knn_clf = KNeighborsClassifier(n_neighbors=k,weights = method)
        knn_clf.fit(X_train,y_train)
        score = knn_clf.score(X_test,y_test)
        if score > best_score:
            best_k = k
            best_score = score
            best_method=method

print('best_method =>',best_method)
print('best_k =>',best_k)
print('best_score =>',best_score)

 #欧拉距离平方,1次方为曼哈顿距离,3次及以上为明可夫斯基距离

best_p=-1
best_score = 0.0
best_k = -1
for k in range(1,11):
    for p in range(1,5):
        knn_clf = KNeighborsClassifier(n_neighbors=k,weights = 'distance',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_score = score
            best_p=p
            

print('best_p =>',best_p)
print('best_k =>',best_k)
print('best_score =>',best_score)
原文地址:https://www.cnblogs.com/Erick-L/p/9009449.html