机器学习中存在两类参数:通过训练数据学习得到的参数;---可认为是辨识得到的参数,例如模型系数;

在学习算法中单独需要优化的参数--超参、调优参数;---算法自身的系数,例如决策树的深度参数;

Grid search:根据超参列表,穷举搜索,找出最优值;缺点计算量很大;改进办法:randomized search;

例:支持向量机流水线的训练与调优import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn.learning_curve import learning_curve

from sklearn.preprocessing import StandardScaler

from sklearn.decomposition import PCA

from sklearn.linear_model import LogisticRegression

from sklearn.pipeline import Pipeline

from sklearn.learning_curve import validation_curve

from sklearn.grid_search import GridSearchCV

from sklearn.svm import SVC

###############################################################################

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data', header=None)

#将数据分成训练集和测试集

from sklearn.preprocessing import LabelEncoder

X = df.loc[:, 2:].values

y = df.loc[:, 1].values

le = LabelEncoder()

y = le.fit_transform(y)

#print(le.transform(['M', 'B']))

#将数据分成训练集和测试集

from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=1)

###############################################################################

pipe_svc = Pipeline([('scl', StandardScaler()),('clf',SVC(random_state=1))])

param_range = [0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0]

param_grid = [{'clf__C':param_range, 'clf__kernel':['linear']},

{'clf__C':param_range, 'clf__gamma':param_range,'clf__kernel':['rbf']},]

gs = GridSearchCV(estimator=pipe_svc,

param_grid=param_grid,

scoring='accuracy',

cv=10,

n_jobs=-1)

gs = gs.fit(X_train, y_train)

print(gs.best_score_)

print(gs.best_params_)

嵌套交叉验证:如果在不同机器学习算法之间进行选择,推荐使用---嵌套交叉验证,而非单独使用k折交叉验证;

在嵌套交叉验证的外围循环中,将数据分为训练块和测试块;

在模型选择的内部循环中,基于训练块,利用k折交叉验证;

完成模型选择后,使用测试块验证模型性能;

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn.learning_curve import learning_curve

from sklearn.preprocessing import StandardScaler

from sklearn.decomposition import PCA

from sklearn.linear_model import LogisticRegression

from sklearn.pipeline import Pipeline

from sklearn.learning_curve import validation_curve

from sklearn.grid_search import GridSearchCV

from sklearn.svm import SVC

###############################################################################

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data', header=None)

#将数据分成训练集和测试集

from sklearn.preprocessing import LabelEncoder

X = df.loc[:, 2:].values

y = df.loc[:, 1].values

le = LabelEncoder()

y = le.fit_transform(y)

#print(le.transform(['M', 'B']))

#将数据分成训练集和测试集

from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=1)

###############################################################################

pipe_svc = Pipeline([('scl', StandardScaler()),('clf',SVC(random_state=1))])

param_range = [0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0]

param_grid = [{'clf__C':param_range, 'clf__kernel':['linear']},

{'clf__C':param_range, 'clf__gamma':param_range,'clf__kernel':['rbf']},]

gs = GridSearchCV(estimator=pipe_svc,

param_grid=param_grid,

scoring='accuracy',

cv=10,

n_jobs=-1)

scores = cross_val_score(gs, X,y, scoring='accuracy', cv=5)

print('CV accuracy : %.3f +/- %.3f' % (np.mean(scores), np.std(scores))

#参考《Python 机器学习》,作者:Sebastian Raschaka, 机械工业出版社;

转载本文请联系原作者获取授权,同时请注明本文来自李军科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3377553-1137308.html

上一篇:Python_机器学习_总结13:learning curve与validation curve

下一篇:Python_机器学习_总结15:模型性能评价指标

python 读grid 数据_科学网—Python_机器学习_总结14:Grid search - 李军的博文相关推荐

  1. python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...

    =============================================================== 总结如下: 1.随机梯度下降算法可以看成是梯度下降算法的近似,但通常它能 ...

  2. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文

    这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...

  3. pfamscan 的使用_科学网—[转载]InterProScan的使用教程 - 黄顺谋的博文

    InterPro是一个数据库,其提供蛋白序列的功能分析并归纳为一个个蛋白家族,同时还预测了presence of domains和important sites.为了将蛋白分类,InterPro使用先 ...

  4. g2 折线图点与点之间直线_科学网—ggplot2实现散点折线图 - 肖斌的博文

    准备的数据: 第一列是时间,第二列是样本,第三列是具体数值.横轴标为时间,纵坐标为具体数值,图中不同颜色展示不同样本. 具体的代码: library(ggplot2) png("./xyz. ...

  5. ieee期刊的科技写作思路曹文平_科学网—怎样向IEEE期刊投稿* - 吴雄君的博文

    * 作者郭更生教授:曾任IEEE Transactions on Communications Magazine总编,IEEE Communications Magazine高级技术编辑,台湾某大学教 ...

  6. Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文

    1.抽象: 抽象--就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来一般叫做类或者接口.)抽象并不打 ...

  7. matlab nan 无色_科学网—Matlab 关于NaN值的填充 - 肖鑫的博文

    以前认为很麻烦的事往往一行命令就能搞定,代码如下 figure('position',[100 100 600 500],'PaperPositionMode', 'auto') m_proj('Sa ...

  8. matlab图片白边_科学网—[原创] matlab输出图片无白边 - 杨光的博文

    今天要做一个gif动画,可惜GIF Movie Gear不认eps文件,无奈只好输出png格式的文件,麻烦来了,输出的图像有白边!之前挥之不去的问题再一次来了.在网上搜索一个多小时,都是说什么先ims ...

  9. mh采样算法推导_科学网—MCMC中的Metropolis Hastings抽样法 - 张金龙的博文

    Metropolis Hastings抽样法示例 jinlongzhang01@gmail.com Metropolis Hasting(下面简称MH)是蒙特卡罗马尔科夫链中一种重要的抽样方法.本文简 ...

最新文章

  1. RDKit | 分子处理入门
  2. java 中组合与复用_可复用性和组合
  3. HDU-5706(DFS)
  4. Python 安装第三方模块
  5. java 字节码对象_获得类的字节码对象的三种方式
  6. dotnet core 应用是如何跑起来的 通过AppHost理解运行过程
  7. New directions in automated traffic analysis论文解读
  8. Android Studio导入project和module的方法
  9. 勒索软件损失2年增15倍 2017年可达50亿美元
  10. linux驱动编写(nand flash驱动)
  11. 高度自定义的TabBarController 两个TableView之间的联动
  12. c语言编写面向对象的类
  13. Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
  14. C#打印代码运行时间
  15. java 画正弦函数曲线_JAVA画正弦曲线
  16. 习惯养成app_如何培养优秀的开发人员沟通技巧,养成不良习惯
  17. Windows下LATEX排版论文攻略—CTeX、JabRef使用心得, 包括 IEEEtran.bst
  18. dau计算-预测日活
  19. 太用力的人跑不远[致刚毕业奋斗的自己,永不止步]
  20. 怎样快速抠图ps图片?这些小妙招了解一下

热门文章

  1. 利用 CMake 和 NDK 交叉编译 Android 下的可执行程序
  2. java基础知识回顾之java Thread类学习(七)--java多线程安全问题(死锁)
  3. MaskedTextBox
  4. 合格前端系列第五弹- Virtual Dom Diff
  5. 转发与重定向的区别,特点
  6. javascript window.confirm确认 取消对话框实现代码小结
  7. ViewModelBase ObservableObject
  8. c# 链接mongDB集群实战开发
  9. 基于corosync和NFS服务器实现LNMP的高可用
  10. 挖掘协同的力量 大OA前景广阔