第十三周作业
kyphosis的决策树模型
library(rpart.plot)
tr = rpart(Kyphosis ~ ., data = kyphosis, method = "class")
rpart.plot(tr, branch = 1, branch.type = 2, type = 1, extra = 8, shadow.col = "gray",
box.col = "green", border.col = "blue", split.col = "red", split.cex = 1.2,
main = "Kyphosis决策树")

8.3 90年全国人口普查聚类分析
输入数据
x = c(9.3, 4.67, 0.96, 1.38, 1.48, 2.6, 2.15, 2.14, 6.53, 1.47, 1.17, 0.88,
1.23, 0.99, 0.98, 0.85, 1.57, 1.14, 1.34, 0.79, 1.24, 0.96, 0.78, 0.81,
0.57, 1.67, 1.1, 1.49, 1.61, 1.85)
y = c(30.55, 29.38, 24.69, 29.24, 25.47, 32.32, 26.31, 28.46, 31.59, 26.43,
23.74, 19.97, 16.87, 18.84, 25.18, 26.55, 23.16, 22.57, 23.04, 19.14, 22.53,
21.65, 14.65, 13.85, 3.85, 24.36, 16.85, 17.76, 20.27, 20.66)
z = c(8.7, 8.92, 15.21, 11.3, 15.39, 8.81, 10.49, 10.87, 11.04, 17.23, 17.46,
24.43, 15.63, 16.22, 16.87, 16.15, 15.79, 12.1, 10.45, 10.61, 13.97, 16.24,
24.27, 25.44, 44.43, 17.62, 27.93, 27.7, 22.06, 12.75)
ex83 = cbind(x, y, z)
rownames(ex83) = c("北京", "天津", "河北", "山西", "内蒙古", "辽宁",
"吉林", "黑龙江", "上海", "江苏", "浙江", "安徽", "福建",
"江西", "山东", "河南", "湖北", "湖南", "广东", "广西", "海南",
"四川", "贵州", "云南", "西藏", "陕西", "甘肃", "青海", "宁夏",
"新疆")
绘图
out.dist = dist(ex83, method = "euclidean"); #计算样本的欧式距离
hc1 = hclust(out.dist, method = "complete"); #根据最长距离法聚类
hc2 = hclust(out.dist, method = "average"); #根据均值法聚类
hc3 = hclust(out.dist, method = "centroid"); #根据重心法聚类
hc4 = hclust(out.dist, method = "ward"); #根据Ward法聚类
opar = par(mfrow=c(2,2));
plclust(hc1);
rect.hclust(hc1, k=4);
plclust(hc2);
rect.hclust(hc2, k=4);
plclust(hc3);
rect.hclust(hc3, k=4);
plclust(hc4);
rect.hclust(hc4, k=4);
par(opar);

分类结果
clgroup1 = cutree(hc1, k = 4)
clgroup2 = cutree(hc2, k = 4)
clgroup3 = cutree(hc3, k = 4)
clgroup4 = cutree(hc4, k = 4)
sort(clgroup1)
## 北京 天津 山西 辽宁 吉林 黑龙江 上海 河北 内蒙古 江苏
## 1 1 1 1 1 1 1 2 2 2
## 浙江 福建 江西 山东 河南 湖北 湖南 广东 广西 海南
## 2 2 2 2 2 2 2 2 2 2
## 四川 陕西 新疆 安徽 贵州 云南 甘肃 青海 宁夏 西藏
## 2 2 2 3 3 3 3 3 3 4
sort(clgroup2)
## 北京 天津 山西 辽宁 吉林 黑龙江 上海 河北 内蒙古 江苏
## 1 1 1 1 1 1 1 2 2 2
## 浙江 福建 江西 山东 河南 湖北 湖南 广东 广西 海南
## 2 2 2 2 2 2 2 2 2 2
## 四川 陕西 新疆 安徽 贵州 云南 甘肃 青海 宁夏 西藏
## 2 2 2 3 3 3 3 3 3 4
sort(clgroup3)
## 北京 天津 山西 辽宁 吉林 黑龙江 上海 河北 内蒙古 江苏
## 1 1 1 1 1 1 1 2 2 2
## 浙江 福建 江西 山东 河南 湖北 湖南 广东 广西 海南
## 2 2 2 2 2 2 2 2 2 2
## 四川 陕西 新疆 安徽 贵州 云南 甘肃 青海 宁夏 西藏
## 2 2 2 3 3 3 3 3 3 4
sort(clgroup4)
## 北京 天津 山西 辽宁 吉林 黑龙江 上海 河北 内蒙古 江苏
## 1 1 1 1 1 1 1 2 2 2
## 浙江 福建 江西 山东 河南 湖北 湖南 广东 广西 海南
## 2 2 2 2 2 2 2 2 2 2
## 四川 陕西 新疆 安徽 贵州 云南 甘肃 青海 宁夏 西藏
## 2 2 2 3 3 3 3 3 3 4
8.4 应聘者数据的聚类分析
ex84 = read.table("../R-Book-Demo/ch3/applicant.data",header = TRUE)
out.dist = dist( 1 - cor(ex84) );
hc1 = hclust(out.dist,"complete"); #最长距离法
hc2 = hclust(out.dist,"average"); #均值法
hc3 = hclust(out.dist,"centroid"); #重心法
hc4 = hclust(out.dist,"ward"); #Ward法
opar = par(mfrow = c(2,2));
plot(hc1,hang = -1);
rect.hclust(hc1, k = 5);
plot(hc2,hang = -1);
rect.hclust(hc2, k = 5);
plot(hc3,hang = -1);
rect.hclust(hc3, k = 5);
plot(hc4,hang = -1);
rect.hclust(hc4, k = 5);
