K-Means 聚类实战

首先生成原始数据点:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans


def gen_clusters():
    mean1 = [0,0]
    cov1 = [[1,0],[0,10]]
    data = np.random.multivariate_normal(mean1,cov1,100)
    
    mean2 = [10,10]
    cov2 = [[10,0],[0,1]]
    data = np.append(data,
                     np.random.multivariate_normal(mean2,cov2,100),
                     0)
    
    mean3 = [10,0]
    cov3 = [[3,0],[0,4]]
    data = np.append(data,
                     np.random.multivariate_normal(mean3,cov3,100),
                     0)
    
    return np.round(data,4)

def show_scatter(data,colors):
    x,y = data.T
    plt.scatter(x,y,c=colors)
    plt.axis()
    plt.title("scatter")
    plt.xlabel("x")
    plt.ylabel("y")
    plt.show()
    
data = gen_clusters()
show_scatter(data,'k')

在这里插入图片描述
使用 K-Means 方法聚类:

// 初始化参数为 k-means++
estimator = KMeans(init='k-means++', n_clusters=3, n_init=3)
estimator.fit(data)
label2color = ['r','g','b']
colors = [label2color[i] for i in estimator.labels_]
show_scatter(data,colors)

初始化参数为 k-means++
在这里插入图片描述
初始化参数为 random
在这里插入图片描述
聚类中心:

centroids = estimator.cluster_centers_
print(centroids)
								#高斯中心
[[  9.8040697   -0.01635758]  ==>(10,0)
 [ 10.16384455  10.03000693]  ==>(10,10)
 [ -0.038093     0.13642   ]] ==>(0,0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值