基于KMeans对商场顾客进行聚类

背景知识:聚类是一种无监督学习

需求:对商场顾客进行聚类(打标签)

用到的核心算法:KMeans

完整代码:

# coding: utf-8
from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
from sklearn.preprocessing import LabelEncoder

# 数据加载
data = pd.read_csv('Mall_Customers.csv')
# 只要这几列数据
train_x = data[["Gender", "Age", "Annual Income (k$)", "Spending Score (1-100)"]]

# LabelEncoder(有几个分类,从0,1...开始做成几个标签)
# Gender原来是Male、Female,现在是0,1
le = LabelEncoder()
train_x['Gender'] = le.fit_transform(train_x['Gender'])

# 规范化到[0,1]空间(规范化用不用都行,用的话会好一点)
min_max_scaler = preprocessing.MinMaxScaler()
train_x = min_max_scaler.fit_transform(train_x)
# pd.DataFrame(train_x).to_csv('temp.csv', index=False)
# print(train_x)
# 使用KMeans聚类(n_clusters决定聚成几个类别)
kmeans = KMeans(n_clusters=3)
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)
# 合并聚类结果,插入到原数据中
result = pd.concat((data, pd.DataFrame(predict_y)), axis=1)
# 给result列数据起一个列名
result.rename({0: u'聚类结果'}, axis=1, inplace=True)
# 结果按照 '聚类结果' 列从小到大进行排序
result.sort_values(u'聚类结果', inplace=True)
print(result)
# 将结果导出到CSV文件中
result.to_csv("customer_cluster_result.csv", index=False)

聚类结果:

 

今天是重感冒的一天,也是英雄联盟手游海外公测的第一天。

 

posted @ 2020-10-28 20:05  mingke07  阅读(605)  评论(0)    收藏  举报