PSO算法特征选择MATLAB实现(单目标)

PSO进行进行特征选择其主要思想是:将子集的选择看作是一个搜索寻优问题(wrapper方法),生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题。

简单PSO MATLAB代码及概述请见:http://www.omegaxyz.com/2018/01/17/matlab_pso/

下面是PSO进行特征选择的代码(注意:整体代码是单目标只优化错误率,注意训练使用的是林志仁SVM,数据集是Parkinson,可以到UCI上下载,训练的结果是错误率)

数据集分割为训练集和测试集:

 

主函数PSOFS:

特征选择评价函数(利用林志仁的SVM进行训练):

结果(选出的特征数和错误率):

 

32 评论

  1. 您好,运行后显示未定义函数或变量 ‘Parkinson_f’。看到您在之前的回复是制作数据集的结果,但我试了一下还是报错,能否麻烦发一份制作数据集的MATLAB代码,我好好学习一下,谢谢啦,邮箱:263331772@qq.com

  2. 您好,请问您有这个的Python实现的代码吗,可以麻烦发一份吗,2284298343@qq.com,非常感谢!

  3. 你好 这是wrapper方法吗
    用阈值过滤的啊
    难道不是filter方法?
    望回复

    • 这是wrapper方法,阈值不是过滤,阈值是将实数编码变成01编码选特征用的,也可以一开始就是用随机生成的01值作为编码。

      • 请教您一下,训练集这里我懂了,这个适应度函数函数这里是用的LVF吗 我看它不是计算的特征子集慢慢加或慢慢减呢

  4. 你写的真好,我从评论里看到链接去下载了出来格式不对,您方便的话能否把训练集发我一份用于测试,谢谢您!
    邮箱:2511300269@QQ.com

  5. 您好,我在Github上没有找到数据集,网页进不去,您方便发给我一份我来做测试用吗?谢谢~我的邮箱335172839@qq.com

  6. 您好,出现这个问题是什么原因。
    索引超出矩阵维度。

    出错 pso>fitness (line 104)
    model = libsvmtrain(train_L,train_F(:,inmodel), ‘-s 0 -t 2 -c 1.2 -g 2.8’);

    出错 pso (line 32)
    p(i)=fitness(x(i,:),i);

  7. 您好,您方便把完整的代码和数据集发给我吗?如果方便的话,请发我邮箱:23621210184@qq.com

  8. 您好,您这里有这篇的python代码吗,另外数据我从UCI上转化出现了问题,您能发我一份吗,邮箱是1159668795@qq.com,非常感谢!

  9. 程序:
    function divide_datasets()
    load Parkinson.mat
    dataMat = Parkinson_f;
    len=size(dataMat,1);
    运行后的结果:
    未定义函数或变量 ‘Parkinson_f’。

    出错 divide_datasets (line 5)
    dataMat = Parkinson_f;

    出错 NSGA2_FS (line 14)
    divide_datasets();

    您好,这个怎么解决呢?麻烦您啦

  10. 未定义函数或变量 ‘Parkinson_f’。

    出错 divide_datasets (line 5)
    dataMat = Parkinson_f;

    大神,这个该怎么解决呢?

  11. 您好,这个应用有相应的论文吗?如果方便,您能吧数据集也发我一份吗?(1013757040@qq.com)非常谢谢

  12. 您好,对于您的数据集,我在UCI上找到了的是.data格式的,不明白你是怎么处理的,能方便发我一份数据集吗?感谢。我的邮箱是985197256@qq.com

  13. 你好,请问您这里定义的Parkinson_f、Parkinson_label是parkinson数据集中195*23个特征值与1*23个特征标签吗?(我做了上述猜测的处理,将Parkinson_label定义为1*23的数值矩阵,【1,2,…,23】,但在测试里与您的结果不太一样)如果方便的话,求同学您的数据集一份用来做相同的测试,我的邮箱是yaoxin903695971@vip.qq.com.

  14. 您好,我在uci上一直没找到数据集,您方便发我一份让我测试吗?如果方便,请发我邮箱:2429235999@qq.com

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注