sklearn调参(验证曲线,可视化不同参数下交叉验证得分)
一 、 原始方法:
思路:
1. 参数从 0+∞ 的一个 区间 取点, 方法如: np.logspace(-10, 0, 10) , np.logspace(-6, -1, 5)
2. 循环调用cross_val_score计算得分。
在SVM不同的惩罚参数C下的模型准确率。
import matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_score
import numpy as np
from sklearn import datasets, svm
digits = datasets.load_digits()
x = digits.data
y = digits.target
vsc = svm.SVC(kernel='linear') if __name__=='__main__':
c_S = np.logspace(-10, 0, 10)#在范围内取是个对数
# print ("length", len(c_S))
scores = list()
scores_std = list()
for c in c_S:
vsc.C = c
this_scores = cross_val_score(vsc, x, y, n_jobs=4)#多线程 n_jobs,默认三次交叉验证
scores.append(np.mean(this_scores))
scores_std.append(np.std(this_scores))
plt.figure(1, figsize=(4, 3))#绘图
plt.clf()
plt.semilogx(c_S, scores)#划线
plt.semilogx(c_S, np.array(scores)+np.array(scores_std), 'b--')
plt.semilogx(c_S, np.array(scores)-np.array(scores_std), 'b--')
locs, labels = plt.yticks()
plt.yticks(locs, list(map(lambda X: "%g" % X, locs)))#阶段点
plt.ylabel('CV score')
plt.xlabel('parameter C')
plt.ylim(0, 1.1)#范围
plt.show()
效果:

二、高级方法(validation_curve)
思路:
直接用validation_curve获得模型在不同参数下,每次训练得分和测试得分。
from sklearn import svm
from sklearn.model_selection import validation_curve
from sklearn.datasets import load_digits
import numpy as np
import matplotlib.pyplot as plt
digits = load_digits()
X = digits.data
y = digits.target
param_range = np.logspace(-6, -1, 5)
vsc = svm.SVC()
train_score, test_score = validation_curve(vsc, X, y, param_name='gamma', param_range=param_range, cv=10, scoring="accuracy", n_jobs=1)
train_score_mean = np.mean(train_score, axis=1)
train_score_std = np.std(train_score, axis=1)
test_score_mean = np.mean(test_score, axis=1)
test_score_std = np.std(test_score, axis=1)
plt.title("validation curve with SVM")
plt.xlabel("$\gamma%")
plt.ylabel("Score")
plt.ylim()
lw = 2
plt.semilogx(param_range, train_score_mean,label="training score", color="darkorange", lw=lw)
plt.fill_between(param_range, train_score_mean-train_score_std, train_score_mean+train_score_std, alpha=0.2, color="navy", lw=lw)
plt.semilogx(param_range, test_score_mean,label="test score", color="blue", lw=lw)
plt.fill_between(param_range, test_score_mean-test_score_std, test_score_mean+test_score_std, alpha=0.2, color="navy", lw=lw)
plt.legend(loc="best")
plt.show()
结果:

sklearn调参(验证曲线,可视化不同参数下交叉验证得分)的更多相关文章
- 普通交叉验证(OCV)和广义交叉验证(GCV)
普通交叉验证OCV OCV是由Allen(1974)在回归背景下提出的,之后Wahba和Wold(1975)在讨论 了确定多项式回归中多项式次数的背景,在光滑样条背景下提出OCV. Craven和Wa ...
- 机器学习基础:(Python)训练集测试集分割与交叉验证
在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...
- Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优
Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...
- python 机器学习中模型评估和调参
在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...
- k-近邻算法采用for循环调参方法
//2019.08.02下午#机器学习算法中的超参数与模型参数1.超参数:是指机器学习算法运行之前需要指定的参数,是指对于不同机器学习算法属性的决定参数.通常来说,人们所说的调参就是指调节超参数.2. ...
- sklearn交叉验证-【老鱼学sklearn】
交叉验证(Cross validation),有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法.于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始 ...
- GridsearchCV调参
在利用gridseachcv进行调参时,其中关于scoring可以填的参数在SKlearn中没有写清楚,就自己找了下,具体如下: parameters = {'eps':[0.3,0.4,0.5,0. ...
- LSTM调参经验
0.开始训练之前先要做些什么? 在开始调参之前,需要确定方向,所谓方向就是确定了之后,在调参过程中不再更改 1.根据任务需求,结合数据,确定网络结构. 例如对于RNN而言,你的数据是变长还是非变长:输 ...
- 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...
随机推荐
- 【POJ1179】Polygon 区间DP
这道题是典型的环形石子归并模型,破环成链后时间复杂度为\(O(n^3)\) 不过,因为题目中所给的数字可能是负数,仅仅记录区间内合并之后的最大值并不满足动态规划的最优子结构性质.因此,还需要额外记录下 ...
- 【java】详解native方法的使用
目录结构: contents structure [+] 关于native关键字 使用native关键字 使用步骤 案例 编写.java文件 编译.java文件 获得.h文件 编写hello.cpp文 ...
- 关于使用IsapiRewrite重写,重定向的语句
早上起床,发现之前的IsapiRewrite写法有改进的地方, 有几个废弃的网址可以使用IsapiRewrite的重定向,转到新的网址上来. 搞了有十分钟的时间,测试老是不重定向. 因为之前已经有一个 ...
- 代码大片出现报错,请重新编译——Clean
工作空间中项目莫名大片报错,可能是各种意外原因导致的代码编译错误,可以选 菜单栏的 Project,Clean一下全部项目,系统会自动重新编译所有项目,有时会有奇效.
- Ubuntu下安装tftp
用户可以在主机系统联网的情况下,在终端输入下面命令进行安装: vmuser@Linux-host: ~$ sudo apt-get install tftpd-hpa tftp-hpa 配置 TFTP ...
- shell_mysql_ alias 快速启动
添加快启动即命令行 ~$ vi .bash_aliases alias mysqlxdb='mysql -uroot -p1 xdb' ~$ source .bashrc 创建脚本xdb.sh#! / ...
- Div里超出部分,省略号显示
1.一行显示并出现省略号 1)三个属性: overflow: hidden; text-overflow: ellipsis; white-space: nowrap; overflow: hidde ...
- Liunx软Raid实现
Liunx软Raid实现 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在配置软Raid之前,我们首先要了解一下什么是Raid,Raid又分哪几个系列?哪个又是最靠谱的组合?我们生 ...
- JDBC preparedStatement分页和统计,批处理和事务
一个类:DriverManager 四个接口:Connection.PreparedStatement .ResultSet.Statement 连接不上数据库出错的原因 1.数据库监听服务的配置不正 ...
- js设定延迟时间的函数
1.如果想要在执行一个js函数之前延迟一段时间应该怎么做? 答:"setTimeout('update()',1000);" 其中update()函数就是延迟后执行的函数,后面的时 ...