机器学习中训练集和测试集归一化-matlab

 本文不是介绍如何使用matlab对数据集进行归一化,而是通过matlab来介绍一下数据归一化的概念。
 以下内容是自己的血泪史,因为归一化的错误,自己的实验过程至少走了两个星期的弯路。由此可见机器学习中一些基础知识和概念还是应该扎实掌握。

背景介绍
  1. 归一化后加快了梯度下降求最优解的速度,归一化有可能提高精度。
  2. 训练集和测试集归一化方法相同。
  3. 数据集不小,81*132337,81行表示包含81维属性,132337列表示包含132337条训练数据。
  4. 数据中包含NaN数据。
  5. 使用matlab中的mapminmax函数,归一化到默认的范围[-1 +1]。

  为了方便演示,我们以一个简单的矩阵来说明归一化。

123234345456(1)

 这是3*4的矩阵,表示有4条训练数据,每条数据有3个属性。数据归一化应该针对属性,而不是针对每条数据,针对每条数据是完全没有意义的,因为只是等比例缩放,对之后的分类没有任何作用。这是我遇到的 第一个坑

 针对属性进行归一化的代码

inst = [1 2 3 4; 2 3 4 5; 3 4 5 6];
inst_norm = mapminmax(inst);

 得到的归一化矩阵如下

1.00001.00001.00000.33330.33330.33330.33330.33330.33331.00001.00001.0000(2)

 针对数据进行归一化的代码

inst = [1 2 3 4; 2 3 4 5; 3 4 5 6];
inst_norm = mapminmax(inst')';

 得到的归一化矩阵如下

101101101101(3)

 我们应该采用 第一种归一化方法,即对属性进行归一化。
 训练集和测试集归一化的方法应该相同,但是在具体实验过程中,脑子发生了短路,对训练集的归一化是针对属性的,但是测试集却针对了数据,这是我遇到的 第二个坑。这种做法让测试结果接近随机,跟训练集没什么关系。
 网上有一些说法,觉得训练集和测试集应该放到一起进行归一化,我觉得这种做法有所不妥,这样会让测试集受到训练集的影响,导致训练集和测试集不相互独立。
 正确的做法是记录下训练集的归一化方法,用该方法对测试集单独进行归一化,matlab中的 mapminmax函数提供了相应的机制。

 对于一条新的数据,应该先按照训练集的归一化方法进行归一化,再进行分类,比如对于如下一条新数据,

135(4)

 通过如下代码

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)

1.00000.33330.3333(5)

mapminmax会跳过NaN数据,最好的方法是归一化之后,将NaN赋值成0。

inst_norm(find(isnan(inst_norm))) = 0;
### 回答1: Matlab是一种功能强大且广泛使用的软件,被广泛应用于机器学习领域。那么,如果想要通过Matlab制作机器学习样本集,需要完成以下几个步骤。 首先,我们需要建立一个数据库以储存我们的数据和样本集。可以使用Matlab自带的工具箱,例如Database Toolbox或Datafeed Toolbox来实现,也可以使用SQL Server或其他数据库管理系统。 接着,我们需要定义数据集的特征,标签和属性,以便机器学习算法进行训练和学习。在定义特征和标签时,需要考虑数据间的相关性、可区分性和分类效果等指标。对于属性的定义,需要考虑特定的业务需求和数据类型。 然后,我们需要利用Matlab的图像处理工具包、信号处理工具包、统计工具包等工具,对数据进行处理和清洗,以保证数据完整性和可用性。在数据清洗的过程,需要注意数据的准确性、完整性、一致性和统一性等问题。 最后,我们需要根据数据特点和机器学习算法的需求,进行数据抽样、分割和归一化等操作,以生成高质量的机器学习样本集。在样本集的生成过程,需要对训练数据和测试数据进行有效的分配和组合,以确保机器学习算法在预测和分类任务的准确性和稳定性。 综上所述,Matlab是一种非常适合制作机器学习样本集的工具,通过它的强大功能可以实现数据处理、样本生成和模型训练等多种机器学习任务。同时,需要注意数据清洗和处理的规范性和正确性,以确保生成的样本集具有高质量和代表性。 ### 回答2: Matlab 是一种功能强大的工具,可用于制作机器学习样本集。在制作样本集之前,我们首先需要了解这个数据集在什么情况下使用,以便于选择正确的数据。 首先,我们需要知道训练集测试集的数量和分布,以便于在机器学习模型进行合理的预测。机器学习的目的是通过分析大量数据来识别模式并预测结果,因此我们还需要特定的特征集。我们可以通过算法、人工智能和其他工具来挑选出正确的特征集。 在Matlab,我们可以使用数据标注、特征选择和特征提取等功能,来进一步优化样本提取和分布。我们还可以使用图像处理或文本处理工具,对大量数据进行处理,以便于得出数据分布和特征集等。 最后,在制作样本集之前,请务必确保数据集经过良好的采集和处理,以便于机器学习模型能够进行准确的预测。Matlab 是一种非常强大的工具,它可以在处理数据时为我们提供方便和支持,以便于我们能够创建准确率高的机器学习模型。 ### 回答3: Matlab 是一种常用的科学计算软件,它提供了众多的工具箱和函数用于机器学习算法的实现。要制作机器学习样本集,我们需要的是一组具有标签的数据。 首先,我们需要确定机器学习算法的目标和分类标准。然后,根据目标和分类标准,我们可以收集和整理与目标相关的数据,并将其划分为训练集测试集。 接下来,在 Matlab ,我们可以利用函数和工具箱来进行数据预处理、特征提取以及分类器的训练和测试。在训练过程,我们可以调整模型的参数以达到最优化的效果。此外,我们还可以使用交叉验证方法来评估分类器的性能和提高其泛化能力。 最后,我们可以用 Matlab 的绘图工具绘制学习曲线、ROC 曲线等来分析分类器的性能,并根据测试集的表现对模型进行调整和优化。 总之,利用 Matlab 制作机器学习样本集需要遵循科学方法,包括目标设定、数据收集和整理、特征提取与分类器训练、模型调整和绘图分析等步骤。通过不断地优化,我们可以得到更为准确和有效的分类器,进而为实际应用提供有力的支持。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值