如何使用Python使用最邻近算法对数据进行分类?

如何使用Python使用最邻近算法对数据进行分类?,第1张

如何使用Python使用最邻近算法对数据进行分类?

特别是考虑到您在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的开发者/提交者。)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存