进行参数的选择是一个重要的步骤。在机器学习当中需要我们手动输入的参数叫做超参数,其余的参数需要依靠数据来进行训练,不需要我们手动设定。进行超参数选择的过程叫做调参。
进行调参应该有一下准备条件:
一个学习器
一个参数空间
一个从参数空间当中寻找参数的方法
一个交叉验证的规则
一个性能评估的策略
下面我介绍几种调参的方法:
1:穷举式的网格搜索
sklearn当中的GridSearchCV实现了这种穷举是的网格搜索,其实这种方法是很简单的。下面是使用交叉验证来进行网格搜索的一个例子:
from sklearn importdatasetsfrom sklearn.model_selection importtrain_test_split, GridSearchCVfrom sklearn.svm importSVCfrom sklearn.metrics importclassification_report
digits=datasets.load_digits()
n_samples=len(digits.images)
X= digits.images.reshape((n_samples, -1))
y=digits.target
X_train, X_test, y_train, y_test=train_test_split(
X, y, test_size=0.5, random_state=0)#上面的操作是导入数据,并且把数据划分为训练数据和测试数据,这里使用的是手写数字识别数据集
tunned_parameters= [{'kernel':['rbf'],'gamma':[1e-3, 1e-4],'C':[1, 10, 100, 1000]},
{'kernel':['linear'], 'C':[1, 10, 100, 1000]}]
scores= ['precision', 'recall'] #这是我们使用的评分策略,因为是多分类问题,所以最后的评分策略为precision_macro 和 recall_macro 见下面
for score inscores:print("# Tuning hyper-parameters for %s" %score)print()
clf= GridSearchCV(SVC(), tunned_parameters, cv=5