我正在尝试在 MATLAB 中使用 SVM 进行一些文本分类,并且真的很想知道 MATLAB 是否有任何特征选择方法(Chi Sq.,MI,....),因为我想尝试各种方法并保持最好的方法,我没有时间实现所有这些。这就是为什么我在 MATLAB 中寻找这样的方法。有人知道吗?
问问题
13075 次
4 回答
2
统计工具箱有sequencefs。另请参阅有关功能选择的文档。
于 2010-06-15T18:39:47.253 回答
0
可能这可能会有所帮助:
在分类中选择特征有两种方式:
- 使用 libsvm 工具目录中的 fselect.py ( http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#feature_selection_tool )
- 使用统计工具箱中的sequentialfs。
我建议使用 fselect.py,因为它提供了更多选项 - 例如自动网格搜索以获取最佳参数(使用 grid.py)。它还提供了基于特征辨别能力的 F 分数(有关 F 分数的详细信息,请参见http://www.csie.ntu.edu.tw/~cjlin/papers/features.pdf)。
由于 fselect.py 是用 python 编写的,因此您可以使用 python 接口,或者根据我的喜好,使用 matlab 对 python 执行系统调用:
system('python fselect.py <training file name>')
重要的是你安装了 python,编译了 libsvm(并且你在 libsvm 的工具目录中,其中包含 grid.py 和其他文件)。
需要有 libsvm 格式(稀疏格式)的训练文件。您可以通过在 matlab 中使用稀疏函数然后使用 libsvmwrite 来做到这一点。
xtrain_sparse = sparse(xtrain)
libsvmwrite('filename.txt',ytrain,xtrain_sparse)
希望这可以帮助。
对于带有 libsvm 的序列文件,您可以看到这篇文章:
于 2014-04-16T12:37:17.677 回答