最近又用到了,感觉机器学习中数据集处理还比较常用

关于模型的数据集划分

为了保证模型能起到预期的作用,一般需要将样本分成独立的三部分,分别为:

  1. 训练集:用于估计模型
  2. 验证集:用于确定网络结构或者控制模型复杂程度的参数。
  3. 测试集:用于检验最优的模型的性能。

其中,最典型的划分方式就是 训练集50%,验证集25%,测试集25%
在训练集上训练模型,在验证集上评估模型。一旦找到了最佳参数,就在测试集数据上最后测试一次。

1.png


K折交叉验证

原因:不同的训练集和测试集的划分方式和比例差距很大,对预测模型的准确率影响也很大,因此划分方式就需要优化。
为了避免因为数据集划分的偏差,通俗点儿也就是为什么这一部分被划分为训练集,而那一部分就是规定是测试集,难免会划分不公平或者不太合理。那么,就有一个很好的想法:
交叉验证。即每组训练集中都调一份作为测试集

K折交叉验证的基本步骤与思路

  1. 将样本随机打乱shuffle,同时均匀分为k份(这就是为啥叫K折)
  2. 划分为K份,就代表了验证集的组成就有K种。即轮流不重复地选择K-1份作为训练集,而每次的剩下那份就是验证集。
  3. 把K次的评估标准的均值作为选择最优模型结构的依据

图片1.png


选择最入门的数据集之一:鸢尾花数据集作为样例

import sklearn.datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
 
dataset = sklearn.datasets.load_iris()
X, y = dataset.data, dataset.target
 
model = KNeighborsClassifier()         # 模型选择
kfold = KFold(n_splits=5, random_state=3,shuffle = ‘True’)
results = cross_val_score(model, X, y, cv=kfold, scoring='accuracy')
print("acc: %.3f (%.3f)" % (results.mean(), results.std()))

# 得出结果为acc:0.913(0.083),这里选择了用5折交叉验证的方法(因为n_splits=5)

原文地址:http://www.cnblogs.com/sdnu-dfl/p/16908589.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性