官网地址:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neighbors

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=None, **kwargs)参数:n_neighbors : int,optional(default = 5)默认情况下kneighbors查询使用的邻居数。就是k-NN的k的值,选取最近的k个点。weights : str或callable,可选(默认=‘uniform’)默认是uniform,参数可以是uniform、distance,也可以是用户自己定义的函数。uniform是均等的权重,就说所有的邻近点的权重都是相等的。distance是不均等的权重,距离近的点比距离远的点的影响大。用户自定义的函数,接收距离的数组,返回一组维数相同的权重。algorithm : {‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。ball tree是为了克服kd树高纬失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。leaf_size : int,optional(默认值= 30)默认是30,这个是构造的kd树和ball树的大小。这个值的设置会影响树构建的速度和搜索速度,同样也影响着存储树所需的内存大小。需要根据问题的性质选择最优的大小。p : 整数,可选(默认= 2)距离度量公式。这个参数默认为2,也就是默认使用欧式距离公式进行距离度量。也可以设置为1,使用曼哈顿距离公式进行距离度量。metric : 字符串或可调用,默认为’minkowski’用于距离度量,默认度量是minkowski,也就是p=2的欧氏距离(欧几里德度量)。联合 上述P 使用metric_params : dict,optional(默认=None)距离公式的其他关键参数,这个可以不管,使用默认的None即可。n_jobs : int或None,可选(默认=None)并行处理设置。默认为1,临近点搜索并行工作数。如果为-1,那么CPU的所有cores都用于并行工作。

方法名及含义

  • fit(X, y)使用X作为训练数据,y作为目标值(类似于标签)来拟合模型。
  • get_params([deep])获取估值器的参数。
  • kneighbors([X, n_neighbors, return_distance])查找一个或几个点的K个邻居。
  • kneighbors_graph([X, n_neighbors, mode])计算在X数组中每个点的k邻居的(权重)图。
  • predict(X)给提供的数据预测对应的标签。
  • predict_proba(X)返回测试数据X的概率估值。
  • score(X, y[, sample_weight])返回给定测试数据和标签的平均准确值。
  • set_params(**params)设置估值器的参数。

示例一:鸢尾花数据分类

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import warningsimport sklearn
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier#KNN
from sklearn.preprocessing import label_binarize
from sklearn import metrics## 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False## 数据加载
path = "datas/iris.data"
names = ['sepal length', 'sepal width', 'petal length', 'petal width', 'cla']
df = pd.read_csv(path, header=None, names=names)
print(df['cla'].value_counts())
print(df.head())def parseRecord(record):r = zip(names,record)for name,v in r:if name == 'cla':if v == 'Iris-setosa':record['cla'] = 1elif v == 'Iris-versicolor':record['cla'] = 2elif v == 'Iris-virginica':record['cla'] = 3else:record['cla'] = np.nanreturn record### 1. 数据转换为数字以及分割
## 数据转换
datas = df.apply(lambda r: parseRecord(r), axis=1)
## 异常数据删除
datas = datas.dropna(how='any')
## 数据分割
print(datas)
print(datas.shape)
X = datas[names[0:-2]]
Y = datas[names[-1]]
## 数据抽样(训练数据和测试数据分割)
X_train,X_test,Y_train,Y_test = train_test_split(X, Y, test_size=0.4, random_state=0)print ("原始数据条数:%d;训练数据条数:%d;特征个数:%d;测试样本条数:%d" % (len(X), len(X_train), X_train.shape[1], X_test.shape[0]))##### KNN算法实现
# a. 模型构建
# 模型中介绍的K值:n_neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, Y_train)# b. 模型效果输出
## 将正确的数据转换为矩阵形式
y_test_hot = label_binarize(Y_test,classes=(1,2,3))
## 得到预测属于某个类别的概率值
knn_y_score = knn.predict_proba(X_test)
## 计算roc的值
knn_fpr, knn_tpr, knn_threasholds = metrics.roc_curve(y_test_hot.ravel(),knn_y_score.ravel())
## 计算auc的值
knn_auc = metrics.auc(knn_fpr, knn_tpr)
print ("KNN算法R值:", knn.score(X_train, Y_train))
print ("KNN算法AUC值:", knn_auc)# c. 模型预测
knn_y_predict = knn.predict(X_test)## 画图2:预测结果画图
x_test_len = range(len(X_test))
plt.figure(figsize=(12, 9), facecolor='w')
plt.ylim(0.5,3.5)
plt.plot(x_test_len, Y_test, 'ro',markersize = 6, zorder=3, label=u'真实值')
plt.plot(x_test_len, knn_y_predict, 'yo', markersize = 16, zorder=1, label=u'KNN算法预测值,$R^2$=%.3f' % knn.score(X_test, Y_test))
plt.legend(loc = 'lower right')
plt.xlabel(u'数据编号', fontsize=18)
plt.ylabel(u'种类', fontsize=18)
plt.title(u'鸢尾花数据分类', fontsize=20)
plt.show()

机器学习接口和代码之 KNN相关推荐

  1. 机器学习接口和代码之 线性回归

    线性回归sklearn 接口和代码 官网api:https://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squ ...

  2. 机器学习 文本分类 代码_无需担心机器学习-如何在少于10行代码中对文本进行分类

    机器学习 文本分类 代码 This article builds upon my previous two articles where I share some tips on how to get ...

  3. 机器学习笔记(一) KNN K-最近邻

    零.摘要 本篇文章主要讲述KNN算法(K-nearest neighbor)的原理与技术细节,并简单提及了数据预处理的方法. 主要参考资料: 斯坦福CS231n课程笔记:分类 <机器学习> ...

  4. Python原生代码实现KNN算法(鸢尾花数据集)

    一.作业题目 Python原生代码实现KNN分类算法,使用鸢尾花数据集. KNN算法介绍: K最近邻(k-Nearest Neighbor,KNN)分类算法,是机器学习算法之一. 该方法的思路是:如果 ...

  5. 机器学习——K近邻算法(KNN)(K Nearest Neighbor)

    参考视频与文献: python与人工智能-KNN算法实现_哔哩哔哩_bilibili 机器学习--K近邻算法(KNN)及其python实现_清泉_流响的博客-CSDN博客_python实现knn 机器 ...

  6. 机器学习实战(3)—— kNN实战约会网站

    机器学习实战(3)-- kNN实战约会网站 老板:小韩啊,别忘了去改进一下约会网站的配对效果. 我:好嘞好嘞!马上工作!! 好了,又要开始一天的工作啦.接着上篇文章老板布置的任务,我们来看一下这次实战 ...

  7. 机器学习:k邻近算法(KNN)

    title: 机器学习:k邻近算法(KNN) date: 2019-11-16 20:20:41 mathjax: true categories: 机器学习 tags: 机器学习 什么是K邻近算法? ...

  8. java字典写实例,基于JAVA的新华字典接口调用代码实例

    基于JAVA的新华字典接口调用代码实例 接口描述:基于JA V A的新华字典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  9. 新书首发 | 《机器学习 公式推导与代码实现》正式出版!(文末送书)

    大家好!我是louwill. 经过一年零三个月的努力,<机器学习 公式推导与代码实现>已于日前正式出版了. 关注过这本书的公众号读者应该知道,这本书在系列原创机器学习30讲的基础上,并参考 ...

最新文章

  1. 从搭建脚手架到在npm上发布react组件
  2. sybase 数据库恢复
  3. 学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作
  4. OpenCV之calib3d 模块. 相机定标和三维重建
  5. Ubuntu16.04安装PCL库的python实现python-pcl,并且通过pcl加载pcd文件验证python-pcl是否安装成功
  6. Python开发基础----异常处理、socket套接字基础1
  7. html input日期值,input标签设置时间值
  8. C#开源类库推荐:拼多多开放平台SDK,开源免费,支持.NET Core!
  9. 计算机软件基础 一课本,计算机软件基础(-)课后习题答案.doc
  10. redis深度历险:核心原理与应用实践_送你一份Redis书单,以后使用缓存的问题不用再问我啦!...
  11. php curl 伪造IP来源的代码分享
  12. 女程序员上班第一件事:调整IDE颜色以适配今天的衣着妆容
  13. 有了中文版MSDN2,何必又东奔西走去找资料
  14. win10无线投屏花屏
  15. 遥感原理与应用-基本概念
  16. 人工智能学习笔记 - 预备篇之高中数学快速复习
  17. python生成泊松分布随机数_python-介绍泊松分布(poisson分布)
  18. [摘录]第二部分 战略决策(1)
  19. Knowledge based | 如何获取某类肿瘤中所有已被报道的相关突变基因?
  20. 增加路由表地址实现双网卡域名同时解析

热门文章

  1. 用户暴增下的收入降低,AWS面临尴尬
  2. C语言typedef关键字—伟大的缝纫师
  3. H264 CAVLC 研究
  4. 各种数据库对应的jar包、驱动类名和URL格式
  5. P3193 [HNOI2008]GT考试
  6. 《知易行难》扩展练习
  7. POJ 1273 Drainage Ditches 最大流
  8. JDK源码 - BitSet的实现
  9. Visual Studio.net 2010 Windows Service 开发,安装与调试
  10. asp.net定时执行任务-解决应用池回收问题----转载