from sklearn import datasets#引入数据集,sklearn包含众多数据集
from sklearn.model_selection import train_test_split#将数据分为测试集和训练集
from sklearn.model_selection import GridSearchCV #参数
from sklearn.neighbors import KNeighborsClassifier#利用邻近点方式训练数据\
from sklearn.metrics import accuracy_score
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
digits=datasets.load_digits()
# print(digits.keys())
# print(digits.DESCR)
X=digits.data
y=digits.target
# some_digit=X[666]
# some_digit_image=some_digit.reshape(8,8)
# plt.imshow(some_digit_image,cmap=mpl.cm.binary)
# plt.show()
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=666)#利用train_test_split
# myknn=KNeighborsClassifier(n_neighbors=3)
# myknn.fit(X_train,y_train)
# y_predict=myknn.predict(X_test)
#
# print(sum(y_predict == y_test)/len(y_test))
# print(accuracy_score(y_test,y_predict))
param_grid=[
{
'weights':['uniform'],
'n_neighbors':[i for i in range(1,11)]
},
{
'weights': ['distance'],
'n_neighbors': [i for i in range(1, 11)],
'p':[i for i in range(1, 6)]
}
]
knn_clf=KNeighborsClassifier()
grid_search=GridSearchCV(knn_clf,param_grid)
grid_search.fit(X_train,y_train)
print(grid_search.best_estimator_)
print(grid_search.best_score_)
print(grid_search.best_params_)
print(grid_search.best_index_)