Q:什么叫做超参数?
A:在算法开始执行之前就需要指定的参数叫做超参数,如KNN算法中的k值
Q:什么叫做模型参数?
A:在算法执行过程中需要指定的参数叫做模型参数
Q:网格搜索是什么,有什么作用?
A:网格搜索是指通过循环方式不断的搜索能使得机器学习算法效果最好的各类参数,sklearn中提供了GridSearchCV类进行网格搜索,作用是找到使得机器学习算法效果达到最好的各类参数的集合。
下面是使用网格搜索找到对于iris最好的超参数集合
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn import datasets
iris=datasets.load_iris()
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0
parms=[
{
'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)]
},
]
from sklearn.model_selection import GridSearchCV
knn_clf=KNeighborsClassifier()
gridsearch=GridSearchCV(knn_clf,param_grid=parms)
gridsearch.fit(x_train,y_train)
print(gridsearch.best_estimator_)
print(gridsearch.best_params_)
print(gridsearch.best_score_)