聚类(kmeans)-吴恩达机器学习基于python

导入包

import scipy.io as sio # load mat
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans

visualize data

## data1
mat1 = sio.loadmat(r'D:\python_try\5. AndrewNg_ML\data\kmeans and pca\ex7data1.mat')
data1 = pd.DataFrame(mat1.get('X'), columns=['X1', 'X2'])

## data2
mat2 = sio.loadmat(r'D:\python_try\5. AndrewNg_ML\data\kmeans and pca\ex7data2.mat')
data2 = pd.DataFrame(mat2.get('X'), columns=['X1', 'X2'])

画出data2的图形

sns.lmplot('X1', 'X2', data=data2, fit_reg=None)
plt.show()

输出

2D Kmeans

原理步骤

  1. 选择k个随机的点,成为聚类中心(cluster centroids)
  2. 对于数据集中的每一个数据,按照距离k个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类
  3. 计算每一组的平均值,将该组所关联的中心点移动到平均值的位置

重复step2、3直至中心点不发生改变

步骤编程

生成随机的k个中心

思路:sample(k)

def random_init(data, k):
    return data.sample(k).as_matrix() #as_matrix(): 转换成array

分配聚类

思路:

  1. 单个分配
  2. 集体分配:套用单个
# 单个找寻聚类
def find_cluster(x, centroids):
    distances = np.apply_along_axis(func1d=np.linalg.norm, a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值