ISLR第五章重采样方法应用练习题

2024-06-14 00:08

本文主要是介绍ISLR第五章重采样方法应用练习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


ISLR;R语言; 机器学习 ;线性回归

一些专业词汇只知道英语的,中文可能不标准,请轻喷


5.Default数据分析

> library(ISLR)
> summary(Default)
default    student       balance           income     No :9667   No :7056   Min.   :   0.0   Min.   :  772  Yes: 333   Yes:2944   1st Qu.: 481.7   1st Qu.:21340  Median : 823.6   Median :34553  Mean   : 835.4   Mean   :33517  3rd Qu.:1166.3   3rd Qu.:43808  Max.   :2654.3   Max.   :73554  
> attach(Default)

a)

> set.seed(1)
> glm.fit=glm(default~income+balance,data=Default,family=binomial)

b)

> FiveB=function(){
+ #i.
+ train=sample(dim(Default)[1],dim(Default)[1]/2)
+ #ii.
+ glm.fit = glm(default ~ income + balance, data=Default, family = binomial,subset=train)
+ #iii.
+ glm.pred = rep("No",dim(Default)[1]/2)
+ glm.probs=predict(glm.fit,Default[-train, ],type="response")
+ glm.pred[glm.probs > 0.5]="Yes"
+ #iv.
+ return(mean(glm.pred != Default[-train, ]$default))
+ }
> FiveB()
[1] 0.0236

2.36%的错误率
c)

> FiveB()
[1] 0.028
> FiveB()
[1] 0.0268
> FiveB()
[1] 0.0252

错误率在2.6%上下波动。
d)

> train=sample(dim(Default)[1],dim(Default)[1]/2)
> glm.fit = glm(default ~ income + balance + student, data=Default, family = binomial, subset = train)
> glm.pred = rep("No",dim(Default)[1]/2)
> glm.probs = predict(glm.fit, Default[-train,],type="response")
> glm.pred[glm.probs > 0.5] = "Yes"
> mean(glm.pred != Default[-train,]$default)
[1] 0.0246

错误率为2.46%,增加student变量并没有减少错误率


6.Default数据集

> library(ISLR)
> summary(Default)default    student       balance           income     No :9667   No :7056   Min.   :   0.0   Min.   :  772  Yes: 333   Yes:2944   1st Qu.: 481.7   1st Qu.:21340  Median : 823.6   Median :34553  Mean   : 835.4   Mean   :33517  3rd Qu.:1166.3   3rd Qu.:43808  Max.   :2654.3   Max.   :73554  
> attach(Default)

a)

> set.seed(1)
> glm.fit = glm(default ~ income + balance, data = Default, family = binomial)
> summary(glm.fit)Call:
glm(formula = default ~ income + balance, family = binomial, 
data = Default)Deviance Residuals: Min       1Q   Median       3Q      Max  
-2.4725  -0.1444  -0.0574  -0.0211   3.7245  Coefficients:Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.154e+01  4.348e-01 -26.545  < 2e-16 ***
income       2.081e-05  4.985e-06   4.174 2.99e-05 ***
balance      5.647e-03  2.274e-04  24.836  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 2920.6  on 9999  degrees of freedom
Residual deviance: 1579.0  on 9997  degrees of freedom
AIC: 1585Number of Fisher Scoring iterations: 8

b)

> boot.fn = function(data, index) return(coef(glm(default ~ income + balance, data = data, family = binomial, subset = index)))

c)

> library(boot)
> boot(Default, boot.fn, 50)ORDINARY NONPARAMETRIC BOOTSTRAPCall:
boot(data = Default, statistic = boot.fn, R = 50)Bootstrap Statistics :original        bias     std. error
t1* -1.154047e+01  1.181200e-01 4.202402e-01
t2*  2.080898e-05 -5.466926e-08 4.542214e-06
t3*  5.647103e-03 -6.974834e-05 2.282819e-04

d)
比较接近


