现代回归和分类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(数据wine.txt)
这是关于意大利一个地区的葡萄酒数据[1],该数据是对 该地区的三种不同培育品种的葡萄所酿造的酒的13种要 素的化学分析结果,一共有178个观测值。我们希望用 这些数据来建立一个模型,利用这些要素的特性来判断 是那个品种的葡萄所酿造的酒。因变量是Class (品种), 有1、2、3个哑元取值,而13个自变量为:Alcohol (酒 精)、 Malic.acid (苹果酸)、Ash (灰分)、Alcalinity of ash (灰的碱性)、Magnesium (镁)、 Total phenols (苯酚总量)、 Flavanoids[2]、Nonflavanoid phenols(非flavanoid苯酚)、 Proanthocyanins[3]、Color intensity(颜色强度)、Hue(色 调)、OD280/OD315 of diluted wines (稀释的酒的蛋白质 浓度的光谱度量)、Proline(脯氨酸)。根据这13个自变量, 我们建立了下面的一个决策树:
library(rpart.plot)
剪枝和画图
fit <- rpart(Kyphosis ~ Age + Number + Start,data=kyphosis) fit2 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis, parms=list(prior=c(.65,.35), split='information')) fit3 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis, control=rpart.control(cp=.05)) par(mfrow=c(1,3), xpd=NA) ;plot(fit);text(fit, use.n=TRUE) plot(fit2);text(fit2, use.n=TRUE);plot(fit3);text(fit3, use.n=TRUE)
present 0.60 Age<34 absent 0.10 present 0.58
absent 0.00
absent 0.29 Age>=111
absent 0.18
present 0.72
absent 0.14
present 0.57
预测 library(rpart) fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
[1] 数据源于D. Michie (1989) Problems of computer-aided concept formation. In Applications of Expert Systems 2, ed. J. R. Quinlan, Turing Institute Press / Addison-Wesley, pp. 310–333.
predict(fit, type="prob") # class probabilities (default) predict(fit, type="vector") # level numbers predict(fit, type="class") # factor predict(fit, type="matrix") # level number, class frequencies, probabilities
例 (数据shuttle.txt).
vis=a |
error=c auto stability=a noauto auto noauto
library(MASS);shuttle[1:10,] m=256;set.seed(2);samp=sample(1:m,floor(m/10));tsamp=setdiff(1:m,samp) library(rpart.plot);(b=rpart(use~.,shuttle,subset=tsamp)) ;b;plot(b);text(b,use.n=T) t(table(predict(b,shuttle[tsamp,],type="class"),shuttle[tsamp,7]))
现代回归和分类: 算法建模的回归和分类
吴喜之
算法建模的回归和分类
• 经典的回归和分类(判别)模型是可以写成公式 的。但是另外一些回归和分类的方法是体现在算 法之中,其具体形式是计算机程序。广义地说, 算法模型实际上包含了经典模型 • 如果说,起源于前计算机时代的经典统计目前大 大受惠于计算机的发展,那么,没有计算机,就 不可能存在算法建模。 • 在处理巨大的数据集上,在对付称为维数诅咒的 大量的变量上,在不用假定总体分布的情况时, 在对付众多竞争模型方面,算法建模较经典建模 有很多不可比拟的优越性。
absent 0.44 Age<52
absent 0.09
present 0.62 Age<86
absent 0.43
present 0.71
library(rpart)
预测(2)
kyphosis1 <- kyphosis [71:81, ] predict(kyphosis.rp, kyphosis1, type="class") table(predict(kyphosis.rp, kyphosis1, type="class"), kyphosis[71:81,1])
noauto 0.95
auto 0.25
noauto 1.00
rpart.plot(b,type=1,extra=6,faclen=T); rpart.plot(b,type=2,extra=6,faclen=T);
yes
vis=a no auto 0.43 auto 0.00
yes
auto 0.43 vis=a
Start>=8.5 | Start>=12.5 | Start>=8.5 |
Start>=14.5 absent 29/0 Age< 55 absent 12/0 Age>=111
present 8/11
absent 44/2
Age< 34.5
absent 12/2
present 3/4
absent 9/1
rpart.plot(b,type=2,extra=6)
setosa 0.33
yes
wenku.baidu.com
Petal.Le<2.4
no
setosa 0.00
versicol 0.50 Petal.Le<4.8
versicol 1.00
virginic 0.11
IRIS
t(table(predict(b,iris[tsamp,],type="class"),iris[tsamp,5])) t(table(predict(b,iris[samp,],type="class"),iris[samp,5]))
rpart.plot(b,type=4,extra=6,faclen=T); rpart.plot(b,type=0,extra=6,faclen=T);
yes
vis=a
no
auto 0.43 vis=a b
auto 0.00
error=c
stabilit=a
auto 0.00 error=c abd noauto 0.60 stabilit=a b auto 0.25 noauto 1.00 noauto 0.95 noauto 0.86
Start>=12.5 | Age< 51.5 absent 37/1
absent 10/1
Age< 86 absent 4/3 present 4/10
rpart.plot(kyphosis.rp,type=2,extra=6 )
absent 0.21
yes
Start>=12
no
absent 0.03
例10.2 (例9.5数据iris.txt).
Petal.Length< 2.45 |
Petal.Width< 1.75 setosa
versicolor
virginica
library(MASS);m=150;set.seed(10) samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25)); tsamp=setdiff(1:m,samp);library(rpart.plot) (b=rpart(Species~.,iris,subset=tsamp)) ;plot(b);text(b,use.n=T)
例10.1 (数据shuttle.txt).
t(table(predict(b,shuttle[tsamp,],type="class"),shuttle[tsamp,7])) t(table(predict(b,shuttle[samp,],type="class"),shuttle[samp,7]))
present 11/14
absent 56/6
present 8/11
par(mfrow=c(1,3), xpd=NA) ;rpart.plot(fit,type=2,extra=6) rpart.plot(fit2,type=2,extra=6);rpart.plot(fit3,type=2,extra=6);par(mfrow=c(1,1))
kyphosis data
The kyphosis data frame has 81 rows and 4 columns. representing data on children who have had corrective spinal surgery Kyphosis: a factor with levels absent present indicating if a kyphosis (a type of deformation) was present after the operation. Age: in months Number: the number of vertebrae involved Start: the number of the first (topmost) vertebra operated on.
决策树:分类树和回归树
例(数据shuttle.txt)
library(MASS);shuttle[1:10,]
这个数据是关于美国航天飞机在各种条件下是否自动着陆的决策问 题[1]。有256行及7列。头六行为作为自变量的定性变量,而最后 一列为因变量。自变量包括稳定性(stability,取值stab/xstab)、误 差大小(error,取值(MM / SS / LX / XL)、信号(sign,取值pp / nn)、 风向(wind,取值head / tail)、风力(magn,取值(Light / Medium / Strong / Out)、能见度(vis,取值yes / no),因变量为是否用自动 着陆系统(use,取值auto/noauto)。
no
auto 0.00
error=c noauto 0.86
noauto 0.86 error=c
stabilit=a noauto 0.60
noauto 0.95
noauto 0.60 stabilit=a
noauto 0.95
auto 0.25
noauto 1.00
auto 0.25
noauto 1.00
absent 0.21
yes
Start>=8.5
no
absent 0.10 Start>=14
present 0.58
yes
absent 0.35 Start>=12
no
absent 0.21
yes
Start>=8.5
no
absent 0.00
absent 0.18 Age<55
absent 0.08
library(rpart) 预测(2)
library(rpart.plot) data(kyphosis) kyphosis.rp <- rpart( Kyphosis ~ Age + Number + Start, data=kyphosis, subset=1:70) kyphosis.rp ;plot(kyphosis.rp ); text(kyphosis.rp,use.n=T)