如何使用LibSVM对高光谱数据集进行分类并使用.mat文件训练SVM?

时间:2015-07-28 10:03:51

标签: classification libsvm

我正在尝试使用LibSVM对高光谱数据集进行分类。

我有两组数据:

  1. 一个.mat文件,包含200个波段的145 * 145像素。
  2. 一个包含145 * 145像素的.mat文件,用于16个类别的标签(值 从1到16)。(背景值为0)
  3. 此链接中的更多信息:Indain_pines_dataset

    我的问题是:如何为16类的训练和测试LibSVM(training_label_vector和测试标签向量)抽取类的特定数量或百分比像素。

    我的目标是对此数据进行多类分类。

    请帮助..

1 个答案:

答案 0 :(得分:0)

我会给你一般的想法:

首先根据实际情况选择样本(16班图像):

Idx = cell(16,1); Sample = zeros(no_samples);

表示k = 1:16

[〜,Idx {k}] = find(HSI == k-1);

[〜,Sample(k)] = datasample(Idx {k},no_samples);

Idx是一个包含每个类的像素的所有索引的单元格。样本的第K列包含随机抽样用于训练目的的Idx成员。

现在您想要恢复训练算法的光谱特征。

Hr =重塑(恒生指数,145 * 145,200);从HSI中获取2D阵列。

class = cell(16,1);将包含每个班级的培训样本。

表示k = 1:16

class {k} = Hr(Idx {k}(Sample(:),1),:);

现在,类{1}包含no_samples光谱签名。我想在印度松树上有10个样本很多。请记住,此数据集上的某些聚类非常小(无像素)。祝你好运!