前言:
当前我们对“支持向量机例题讲解”大体比较珍视,大家都需要学习一些“支持向量机例题讲解”的相关文章。那么小编同时在网摘上搜集了一些关于“支持向量机例题讲解””的相关文章,希望姐妹们能喜欢,我们一起来了解一下吧!相较于昨天的磕磕巴巴,今天这篇算得上是相当的顺利,原因也很简单,因为今天的内容从操作角度上来讲和昨天灰常灰常滴像~~~~
支持向量机,用的也是个现成的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])
标签: #支持向量机例题讲解