0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

scikit-learn K近邻法类库使用的经验总结

lviY_AI_shequ 来源:未知 2019-01-13 11:49 次阅读

本文对scikit-learn中KNN相关的类库使用做了一个总结,主要关注于类库调参时的一个经验总结,且该文非常详细地介绍了类的参数含义,这是小编见过最详细的KNN类库参数介绍 。

目录

scikit-learn 中KNN相关的类库概述

K近邻法和限定半径最近邻法类库参数小结

使用KNeighborsClassifier做分类的实例

1. scikit-learn中KNN相关的类库概述

在scikit-learn 中,与近邻法这一大类相关的类库都在sklearn.neighbors包之中。KNN分类树的类是KNeighborsClassifier,KNN回归树的类是KNeighborsRegressor。除此之外,还有KNN的扩展,即限定半径最近邻分类树的类RadiusNeighborsClassifier和限定半径最近邻回归树的类RadiusNeighborsRegressor, 以及最近质心分类算法NearestCentroid。

在这些算法中,KNN分类和回归的类参数完全一样。限定半径最近邻法分类和回归的类的主要参数也和KNN基本一样。

比较特别是的最近质心分类算法,由于它是直接选择最近质心来分类,所以仅有两个参数,距离度量和特征选择距离阈值,比较简单,因此后面就不再专门讲述最近质心分类算法的参数。

另外几个在sklearn.neighbors包中但不是做分类回归预测的类也值得关注。kneighbors_graph类返回用KNN时和每个样本最近的K个训练集样本的位置。radius_neighbors_graph返回用限定半径最近邻法时和每个样本在限定半径内的训练集样本的位置。NearestNeighbors是个大杂烩,它即可以返回用KNN时和每个样本最近的K个训练集样本的位置,也可以返回用限定半径最近邻法时和每个样本最近的训练集样本的位置,常常用在聚类模型中。

2.K近邻法和限定半径最近邻法类库参数小结

本节对K近邻法和限定半径最近邻法类库参数做一个总结。包括KNN分类树的类KNeighborsClassifier,KNN回归树的类KNeighborsRegressor, 限定半径最近邻分类树的类RadiusNeighborsClassifier和限定半径最近邻回归树的类RadiusNeighborsRegressor。这些类的重要参数基本相同,因此我们放到一起讲:

3. 使用KNeighborsClassifier做分类的实例

完整代码见github:

https://github.com/ljpzzz/machinelearning/blob/master/classic-machine-learning/knn_classifier.ipynb

3.1 生成随机数据

首先,我们生成我们分类的数据,代码如下:

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_classification # X为样本特征,Y为样本类别输出, 共1000个样本,每个样本2个特征,输出有3个类别,没有冗余特征,每个类别一个簇 X, Y = make_classification(n_samples=1000, n_features=2, n_redundant=0, n_clusters_per_class=1, n_classes=3)plt.scatter(X[:, 0], X[:, 1], marker='o', c=Y)plt.show()

先看看我们生成的数据图如下。由于是随机生成,如果你也跑这段代码,生成的随机数据分布会不一样。下面是我某次跑出的原始数据图。

接着我们用KNN来拟合模型,我们选择K=15,权重为距离远近。代码如下:

from matplotlib.colors import ListedColormap cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF']) #确认训练集的边界 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 #生成随机数据来做测试集然后预测 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # 画出测试集数据 Z = Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmap=cmap_light) # 也画出所有的训练集数据 plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=cmap_bold)plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.title("3-Class classification (k = 15, weights = 'distance')" )生成的图如下,可以看到大多数数据拟合不错,仅有少量的异常点不在范围内。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3864

    浏览量

    61305
  • KNN
    KNN
    +关注

    关注

    0

    文章

    22

    浏览量

    10725
  • 分类算法
    +关注

    关注

    0

    文章

    29

    浏览量

    9895

原文标题:scikit-learn K近邻法类库使用小结

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python机器学习库谈Scikit-learn技术

    Scikit-learn API内置了各种toy和real-world数据集[1]。这些可以便捷地通过一行代码访问,如果你正在学习或只是想快速尝试新功能,这会非常有用。
    的头像 发表于 08-27 17:34 2877次阅读
    Python机器学习库谈<b class='flag-5'>Scikit-learn</b>技术

    在PyODPS DataFrame自定义函数中使用pandas、scipy和scikit-learn

    的,MaxCompute 的 Python 环境只包含了 numpy 这一个第三方包,用户常常问的问题是,如何在自定义函数里使用 pandas、scipy 或者 scikit-learn 这样的包含c
    发表于 05-17 19:48

    通用Python机器学习scikit-learn

    《利用Python进行数据分析》 134 scikit-learn介绍
    发表于 10-25 07:58

    SOPC Builder/Nios 学习经验总结

    SOPC Builder/Nios 学习经验总结
    发表于 07-22 15:32 0次下载
    SOPC Builder/Nios 学习<b class='flag-5'>经验总结</b>

    线圈天线设计经验总结

    线圈天线设计经验总结
    发表于 09-12 17:21 224次下载

    做四轴飞行器的经验总结

    做四轴飞行器的经验总结,请各位大神共同学习,里面是一位大神做四轴飞行器的经验总结
    发表于 11-11 16:52 0次下载

    指针经验总结

    指针经验总结
    发表于 10-27 15:44 19次下载
    指针<b class='flag-5'>经验总结</b>

    基于Python的scikit-learn编程实例

    scikit-learn 是机器学习领域非常热门的一个开源库,基于Python 语言写成。可以免费使用。 网址: 上面有很多的教程,编程实例。而且还做了很好的总结,下面这张图基本概括了传统机器学习
    发表于 11-15 19:39 1526次阅读

    详细解析scikit-learn进行文本分类

    而多类别分类指的是y的可能取值大于2,但是y所属类别是唯一的。它与多标签分类问题是有严格区别的。所有的scikit-learn分类器都是默认支持多类别分类的。但是,当你需要自己修改算法的时候,也是可以使用scikit-learn实现多类别分类的前期数据准备的。
    的头像 发表于 12-27 08:36 4419次阅读
    详细解析<b class='flag-5'>scikit-learn</b>进行文本分类

    基于Python的scikit-learn包实现机器学习

    基于Python的scikit-learn包实现机器学习。
    发表于 03-26 09:42 11次下载
    基于Python的<b class='flag-5'>scikit-learn</b>包实现机器学习

    电路设计的一些经验总结

    电路设计的一些经验总结
    发表于 12-02 13:57 41次下载

    EMI整改经验总结

    EMI整改经验总结
    发表于 12-20 15:55 45次下载

    Scikit-learn机器学习库的概念及工作原理

    作为一个适用于 Python 编程语言的机器学习 (ML) 库,Scikit-learn 拥有大量算法,可供程序员和数据科学家在机器学习模型中轻松部署。
    的头像 发表于 09-30 11:00 1068次阅读

    富士变频器维修经验总结

    富士变频器维修经验总结
    发表于 10-07 10:55 0次下载

    选择烧结银的经验总结

    选择烧结银的经验总结
    的头像 发表于 12-17 15:46 417次阅读
    选择烧结银的<b class='flag-5'>经验总结</b>