分析总结Python数据化运营KMeans聚类攻略
背景
在进行数据化运营的过程中,我们经常需要对用户行为、产品属性等数据进行分析。KMeans聚类是常用的无监督机器学习算法,可以帮助我们进行数据聚类分析。
步骤
- 准备数据集
将需要分析的数据集读取进来,进行预处理,数据清洗,确保数据的准确性和完整性。
- 定义距离度量
定义距离度量方法,用来衡量数据点之间的距离。
- 选择合适的K值
KMeans聚类需要预先设定分组数量,也就是K值。可以通过手肘法、轮廓系数等方法来选择合适的K值。
- 训练模型
将数据集输入KMeans聚类模型中,进行训练。
- 可视化
通过可视化工具将聚类结果进行展示,便于我们更好地理解分析结果。
示例一
以鸢尾花数据集为例,进行KMeans聚类分析。
- 准备数据集
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
- 定义距离度量
from scipy.spatial.distance import euclidean
def dist(a, b):
return euclidean(a, b)
- 选择合适的K值
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
K = range(1, 10)
SSE = []
# Sum of squared errors
for k in K:
estimator = KMeans(n_clusters=k)
estimator.fit(X)
SSE.append(estimator.inertia_)
plt.plot(K, SSE, 'o-')
plt.xlabel('K')
plt.ylabel('SSE')
plt.show()
- 训练模型
estimator = KMeans(n_clusters=3)
estimator.fit(X)
labels = estimator.labels_
- 可视化
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(1, figsize=(8,8))
ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
ax.scatter(X[:, 3], X[:, 0], X[:, 2],c=labels.astype(np.float), edgecolor="k")
ax.set_xlabel("花瓣宽度")
ax.set_ylabel("花萼长度")
ax.set_zlabel("花瓣长度")
plt.show()
示例二
以国际足球比赛数据集为例,进行KMeans聚类分析。
- 准备数据集
import pandas as pd
df = pd.read_csv('results.csv')
X = df[['home_score', 'away_score']].values
- 定义距离度量
def dist(a, b):
return abs(a[0] - b[0]) + abs(a[1] - b[1])
- 选择合适的K值
K = range(1, 10)
SSE = []
for k in K:
estimator = KMeans(n_clusters=k)
estimator.fit(X)
SSE.append(estimator.inertia_)
plt.plot(K, SSE, 'o-')
plt.xlabel('K')
plt.ylabel('SSE')
plt.show()
- 训练模型
estimator = KMeans(n_clusters=3)
estimator.fit(X)
labels = estimator.labels_
- 可视化
import seaborn as sns
df['cluster'] = labels
sns.scatterplot(x="home_score", y="away_score",hue='cluster',palette=["y", "b", "r"], data=df)
plt.show()
总结
上述两个示例展示了KMeans聚类的使用方法,选取了不同的数据集进行训练及可视化。最后利用可视化工具将聚类结果展示出来,帮助我们更好地理解分析结果。KMeans聚类并不是万能的,不同的数据集需要选择不同的算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:分析总结Python数据化运营KMeans聚类 - Python技术站