7.Weekly数据集分析

> library(ISLR)
> summary(Weekly)Year           Lag1               Lag2         Min.   :1990   Min.   :-18.1950   Min.   :-18.1950  1st Qu.:1995   1st Qu.: -1.1540   1st Qu.: -1.1540  Median :2000   Median :  0.2410   Median :  0.2410  Mean   :2000   Mean   :  0.1506   Mean   :  0.1511  3rd Qu.:2005   3rd Qu.:  1.4050   3rd Qu.:  1.4090  Max.   :2010   Max.   : 12.0260   Max.   : 12.0260  Lag3               Lag4               Lag5         Min.   :-18.1950   Min.   :-18.1950   Min.   :-18.1950  1st Qu.: -1.1580   1st Qu.: -1.1580   1st Qu.: -1.1660  Median :  0.2410   Median :  0.2380   Median :  0.2340  Mean   :  0.1472   Mean   :  0.1458   Mean   :  0.1399  3rd Qu.:  1.4090   3rd Qu.:  1.4090   3rd Qu.:  1.4050  Max.   : 12.0260   Max.   : 12.0260   Max.   : 12.0260  Volume            Today          Direction Min.   :0.08747   Min.   :-18.1950   Down:484  1st Qu.:0.33202   1st Qu.: -1.1540   Up  :605  Median :1.00268   Median :  0.2410             Mean   :1.57462   Mean   :  0.1499             3rd Qu.:2.05373   3rd Qu.:  1.4050             Max.   :9.32821   Max.   : 12.0260  > set.seed(1)> attach(Weekly)

a)

 > glm.fit = glm(Direction ~ Lag1 + Lag2, data = Weekly, family = binomial)> summary(glm.fit)Call:glm(formula = Direction ~ Lag1 + Lag2, family = binomial, data = Weekly)Deviance Residuals: Min      1Q  Median      3Q     Max  -1.623  -1.261   1.001   1.083   1.506  Coefficients:Estimate Std. Error z value Pr(>|z|)    (Intercept)  0.22122    0.06147   3.599 0.000319 ***Lag1        -0.03872    0.02622  -1.477 0.139672    Lag2         0.06025    0.02655   2.270 0.023232 *  ---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 1496.2  on 1088  degrees of freedomResidual deviance: 1488.2  on 1086  degrees of freedomAIC: 1494.2Number of Fisher Scoring iterations: 4

b)

glm.fit = glm(Direction ~ Lag1 + Lag2, data = Weekly[-1, ], family = binomial)
summary(glm.fit)

 Call:glm(formula = Direction ~ Lag1 + Lag2, family = binomial, data = Weekly[-1, 
])Deviance Residuals: Min       1Q   Median       3Q      Max  -1.6258  -1.2617   0.9999   1.0819   1.5071  Coefficients:Estimate Std. Error z value Pr(>|z|)    (Intercept)  0.22324    0.06150   3.630 0.000283 ***Lag1        -0.03843    0.02622  -1.466 0.142683    Lag2         0.06085    0.02656   2.291 0.021971 *  ---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 1494.6  on 1087  degrees of freedomResidual deviance: 1486.5  on 1085  degrees of freedomAIC: 1492.5Number of Fisher Scoring iterations: 4

c)

 > predict.glm(glm.fit,Weekly[1, ],type = "response") > 0.51 TRUE 

预测方向为UP,实际方向为DOWN
d)

 > count = rep(0, dim(Weekly)[1])> for (i in 1:(dim(Weekly)[1])){+ glm.fit = glm(Direction ~ Lag1 + Lag2, data = Weekly[-i, ], family = binomial)+ is_up = predict.glm(glm.fit, Weekly[i, ], type="response") > 0.5+ is_true_up = Weekly[i, ]$Direction == "Up"+ if (is_up != is_true_up)+ count[i] = 1+ }> sum(count)[1] 490

有490个错误。
e)

> mean(count)
[1] 0.4499541

