zoukankan      html  css  js  c++  java
  • 机器学习之交叉验证和网格搜索

    交叉验证

    将拿到的训练数据,分为训练集和验证机。以下图为例:将训练数据分为4份,其中一份作为验证集,。然后经过5次的测试,每次都更换不同的验证机,

    最后得到5组模型的结果。最后取平均值作为最后的结果。这也称为4折交叉验证。

    网格搜索(超参数搜索):

    通常情况下,有很多参数是需要手动指定的(如K-近邻算法中的K值),这种教超参数。但是手动过程繁杂,所提需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。

    作用:调参数。

    API:sklearn.model_selection.GridSearchCV

     以K-近邻那篇文章的例子进行修改,代码如下:

     1 from sklearn.model_selection import GridSearchCV
     2 from sklearn.datasets import load_iris
     3 from sklearn.model_selection import train_test_split
     4 from sklearn.preprocessing import StandardScaler
     5 from sklearn.neighbors import KNeighborsClassifier
     6 
     7 def knn():
     8     """
     9     鸢尾花分类
    10     :return: None
    11     """
    12 
    13     # 数据集获取和分割
    14     lr = load_iris()
    15 
    16     #标准化
    17     std = StandardScaler()
    18     x = std.fit_transform(lr.data)
    19 
    20     x_train, x_test, y_train, y_test = train_test_split(x, lr.target, test_size=0.25)
    21 
    22     # estimator流程
    23     knn = KNeighborsClassifier()
    24 
    25     #构造一些参数的值进行搜索
    26     param = {'n_neighbors': [3,5,10]}
    27 
    28     #j进行网格搜索
    29     gc = GridSearchCV(knn,param_grid = param, cv = 10)
    30 
    31     gc.fit(x_train,y_train)
    32 
    33     #预测准确率
    34     print('再测试集上的准确率:',gc.score(x_test,y_test))
    35     print('再交叉验证中最好的结果:',gc.best_score_)
    36     print('选择的最好的模型是:',gc.best_estimator_)
    37     print('每个超参数每次交叉验证的结果',gc.cv_results_)
    38 
    39     return None
    40 
    41 if __name__ == "__main__":
    42     knn()

    可以看到结果,在K=10的时候,10折交叉验证的结果最好,准确率达到了95.5%。比单用K-邻近法的94%稍微高一些。

    --------------------成功,肯定是需要一点一滴积累的--------------------
  • 相关阅读:
    A Bug's Life POJ 2492
    First Training
    洛谷----P1162 填涂颜色
    软考知识点梳理--软件测试
    软考知识点梳理--面向对象方法
    软考知识点梳理--国家信息化体系六要素
    软考知识点梳理--电子政务
    软考知识点梳理--激励理论
    软考知识点梳理--承建方项目论证
    软考知识点梳理--项目成本类型
  • 原文地址:https://www.cnblogs.com/GouQ/p/11871070.html
Copyright © 2011-2022 走看看