svm 的R实现

来源:互联网 发布:显卡bios升级软件 编辑:程序博客网 时间:2024/05/17 17:58

1.数据准备本地文件格式:

hour15, hour15diff, hour17, hour17diff, addrate, lastflag, res

23.7475, -9.3125, 30.5800, -12.7600, -3.4475, 0, 0 

24.6150, -10.3050, 31.7625, -13.5175, -3.2125000000000004, 0, 0 

22.7575, -8.5625, 30.9513, -10.6588, -2.0962999999999994, 0, 0 

19.7963, -8.0038, 29.9200, -8.9000, -0.8962000000000003, 0, 0 


2.读取数据到R

trainModel = read.table('/xxx/xx/train.csv',header=TRUE,sep=',')


3.数据格式处理

简单的大小归一化:

trainModel['hour15'] = trainModel['hour15'] /10

trainModel['hour17'] = trainModel['hour17] /10

trainModel['hour15diff'] = trainModel['hour15diff']/5

...


4.k折交叉验证svm参数选择

library('e1071')

obj = tune.svm(res~.,data=trainModel,gamma = 1,cost = 4,sampling ="fix",kernel='radial')

(trainModel 也可经过pca来降维)

model = svm(res~.,data=trainModel,gamma = obj$best.parameters$gamma,cost=obj$best.parameters$cost,cross=10,kernel='radial')

参数gamma和cost

summary(model)

观察K折中每个的正确率,注意过拟合问题。

若采用多项式核函数 还有degree这个参数(多项式的次数),(具体选用哪个核函数需要根据交叉验证准确率来看)  



5.预测

准确性验证

pred = (model,trainModel)

table(pred,trainModel['res'])

真实预测

pred = (model,trainModel[,1:6])


另外一种准确性验证方式:

mean(with(trainModel,pred=res))

0 0
原创粉丝点击