python机器学习手写算法系列——KNN分类

编程入门 行业动态 更新时间:2024-10-04 19:23:23

python机器学习手写<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法系列——KNN分类"/>

python机器学习手写算法系列——KNN分类

现实当中,富人的邻居可能也是富人,穷人的邻居可能也是穷人。如果你的邻居都是富人,那么,你很可能也是富人。基于此,我们有了KNN算法。KNN的全名是K-Nearest Neighbors,即K个最近的邻居。他通过距离被预测点最近的K个邻居来预测被预测点。

如下图所示,绿色的圆形是被预测点。它周围有红色三角和蓝色正方形。如果我们取K为3,那么,它的三个邻居是两个红色三角和一个蓝色正方形。因为它的邻居里面,最多的就是红色三角,所以我们预测它也是红色三角。


(图一)

首先,我们载入数据。这里我们以iris数据集为例。

import math
from collections import Counter 
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
# Create color maps
cmap_light = ListedColormap(['orange', 'cyan', 'cornflowerblue'])
cmap_bold = ListedColormap(['darkorange', 'c', 'darkblue'])
from sklearn import neighbors, datasetsn_neighbors = 15# import some data to play with
iris = datasets.load_iris()# we only take the first two features. We could avoid this ugly
# slicing by using a two-dim dataset
X = iris.data[:, :2]
y = iris.target

接着,我们写一个KNNClassifier类。这里,最关键的参数当然是k,或者叫n_neighbors。接着,我们写一个fit方法。这个方法除了“记住”数据外,不做任何事情。因为这个特点,我们叫KNN为lazy algorithm。在预测方法predict_one里,我们首先计算被预测点到数据集中每个点的距离,我们得到了 d i s t a n c e _ a r r a y distance\_array distance_array。我们用numpy里面的argsort函数,把这些距离从小到大排序,并得到他们的坐标。我们取前k个坐标,得到相应的标签 n e i g h b o u r _ l a b e l s neighbour\_labels nei

更多推荐

python机器学习手写算法系列——KNN分类

本文发布于:2024-02-28 06:31:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768369.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   机器   系列   python   KNN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!