K-means聚类算法简述
K-means聚类算法有个大前提, 就是面对一堆数据, 我们事先知道这些数据的种类数.
聚类算法通过迭代计算数据与中心点的距离, 最终锁定种类中心的方式, 实现数据的分类.
代码案例
使用k聚类算法对用户购物篮进行分类
数据集链接 提取码: n53x
import pandas as pd
# 导入特征降维工具
from sklearn.decomposition import PCA
# 导入聚类算法估计器
from sklearn.cluster import KMeans
# 商品所属具体物品类别
# aisle_id, aisle
aisles = pd.read_csv("D:/shopdata/aisles.csv")
# 商品信息
# product_id, product_name, aisle_id, department_id, ....
products = pd.read_csv("D:/shopdata/products.csv")
# 用户订单信息
# order_id, user_id, eval_set, order_number, ...
orders = pd.read_csv("D:/shopdata/orders.csv")
# 订单与商品信息
# 字段: order_id, product_id, add_to_cart_roder, reordered, ...
order_products_prior = pd.read_csv("D:/shopdata/order_products__prior.csv")
# 合并表信息为一张表
ap = pd.merge(aisles, products, on=["aisle_id", "aisle_id"])
oo = pd.merge(orders[:100000], order_products_prior[:100000], on=["order_id", "order_id"])
apoo = pd.merge(ap, oo[:100000], on=["product_id", "product_id"])
# 交叉表信息, 获取user_id 所对应的aisle物品类别信息
cross_data = pd.crosstab(apoo["user_id"], apoo["aisle"])
# 特征工程: 特征降维
# n_components 保存原数据信息的百分比
pca = PCA(n_components=0.95)
data = pca.fit_transform(cross_data)
# 使用聚类算法估计器计算模型
kmeans = KMeans(n_clusters=5)
kmeans.fit(data)
# 使用模型预测部分数据
res = kmeans.predict(data[:100])
print(res)