2010-03-23 83 views
3

我试图分类一个包含离散和连续特征的例子。此外,该示例表示的是稀疏数据,因此即使系统可能已经接受过100个功能的培训,该示例可能只有12个。稀疏数据上的离散和连续分类器

什么是最好的分类器算法来完成此操作?我一直在寻找贝叶斯,Maxent,决策树和KNN,但我不确定这个法案是否恰当。我发现的最大障碍是大多数实现不支持离散和连续功能的稀疏数据集。任何人都可以推荐一个适合这些标准的算法和实现(最好在Python中)吗?

图书馆我已经看了到目前为止,包括:(。晴学术的实现并不十分有效或实际)

  1. Orange
  2. NLTK(也属于学术,尽管具有良好的Maxent模型实现,但没有按不处理连续的功能。)
  3. Weka(仍然在研究这个,似乎支持广泛的算法,但是文档很差,所以目前还不清楚每个实现支持哪些。)

回答

2

Support vector machineslibsvm可以从Python中使用,而且速度相当快。

把手稀疏矢量输入,并且将不介意的一些功能是连续的,其中,其它的是只是-1/+ 1。 (如果你有一个n路离散特性,做标准就是它扩展成n个二进制功能)。

+0

有趣。尽管我之前听说过他们,但我对SVMs没有多少经验。但是,找到一个合适的内核不是很难吗? – Cerin 2010-03-23 18:45:21

+0

我发现libsvm严重缺乏文档,并且没有社区论坛。如果它支持稀疏数据集,则该功能非常隐蔽。发行版中包含的* single * Python示例使用密集数据集,尽管其他培训文件似乎以稀疏样式格式化。 – Cerin 2010-03-23 19:39:08

+0

libsvm的默认内存布局被调整为有效处理稀疏数据,而libsvm文件输入格式不存储零值属性。有关另一方面密集的数据,你需要一个特殊的实现:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#libsvm_for_dense_data http://www.csie.ntu.edu.tw/~cjlin /libsvm/faq.html#f303 – ogrisel 2012-06-24 12:51:47