LOOCV估计错误率为45%


8.在一个假数据集上做交叉估计
a)

> set.seed(1)
> y=rnorm(100)
> x=rnorm(100)
> y=x-2 * x^2 + rnorm(100)

n=100,p=2
Y=X-2*X^2+ε
b)

> plot(x,y)


x与y成二次关系
c)

> library(boot)
> Data = data.frame(x, y)
> set.seed(1)
> #1
> glm.fit = glm(y ~ x)
> cv.glm(Data, glm.fit)$delta
[1] 5.890979 5.888812
> #2
> glm.fit = glm(y ~ poly(x,2))
> cv.glm(Data, glm.fit)$delta
[1] 1.086596 1.086326
> #3
> glm.fit = glm(y ~ poly(x,3))
> cv.glm(Data, glm.fit)$delta
[1] 1.102585 1.102227
> glm.fit = glm(y ~ poly(x,4))
> cv.glm(Data, glm.fit)$delta
[1] 1.114772 1.114334

d)

> set.seed(10)
> #1
> glm.fit = glm(y ~ x)
> cv.glm(Data, glm.fit)$delta
[1] 5.890979 5.888812
> #2
> glm.fit = glm(y ~ poly(x,2))
> cv.glm(Data, glm.fit)$delta
[1] 1.086596 1.086326
> #3
> glm.fit = glm(y ~ poly(x,3))
> cv.glm(Data, glm.fit)$delta
[1] 1.102585 1.102227
> #4
> glm.fit = glm(y ~ poly(x,4))
> cv.glm(Data, glm.fit)$delta
[1] 1.114772 1.114334

基本相同,因为LOOCV每次就除去了一个数据
e)
2次的,因为最近真实的关系
f)

> summary(glm.fit)Call:
glm(formula = y ~ poly(x, 4))Deviance Residuals: Min       1Q   Median       3Q      Max  
-2.8914  -0.5244   0.0749   0.5932   2.7796  Coefficients:Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -1.8277     0.1041 -17.549   <2e-16 ***
poly(x, 4)1   2.3164     1.0415   2.224   0.0285 *  
poly(x, 4)2 -21.0586     1.0415 -20.220   <2e-16 ***
poly(x, 4)3  -0.3048     1.0415  -0.293   0.7704    
poly(x, 4)4  -0.4926     1.0415  -0.473   0.6373    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for gaussian family taken to be 1.084654)Null deviance: 552.21  on 99  degrees of freedom
Residual deviance: 103.04  on 95  degrees of freedom
AIC: 298.78Number of Fisher Scoring iterations: 2

p值显示的统计上显著关系与cv结果相同


9.Boston数据集分析

> library(MASS)
> attach(Boston)
> summary(Boston)crim                zn             indus            chas        Min.   : 0.00632   Min.   :  0.00   Min.   : 0.46   Min.   :0.00000  1st Qu.: 0.08204   1st Qu.:  0.00   1st Qu.: 5.19   1st Qu.:0.00000  Median : 0.25651   Median :  0.00   Median : 9.69   Median :0.00000  Mean   : 3.61352   Mean   : 11.36   Mean   :11.14   Mean   :0.06917  3rd Qu.: 3.67708   3rd Qu.: 12.50   3rd Qu.:18.10   3rd Qu.:0.00000  Max.   :88.97620   Max.   :100.00   Max.   :27.74   Max.   :1.00000  nox               rm             age              dis        Min.   :0.3850   Min.   :3.561   Min.   :  2.90   Min.   : 1.130  1st Qu.:0.4490   1st Qu.:5.886   1st Qu.: 45.02   1st Qu.: 2.100  Median :0.5380   Median :6.208   Median : 77.50   Median : 3.207  Mean   :0.5547   Mean   :6.285   Mean   : 68.57   Mean   : 3.795  3rd Qu.:0.6240   3rd Qu.:6.623   3rd Qu.: 94.08   3rd Qu.: 5.188  Max.   :0.8710   Max.   :8.780   Max.   :100.00   Max.   :12.127  rad              tax           ptratio          black       Min.   : 1.000   Min.   :187.0   Min.   :12.60   Min.   :  0.32  1st Qu.: 4.000   1st Qu.:279.0   1st Qu.:17.40   1st Qu.:375.38  Median : 5.000   Median :330.0   Median :19.05   Median :391.44  Mean   : 9.549   Mean   :408.2   Mean   :18.46   Mean   :356.67  3rd Qu.:24.000   3rd Qu.:666.0   3rd Qu.:20.20   3rd Qu.:396.23  Max.   :24.000   Max.   :711.0   Max.   :22.00   Max.   :396.90  lstat            medv      Min.   : 1.73   Min.   : 5.00  1st Qu.: 6.95   1st Qu.:17.02  Median :11.36   Median :21.20  Mean   :12.65   Mean   :22.53  3rd Qu.:16.95   3rd Qu.:25.00  Max.   :37.97   Max.   :50.00  
> set.seed(1)

