sklearn机器学习(二)k值近邻算法

学习scikit—learn机器学习的书上面的的k值近邻算法
并对这些算法加上自己的一些注解,为了以后能够快速的复习
以下是生成数据,没有分训练集和测试集,因为这只是个K值邻近算法的思想演示
至于k值邻近算法的思想就是在预测点附近找k个离它最近的点对它进行投票,
然后划分类别。

from sklearn.datasets.samples_generator import make_blobs
import numpy as np
import matplotlib.pyplot as plt
centers=[[-2,2],[2,2],[0,4]]中心点数组
X,y=make_blobs(n_samples=60,centers=centers,random_state=0,cluster_std=0.60)
   #为聚类产生数据集,一共生成60个样本,中心点为上面的中心数组
print(X.shape)#X的大小为(60,2)
plt.figure(figsize=(16,10),dpi=144)#画布大小
c=np.array(centers)#将数组进行转化
plt.scatter(X[:,0],X[:,1],c=y,s=100,cmap='cool')#散点图,画的是X[:,0]就是画布上的x,X[:,0]就是画布上的y
plt.scatter(c[:,0],c[:,1],s=100,marker='^',c='orange')#散点图,画出中心

以下是引入sklearn中的k值近邻算法

from sklearn.neighbors import KNeighborsClassifier#引入K近邻算法
k=5#这个就是K值近邻算法中的k了
clf=KNeighborsClassifier(n_neighbors=k)#实例化一个即近邻算法的对象,邻居个数为5
clf.fit(X,y)#生成分类器模型

以下是k值近邻算法的实例化

X_sample = [0, 2]#预测点
temp = np.array(X_sample).reshape((1, -1))#把X_sample转化为[[0,2]],因为clf.predict只接受2维数组
y_sample = clf.predict(temp)#用上面生成的分类器进行预测
print(y_sample)#值为零
neighbors = clf.kneighbors(temp, return_distance=False)#寻找到离预测点最近的五个点的坐标,
                                                       #给neighbors数组
print(neighbors[0])#[16 20 48  6 23],可能因为环境不同,而变化

以下是画出来的部分

plt.figure(figsize=(16, 10), dpi=144)#画布大小

plt.scatter(X[:, 0], X[:, 1], c=y, s=100, cmap='cool')#数据
plt.scatter(c[:, 0], c[:, 1], s=100, marker='^', c='k')  # 中心点
plt.scatter(X_sample[0], X_sample[1], marker="x",c='r', s=100, cmap='cool')#画出预测点
for i in neighbors[0]:#5次
    plt.plot([X[i][0],X_sample[0]],[X[i][1],X_sample[1]],'k--',linewidth=0.6)#生成虚线连接起来
    

最后的输出
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值