龙空技术网

R语言第25篇——实例:买房不(十二)支持向量机

jennifer5jl 122

前言:

当前我们对“支持向量机例题讲解”大体比较珍视,大家都需要学习一些“支持向量机例题讲解”的相关文章。那么小编同时在网摘上搜集了一些关于“支持向量机例题讲解””的相关文章,希望姐妹们能喜欢,我们一起来了解一下吧!

相较于昨天的磕磕巴巴,今天这篇算得上是相当的顺利,原因也很简单,因为今天的内容从操作角度上来讲和昨天灰常灰常滴像~~~~

支持向量机,用的也是个现成的R包,包的名字有点玄学,叫e1071,就我目前见过的包名称来说,这算是最不直观的了——没装过的依旧提醒亲们用install.packages先下载好

上手还是和昨天一样的步骤

1) 导入两份数据表(Table1和Table2)

2) 合并信息到Table3

3) 稍稍整下顺序和列名

4) 分成已知和未知两部分(Known和Unknown)

代码直接复制昨天的,我就不动脑子了

-----------------前期步骤------------------

Table1<-read.csv("houseprice2.csv")

Table2<-read.csv("blockinfo.csv")

Table3<-merge(Table1[,c(1,2,3,5,10)], Table2[,c(2,9)],by = "block", all.x = TRUE)

names(Table3)[6]<- list("LocateScore")

Table3<-Table3[order(Table3$X),]

Known<-Table3[which(!is.na(Table1$LikeOrNot)),]

Unknown<-Table3[which(is.na(Table1$LikeOrNot)),]

---------------前期步骤结束---------------

然后,咱碰到了一个小小的差异点,这里我先示范个报错的情况(算是为了充篇幅,哈哈哈)

如果把现有的数据像昨天做BP神经网络那样直接代进去用的话,会出现以下情况:

看到下边的Error信息了不,重点请看黄色框框的提示,这个svm函数要求它的向量是数值型,而咱的LikeOrNot列是用TRUE和FALSE这俩逻辑值来表示的,所以,咱还得先迁就它一下下

#逻辑值转成数值0和1

Known$LikeOrNot <- as.factor(Known$LikeOrNot)

levels(Known$LikeOrNot) <- c(0,1)

转换好了,咱再用svm函数,输入公式接口和数据表就行,其他参数有默认值咱就不管了

Guess <- svm(LikeOrNot~size + floor + LocateScore, Known)

看看,这就乖了嘛

支持向量机的模型搞定了,然后再度请出predict函数给咱送结果(突然发现predict是个百搭有木有)

Predict1 <- predict(Guess,Unknown[,c(3,4,6)])

这时,咱碰到了和昨天的模型第二个有区别的地方,BP神经网络在判断二元变量时采用的是逻辑分布,所以输出值是0~1之间的连续数值,这个完全是可以理解的,但SVM显然使用的是一种非概率估计的分类方式,所以最终结果直接输出了0和1的因子型向量

替换回逻辑值的表示方式并放回原来的表格:

levels(Predict1) <- c(FALSE,TRUE) #转回逻辑值表示

Unknown$LikeOrNot <- Predict1

Table1[Unknown$X,10] <- Predict1

昨天的计算结果我有存下来哦,所以现在可以对照看看两者的差异

嗯,23个的结果中有两个不同的,而且这两个确实也算是比较模棱两可的那种,看来,大家的意见还算是挺一致的

好了,存档收工

write.csv(file = "houseprice4.csv",Table1[,2:10])

标签: #支持向量机例题讲解