统计学习导论 基于R应用 第4章第13题

#13
library(MASS)
attach(Boston)
crime1 = rep(0, length(crim))
crime1[crim > median(crim)] = 1
Boston = data.frame(Boston, crime1)
dim(Boston)
train = 1:(506[1]/2)
test = (506[1]/2 + 1):506[1]
Boston.train = Boston[train, ]
Boston.test = Boston[test, ]
crime1.test = crime1[test]

#Logit#自变量除crime1和crim均包含在内
glm.13 = glm(crime1 ~ . - crime1 - crim, data = Boston, family = binomial, 
             subset = train)

glm.probs = predict(glm.13, Boston.test, type = "response")
glm.pred = rep(0, length(glm.probs))
glm.pred[glm.probs > 0.5] = 1
mean(glm.pred != crime1.test)

#Logit#自变量删去chas nox rm
glm.13b = glm(crime1 ~ . - crime1 - crim - chas - nox - rm, data = Boston, family = binomial, 
              subset = train)

glm.probs = predict(glm.13b, Boston.test, type = "response")
glm.pred = rep(0, length(glm.probs))
glm.pred[glm.probs > 0.5] = 1
mean(glm.pred != crime1.test)


#LDA#自变量除crime1和crim均包含在内
lda.13 = lda(crime1 ~ . - crime1 - crim, data = Boston, subset = train)
lda.pred = predict(lda.13, Boston.test)
mean(lda.pred$class != crime1.test)

#LDA##自变量删去chas nox rm
lda.13 = lda(crime1 ~ . - crime1 - crim - chas - nox - rm, data=Boston,subset = train)
lda.pred = predict(lda.13, Boston.test)
mean(lda.pred$class != crime1.test)

#KNN#自变量除crime1和crim均包含在内
library(class)
train.X = cbind(zn, indus, chas, nox, rm, age, dis, rad, tax, ptratio, black, 
                lstat, medv)[train, ]
test.X = cbind(zn, indus, chas, nox, rm, age, dis, rad, tax, ptratio, black, 
               lstat, medv)[test, ]
train.crime1 = crime1[train]
set.seed(1)
#k=1
knn.pred = knn(train.X, test.X, train.crime1, k = 1)
mean(knn.pred != crime1.test)
#k=3
knn.pred = knn(train.X, test.X, train.crime1, k = 3)
mean(knn.pred != crime1.test)
#k=5
knn.pred = knn(train.X, test.X, train.crime1, k = 5)
mean(knn.pred != crime1.test)
#k=10
knn.pred = knn(train.X, test.X, train.crime1, k = 10)
mean(knn.pred != crime1.test)

#KNN#自变量删去chas nox rm
library(class)
train.X = cbind(zn, indus, age, dis, rad, tax, ptratio, black, 
                lstat, medv)[train, ]
test.X = cbind(zn, indus,  age, dis, rad, tax, ptratio, black, 
               lstat, medv)[test, ]
train.crime1 = crime1[train]
set.seed(1)
#k=1
knn.pred = knn(train.X, test.X, train.crime1, k = 1)
mean(knn.pred != crime1.test)
#k=3
knn.pred = knn(train.X, test.X, train.crime1, k = 3)
mean(knn.pred != crime1.test)
#k=5
knn.pred = knn(train.X, test.X, train.crime1, k = 5)
mean(knn.pred != crime1.test)
#k=10
knn.pred = knn(train.X, test.X, train.crime1, k = 10)
mean(knn.pred != crime1.test)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值