赞
踩
之前的笔记因为重装系统全没了,因此试试在线保存。
K-means算法是无监督学习中的一种,
1. 随机设置K个聚类中心。
2. 对所有点按照到聚类中心的距离进行分类。
3.分别对K类,取类中的平均值作为新的聚类中心。
4.若新聚类中心和上次聚类中心一致,则停止;否则重复步骤2。
参考视频:15-KMeans算法原理_哔哩哔哩_bilibili
- import pandas as pd
- from sklearn.decomposition import PCA
- from sklearn.cluster import KMeans
- from sklearn.metrics import silhouette_score
-
- # 1、获取数据,数据来源http://yun.itheima.com/course/500.html?bili
- order_products = pd.read_csv("./instacart/order_products__prior.csv")
- products = pd.read_csv("./instacart/products.csv")
- orders = pd.read_csv("./instacart/orders.csv")
- aisles = pd.read_csv("./instacart/aisles.csv")
- # 合并aisles和products aisle和product_id
- tab1 = pd.merge(aisles, products, on=["aisle_id", "aisle_id"])
- tab2 = pd.merge(tab1, order_products, on=["product_id", "product_id"])
- tab3 = pd.merge(tab2, orders, on=["order_id", "order_id"])
- # 3、找到user_id和aisle之间的关系
- table = pd.crosstab(tab3["user_id"], tab3["aisle"])
- data = table[:10000]
- # 4、PCA降维
- # 1)实例化一个转换器类
- transfer = PCA(n_components=0.95)
- # 2)调用fit_transform
- data_new = transfer.fit_transform(data)
- # 预估器
- estimator = KMeans(n_clusters=3)
- estimator.fit(data_new)
- y_predict = estimator.predict(data_new)
- # 模型评估-轮廓系数
- print(f"轮廓系数:{silhouette_score(data_new, y_predict)}")

运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。