机器学习中训练集和测试集归一化(matlab版)
转载自 https://blog.csdn.net/lkj345/article/details/50352385
背景介绍:
- 归一化后加快了梯度下降求最优解的速度,归一化有可能提高精度。
- 训练集和测试集归一化方法相同。
- 数据集不小,81*132337,81行表示包含81维属性,132337列表示包含132337条训练数据。
- 数据中包含NaN数据。
- 使用matlab中的mapminmax函数,归一化到默认的范围[-1 +1]。
为了方便演示,我们以一个简单的矩阵来说明归一化。
这是3*4的矩阵,表示有4条训练数据,每条数据有3个属性。数据归一化应该针对属性,而不是针对每条数据,针对每条数据是完全没有意义的,因为只是等比例缩放,对之后的分类没有任何作用。
针对属性进行归一化的代码
inst = [1 2 3 4; 2 3 4 5; 3 4 5 6];
inst_norm = mapminmax(inst);
得到的归一化矩阵如下
针对数据进行归一化的代码
inst = [1 2 3 4; 2 3 4 5; 3 4 5 6];
inst_norm = mapminmax(inst')';
得到的归一化矩阵如下
我们应该采用第一种归一化方法,即对属性进行归一化。
训练集和测试集归一化的方法应该相同。
网上有一些说法,觉得训练集和测试集应该放到一起进行归一化,我觉得这种做法有所不妥,这样会让测试集受到训练集的影响,导致训练集和测试集不相互独立。
正确的做法是记录下训练集的归一化方法,用该方法对测试集单独进行归一化,matlab中的mapminmax函数提供了相应的机制。
对于一条新的数据,应该先按照训练集的归一化方法进行归一化,再进行分类,比如对于如下一条新数据,
通过如下代码
inst = [1 2 3 4; 2 3 4 5; 3 4 5 6];
[inst_norm, settings] = mapminmax(inst);
test = [1 3 5]';
test_norm = mapminmax('apply', test, settings);
其中settings记录了训练集的归一化方法,得到以下归一化结果,可以参考矩阵(2)
mapminmax会跳过NaN数据,最好的方法是归一化之后,将NaN赋值成0。
inst_norm(find(isnan(inst_norm))) = 0;
机器学习中训练集和测试集归一化(matlab版)相关推荐
- idea2020.2中@test是怎么测试的_Sklearn 划分训练集和测试集
[从零开始学机器学习第 03 篇] 摘要:手写 Sklearn 的 train_test_split 函数. 之前两篇文章以酒吧的红酒故事引出了 kNN 分类算法,根据已倒好的酒(样本),预测新倒的酒 ...
- python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解
文章目录 train_test_split()用法 获取数据 划分训练集和测试集 完整代码脚手架 train_test_split()用法 python机器学习中常用 train_test_split ...
- 训练集和测试集的标准化中的坑!!!
问题:数据标准化,应该在训练集和测试集划分前还是后? 答:数据标准化,应该在训练集和测试集划分后,分别对训练集和测试集进行数据标准化处理.不应该是数据标准化后,再进行划分.虽然从模型测试的结果看,可能 ...
- [机器学习笔记] 将数据拆分成训练集和测试集的几种方法
问题描述: 一般情况下, 我们习惯将原始数据中的80% 作为训练集, 20% 作为测试集(当数据量足够大的时候,也可以将10% 作为测试集. 数据量较小时,如果每次都是随机划分训练集,执行多次训练后, ...
- 5.sklearn之转换器(划分训练集和测试集、以及标准化、归一化数据会用transform,独热编码也会用到)
文章目录 1. 什么是转换器? 2. 测试集和训练集 2.1 训练集 .测试集.验证集 2.2 拆分训练集测试集有个问题 2.3 代码 3. 标准化 3.1 上离差标准化代码(举一反三就好了,其他几个 ...
- 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization
1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...
- iris数据集_sklearn日志(二)训练集和测试集划分
机器学习算法需要大量的数据,这些数据一部分用于模型训练,另一部分作为测试或验证. 机器学习入坑者:sklearn日志(一)体验官方提供的标准数据集zhuanlan.zhihu.com sklearn ...
- sklearn.model_selection.train_test_split随机划分训练集和测试集
1 函数用途 train_test_split()是交叉验证中常用的函数,功能是将数组或矩阵按比例随机划分为训练集和测试集,使用方法为: X_train,X_test, y_train, y_test ...
- Sklearn-train_test_split随机划分训练集和测试集
sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/gene ...
最新文章
- Metrics.NET 项目
- capistrano部署ruby on rails应用
- 面试官:关于负载均衡你了解多少
- 如何在Linux中安装和使用Silver Searcher(程序员的代码搜索工具)
- FLV视频文件格式分析
- 央行降准,房价可能又要骚动了!
- 项目架构开发:数据访问层之Cache
- 一文告诉你 Event Loop 是什么?
- 全球知名大学课件下载地址汇总
- XAF-UI元素概述
- word文档怎么找回误删的文件_word文件数据恢复|word文件不小心删除怎么恢复?...
- 速成pytorch学习——5天nn.functional 和 nn.Module
- 正则表达式-入门资料
- 蚂蚁区块链第1课 蚂蚁10大区块链解决方案及应用场景
- 数据库迁移工具-kettle下载
- 通过 web 录制视频(摄像头)并上传
- LINUX-AWK-删除首行、删除尾行、删除首尾两行
- [Android]进程通信Andromeda框架
- Python程序写诗【训练1分钟】古诗生成
- 如果推动世界进步的是魔法,世界将会怎样?
热门文章
- 转:硬盘结构简介的好文(转)---MBR、分区表、CHS等概念
- 二进制 十进制 十六进制
- opencv保存图像自动命名
- Java学习笔记基础(中)
- BI在企业数字化转型中的价值
- C++算法学习(力扣:1091. 二进制矩阵中的最短路径)
- Python3.x+pycharm+Anaconda中缩小打包的.exe体积的方法
- iis服务器怎么限制运行asp文件,Win2008 r2 IIS7.5制定目录禁止执行脚本的方法
- spring和mybatis结合做简单的增删查改系统_搭建后台系统权限系统的经验总结
- AcWing 798. 差分矩阵