調(diào)用sklearn中現(xiàn)有的機器學習函數(shù)包言询,往往都會有很多參數(shù)設(shè)置亲善,如knn中,你需要選擇k的數(shù)值,需要選擇距離計算方法澎灸,需要選擇是不是要按照距離遠近給不同點的不同的權(quán)重院塞,等等之類,很多時候只能依靠經(jīng)驗確定性昭,這時候可以設(shè)置一個循環(huán)拦止,來測試出最好的參數(shù)設(shè)置。
以KNN為例糜颠,代碼如下:
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=42,stratify=y)
knn.score(x_test,y_test)
best_p = -1
best_score= 0.0
best_k = -1
best_method=''
for k in range(1,11):
for method in ['uniform','distance']:
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_score=score
best_p=p
best_method = method
print (best_p)
print (best_score)
print (best_k)
print (best_method)