sklearn-分离数据-评估算法(第6讲)
发布日期:2021-06-29 14:44:34 浏览次数:4 分类:技术文章

本文共 2626 字,大约阅读时间需要 8 分钟。

评估算法   2020/5/281.分离数据集方法:1)分离训练数据评估数据2)K折交叉验证分离3)弃一交叉验证分离4)重复随机评估,训练数据集分离
2.实例2.1.分离训练数据评估数据通常训练集:评估集=0.67:0.33应用:    简洁快速;大量数据且数据比较平衡,或对问题的展示比较平均的情况。#实例1:import pandas as pd,numpy as npfrom sklearn.linear_model import LogisticRegressionnp.set_printoptions(precision=3)# 导入数据filename = 'pima_data.csv'names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']data = pd.read_csv(filename, names=names)array = data.values# 将数据分为输入数据和输出结果X = array[:, 0:8]Y = array[:, 8]#from sklearn.model_selection import train_test_splitdef test_train_test_split(X=X,Y=Y):    test_size = 0.33    seed = 4    X_train, X_test, Y_traing, Y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)    model = LogisticRegression(max_iter=10000)#默认max_iter=1000        model.fit(X_train, Y_traing)    result = model.score(X_test, Y_test)    print("算法评估结果:%.3f%%" % (result * 100))    test_train_test_split()#算法评估结果:80.315%
2.2.K折交叉验证分离    统计分析方法;也称循环评估;按某种规则将数据分组,一部分用作训练集,一部分用作评估集;    K折交叉验证是将原始数据分成K组,K一般>2,只有数据量小时才会尝试2;通常取3,5,10;    可有效避免过学习和欠学习#实例2:from sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scoredef test_KFold(X=X,Y=Y):    num_folds = 10    seed = 7    kfold = KFold(n_splits=num_folds, random_state=seed,shuffle=True)    model = LogisticRegression(max_iter=10000)#默认max_iter=1000    result = cross_val_score(model, X, Y, cv=kfold)    print("算法评估结果:%.3f%% (%.3f%%)" % (result.mean() * 100, result.std() * 100))        test_KFold()#算法评估结果:77.216% (4.968%)
2.3.弃一交叉验证分离如原始数据有N个样本,N-1个交叉验证,即每个样本单独作为验证集,其余N-1个样本作为训练集;相比K折交叉验证优点:每一回合几乎所有的样本界用于训练模型,因此最接近原始样本的分布,评估结果比较可靠实验过程中没有随机因素会影响实验数据,确保实验过程是可被复制。#实例3:from sklearn.model_selection import LeaveOneOutfrom sklearn.model_selection import cross_val_scoredef test_LeaveOneOut(X=X,Y=Y):    loocv = LeaveOneOut()    model = LogisticRegression(max_iter=1000)#默认max_iter=1000    result = cross_val_score(model, X, Y, cv=loocv)    print("算法评估结果:%.3f%% (%.3f%%)" % (result.mean() * 100, result.std() * 100))test_LeaveOneOut()# 算法评估结果:77.604% (41.689%)
2.4.重复随机评估,训练数据集分离随机分离数据为训练数据集和评估数据集,重复这个过程多次,如同交叉验证分离;#实例4:将数据按67:33比例分配,重复10次from sklearn.model_selection import ShuffleSplitfrom sklearn.model_selection import cross_val_scoredef test_LeaveOneOut(X=X,Y=Y):    n_splits = 10    test_size = 0.33    seed = 7    kfold = ShuffleSplit(n_splits=n_splits, test_size=test_size, random_state=seed)    model = LogisticRegression(max_iter=1000)#默认max_iter=1000    result = cross_val_score(model, X, Y, cv=kfold)    print("算法评估结果:%.3f%% (%.3f%%)" % (result.mean() * 100, result.std() * 100))test_LeaveOneOut()#算法评估结果:76.969% (2.631%)

 

 

 

转载地址:https://chunyou.blog.csdn.net/article/details/106413393 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:julia-分数(第1讲)
下一篇:sklearn-数据特征(第5讲)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月26日 01时53分04秒