使用 Python 进行机器学习

机器算法验证 机器学习 Python
2022-02-07 07:42:24

我正在考虑使用 Python 库进行机器学习实验。到目前为止,我一直在依赖 WEKA,但总体上还是很不满意。这主要是因为我发现 WEKA 没有得到很好的支持(很少有例子,文档很少,社区支持在我的经验中不太理想),并且发现自己陷入了困境,没有任何帮助。我考虑采取这一举措的另一个原因是因为我真的很喜欢 Python(我是 Python 新手),并且不想回到 Java 编码。

所以我的问题是,还有什么

  1. 综合的
  2. 可扩展(100k 特征,10k 示例)和
  3. 在 Python 中进行机器学习的支持良好的库?

我对做文本分类特别感兴趣,所以想使用一个库,它有很好的分类器集合、特征选择方法(信息增益、卡方等)和文本预处理能力(词干提取、停用词删除) , tf-idf 等)。

根据过去在这里和其他地方的电子邮件线程,到目前为止,我一直在研究 PyML、scikits-learn 和 Orange。关于我提到的上述 3 个指标,人们的体验如何?

还有其他建议吗?

4个回答

关于 scikit-learn 选项:100k(稀疏)特征和 10k 样本足够小以适合内存,因此完全可以使用 scikit-learn(与 20 个新闻组数据集大小相同)。

这是我在 PyCon 2011 上提供的教程,其中有一章是关于文本分类的练习和解决方案:

我还就该主题发表了演讲,该主题是我在 PyCon FR 上提供的版本的更新版本。以下是幻灯片(以及评论中的嵌入视频):

至于特征选择,请查看 quora 上的这个答案,其中所有示例均基于 scikit-learn 文档:

我们在 scikit-learn 中还没有搭配特征提取。同时使用 nltk 和 nltk-trainer 执行此操作:

在处理文本方面,请查看 NLTK。非常非常好地支持和记录(甚至还有一本书在线,或者如果您愿意,可以在纸上)并且会做您需要的预处理。您可能会发现 Gensim 也很有用;重点是向量空间建模,如果感兴趣的话,它可以实现 LSI 和 LDA(我认为也是 pLSI)的可扩展实现。它还将通过 tf-idf 进行选择 - 我不确定 NLTK 是否会这样做。我已经在大约 50k 的语料库上轻松使用了这些片段。

NLTK: http ://www.nltk.org/

Gensim: http ://nlp.fi.muni.cz/projekty/gensim/

不幸的是,至于您问题的主旨,我不熟悉您引用的特定库(尽管我之前使用过一些 scikits-learn )。

Python 有大量的机器学习库(也可以查看 mloss.org)。然而,我总觉得它对机器学习研究人员比机器学习从业者更有用。

Numpy/SciPymatplotlib是使用 Python 进行科学工作的优秀工具。如果您不害怕自己破解大多数数学公式,您将不会失望。此外,将 GPU 与cudamatgnumpy一起使用非常容易- 以前需要几天才能完成的实验现在可以在几小时甚至几分钟内完成。

街区里最新的孩子可能是Theano它是一种用于数学表达式的符号语言,带有优化、GPU 实现和 über 特征自动微分,这对于基于梯度的方法来说简直太棒了。

另外,据我所知,JMS 提到的 NLTK 基本上是目前排名第一的开源自然语言库。

Python 是机器学习的正确工具。

让我推荐Orange

综合的

是的

可扩展(100k 特征,10k 示例)

是的

在 Python 中进行机器学习的支持良好的库?

是的

具有大量分类器、特征选择方法(信息增益、卡方等)的库,

所有这些都在 Orange 中开箱即用

和文本预处理功能(词干、停用词删除、tf-idf 等)。

不过,我从未使用 Orange 进行文本处理