通过网格搜索和嵌套交叉验证寻找机器学习模型的最优参数

在机器学习的模型中,通常有两类参数,第一类是通过训练数据学习得到的参数,也就是模型的系数,如回归模型中的权重系数,第二类是模型算法中需要进行设置和优化的超参,如logistic回归中的正则化系数和决策树中的树的深度参数等。在上一篇文章中,我们通过验证曲线来寻找最优的超参,在这篇文章中,将通过一种功能更为强大的寻找超参的技巧:网格搜索,它可以寻找最优的超参组合,来提高模型的性能。

一、网格(grid search)搜索寻找超参

网格搜索:网格搜索其实是一种暴力搜索参数的方法,它通过我们指定不同的超参列表进行穷举搜索,并计算每一个超参组合对于模型性能的影响,来获取最优的超参组合。下面通过sklearn来实现网格搜索寻找超参

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

if __name__ == "__main__":
    #读取数据
    data = pd.read_csv("G:/dataset/wdbc.csv")
    #获取X
    X = data.ix[:,2:32]
    #获取字符串类别标签
    label_y = data.ix[:,1]
    #将字符串的标签转为数字
    label = LabelEncoder()
    Y = label.fit_transform(label_y)
    #将数据集分为训练集和测试集
    train_x,test_x,train_y,test_y = train_test_split(X,Y,test_size=0.2,random_state=1)
 

你可能感兴趣的:(机器学习,python机器学习)