用scikit-learn来评价模型质量,为了更好地挑拣出结果的差异,采用了十折交叉验证(10-fold cross validation)方法。

本程序在输入层和第一个隐含层之间加入20%Dropout

采用十折交叉验证的方法进行测试。

# dropout in the input layer with weight constraintdef create_model1():# create modelmodel = Sequential()model.add(Dropout(0.2, input_shape=(60,)))model.add(Dense(60, init='normal', activation='relu', W_constraint=maxnorm(3)))model.add(Dense(30, init='normal', activation='relu', W_constraint=maxnorm(3)))model.add(Dense(1, init='normal', activation='sigmoid'))# Compile modelsgd = SGD(lr=0.1, momentum=0.9, decay=0.0, nesterov=False)model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])return modelnumpy.random.seed(seed)estimators = []estimators.append(('standardize', StandardScaler()))estimators.append(('mlp', KerasClassifier(build_fn=create_model1, nb_epoch=300, batch_size=16, verbose=0)))pipeline = Pipeline(estimators)kfold = StratifiedKFold(y=encoded_Y, n_folds=10, shuffle=True, random_state=seed)results = cross_val_score(pipeline, X, encoded_Y, cv=kfold)print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

Pineline

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
num_pipeline = Pipeline([('imputer', Imputer(strategy="median")),('attribs_adder', CombinedAttributesAdder()),('std_scaler', StandardScaler()),
])
housing_num_tr = num_pipeline.fit_transform(housing_num)

Pipeline构造器接受(name, transform) tuple的列表作为参数。按顺序执行列表中的transform,完成数据预处理

StratifiedKFold

StratifiedKFold用法类似Kfold,但是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同

sklearn.model_selection.StratifiedKFold(n_splits=3, shuffle=False, random_state=None)


import numpy as np
from sklearn.model_selection import KFold,StratifiedKFoldX=np.array([[1,2,3,4],[11,12,13,14],[21,22,23,24],[31,32,33,34],[41,42,43,44],[51,52,53,54],[61,62,63,64],[71,72,73,74]
])y=np.array([1,1,0,0,1,1,0,0])
floder = KFold(n_splits=4,random_state=0,shuffle=False)
sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)for train, test in sfolder.split(X,y):print('Train: %s | test: %s' % (train, test))print(" ")for train, test in floder.split(X,y):print('Train: %s | test: %s' % (train, test))#RESULT
Train: [1 3 4 5 6 7] | test: [0 2]Train: [0 2 4 5 6 7] | test: [1 3]Train: [0 1 2 3 5 7] | test: [4 6]Train: [0 1 2 3 4 6] | test: [5 7]Train: [2 3 4 5 6 7] | test: [0 1]Train: [0 1 4 5 6 7] | test: [2 3]Train: [0 1 2 3 6 7] | test: [4 5]Train: [0 1 2 3 4 5] | test: [6 7]

cross_val_score:

不同的训练集、测试集分割的方法导致其准确率不同
交叉验证的基本思想是:将数据集进行一系列分割,生成一组不同的训练测试集,然后分别训练模型并计算测试准确率,最后对结果进行平均处理。这样来有效降低测试准确率的差异。

使用交叉验证的建议

  1. K=10是一个一般的建议

  2. 如果对于分类问题,应该使用分层抽样(stratified sampling)来生成数据,保证正负例的比例在训练集和测试集中的比例相同

from sklearn.cross_validation import cross_val_score
knn = KNeighborsClassifier(n_neighbors=5)
# 这里的cross_val_score将交叉验证的整个过程连接起来,不用再进行手动的分割数据
# cv参数用于规定将原始数据分成多少份
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
print(scores)
print(scores.mean())#输出结果平均值

参考网页:

https://blog.csdn.net/u010159842/article/details/54138157

cross_val_score交叉验证及其用于参数选择、模型选择、特征选择

https://blog.csdn.net/u012735708/article/details/82258615

