R语言之动态聚类分析
关键词:r语言 聚类分析、r语言 kmeans聚类分析、r语言聚类分析实例、r语言聚类分析包、r语言做聚类分析、r语言做变量聚类分析
1、关键点
系统聚类分析与动态聚类分析的比较:
a.系统聚类分析
#系统聚类一次形成之后就不能再改变 这需要一次分得比较准确 对分类的方法有很高的要求
#相应的计算量也会很大比如Q型系统聚类法聚类的过程是在样本间距离矩阵的基础上进行的
#当样本容量很大时 需要占用足够的计算机内存 而且在并类过程中 需要将每类样本和其他样本间的距离
#逐一加一比较 以决定应该合并的类别 需哟很长的计算时间
b.动态聚类分析
#动态聚类法又称为 逐步聚类法 基本思想是 开始先粗略地分一下类 然后按照某种最优原则修改不合理的分类
#直至类分得比较合理为止 适用于大样本的Q型聚类分析
2、函数
#R语言中提供的动态聚类分析的函数 kmeans()函数
#kmeans()函数采用的是K-均值方法 是采用逐个修改的方法
#kmeans()函数形式 kmeans(x,centers,iter.max=10,nstart=1,algorithm=c())
#x是由数据构成的矩阵或者数据框 centers是聚类的个数或者是初始类的中心
#iter.max是最大迭代次数缺省时为10
#nstart随机集合的个数(当centers为聚类的个数时)
#algorithm为动态聚类的算法 “Hartigan-Wong”(缺省时), “Lloyd”,”Forgy”, “MacQueen
3、案例分析
#1.载入原始数据并作相关处理
X<-data.frame(
x1=c(2959.19, 2459.77, 1495.63, 1046.33, 1303.97, 1730.84,
1561.86, 1410.11, 3712.31, 2207.58, 2629.16, 1844.78,
2709.46, 1563.78, 1675.75, 1427.65, 1783.43, 1942.23,
3055.17, 2033.87, 2057.86, 2303.29, 1974.28, 1673.82,
2194.25, 2646.61, 1472.95, 1525.57, 1654.69, 1375.46,
1608.82),
x2=c(730.79, 495.47, 515.90, 477.77, 524.29, 553.90, 492.42,
510.71, 550.74, 449.37, 557.32, 430.29, 428.11, 303.65,
613.32, 431.79, 511.88, 512.27, 353.23, 300.82, 186.44,
589.99, 507.76, 437.75, 537.01, 839.70, 390.89, 472.98,
437.77, 480.99, 536.05),
x3=c(749.41, 697.33, 362.37, 290.15, 254.83, 246.91, 200.49,
211.88, 893.37, 572.40, 689.73, 271.28, 334.12, 233.81,
550.71, 288.55, 282.84, 401.39, 564.56, 338.65, 202.72,
516.21, 344.79, 461.61, 369.07, 204.44, 447.95, 328.90,
258.78, 273.84, 432.46),
x4=c(513.34, 302.87, 285.32, 208.57, 192.17, 279.81, 218.36,
277.11, 346.93, 211.92, 435.69, 126.33, 160.77, 107.90,
219.79, 208.14, 201.01, 206.06, 356.27, 157.78, 171.79,
236.55, 203.21, 153.32, 249.54, 209.11, 259.51, 219.86,
303.00, 317.32, 235.82),
x5=c(467.87, 284.19, 272.95, 201.50, 249.81, 239.18, 220.69,
224.65, 527.00, 302.09, 514.66, 250.56, 405.14, 209.70,
272.59, 217.00, 237.60, 321.29, 811.88, 329.06, 329.65,
403.92, 240.24, 254.66, 290.84, 379.30, 230.61, 206.65,
244.93, 251.08, 250.28),
x6=c(1141.82, 735.97, 540.58, 414.72, 463.09, 445.20, 459.62,
376.82, 1034.98, 585.23, 795.87, 513.18, 461.67, 393.99,
599.43, 337.76, 617.74, 697.22, 873.06, 621.74, 477.17,
730.05, 575.10, 445.59, 561.91, 371.04, 490.90, 449.69,
479.53, 424.75, 541.30),
x7=c(478.42, 570.84, 364.91, 281.84, 287.87, 330.24, 360.48,
317.61, 720.33, 429.77, 575.76, 314.00, 535.13, 509.39,
371.62, 421.31, 523.52, 492.60, 1082.82, 587.02, 312.93,
438.41, 430.36, 346.11, 407.70, 269.59, 469.10, 249.66,
288.56, 228.73, 344.85),
x8=c(457.64, 305.08, 188.63, 212.10, 192.96, 163.86, 147.76,
152.85, 462.03, 252.54, 323.36, 151.39, 232.29, 160.12,
211.84, 165.32, 182.52, 226.45, 420.81, 218.27, 279.19,
225.80, 223.46, 191.48, 330.95, 389.33, 191.34, 228.19,
236.51, 195.93, 214.40),
row.names=c(“北京”,”天津”,”河北”,”山西”,”内蒙古”,
“辽宁”,”吉林”,”黑龙江”,”上海”,”江苏”,”浙江”,
“安徽”,”福建”,”江西”,”山东”,”河南”,”湖北”,
“湖南”,”广东”,”广西”,”海南”,”重庆”,”四川”,
“贵州”,”云南”,”西藏”,”陕西”,”甘肃”,”青海” ,
“宁夏”,”新疆”)
)
#scale对数据做中心化或者标准化处理 这样影响做的目的是为了消除数量级的影响以及单位的影响
d=dist(scale(X))
#2.用kmeans()函数做动态聚类分析 选择类的个数为5个
km<-kmeans(d,5,nstart=20);
km
其中 size为每一个类的个数 means表示各个类的均值 clusting表示各个类的分类情况
#3.查看分类结果
sort(km$cluster)
通过sort()函数查看分类结果 从而得到各个类的成员
转载请注明:数据分析 » R语言之动态聚类分析_r语言 聚类分析