机器学习8聚类算法+KNN

聚类概念
在这里插入图片描述
无监督问题(无标签)
k-means算法
聚类:相似的东西分到一组
难点:评估,调参

指定一个K值,要得到簇的个数
质心:均值,向量各维取平均值
距离的度量:常用欧几里得距离和余弦相似度
在这里插入图片描述

工作流程:
在这里插入图片描述
KMeans实现图像压缩

from skimage import io
from sklearn.cluster import KMeans
import numpy as np
image = io.imread(' ')
io.imshow(image)
io.show()
rows = image.shape[0]
cols = image.shape[1]
image = image.reshape(image.shape[0]*image.shape[1], 3)
kmeans = KMeans(n_cluster=128, n_init=10, max_iter=200)
kmeans.fit(image)

clusters = np.asarray(kmeans.cluster_centers_, dtype=np.uint8)
labels = np.asarray(kmeans.labels_, dtype=np.uint8)
labels = labels.reshape(rows, cols)
np.save(" ", clusters)
io.imsave(" ", labels)

K-近邻
1.计算已知类别数据集中的点与当前点的距离
2.按照距离依次排序
3.选取与当前点距离最小的k个点
4.确定前k个点所在类别的出现概率
5.返回前k个点出现频率最高的类别作为当前点预测分类

KNN算法本身简单有效,它是一种lazy-learning算法
分类器不需要使用训练集进行训练,训练时间复杂度为0。
KNN分类的计算复杂度和训练集中的文档数目成正比

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章