交叉验证
来源:互联网 发布:网络机柜检验报告 编辑:程序博客网 时间:2024/06/05 09:00
在sklearn中将训练/测试数据集分离
from sklearn import datasetsiris = datasets.load_iris()features = iris.datalabels = iris.targetfrom sklearn.model_selection import train_test_splitfeatures_train, features_test, labels_train, labels_test = train_test_split( iris.data, iris.target, test_size=0.4, random_state=0)# 设置 random_state 参数为 42(random_state 控制哪些点进入训练集,哪些点用于测试;# 将其设置为 42 意味着我们确切地知道哪些事件在哪个集中; 并且可以检查你得到的结果)
数据处理转换并用于机器学习的流程
交叉验证(cross validation)
如图所示,k-folder交叉验证就是用全部数据划分为k个子集,然后取一个子集作为测试集,剩下k-1个子集作为训练集。最后把这k次测试的精确度取一个平均值。
k折交叉验证编码
from sklearn.cross_validation import KFold# KFold接受两个参数,一个是数据总集中项目数量,另一个是参数是想查看多少折# KFold提供两个列表,kf = KFold(len(authors), 2)#第一个列表是要在训练集中使用的所有数据点索引值的集合#第二个列表是要在测试集中使用的所有数据点索引值的集合# 然后我们可以根据这些索引引入特征和标签,并将特征和标签进行分配for train_indices, test_indices in kf: feature_train = [word_data[ii] for ii in train_indices] feature_test = [word_data[ii] for ii in test_indices] authors_train = [authors[ii] for ii in train_indices] authors_test = [authors[ii] for ii in test_indices]
但我们要注意的是k折交叉验证算法内部划分之前不会进行乱序排序,因此如果如果你的数据本身是有顺序的,可能进行泾渭分明的划分,这对于训练和测试的效果都不好
sklearn中的GridSearchCV
注: 此主题内容引用自优达学城
GridSearchCV 用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。它的好处是,只需增加几行代码,就能遍历多种组合。
from sklearn.model_selection import GridSearchCVparameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}svr = svm.SVC()clf = GridSearchCV(svr, parameters)clf.fit(iris.data, iris.target)
让我们逐行进行说明。
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
参数字典以及他们可取的值。在这种情况下,他们在尝试找到 kernel(可能的选择为 ‘linear’ 和 ‘rbf’ )和 C(可能的选择为1和10)的最佳组合。
这时,会自动生成一个不同(kernel、C)参数值组成的“网格”:
各组合均用于训练 SVM,并使用交叉验证对表现进行评估。
svr = svm.SVC()
这与创建分类器有点类似,就如我们从第一节课一直在做的一样。但是请注意,“clf” 到下一行才会生成—这儿仅仅是在说采用哪种算法。另一种思考方法是,“分类器”在这种情况下不仅仅是一个算法,而是算法加参数值。请注意,这里不需对 kernel 或 C 做各种尝试;下一行才处理这个问题。
clf = grid_search.GridSearchCV(svr, parameters)
这是第一个不可思议之处,分类器创建好了。 我们传达算法 (svr) 和参数 (parameters) 字典来尝试,它生成一个网格的参数组合进行尝试。
clf.fit(iris.data, iris.target)
第二个不可思议之处。 拟合函数现在尝试了所有的参数组合,并返回一个合适的分类器,自动调整至最佳参数组合。现在您便可通过 clf.best_params_ 来获得参数值。
实际举例如下:
param_grid = { 'C': [1e3, 5e3, 1e4, 5e4, 1e5], 'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1], }# for sklearn version 0.16 or prior, the class_weight parameter value is 'auto'clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)clf = clf.fit(X_train_pca, y_train)
阅读全文
0 0
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- LINUX主机安全加固
- 数据结构学习二——顺序表
- UDP服务器端程序设计
- P_y_Q_t_5 和 E_r_i_c_6
- 暂存
- 交叉验证
- python-pandas的基本用法07
- HDU 5950 Recursive sequence(矩阵快速幂)
- Java反射-使用Field类来操作类的成员变量(Field)
- href和src的区别
- LCM
- QSqlQuery简单使用
- poj1995 Raising Modulo Numbers
- 【CSS布局模型】流动模型、浮动模型、层模型