深度学习–十折交叉验证

深度学习–十折交叉验证用scikit-learn来评价模型质量,为了更好地挑拣出结果的差异,采用了十折交叉验证(10-foldcrossvalidation)方法。本程序在输入层和第一个隐含层之间加入20%Dropout采用十折交叉验证的方法进行测试。#dropoutintheinputlayerwithweightconstraintdefcreate_mode…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

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

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


    # dropout in the input layer with weight constraint
    def create_model1():
        # create model
        model = 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 model
        sgd = SGD(lr=0.1, momentum=0.9, decay=0.0, nesterov=False)
        model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])
        return model
 
    numpy.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))

Jetbrains全家桶1年46,售后保障稳定

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,StratifiedKFold
 
X=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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234208.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • sql server 备份还原_什么是SQL

    sql server 备份还原_什么是SQL1、动手备份2、动手还原3、T-SQL语句备份及还原BACKUP DATABASERESTORE FILELISTONLY FROM DISK代码示例– 打开设置当前数据库use mastergo– 默认创建数据库create database SQLDBgo– 打开设置当前数据库use SQLDBgoSQLDB– 在当前数据库创建表creat…

  • 利用ESP定律的upx脱壳实践

    利用ESP定律的upx脱壳实践利用ESP定律的upx脱壳实践背景:除了命令行upx-d脱壳,还有手动脱壳。ESP定律的本质是堆栈平衡,又称堆栈平衡定律,是应用频率最高的脱壳方法之一,脱壳的目的就是找到真正的OEP(源文件的EP代码)方法:从pushad到popad是一段解压缩代码(解压UPX壳),这段代码执行后,紧跟在popad后的第一个JMP指令可跳转到OEP实践:1:查壳2:OD打开3:F8//对于寄存器,指令执行后发生改变的寄存器会用红色显示.此处ESP和EIP的值发生改变,因为执行pushad指令,将8个

  • matlab最优化问题的函数(fminbnd),fmincon,globalsearch,multistart(全局局部最优)

    matlab最优化问题的函数(fminbnd),fmincon,globalsearch,multistart(全局局部最优)在讨论优化问题时我们先来讨论全局最优和局部最优全局最优:问题所有的可能解中效果最好的解。局部最优:问题的部分可能解中效果最好的解。一个针对的全局,一个针对的部分。就像我们设初值一样,设置了以后函数开始迭代变化。这时可能出现两种现象①迭代到一个解,该解距离初值较近,此处该值很有可能是局部最优。②迭代到一个解,该解距离初值相对较远,此处该值很大可能是全局最优,当然也可能是局部最优。上…

  • MySql行转列、group_concat使用

    MySql行转列、group_concat使用1、数据库表:CREATETABLE`t_att`(`id`varchar(50)NOTNULL,`u_id`varchar(50)NOTNULLCOMMENT’员id’,`att_date`dateDEFAULTNULLCOMMENT’考勤日期’,`att_type`tinyint(4)DEFAULTNULLCOMMENT’考勤类型

  • cockpit二次开发_laravel api

    cockpit二次开发_laravel api背景:最近公司要基于cockpit,来定制自己的一个服务器管理web应用。嗯。。cockpit是啥?能干嘛?我要拿它干嘛?如你所见,我此刻是懵逼的。cockpit了解我熟练的打开了百度又打开了bing哦吼,二度懵逼。经过几番了解,大概是知道了LinuxCockpit是一个基于Web界面的应用,它提供了对系统的图形化管理。因为功能集成,对服务器管理来说,可以称得上是神器,深受linux开发者的喜爱。(呵呵。。)最后我大概是知道了,公司就是想让我在人..

    2022年10月25日
  • 集群技术概述_集群计算机

    集群技术概述_集群计算机集群技术概述一、集群的起源二、集群的优点1.强扩展能力2.实现方式容易3.高可用性4.易管理性三、集群的类型1.负载均衡集群2.高可用性集群3.高性能集群四、集群的特点1.心跳监测2.漂移IP地址五、集群的应用1.石油地震数据处理2.数值天气预报一、集群的起源        集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号