任务九 深度学习 K近邻学习

目录

k近邻算法

neighbors.KNeighborsClassifier参数说明

knn实例 

神经网络​编辑

线性函数

从得分值变为概率值

损失函数

激活层


k近邻算法

K Nearest Neighbor算法又叫KNN算法 

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

knn算法的核心思想是未标记样本的类别,由距离其最近的k个邻居投票来决定。

neighbors.KNeighborsClassifier参数说明

KNeighborsClassifier(n_neighbors=5,weights=’uniform’,algorithm=’auto’,leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1,**kwargs) 

KNN算法说明以及sklearn 中 neighbors.KNeighborsClassifier参数说明_一年又半的博客-CSDN博客_kneighborsclassifier 参数

n_neighbors: int, 可选参数(默认为 5)

用于kneighbors查询的默认邻居的数量

p: int, 可选参数(默认为 2)

用于Minkowski metric(闵可夫斯基空间)的超参数。对于任何 p ,使用的是闵可夫斯基空间(l_p)

p = 1, 相当于使用曼哈顿距离 (l1),

p = 2, 相当于使用欧几里得距离(l2)

knn实例 

python绘图基础—scatter用法_xiaobaicai4552的博客-CSDN博客_ax.scatter 

构造出X数据集,y是分类集,做中心点分别为[-2,2],[2,2],[0,4]的三个分类,在最后将X和y打印出来可以看到 

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# 生成数据
centers = [[-2,2], [2,2], [0,4]]
X, y = make_blobs(n_samples=60, centers=centers,
                 random_state=0, cluster_std=0.60)

print(X)
print("---------")
print(y)

把现在的这个训练集画出来

plt.scatter(c[:,0], c[:,1], s=100, marker='^',c='orange')
这一行画的是中心点

# 画出数据
plt.figure(figsize=(16,10), dpi=144)
c = np.array(centers)
# 画出样本
plt.scatter(X[:,0], X[:,1], c=y, s=100, cmap='cool')
# 画出中心点
plt.scatter(c[:,0], c[:,1], s=100, marker='^',c='orange')
plt.savefig('knn_centers.png')
plt.show()

模型训练 使用了KNeighborsClassifier函数

# 模型训练
k = 5
clf = KNeighborsClassifier(n_neighbors = k)
clf.fit(X, y)

构造用于测试的的数据集,在这里y_sample使用了predict函数,得到的是分类结果集合,neighbors是用于测试的数据与他相邻的点的下标

# 进行预测
X_sample = np.array([[0, 2]])
y_sample = clf.predict(X_sample)
neighbors = clf.kneighbors(X_sample, return_distance=False)
print(X_sample)
print(y_sample)
print(neighbors)

 画出示意图

# 画出示意图
plt.figure(figsize=(16,10), dpi=144)
c = np.array(centers)
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][0], X_sample[0][1], marker="x",
           s=100, cmap='cool')      # 待预测的点

for i in neighbors[0]:
    plt.plot([X[i][0], X_sample[0][0]], [X[i][1], X_sample[0][1]],
            'k--', linewidth=0.6)  # 预测点与距离最近的5个样本的连线

plt.savefig('knn_predict.png')
plt.show()

 

 k-近邻算法梳理(从原理到示例)_JaquanC的博客-CSDN博客_k近邻算法的原理

神经网络

 

线性函数

 

当w是一个数时,可以映射到一个二维平面上

从得分值变为概率值

损失函数

衡量我们分类结果

激活层

激活层是为矩阵运算的结果添加非线性

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值