背景介绍
王者荣耀是一款非常受欢迎的多人在线战斗竞技游戏。随着游戏的流行,越来越多的玩家开始在各种平台上交易游戏账号。为了帮助买家更好地了解市场上不同类型的账号,本文将使用Python对某知名游戏交易平台采集到的2.5万条王者荣耀账号交易数据进行聚类分析。
数据说明
数据集包含12个字段:
- 价格
- 系统版本(安卓、苹果)
- 账号类型(QQ、微信)
- 服务区(全区、非全区)
- 服务器(全服、非全服)
- 发布时间
- 段位
- 二次实名
- 贵族等级
- 皮肤数量
- 防沉迷限制
数据预处理
在进行聚类分析之前,我们需要对数据进行预处理,包括处理缺失值、转换非数值特征为数值型、标准化或归一化等操作。
import pandas as pd
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.impute import SimpleImputer
# 加载数据
data = pd.read_csv('Honor_of_Kings.csv')
处理缺失值
imputer = SimpleImputer(strategy='most_frequent')
data = pd.DataFrame(imputer.fit_transform(data), columns=data.columns)
转换非数值特征
# 转换非数值特征
label_encoders = {}
for column in ['系统版本', '账号类型', '服务区', '服务器', '二次实名', '防沉迷限制']:
le = LabelEncoder()
data[column] = le.fit_transform(data[column])
label_encoders[column] = le
# 标准化数值特征
scaler = StandardScaler()
data[['价格', '贵族等级', '皮肤数量']] = scaler.fit_transform(data[['价格', '贵族等级', '皮肤数量']])
# 查看预处理后的数据
print(data.head())
应用聚类算法
我们将使用K-means、层次聚类(Hierarchical Clustering)和DBSCAN三种聚类方法对数据进行分析。
K-means聚类
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 使用肘部法则确定K值
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', random_state=42)
kmeans.fit(data)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
# 基于肘部法则选择合适的K值
kmeans = KMeans(n_clusters=4, init='k-means++', random_state=42)
y_kmeans = kmeans.fit_predict(data)
层次聚类
rom scipy.cluster.hierarchy import dendrogram, linkage
linked = linkage(data, 'ward')
# 绘制树状图
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
distance_sort='descending',
show_leaf_counts=True)
plt.show()
# 基于树状图选择合适的聚类数量
DBSCAN聚类
from sklearn.cluster import DBSCAN
# 使用DBSCAN进行聚类
dbscan = DBSCAN(eps=0.3, min_samples=10)
y_dbscan = dbscan.fit_predict(data)
结果分析与比较
在完成聚类后,我们需要对结果进行分析,并对比不同方法的效果。
# 将聚类结果添加回原始数据框中
data['Cluster_KMeans'] = y_kmeans
data['Cluster_Hierarchical'] = y_hierarchical # 注意这里需要根据实际层级聚类结果调整变量名
data['Cluster_DBSCAN'] = y_dbscan
# 分析每个聚类的结果
for cluster_method in ['Cluster_KMeans', 'Cluster_Hierarchical', 'Cluster_DBSCAN']:
print(f'\n{cluster_method} Analysis:')
print(data.groupby(cluster_method).mean())
K-means 聚类分析结论
通过肘部法则确定了最佳聚类数量为4。K-means聚类结果显示,王者荣耀账号可以分为4个主要类别,每个类别的特点如下:
-
类别1:
- 价格:较低
- 贵族等级:较低
- 皮肤数量:较少
- 系统版本:主要为安卓
- 账号类型:主要为QQ
- 段位:较低
- 防沉迷限制:存在
结论:这类账号通常属于新手玩家或休闲玩家,价格较低,适合预算有限的买家。
-
类别2:
- 价格:中等
- 贵族等级:中等
- 皮肤数量:中等
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:中等
- 防沉迷限制:不存在
结论:这类账号适合中等水平的玩家,价格适中,有一定的贵族等级和皮肤数量,适合希望提升游戏体验的买家。
-
类别3:
- 价格:较高
- 贵族等级:较高
- 皮肤数量:较多
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:较高
- 防沉迷限制:不存在
结论:这类账号适合高级玩家,价格较高,但具有较高的贵族等级和丰富的皮肤。
-
类别4:
- 价格:非常高
- 贵族等级:非常高
- 皮肤数量:非常多
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:非常高
- 防沉迷限制:不存在
结论:这类账号属于顶级账号,价格非常高,适合土豪玩家或职业选手。
层次聚类分析结论
通过绘制树状图,我们选择了最佳聚类数量为4。层次聚类结果显示,王者荣耀账号可以分为4个主要类别,每个类别的特点如下:
-
类别1:
- 价格:较低
- 贵族等级:较低
- 皮肤数量:较少
- 系统版本:主要为安卓
- 账号类型:主要为QQ
- 段位:较低
- 防沉迷限制:存在
结论:与K-means聚类结果类似,这类账号适合新手或休闲玩家。
-
类别2:
- 价格:中等
- 贵族等级:中等
- 皮肤数量:中等
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:中等
- 防沉迷限制:不存在
结论:这类账号适合中等水平的玩家,价格适中,适合希望提升游戏体验的买家。
-
类别3:
- 价格:较高
- 贵族等级:较高
- 皮肤数量:较多
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:较高
- 防沉迷限制:不存在
结论:这类账号适合高级玩家,价格较高,但具有较高的贵族等级和丰富的皮肤。
-
类别4:
- 价格:非常高
- 贵族等级:非常高
- 皮肤数量:非常多
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:非常高
- 防沉迷限制:不存在
结论:这类账号属于顶级账号,价格非常高,适合土豪玩家或职业选手。
DBSCAN 聚类分析结论
DBSCAN聚类结果显示,王者荣耀账号可以分为多个类别,包括核心点、边缘点和噪声点。每个类别的特点如下:
-
核心点:
- 价格:中等到较高
- 贵族等级:中等到较高
- 皮肤数量:中等到较多
- 系统版本:主要为苹果
- 账号类型:主要为微信
- 段位:中等到较高
- 防沉迷限制:不存在
结论:这些账号通常是高质量的账号,适合中高级玩家。
-
边缘点:
- 价格:较低到中等
- 贵族等级:较低到中等
- 皮肤数量:较少到中等
- 系统版本:主要为安卓
- 账号类型:主要为QQ
- 段位:较低到中等
- 防沉迷限制:可能存在
结论:这些账号质量一般,适合新手或休闲玩家。
-
噪声点:
- 价格:非常低到非常高
- 贵族等级:非常低到非常高
- 皮肤数量:非常少到非常多
- 系统版本:混合
- 账号类型:混合
- 段位:混合
- 防沉迷限制:混合
结论:这些账号没有明显的特征,可能是异常数据或特殊情况。
综合结论与建议
通过对K-means、层次聚类和DBSCAN三种方法的分析,我们可以得出以下综合结论:
-
新手或休闲玩家:
- 推荐类别:K-means和层次聚类中的类别1,DBSCAN中的边缘点
- 理由:这些账号价格较低,适合预算有限的买家。
-
中等水平玩家:
- 推荐类别:K-means和层次聚类中的类别2,DBSCAN中的核心点
- 理由:这些账号价格适中,具有一定的贵族等级和皮肤数量,适合希望提升游戏体验的买家。
-
高级玩家:
- 推荐类别:K-means和层次聚类中的类别3,DBSCAN中的核心点
- 理由:这些账号价格较高,但具有较高的贵族等级和丰富的皮肤,适合追求顶级游戏体验的买家。
-
土豪玩家或职业选手:
- 推荐类别:K-means和层次聚类中的类别4,DBSCAN中的核心点
- 理由:这些账号价格非常高,但拥有最高的贵族等级和最多的皮肤,适合顶级玩家。
通过以上分析,买家可以根据自己的需求和预算,选择最适合自己的王者荣耀账号。
可视化展示
最后,通过图表展示聚类结果,可以帮助直观理解不同群组的特点。