a)

> medv.mean = mean(medv)
> medv.mean
[1] 22.53281

b)

> medv.err = sd(medv)/sqrt(length(medv))
> medv.err
[1] 0.4088611

c)

> boot.fn = function(data, index) return(mean(data[index]))
> library(boot)
> bstrap = boot(medv, boot.fn, 1000)
> bstrapORDINARY NONPARAMETRIC BOOTSTRAPCall:
boot(data = medv, statistic = boot.fn, R = 1000)Bootstrap Statistics :original      bias    std. error
t1* 22.53281 0.008517589   0.4119374

d)

> t.test(medv)One Sample t-testdata:  medv
t = 55.1111, df = 505, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:21.72953 23.33608
sample estimates:
mean of x 22.53281 > c(bstrap$t0 - 2 * 0.4119, bstrap$t0 + 2 * 0.4119)
[1] 21.70901 23.35661

引导估计与t估计仅相差0.02
e)

> medv.med = median(medv)
> medv.med
[1] 21.2

f)

> boot.fn = function(data, index) return(median(data[index]))
> boot(medv, boot.fn, 1000)ORDINARY NONPARAMETRIC BOOTSTRAPCall:
boot(data = medv, statistic = boot.fn, R = 1000)Bootstrap Statistics :original  bias    std. error
t1*     21.2 -0.0098   0.3874004

引导学习结果与实际相同,标准差也很小
g)

> medv.tenth = quantile(medv, c(0.1))
> medv.tenth10% 
12.75 

h)

> boot.fn = function(data, index) return(quantile(data[index],c(0.1)))
> boot(medv, boot.fn, 1000)ORDINARY NONPARAMETRIC BOOTSTRAPCall:
boot(data = medv, statistic = boot.fn, R = 1000)Bootstrap Statistics :original  bias    std. error
t1*    12.75 0.00515   0.5113487

与实际有很小的标准差

这篇关于ISLR第五章重采样方法应用练习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058818

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

邮件群发推送的方法技巧?有哪些注意事项?

邮件群发推送的策略如何实现?邮件推送怎么评估效果? 电子邮件营销是现代企业进行推广和沟通的重要工具。有效的邮件群发推送不仅能提高客户参与度,还能促进销售增长。AokSend将探讨一些关键的邮件群发推送方法和技巧,以帮助企业优化其邮件营销策略。 邮件群发推送:目标受众 了解他们的需求、兴趣和行为习惯有助于你设计出更具吸引力和相关性的邮件内容。通过收集和分析数据,创建详细的客户画像,可以更精

上采样(upsample)的方法

上采样(upsample)的方法   在神经网络中,扩大特征图的方法,即upsample/上采样的方法   1)unpooling:恢复max的位置,其余部分补零   2)deconvolution(反卷积):先对input补零,再conv   3)插值方法,双线性插值等;   4)扩张卷积,dilated conv;

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和