python机器学习常用函数 python 机器学习( 二 )


如果你擅长其他语言 , 但也想使用Python包,我们也简单地描述如何与Python进行集成来使用这篇文章列出的库 。
Scikit-LearnScikit Learn是我们在CB Insights选用的机器学习工具 。我们用它进行分类、特征选择、特征提取和聚集 。我们最爱的一点是它拥有易用的一致性API,并提供了很多开箱可用的求值、诊断和交叉验证方法(是不是听起来很熟悉?Python也提供了“电池已备(译注:指开箱可用)”的方法) 。锦上添花的是它底层使用Scipy数据结构,与Python中其余使用Scipy、Numpy、Pandas和Matplotlib进行科学计算的部分适应地很好 。因此,如果你想可视化分类器的性能(比如 , 使用精确率与反馈率(precision-recall)图表 , 或者接收者操作特征(Receiver Operating Characteristics,ROC)曲线) , Matplotlib可以帮助进行快速可视化 。考虑到花在清理和构造数据的时间 , 使用这个库会非常方便,因为它可以紧密集成到其他科学计算包上 。
另外,它还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、预处理(停用词/stop-words,自定义预处理,分析器) 。此外 , 如果你想快速对小数据集(toy dataset)进行不同基准测试的话,它自带的数据集模块提供了常见和有用的数据集 。你还可以根据这些数据集创建自己的小数据集,这样在将模型应用到真实世界中之前,你可以按照自己的目的来检验模型是否符合期望 。对参数最优化和参数调整,它也提供了网格搜索和随机搜索 。如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现 。我们期盼它的第一个稳定发布版 。
StatsmodelsStatsmodels是另一个聚焦在统计模型上的强大的库,主要用于预测性和探索性分析 。如果你想拟合线性模型、进行统计分析 , 或者预测性建模 , 那么Statsmodels非常适合 。它提供的统计测试相当全面 , 覆盖了大部分情况的验证任务 。如果你是R或者S的用户,它也提供了某些统计模型的R语法 。它的模型同时也接受Numpy数组和Pandas数据帧,让中间数据结构成为过去!
PyMCPyMC是做贝叶斯曲线的工具 。它包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型 。如果想进行贝叶斯分析 , 你应该看看 。
ShogunShogun是个聚焦在支持向量机(Support Vector Machines, SVM)上的机器学习工具箱,用C++编写 。它正处于积极开发和维护中,提供了Python接口 , 也是文档化最好的接口 。但是,相对于Scikit-learn,我们发现它的API比较难用 。而且,也没提供很多开箱可用的诊断和求值算法 。但是,速度是个很大的优势 。
GensimGensim被定义为“人们的主题建模工具(topic modeling for humans)” 。它的主页上描述,其焦点是狄利克雷划分(Latent Dirichlet Allocation,LDA)及变体 。不同于其他包,它支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起 。如果你的领域在NLP , 并想进行聚集和基本的分类,你可以看看 。目前,它们引入了Google的基于递归神经网络(Recurrent Neural Network)的文本表示法word2vec 。这个库只使用Python编写 。
OrangeOrange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface , GUI)的 。对分类、聚集和特征选择方法而言,它是相当全面的,还有些交叉验证的方法 。在某些方面比Scikit-learn还要好(分类方法、一些预处理能力),但与其他科学计算系统(Numpy, Scipy, Matplotlib, Pandas)的适配上比不上Scikit-learn 。但是,包含GUI是个很重要的优势 。你可以可视化交叉验证的结果、模型和特征选择方法(某些功能需要安装Graphviz) 。对大多数算法,Orange都有自己的数据结构,所以你需要将数据包装成Orange兼容的数据结构,这使得其学习曲线更陡 。

推荐阅读