深度学习--十折交叉验证相关推荐

  1. 【深度学习】(7) 交叉验证、正则化,自定义网络案例:图片分类,附python完整代码

    各位同学好,今天和大家分享一下TensorFlow2.0深度学习中的交叉验证法和正则化方法,最后展示一下自定义网络的小案例. 1. 交叉验证 交叉验证主要防止模型过于复杂而引起的过拟合,找到使模型泛化 ...

  2. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  3. 周志华西瓜书3.4题——用十折交叉验证法和留一法估计对率回归的误差

    周志华西瓜书3.4题. 本文所编写的代码均使用python3.7进行调试,依靠的sklearn进行的实验. 第一步,导入iris数据集,数据集使用sklearn包里面自带的. from sklearn ...

  4. R语言选模型/用AIC BIC adjustRsq 十折交叉验证 LOOCV等验证/择参 以fama三因子模型和CAMP模型为例@[理科班的习习同学

    R语言选模型/用AIC BIC adjustRsq 十折交叉验证 LOOCV等验证/择参 以fama三因子模型和CAMP模型为例@理科班的习习同学 引入包与数据预处理 install.packages ...

  5. 十折交叉验证pythoniris_数据集的划分——交叉验证法

    本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯Python云端培训课程火热招生中~重大通知!!!爬虫俱乐部于2020年7月11日至14日在线上举行为期四天的Stata编程技术定制培训,招生工作已 ...

  6. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  7. 深度学习原理21——交叉验证

    交叉验证 1 交叉验证思想 2 交叉验证代码 3 在论文实验中如何划分数据集 1 交叉验证思想 交叉验证(Cross Validation),有的时候也称作循环估计(Rotation Estimati ...

  8. C语言十折交叉验证,R随机森林交叉验证 + 进度条

    library(data.table) library(randomForest) data str(data) #交叉验证,使用rf预测sepal.length k = 5 data$id list ...

  9. 十折交叉验证pythoniris_python机器学习-交叉验证(cross-vaildation)

    K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一. 所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. kNN算 ...

  10. matlab-K折交叉验证与分层K折交叉验证

    文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...

最新文章

  1. 如何学习Linux / 新手入门
  2. JAVA操作Excel表格
  3. Java10 新特性
  4. C++开发者都应该使用的10个C++11特性
  5. vim 设置支持鼠标
  6. 力扣202.计数质数
  7. PAT1021. 个位数统计
  8. 2950交换机简明配置维护手册
  9. BZOJ4597 SHOI2016随机序列(线段树)
  10. android特殊用法(转)
  11. 【时间序列】动态时间规整(DTW)算法简介(python)
  12. JavaScript判断数组是否包含某元素
  13. 围棋棋盘有多少正方形 19*19
  14. 计算机网络拓扑星型结构应用,浅谈计算机网络拓扑结构及其应用.doc
  15. ZLMediaKit webRTC编译
  16. 个人微信小程序可以使用微信支付的解决方法
  17. Qt添加菜单栏和工具栏
  18. 科技新品 | 索尼首款专业无人机;arpara 5K超清VR头显及一体机;七彩虹多款显卡新品...
  19. 力矩 torque详解
  20. 【音视频】弱网下实时视频的极限通信

热门文章

  1. 服务器CPU与家用个人电脑CPU的区别详解
  2. unity打开内嵌游戏网页
  3. java基础练习题及答案_java基础测试题含答案.docx
  4. C语言打印100以内素数(开根号法)
  5. ping 端口是否开放(Mac、Linux、Windows系统)
  6. android 编写优质代码,GitHub - RayFantasyStudio/iCode-Android: 为开发者而生,提供在线代码存放,展示你优秀代码的平台...
  7. C++语音信号时域分析
  8. 用Python写一个语音播放软件
  9. 腾达ap设置说明_腾达无线路由器ap模式如何设置
  10. Matlab R2010b 安装使用教程 【详细】