IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 绘制近红外光谱特征选择筛选出的变量分布图 -> 正文阅读

[人工智能]绘制近红外光谱特征选择筛选出的变量分布图

绘制近红外光谱特征选择筛选出的变量分布图(特征波长图)

在近红外光谱数据分析建模过程中,特征选择是其中关键的一步。特征选择的原因是全部样本信息(全波长)中存在冗余信息,使得有些有效信息被抵消同时也无法突出有用的信息,这样建立的分析模型准确度和可靠性不高且计算量较大,特征选择就是最大限度的筛选出光谱数据中的有效信息,使得筛选出来的这些信息可以代表全部的样本信息,这样筛选出来的就是特征波长。写论文时需要画出筛选出来的特征波长图,去看特征波长落在哪个波段,从而查找相应作用的官能团。本文分别用python和matlab来实现两种不同的变量分布图。此处说明一下,特征波长和特征变量是同样的意思,只是叫法不一样。

用python绘制变量分布图

直接上代码:

import matplotlib.pyplot as plt
import pandas as pd

# 添加文件名即可,最多九个

name = ['full_wave.csv',
        'cor_wavelength.csv',
        'wave_noclass.csv',
        'wave_2class.csv',
        'wave_3class.csv']

new_name = ['全波长',
            '相关系数变量选择',
            '不分类',
            '分为2类',
            '分为3类']

# name = ['Full_NMir.csv',
#         'NMir_index.csv']
# new_name = ['近—中红外融合全波长',
#             '近—中红外融合UDPFS波长']

sign = ['+', 'x', '*', 'o', 'v', '^', '_', 'h', '.']  # 符号
gap = 5  # 间隔

plt.figure(figsize=(7.5,6))
ax = plt.axes()
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
for i in range(len(name)):
    y = pd.read_csv(name[i])
    y = y.values.T[0]
    y = y[::gap]

    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    # plt.scatter([i + 1000 for i in y], [i+1] * len(y), marker=sign[i], s=30, label=name[i][:-4])
    plt.scatter([i + 1000 for i in y], [i+1] * len(y), marker=sign[i], s=30, label=new_name[i])
plt.scatter([1000]*605, [len(name)+1]*605, alpha=0)
plt.scatter([1000]*605, [len(name)+2]*605, alpha=0)
plt.scatter([1000]*605, [0]*605, alpha=0)   # 0坐标空行

# plt.legend()
plt.legend(loc="upper center",ncol=5,fontsize=11)    #生成legend
# plt.legend(ncol=5)
plt.yticks([])
plt.show()

将获得的特征波长向量(向量即为筛选出的变量序列)保存为.csv文件,name后是文件名称,最多可以输入九个文件(一般是三四个就可以,不会超过九个),new name是显示的图例。我的结果如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/c24dbd0d57cf471896257ea40b87c6dc.png?x-oss-process=image/wa在这里插入图片描述
可以自行修改代码(改变字的大小函数plt.legend中的fontsize,图的比例plt.figure中的figsize等)。

用MATLAB绘制特征波长图

直接上代码:

%%载入数据
    %%画近红外光谱图
    [row,lie] = size(data_re);  
    X = data_re;
    figure(1)     
    for j =1:row
        i =1:lie;
        xlabel('Wavelength/nm');
        ylabel('Abosorbance');
        title('近中红外光谱图');
        plot(i+2800,X(j,:),'y');
        hold on
    end
%%画特征波长图
% Y = data_re(:,NMir_index-860);
%     for j =1:1
%         i =1:lie;
%         xlabel('Wavelength/nm');
%         ylabel('Abosorbance');
%         title('近中红外光谱图');
%         plot(NMir_index+1940,Y(j,:),'*r');
%         hold on
%     end
    %%变量分布区
    H_pa = patch([2834,2834,3120,3120],[-0.05,0.4,0.4,-0.05],[.6 .6 .8]);%%%特征波长所在阴影部分
    set(H_pa,'EdgeColor',[.8 .8 .8],'EdgeAlpha',0.5,'FaceAlpha',0.5)
    H_pa1 = patch([3572,3572,3878,3878],[-0.05,0.4,0.4,-0.05],[.6 .6 .8]);
    set(H_pa1,'EdgeColor',[.8 .8 .8],'EdgeAlpha',0.5,'FaceAlpha',0.5) 
    H_pa2 = patch([4150,4150,4698,4698],[-0.05,0.4,0.4,-0.05],[.6 .6 .8]);
    set(H_pa2,'EdgeColor',[.8 .8 .8],'EdgeAlpha',0.5,'FaceAlpha',0.5) 

由于数据是正在发表的一篇论文,就不在此处展示。首先需要画出预处理之后的光谱图,在此基础上,查找特征,特征落在哪一段就在哪一段画出阴影。最后整体显示出来就是下文的图形。
在此,需要说明一下阴影图的画法。
网上有patch这个函数。是这么写的:patch([X down left, X top left, X top right, X down right], [Y left down, Y left up, Y rigth up, Y rigth down],[阴影颜色])。这里简单说一下patch后的第一个[]里放的是左边最低的X对应的值,左边最高的X对应的值,右边最高的对应X的值,右边最低的对应X的值。因为问我画的是矩形,所以前后两数字都相同。后面类似。
这里分享个寻找XY值的小窍门
先画出特征波长图,查看特征波长大致落在几个区间。查看存放特征波长值的文件,找出每个区间的最左最右面的值,即为我们画图时用的X对应的左右值。
在这里插入图片描述

欢迎交流!
2021-12-6

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:01:51  更:2021-12-07 12:04:01 
 
开发: 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/27 2:22:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码