聚类概念
无监督问题(无标签)
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分类的计算复杂度和训练集中的文档数目成正比