K均值:
是聚类算法中最简单的,高效的,属于无监督学习算法
核心思想:
由用户指定k个初始质心,以作为聚类的类别,重复迭代直至算法收敛
基本算法流程:
1.选取k个质心
2.对每个样本点,计算得到距其最近的质心,将其类别标为所对应的cluster(群)
3.重新计算k个cluster对应的质心
4.质心不再发生变化或迭代上限
代码部分:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 从sklearn中直接生成聚类数据
from sklearn.datasets.samples_generator import make_blobs
# 计算距离函数
from scipy.spatial.distance import cdist
# 数据加载
x,y = make_blobs(n_samples=100,centers=6,random_state=1234,cluster_std=0.6)
plt.figure(figsize=(10,8))
plt.scatter(x[:,0],x[:,1])
plt.title('K Means ')
# plt.show()
# 算法实现
class K_Means(object):
def __init__(self,n_cluster=6,max_iter=300,centroids=[]):
self.n_cluster = n_cluster
self.max_iter = max_iter
self.centroids &