机器学习与R之支持向量机svm(上)

来源:互联网 发布:阿里云logo矢量图 编辑:程序博客网 时间:2024/06/07 09:25
支持向量机svm e1071包的svm()函数提供R和LIBSVM的接口
library(kernlab)
letter_classifier <- ksvm(letter ~ ., data = letters_train,
                          kernel = "vanilladot",C = 1)
kernel非线性映射函数(rbfdot径向基polydot多项式tanhdot双曲正切vanilladot线性函数等等)
C用于违法约束条件的惩罚-软边界大小-C越大边界越窄
tol终止准则  
ksvm(x, y = NULL, scaled = TRUE, type = NULL,
     kernel ="rbfdot", kpar = "automatic",
     C = 1, nu = 0.2, epsilon = 0.1, prob.model = FALSE,
     class.weights = NULL, cross = 0, fit = TRUE, cache = 40,
     tol = 0.001, shrinking = TRUE, ..., 
     subset, na.action = na.omit)
type取response分类或者probabilities概率

predict(letter_classifier, letters_test,type="response")


letters <- read.csv("letterdata.csv")str(letters)# divide into training and test dataletters_train <- letters[1:16000, ]letters_test  <- letters[16001:20000, ]## Step 3: Training a model on the data ----# begin by training a simple linear SVMlibrary(kernlab)letter_classifier <- ksvm(letter ~ ., data = letters_train,                          kernel = "vanilladot")# look at basic information about the modelletter_classifier## Step 4: Evaluating model performance ----# predictions on testing datasetletter_predictions <- predict(letter_classifier, letters_test)head(letter_predictions)table(letter_predictions, letters_test$letter)# look only at agreement vs. non-agreement# construct a vector of TRUE/FALSE indicating correct/incorrect predictionsagreement <- letter_predictions == letters_test$lettertable(agreement)prop.table(table(agreement))## Step 5: Improving model performance ----set.seed(12345)letter_classifier_rbf <- ksvm(letter ~ ., data = letters_train, kernel = "rbfdot")letter_predictions_rbf <- predict(letter_classifier_rbf, letters_test)agreement_rbf <- letter_predictions_rbf == letters_test$lettertable(agreement_rbf)prop.table(table(agreement_rbf))


0 0
原创粉丝点击