数据挖掘报告
1
乳腺癌的分析
摘要
此次实验的目的主要是研究分类,对乳腺癌的类型良性的还是恶性的进行分类。比较一下什么方法更好。数据共包括699个观测值,每个观测有11个变量。有缺失值。主要是运用了R和SAS两个软件进行分析的。R中用的方法都是数据挖掘中的一些典型方法。SAS中是采用了判别与聚类的方法。原始数据已经将类别分好了,对于分类研究使用不同的方法看一下哪种方法的精度更高。
关键词:数据挖掘方法、判别、聚类
2
一 数据的描述:
a)一共有699个观测,11个变量。
b)变量解释:
\
\肿块的密度 取值1-10 \细胞的大小均匀度 取值1-10 \细胞的形状的均匀度 取值1-10
\边缘部分的黏着度 取值1-10 \单一的上皮细胞的大小 取值1-10 \裸露细胞核 取值1-10 \染色质 取值1-10
\正常的细胞核 取值1-10
\有丝分裂 取值1-10 \类型 2-良性,4-恶性 c)数据是共有16个缺失值的,在\这个变量中
d)对缺失值的处理共采用了三种方法:直接删除、利用均值进行插补、利用中 位数进行插补。
e)后面采用的方法最基本的数据是采用了中位数的方法进行差补以后的。
二 R语言采用的方法介绍共5种方法
(决策树,神经网络,支持向量机,随机森林,最近邻方法) A) 数据的基本处理
1)读入txt格式数据,将btype设为分类变量 breast_cancer <- read.delim(\ breast_cancer$btype <- factor(breast_cancer$btype);
2) 显示16个缺失值所在的行数
which(complete.cases(breast_cancer) == F);
[1] 24 41 140 146 159 165 236 250 276 293 295 298 316 322 412 618
3)缺失值的处理方法 a)直接删除
breast_cancer_delete <- na.omit(breast_cancer); b)均值进行差补
breast_cancer_mean <- breast_cancer;
for (r in which(!complete.cases(breast_cancer))) {
breast_cancer_mean[r, which(is.na(breast_cancer[r, ]))] <-
apply(data.frame(breast_cancer[, which(is.na(breast_cancer[r, ]))]), 2, mean, na.rm = T); }
c)中位数进行插补
breast_cancer_median <- breast_cancer;
for (r in which(!complete.cases(breast_cancer)))
3
breast_cancer_median[r, which(is.na(breast_cancer[r, ]))] <-
apply(data.frame(breast_cancer[, which(is.na(breast_cancer[r, ]))]), 2, median, na.rm = T);
B)方法介绍
1)分类树 使用的包rpart 、rpart.plot
a)使用中位数填补后的数据进行建模分析以及分析判错率
#分类树,请先安装rpart程序包 library(rpart); set.seed(100);
breast.part <- rpart(factor(btype) ~ ., data = breast_cancer_median, method=\table = table(predict(breast.part,breast_cancer_median,type=\breast_cancer_median$btype); # 计算错判率
pError=1 - sum(diag(table))/nrow(breast_cancer_median); cat(\分类的错判率pError为:\
分类的错判率pError为: 0.03576538
# 画图,请先安装rpart.plot程序包 library(rpart.plot);
rpart.plot(breast.part); # 画出分类树结果
4
plotcp(breast.part,minline = TRUE); # 交叉验证错误率与分类树节点数的
关系
(??)
plot(breast.part,uniform=T,branch=0.4,compress=T); text(breast.part,use.n=T);
# 带频数的结果图
5