| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 三维荧光平行因子学习记录--(三)使用DOMfluor工具箱进行平行因子分析--(二) -> 正文阅读 |
|
[人工智能]三维荧光平行因子学习记录--(三)使用DOMfluor工具箱进行平行因子分析--(二) |
三维荧光平行因子学习记录–(三)使用DOMfluor工具箱进行平行因子分析–(二)注 本文仅作为自己的学习记录以备以后复习查阅本文的参考文献:
大家对三维荧光数据分析有疑问的或者对平行因子分析感兴趣的可以去看看他的主页。 话不多说,上一篇我们用工具箱自带的数据集对平行因子分析的过程进行了初步的了解,这篇文章将记录如何对自己的数据集进行平行因子分析,数据集的制作参考我的另一篇文章,这里默认大家已经都做好了自己的数据集,这里在补充一下上一篇文章我没有对工具箱自带的数据集做太多的介绍,事实上自带的数据都是已经扣除了空白、瑞丽和拉曼散射,所以我们在做分析之前自己的数据也要扣除空白、瑞丽和拉曼散射,这样才能得到较好的分析效果,本文所用的数据集是采自本校理工湖土壤的DOM溶液,由于样本数不够严格来讲不具备分析的条件,但目前因为疫情也不能去取样,为了学习我将现有的样本复制了几份以达到应有的样本量,所以数据分析结果不具有参考价值。 三、分析自己的数据集数据集基本情况: 第一步:绘制等高线图现在我们将绘制EEM,以检查数据是否正确加载,我们输入:
将数据集中的前5个EEM一次绘制一个等高线图。按下键盘上的任何键都可以查看下一个图形。如果将1:5替换为1:65,则所有65个样本将一次绘制一个。通过在键盘上输入[Ctrl+C],然后关闭图形窗口,可以随时停止打印过程 :
③与上述操作相同,但使用从最小和最大测量数据自动导出的固定z轴(颜色条比例)绘制数据。
还可以尝试键入help PlotEEMby1、help PlotEEMby4,最后键入help PlotEEMby4FixZ。有关如何使用这些功能的一些说明会打印到命令窗口中。这适用于MATLAB中的所有函数(例如,尝试键入help load)。 也可以使用PlotSurfby1和PlotSurfby4功能以类似的方式绘制曲面图。 例如:
第二步:去除散射这一步将创建一个新的数据副本,其中受散射峰影响的波长已被切割,并替换为缺失值或零(如不手动停止会自动进行到最后一个样本)。输入:
以便在本教程的其余部分对数据进行适当的处理。这将剪切数据,但不会绘制结果(因为最后的参数为’ ')。 第三步:初步探索性数据分析和异常值识别这个步骤用于去除一些异常的样本以及确定模型最后的组分数。我们输入:
进行第一次测试。按下任意键后,将运行从2个组件到7个组件的一系列模型。最初五个模型(2、3、4、5、6和7个组件模型)的结果可以通过多种方式进行评估,但在本教程中,我们将使用两种类型的图;负载和杠杆。 运行完之后我们输入:
这里我们发现有些组分的loadings存在负值,针对这种情况我们需要添加非负约束后重新运行,我们输入:
我们再继续查看,输入:
这时候发现样本7和19偏离的相对来说很厉害(大于0.3),所以我们对这两个样本进行去除,我们输入:
再继续添加非负约束,我们输入:
可以看到现在几乎所有的样本都在理想的范围内(小于0.3),再次尝试绘制所有模型的载荷和杠杆(例如PlotLL(Test3,3))。现在,载荷似乎更符合逻辑(即,它们不显示负荧光),接着我们进行下一步。 第四步 确定组分数查看残差图(不应该出现大面积的负值):
绘制曲面的残差图:
接下来,我们可以使用Compare2Models(或Compare2ModelsUrf)和CompareSpescse函数比较两个不同模型的结果,我们输入:
如果要绘制曲面图可以输入:
接下来,可以使用比较函数检查平方误差的谱和,我们输入:
第五步:拆半检验现在数据将被分成两半。不只是进行一种类型的拆分,而是进行两种不同的拆分,每个拆分以不同的方式对数据进行拆分。这使我们能够运行两个对半分析,并使用性能最好的一个。有时,如果样本类型在两半之间分布不均,则拆分可能是次优的。理想情况下,分割应尽可能“随机”。下图显示了如何使用工具箱中的SplitData函数拆分数据。
现在,可以使用SplitHalfValidation函数检查分析结果(输入help SplitHalfValidation以获取解释)。该函数使用(Lorenzo Seva和Berge,2006)描述的Tucker同余系数,在数学上比较在单独的数据分割上运行的模型的激励和发射载荷,并在命令窗口中说明模型是否得到验证。此外,还绘制了每一半的发射和激发载荷,以便直观地进行比较,我们输入:
检验结果: 第六步:随机初始化接下来,将使用模型的随机初始化对整个数据拟合一系列模型。我们需要确保我们导出的模型实际上是最小二乘结果,而不是局部极小值。PARAFAC模型使用交替最小二乘算法进行拟合,与其他迭代拟合程序(例如简单非线性回归)一样,它可能会受到初始估计值的影响。在这一步中,使用随机初始化过程来拟合具有相同数量组件的多个模型,以便我们找到真正的最小二乘结果(最佳拟合)。 使用随机初始化运行10个四组件模型。这需要15-20分钟,我们输入:
一旦建模完成,将绘制一个显示每个模型的误差平方和的图。具有最小二乘结果的模型用绿色圆圈高亮显示。(无需使用RandInitResult函数重新运行分析,即可重新绘制曲线图)。 最后,检查发射和激发载荷是否与之前的对半验证中发现的相同。应始终如此,但建议进行检查。这可以通过重新绘制对半分析结果来实现 ,我们输入:
如果没有问题我们进行下一步。 第七步:绘制组分图要创建每个组件的曲面或等高线图,可以使用ComponentEEM或ComponentSurf函数。每个组件都将在单独的窗口中标绘,我们输入:
绘制曲面的组分图:
注:在使用ComponentEEM或者ComponentSurf这两个函数时,经常会出现报错的情况。 我在网上查了很多,现有的解决资料比较少,找到了一种解决的方法,我们打开这个函数的位置,将这一行注释掉,如图: 第八步:数据导出如果需要,可以使用ModelOut函数将结果导出到MATLAB中。这将创建一个excel文件,其中包含每个样品中每个成分的荧光强度以及每个成分的发射和激发载荷,我们输入:
导出路径可以根据自己的需要进行修改。 四、总结学习平行因子分析法的道路确实很坎坷,但学习不能停止,如果之后又学习到了新的知识也会再进行补充,有问题也欢迎大家私信我一起探讨。 以上!! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:24:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |