分类分析--数据准备
分类分析
有监督机器学习领域中包含许多可用于分类的方法,如逻辑回归、决策树、随机森林、支持向量机、神经网络等,有监督学习基于一组包含预测变量值和输出变量值的样本单元。将全部数据分为一个训练集和一个验证集,其中训练集用于建立预测模型,验证集用于测试模型的准确性。
主要例子来源于UCI机器学习数据库中的威斯康星州乳腺癌数据。数据分析的目的是根据细胞组织细针抽吸活检所反映的特征,来判断被检者是否患有乳腺癌(细胞组织样本单元由空心细针在皮下肿块中抽得)。
需要如下几个包:
install.packages("party", depend = T)
library(rpart)
library(rpart.plot)
library(party)
library(randomForest)
library(e1071)
1 数据准备
威斯康星州乳腺癌数据集是一个由逗号分隔的txt文件,可在UCI机器学习数据库(http://archive.ics.uci.edu/ml)中找到。本数据集包含699个细针抽吸活检的样本单元,其中458个 (65.5%)为良性样本单元,241个(34.5%)为恶性样本单元。数据集中共有11个变量,表中未标明变量名。共有16个样本单元中有缺失数据并用问号(?)表示。
数据集中包含的变量包括:
q ID
q 肿块厚度
q 细胞大小的均匀性
q 细胞形状的均匀性
q 边际附着力
q 单个上皮细胞大小
q 裸核
q 乏味染色体
q 正常核
q 有丝分裂
q 类别
第一个变量ID不纳入数据分析,最后一个变量(类别)即输出变量(编码为良性=2,恶性=4)。
对于每一个样本来说,另外九个变量是与判别恶性肿瘤相关的细胞特征,并且得到了记录。
这些细胞特征得分为1(最接近良性)至10(最接近病变)之间的整数。任一变量都不能单独作为判别良性或恶性的标准,建模的目的是找到九个细胞特征的某种组合,从而实现对恶性肿瘤的准确预测。
下面给出R中数据准备流程。数据从UCI数据库中抽取,并随机分出训练集和验证集,其中
训练集中包含499个样本单元(占70%),其中良性样本单元329个,恶性160个;验证集中包含210个样本单元(占30%),其中良性129个,恶性81个。
(1)乳腺癌数据准备
loc <- "http://archive.ics.uci.edu/ml/machine-learning-databases/"
ds <- "breast-cancer-wisconsin/breast-cancer-wisconsin.data"
url <- paste(loc, ds, sep="")
breast <- read.table(url, sep=",", header=FALSE, na.strings="?")
names(breast) <- c("ID", "clumpThickness", "sizeUniformity", #给数据集属性贴标签
"shapeUniformity", "maginalAdhesion",
"singleEpithelialCellSize", "bareNuclei",
"blandChromatin", "normalNucleoli", "mitosis", "class")
df <- breast[-1]
df$class <- factor(df$class, levels=c(2,4),
labels=c("benign", "malignant"))
set.seed(1234)
train <- sample(nrow(df), 0.7*nrow(df)) #划分训练集和验证集
df.train <- df[train,] #训练集
df.validate <- df[-train,] #验证集
table(df.train$class)
table(df.validate$class)
训练集将用于建立逻辑回归、决策树、条件推断树、随机森林、支持向量机等分类模型,测试集用于评估各个模型的有效性。采用相同的数据集,因此可以直接比较各个方法的结果。
本文来自博客园,作者:zhang-X,转载请注明原文链接:https://www.cnblogs.com/YY-zhang/p/15152935.html
原文地址:https://www.cnblogs.com/YY-zhang/p/15152935.html
- 中科院计算所开源深度文本匹配开源工具 MatchZoo
- 简单易学的机器学习算法——线性回归(1)
- 当主键碰到NULL(r6笔记第64天)
- 记一次dg故障的处理总结(r6笔记第63天)
- Java企业面试——Javaweb
- Linux下/var/spool/clientmqueue空间不足的解决(r6笔记第81天)
- Pytorch 0.3发布:实现多方面提速,增加对ONNX支持 | 快讯
- 基于DB time的调优分析 (r6笔记第79天)
- 通过shell脚本抓取awr报告中的问题sql(r6笔记第78天)
- Tomcat 快速入门
- 服务器进程异常的原因分析(r6笔记第74天)
- Elastic 技术栈之 Filebeat
- Elastic 技术栈之 Logstash 基础
- 备库CPU使用异常优化(r6笔记第73天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法