Matble怎样对矩阵进行加标签整合

这篇博客介绍如何在Matlab中对矩阵进行加标签整合,特别是针对不同类数据的操作。作者分享了一段代码,该代码适用于处理如mnist_all.mat这样的数据,并且在GNMF(非负矩阵分解)的相关处理中有应用。文中还提及了对2D Hela image data的类似处理,并提供了一个名为Matrix_adt的测试代码。此外,作者提到了之前博客中有关GNMF的更多代码资源。

这个代码主要针对,对不同类数据,加标签整合

数据为  mnist_all.mat  (因为时间隔得有点久我忘了当初下载网站)

我主要用在GNMF相关处理中,其中对2D Hela image data数据也是类似加标签,希望对你有帮助

%对MNIST数据的处理
%   整合为一个数据矩阵
%在因为每张图是28X28=784,所以每一行代表一张图
%需要从所有图中选取500样本,每类选取50个样本
load('mnist_all.mat');	
%  load('usps_all.mat');	

fea=zeros(500,784);
gnd1=ones(50,1);      %第一类,全部标记为1
gnd=gnd1;
for i=2:10
    gnd=[gnd;i*gnd1];    %gnd  标记;里面第一类标记1,依次内推到第十类标记为10.
end

%下面开始构建处理矩阵
%每个样本选50个样本(随机)
t=0;
for i=1:10
    st=['test',num2str(i-1)];  %选取不同的test,然后从中随机提取50个样本;例test0
    test=eval(st);             %将字符串对应的矩阵取值出来;例将test0,对应的所以样本。
    for j=1:50
        t=t+1;
        fea(t,:)=test(i*j,:);
    end
end

其测试时需要构建标签    (上面一个代码就是Matrix_adt.m)

%  先运行Matrix_adt.m,构建标签gnd,与矩阵fea
nClass=10;
K=10;

label = litekmeans(fea,K,'Replicates',20);
 [mFea,nSmp]=size(fea);
labelA=[];
labelA=[(1:mFea)',label];
A=[];
for i=1:K
   
在 Matplotlib 中,将多个数据集绘制到同一个图表中是一种常见的数据可视化方式,可以方便地进行数据对比和分析。可以通过以下几种方式实现: ### 1. 使用 `plot` 方法多次调用 在同一坐标系中绘制多个数据集是最直接的方式。只需多次调用 `plot` 函数,即可将多个数据集叠加到同一个图表中。 ```python import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) plt.plot(x, y1, label='sin(x)') plt.plot(x, y2, label='cos(x)') plt.legend() plt.xlabel('x') plt.ylabel('y') plt.title('Multiple Datasets in One Plot') plt.show() ``` ### 2. 使用 `scatter`、`bar` 等其他绘图方法叠加 除了线图,也可以使用散点图、柱状图等不同类型的图表叠加多个数据集。 ```python y3 = np.sin(x + 1) plt.plot(x, y1, label='sin(x)') plt.scatter(x, y3, color='red', label='sin(x+1)', marker='x') plt.legend() plt.show() ``` ### 3. 使用 `twinx()` 或 `twiny()` 实现双坐标轴 当多个数据集的量纲或数值范围差异较大时,可以使用双坐标轴来展示数据。`twinx()` 创建共享 x 轴的右侧 y 轴,`twiny()` 创建共享 y 轴的顶部 x 轴。 ```python fig, ax1 = plt.subplots() ax1.plot(x, y1, 'g-') ax1.set_xlabel('x') ax1.set_ylabel('sin(x)', color='g') ax2 = ax1.twinx() ax2.plot(x, y2, 'b-') ax2.set_ylabel('cos(x)', color='b') plt.title('Dual Axes Plot') plt.show() ``` ### 4. 使用 `fill_between` 添加区域填充 为了增强可视化效果,可以使用 `fill_between` 来填充两个数据集之间的区域。 ```python plt.plot(x, y1, label='sin(x)') plt.plot(x, y2, label='cos(x)') plt.fill_between(x, y1, y2, color='gray', alpha=0.5) plt.legend() plt.show() ``` ### 5. 使用 `subplots` 创建多个子图进行对比 如果多个数据集之间差异较大,或者希望避免图表过于拥挤,可以使用 `subplots` 将多个子图布局在一个窗口中。 ```python fig, axs = plt.subplots(2) axs[0].plot(x, y1) axs[0].set_title('sin(x)') axs[1].plot(x, y2) axs[1].set_title('cos(x)') plt.tight_layout() plt.show() ``` ### 6. 使用 `GridSpec` 实现更复杂的布局 对于更复杂的图表布局,可以使用 `GridSpec` 指定子图的行列分布。 ```python from matplotlib.gridspec import GridSpec fig = plt.figure() gs = GridSpec(2, 2) ax1 = fig.add_subplot(gs[0, 0]) ax1.plot(x, y1) ax1.set_title('sin(x)') ax2 = fig.add_subplot(gs[0, 1]) ax2.plot(x, y2) ax2.set_title('cos(x)') ax3 = fig.add_subplot(gs[1, :]) ax3.plot(x, y1 + y2, 'r') ax3.set_title('sin(x) + cos(x)') plt.tight_layout() plt.show() ``` 上述方法可以灵活组合使用,以满足不同的可视化需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值