首页 > 代码库 > R 语言 kmens聚类
R 语言 kmens聚类
http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/
分析过程:
# 1)先将两组数据混合为一组
# 导入数据源
red<-read.csv("~\winequality-red.csv",T) #导入红酒数据
white<-read.csv("~\winequality-white.csv",T) #导入白酒数据
# 增加新字段type,1-红酒,2-白酒
red$type<-1;white$type<-2
# 将两组数据混合为一组
wine<-rbind(red,white)
# 查看合并前后的记录数
nrow(red);nrow(white);nrow(wine)
[1] 1599
[1] 4898
[1] 6497
# 查看wine的前六和后六条记录
head(wine);tail(wine)
> head(wine);tail(wine)
fixed.acidity volatile.acidity citric.acid residual.sugar chlorides free.sulfur.dioxide total.sulfur.dioxide density pH
1 7.4 0.70 0.00 1.9 0.076 11 34 0.9978 3.51
2 7.8 0.88 0.00 2.6 0.098 25 67 0.9968 3.20
3 7.8 0.76 0.04 2.3 0.092 15 54 0.9970 3.26
4 11.2 0.28 0.56 1.9 0.075 17 60 0.9980 3.16
5 7.4 0.70 0.00 1.9 0.076 11 34 0.9978 3.51
6 7.4 0.66 0.00 1.8 0.075 13 40 0.9978 3.51
sulphates alcohol quality type
1 0.56 9.4 5 1
2 0.68 9.8 5 1
3 0.65 9.8 5 1
4 0.58 9.8 6 1
5 0.56 9.4 5 1
6 0.56 9.4 5 1
fixed.acidity volatile.acidity citric.acid residual.sugar chlorides free.sulfur.dioxide total.sulfur.dioxide density pH
6492 6.5 0.23 0.38 1.3 0.032 29 112 0.99298 3.29
6493 6.2 0.21 0.29 1.6 0.039 24 92 0.99114 3.27
6494 6.6 0.32 0.36 8.0 0.047 57 168 0.99490 3.15
6495 6.5 0.24 0.19 1.2 0.041 30 111 0.99254 2.99
6496 5.5 0.29 0.30 1.1 0.022 20 110 0.98869 3.34
6497 6.0 0.21 0.38 0.8 0.020 22 98 0.98941 3.26
sulphates alcohol quality type
6492 0.54 9.7 5 2
6493 0.50 11.2 6 2
6494 0.46 9.6 5 2
6495 0.46 9.4 6 2
6496 0.38 12.8 7 2
6497 0.32 11.8 6 2
# 2)对混合后的数据,根据化学成分(注意可能只需要部分指标)进行聚类,重新划分出红酒,白酒
# 经过初步探索后发现,quality对酒的分类影响不大,接下来的聚类不考虑该指标
(c1<-kmeans(wine[,1:11],2))
#画出查看整体分类效果
plot(wine$alcohol~wine$free.sulfur.dioxide,col=c1$cluster)
points(cl$centers, col = 1:2, pch = 8, cex = 2)
# 3)把聚类结果和原有的分情况对照,看一下聚类的效果如何
table(wine[,13],c1$cluster)
1 2
1 1514 85
2 1294 3604
# 聚类效果并不好,其中有85个实际是红酒的样本误分为白酒,有1294个白酒误分为红酒。
# 查看整体准确率
sum(diag(table(wine[,13],c1$cluster)))/nrow(wine)
[1] 0.7877482
聚类后的结果准确率是0.7877482.
R 语言 kmens聚类