k-means算法模块实现

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


def show_res(data, center, y_predict):
    """
    实现结果展示
    :param data: 数据
    :param center: 类别聚类
    :param y_predict: 聚类数据
    :return: None
    """
    # 创建画布
    plt.figure()

    index_num = data.shape[0]
    color = ['r', 'g', 'b']
    colors = []
    for i in range(index_num):
        colors.append(color[y_predict[i]])
    for i in range(index_num):
        plt.scatter(data.iloc[i, 0], data.iloc[i, 1],c=colors[i])

    # 进行绘制聚类中心
    plt.plot(center[:, 0],center[:, 1],'bx', markersize=12)
    plt.show()

def desc_sca(data):
    """
    小数定标标准化
    :param data: 传入数据
    :return: 标准化之后的数据
    """
    data = data/(10**np.ceil(np.log10(data.abs().max())))
    return data
# 加载数据
com = pd.read_csv('company.csv', encoding='gbk')

data = com[['平均每次消费金额', '平均消费周期(天)']]


# 标准化之后的data
data = desc_sca(data)

# 进行k-means算法聚类
# 确定聚类类别数目
k = 3

# 定义一个km对象
# n_clusters --》聚类类别数目
km = KMeans(n_clusters=k)

km.fit(data)  # 训练数据

y_predict = km.predict(data)  # 进行预测

# 聚类中心
center = km.cluster_centers_

# 结果展示
show_res(data, center, y_predict)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值