问题描述
我正在尝试使用 R 中的 e1071 包创建加权 svm 模型。我已经成功地创建了具有良好精度的模型。问题是,当我更改 class.weghts 时,结果仍然相同,这对我来说没有意义。
我正在使用以下脚本:
data01<- read_excel("C:\\Users\\after_PCA_for_SVM_PASS_FAIL_TRUE.xlsx")
data_frame<-data.frame(data01)
n <- nrow(data_frame) # Number of observations
n
ntrain <- round(n*0.75) # 75% for training set
tindex <- sample(n,ntrain) # Create a random index
train <- data_frame[tindex,] # Create training set
test <- data_frame[-tindex,]
tr_size= round(nrow(data_frame)* 0.60) # the size of training dataset (60%)
vsize= nrow(data_frame)-tr_size # the size of validating and test data set
tr_sample= sample(nrow(data_frame),tr_size,replace = FALSE,set.seed(1)) # randomly select training dataset
train_data= data_frame[tr_sample,]
#Again split the data into validating dataset and test dataset
new_data= data_frame[-tr_sample,]
val_sample=sample(nrow(new_data),ceiling(vsize*0.1),replace=FALSE,set.seed(1) )
val_data=new_data[val_sample,]
test_data= new_data[-val_sample,]
# check the samples generated for each dataset
nrow(test_data) # number of observation in test dataset
nrow(val_data) # number of observation in validating dataset
nrow(train_data) # number of observation in training dataset
nrow(data_frame) # number observation of the whole dataset
X <- subset(data_frame,select=-STATUS)
Y <- subset(data_frame,select=STATUS)
X_train <- subset(train_data,select=-STATUS)
Y_train <- subset(train_data,select=STATUS)
install.packages("e1071")
library(e1071)
wts<-1/table(Y)
wts1<- c("0"=50,"1"=1500)
best_model= svm(train_data,Y_train,type="C-classification",kernel="linear",class.weights = wts)
best_model= svm(train_data,class.weights = wts1)
linear_w1<- predict(best_model,val_data)
linear_weighted<- table(val_data$STATUS,linear_w1)
linear_weighted
有人能帮我解决这个问题吗?我正在使用附加的数据集。
谢谢:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)