1

我正在尝试在 MATLAB 中使用 SVM 进行一些文本分类,并且真的很想知道 MATLAB 是否有任何特征选择方法(Chi Sq.,MI,....),因为我想尝试各种方法并保持最好的方法,我没有时间实现所有这些。这就是为什么我在 MATLAB 中寻找这样的方法。有人知道吗?

4

4 回答 4

3

svmtrain

MATLAB 还有其他用于分类的实用程序,如聚类分析随机森林等。

如果您没有所需的工具箱svmtrain,我推荐LIBSVM。它是免费的,我已经使用了很多,效果很好。

于 2010-06-15T18:35:50.973 回答
2

统计工具箱有sequencefs。另请参阅有关功能选择的文档。

于 2010-06-15T18:39:47.253 回答
2

类似的方法是降维。在 MATLAB 中,您可以轻松地执行PCA因子分析

或者,您可以采用包装方法来进行特征选择。您将通过每次获取特征子集来搜索特征空间,并使用您决定的任何分类算法(LDA、决策树、SVM 等)评估该子集。您可以详尽地执行此操作,也可以使用某种启发式方法来指导搜索(贪婪,GA,SA,..)

如果您可以访问Bioinformatics Toolbox,它有一个randfeatures功能可以做类似的事情。甚至还有几个很酷的实际用例 演示

于 2010-06-16T02:48:24.987 回答
0

可能这可能会有所帮助:

在分类中选择特征有两种方式:

  1. 使用 libsvm 工具目录中的 fselect.py ( http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#feature_selection_tool )
  2. 使用统计工具箱中的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 的序列文件,您可以看到这篇文章:

使用带 libsvm 的 sequencefs 进行功能选择

于 2014-04-16T12:37:17.677 回答