gmm matlab 分类,使用带GMM的GMM进行分类

我想用GMM分类一个测试组。我有一个带有标签{1,2,3}的trainset(n * 4矩阵),n表示训练样例的数量,它有4个属性。我还有一个测试集(m * 4)进行分类。使用带GMM的GMM进行分类

我的目标是为每个测试示例提供一个概率矩阵(m * 3),给出每个标签P(x_test|labels)。就像软群集一样。首先,我在整个训练集上创建一个具有k = 9分量的GMM。我在一些论文中知道,作者为trainset中的每个标签创建一个GMM。但是我想处理来自所有类的数据。

GMModel = fitgmdist(trainset,k_component,'RegularizationValue',0.1,'Start','plus');

我的问题是,我想确认组件和标签之间的关系P(component|labels)。所以我写如下代码,但不知道这是否是正确的,

idx_ex_of_c1 = find(trainset_label==1);

idx_ex_of_c2 = find(trainset_label==2);

idx_ex_of_c3 = find(trainset_label==3);

[~,~,post] = cluster(GMModel,trainset);

cita_c_k = zeros(3,k_component);

for id_k = 1:k_component

cita_c_k(1,id_k) = sum(post(idx_ex_of_c1,id_k))/numel(idx_ex_of_c1);

cita_c_k(2,id_k) = sum(post(idx_ex_of_c2,id_k))/numel(idx_ex_of_c2);

cita_c_k(3,id_k) = sum(post(idx_ex_of_c3,id_k))/numel(idx_ex_of_c3);

end

cita_c_k是(3 * 9)矩阵存储的关系。 idx_ex_of_c1是例子的索引,在火车组中它的标签是'1'。

用于测试过程。我首先将GMModel到测试集

[P,~] = posterior(GMModel,testset); % P is a m*9 matrix

,然后和所有的组件,

P_testset = P*cita_c_k';

[a,b] = max(P_testset,3);

imagesc(b);

的结果是正确的,但还不够好。任何人都可以给我一些提示吗?

谢谢!

+0

你为什么选择9康波你的GMM的内部?更多不一定更好,事实上我已经看到仅使用5-7个组件的极其复杂的训练集。 –

+0

我不确定有多少组件可以表现最好。也许你是对的。我要找出最佳的#组件。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值