特别是考虑到您在Q中提到的技术(k最近邻),我强烈建议 scikits.learn 。[ 注意
:发布此答案后,该项目的首席开发人员向我通知了该项目的新主页。
我认为该库与其他库有一些区别(至少是我使用的其他Python ML库,其中大多数是):
广泛的 诊断和测试库 (包括通过Matplotlib进行的绘图模块)-包括功能选择算法, 混淆矩阵,ROC,精确调用等;
精选了“含电池” 数据集 (包括手写数字,面部图像等),特别适合ML技术;
广泛的 文档 (考虑到该项目只有两年的历史,这是一个令人惊讶的发现),包括教程和分步示例代码(使用提供的数据集);
毫无例外(至少我现在可以想到)python ML库非常出色。(有关十二种左右最受欢迎的python ML库的列表,请参见PyMVPA
homepag e。)
例如,在过去的12个月中,我使用了 ffnet (用于MLP), neurolab (也用于MLP), PyBrain (Q学习),
neurolab (MLP)和 PyMVPA (SVM)(均可从Python软件包索引中获取)
-它们的成熟度,范围和提供的基础设施彼此之间有很大差异,但我发现它们的质量都很高。
尽管如此,最好的还是 scikits.learn ;例如,除了scikits.learn之外,我不知道有任何Python
ML库,它包含我上面提到的三个功能中的任何一个(尽管有一些具有可靠的示例代码和/或教程,但我不知道集成这些都包含研究级数据集和诊断算法的库)。
其次,考虑到您打算使用的技术( k近邻
)scikits。learn是一个特别好的选择。Scikits.learn包括用于回归(返回分数)和分类(返回类别标签)的kNN算法,以及每种算法的详细示例代码。
使用scikits.learn k-nearest邻居模块(从字面上看)再简单不过了:
>>> # import NumPy and the relevant scikits.learn module>>> import numpy as NP>>> from sklearn import neighbors as kNN>>> # load one of the sklearn-suppplied data sets>>> from sklearn import datasets>>> iris = datasets.load_iris()>>> # the call to load_iris() loaded both the data and the class labels, so>>> # bind each to its own variable>>> data = iris.data>>> class_labels = iris.target>>> # construct a classifier-builder by instantiating the kNN module's primary class>>> kNN1 = kNN.NeighborsClassifier()>>> # now construct ('train') the classifier by passing the data and class labels>>> # to the classifier-builder>>> kNN1.fit(data, class_labels) NeighborsClassifier(n_neighbors=5, leaf_size=20, algorithm='auto')
更重要的是,与几乎所有其他ML技术不同,k最近邻的症结不是在编码有效的分类器构建器,而是构建生产级k最近邻分类器/回归器的困难步骤是持久层-即,
存储和快速检索从中选择最近邻居的数据点 。对于kNN数据存储层,scikits.learn包括一种用于 球树 的算法(除了对 kd-
tree (k-NN的传统数据结构)明显优于 kd-tree 之外,我几乎一无所知。在高维特征空间中退化。
此外,k个近邻需要一个适当的相似性度量(欧氏距离是通常的选择,尽管并不总是最好的)。Scikits.learn包括一个独立模块,该模块包含各种距离度量以及用于选择合适度量的测试算法。
最后,我也没有提到一些库,因为它们超出了范围(PyML,贝叶斯);对于开发人员而言,它们不是主要的“库”,而是对于最终用户的应用程序(例如,Orange),或者它们具有异常或难以安装的依赖项(例如,mlpy,这需要gsl,而后者又必须从源代码构建)
),至少适用于我的 *** 作系统(即Mac OS X)。
( 注意 :我不是scikits.learn的开发者/提交者。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)