全文链接:http://tecdat.cn/?p=32785
本文的研究目的是基于R语言的k-prototype算法,帮助客户对新能源汽车行业上市公司进行混合型数据集的聚类分析(点击文末“阅读原文”获取完整代码数据)。
相关视频
通过对公司的财务数据、市场表现和发展战略等多个方面的变量进行聚类分析,我们可以将这些公司划分为不同的类别,并分析不同类别的特点和发展趋势。
这样的研究结果对于投资者、政策制定者和行业从业者都具有重要的参考价值,可以帮助他们更好地了解新能源汽车行业上市公司的发展状况和市场表现,从而做出更明智的决策。
分析目标
本项目旨在使用聚类算法对不同城市的新能源汽车行业上市公司进行分类与排序,以寻找客观真实的公司分层方法、支持业务运营与决策。
方法论
首先,由于数据集呈现分类变量与数值变量混合的特点,本次数据分析将采用K-prototype算法:
K-prototype算法:无需创建哑变量,将分别为分类变量计算汉明距离、为数值型变量计算欧几里得距离然后得出聚类结果。算法运行结束后将使用成本函数评价聚类效果。其次,数值型变量b、c、d的量纲明显不等,为避免量纲影响距离计算中不同变量的权重,需要对变量b、c、d进行处理。由于不知道是否符合正态分布,在这里使用归一化而非标准化。
查看数据
在进行聚类分析之前,首先需要查看数据集,了解数据的结构和特征。通过使用R语言中的相关函数和包,我们可以读取数据集,并使用函数如summary()和head()来查看数据的概要和前几行。
data=read.csv("新能源汽车 汇总.csv")
求出相关系数
在进行聚类分析之前,我们需要了解数据中各个变量之间的相关性。通过计算相关系数,我们可以得到一个关于变量之间关联程度的度量。R语言中的cor()函数可以用来计算相关系数矩阵,并通过可视化工具如热图来展示相关系数的模式。
对数据进行kp聚类(k=3)
在进行聚类分析之前,我们需要选择适当的聚类算法。对于混合型数据集,我们可以使用R语言中的k-prototype算法。该算法可以同时处理数值型和分类型变量,并根据变量之间的相似性将样本划分为不同的聚类。
x=data[,-c(1:2)]
d <- dist(x)
pclust=function(k){
n=nrow(data)
cut <- tocut(hc, k=k)
h <- hc$height[n - k]
clust(3)
点击标题查阅往期内容
左右滑动查看更多
lust(4)
st(5)
ust(6)
将数据使用算法分成4个类别后可以看到 每个类别之间分布呈不同的簇,交集较少 ,因此可以认为得到的聚类结果较好。
删除相关性变量
在进行聚类分析之前,我们需要删除相关性较高的变量。高相关性的变量可能会导致冗余的信息,并且可能会对聚类结果产生负面影响。通过计算变量之间的相关系数,并选择相关系数较低的变量进行保留,我们可以减少变量的维度,从而提高聚类的效果。
cor(data[,-c(1:2)])
找到高相关性变量(相关系数大于0.8)
除了删除高相关性的变量外,我们还可以找出相关系数较高的变量对。这些变量对可能包含一些重要的信息,可以帮助我们更好地理解数据。通过计算变量之间的相关系数,并选择相关系数较高的变量对,我们可以得到一组关键的变量对,用于进一步的分析和解释。
highcor=which(abs(cor(data[,-c(1:2)]))>0.85,arr.ind = T)
clust(2)
点击标题查阅往期内容
左右滑动查看更多
lust(3)
lust(4)
ust(5)
lust(6)
将数据使用算法分成4个类别后可以看到 每个类别之间分布呈不同的簇,交集较少 ,因此可以认为得到的聚类结果较好。
数据标准化
在进行聚类分析之前,我们需要对数据进行标准化。标准化可以将不同变量之间的尺度差异进行统一,从而避免某些变量对聚类结果的影响过大。通过使用R语言中的scale()函数,我们可以对数据进行标准化处理。
x=scale(data2[,-c(1:2)])
d <- dist(x)
hc <- rolust(d)
lust(2)
st(3)
ust(4)
ust(5)
ust(6)
将数据使用算法分成4个类别后可以看到 每个类别之间分布呈不同的簇,交集较少 ,因此可以认为得到的聚类结果较好。
通过以上步骤,我们可以使用R语言中的k-prototype算法对混合型数据集进行聚类分析,从而帮助我们更好地理解和解释新能源汽车行业上市公司的特征和模式。这对于业界和学术界的研究人员来说,具有重要的实际和理论意义。
本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!
点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《R语言k-prototype聚类新能源汽车行业上市公司分析混合型数据集》。
点击标题查阅往期内容