sklearn学习笔记(12)—— 聚类K-means

K-means原理

K-means步骤

  1. 随机设置K个特征空间内的点作为初始的聚类中心
  2. 对去其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心作为标记类别
  3. 接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
  4. 如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程

K-means性能评估指标

轮廓系数

计算公式:sc_i = \frac{b_i - a_i}{max(b_ia_i)}

注:对于每个点i为已聚类数据中的样本,b_i为i到其他族群的所有样本的距离最小值,a_i为i到本身族群的距离平均值

最终计算出所有样本点的轮廓系数平均值

K-means总结

特点:采用迭代试算法,直观易懂并且非常实用

缺点:容易收敛到局部最优解(多次聚类)

注意:聚类一般做在分类之前


sklearn K-meansAPI:sklearn.cluster.KMeans

sklearn K-means性能评估API:sklearn.metrics.silhouette_score

 

# -*- coding: utf-8 -*-


import pandas as pd
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 读取数据
# 订单信息 order_id, product_id
prior = pd.read_csv("./instacart/order_products__prior.csv")
# 商品表 product_id, aisles_id
products = pd.read_csv("./instacart/products.csv")
# 用户与订单表 user_id, order_id
orders = pd.read_csv("./instacart/orders.csv")
# 商品名称表 aisle_id, aisles
aisles = pd.read_csv("./instacart/aisles.csv")

# 合并四张表到一张表
mg = pd.merge(prior, products, on=["product_id", "product_id"])
mg = pd.merge(mg, orders, on=["order_id", "order_id"])
merge_csv = pd.merge(mg, aisles, on=["aisle_id", "aisle_id"])

# 将数据变成行:用户, 列:物品类别名称      分组 交叉表; 特殊的分组
user_aisle = pd.crosstab(merge_csv["user_id"], merge_csv["aisle"])
# print(user_aisle.shape)

# 进行主成分分析
pc = PCA(n_components=0.9)
data = pc.fit_transform(user_aisle)


"""聚类 K-means"""
# 假设已经知道类别  4
cust_cluster = data[: 500]  # 取500个做聚类,可以取全部

# 实例化K-means
km = KMeans(n_clusters=4)
km.fit(cust_cluster)
predict = km.predict(cust_cluster)
print(predict)

# 计算聚类的效果
score = silhouette_score(cust_cluster, predict)
print(score)

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卞亚超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值