iT邦幫忙

0

R語言/機器學習,分割資料

我正在做一個疾病相關的機器學習模型預測,預測資料分成正常和不正常,我想要將資料平均分割成:訓練資料10個正常5個不正常,測試資料10個正常5個不正常,像這樣的分割方式,請問版上大大有甚麼方法可以做到這樣平均分割資料呢,另外附上我在預測用的程式碼,謝謝大家的指教!!!

library(xgboost)
library(caret)
library(Matrix)
getwd()
setwd("/Users/tssc7/Desktop/data2/anxiety")
d <- read.csv("data2_anxiety_psychology_2.csv")
#劃分訓練、測試資料
trainlist <- createDataPartition(d$number,p = 0.7, list = FALSE)
trainset <- d[trainlist,]
testset <- d[-trainlist,]

#1.資料格式轉換

#1-1自變量轉為matrix
traindata1 <- data.matrix(trainset[,c(3:53)])
#1-2應變量
train_y <- trainset[,2]
#1-3自辯量、應變量組合list
traindata <- list(data = traindata1,label = trainset[,2])
#1-4建構模型需要的gb.DMatrix
dtrain <- xgb.DMatrix(data = traindata$data, label = traindata$label)

#2.測試資料同上
testset1 <- data.matrix(testset[,c(3:53)])
test_y <- testset[,2]
testset <- list(data = testset1, label = testset[,2])
dtest <- xgb.DMatrix(data = testset$data, label = testset$label)

#3.建構模型
model_xgb <- xgboost(data = dtrain,booster = 'gbtree',
                     max_depth = 8,
                     eta = 0.3,
                     num_class = 2,
                     nround = 25)

#4.模型預測
pre <- predict(model_xgb,newdata = dtest)

#5.模型評估
library(caret)
xgb.cf <- caret::confusionMatrix(as.factor(pre),as.factor(test_y))
xgb.cf
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
ragequit
iT邦新手 5 級 ‧ 2021-12-14 17:21:44

可以參考這個https://iter01.com/522027.html
使用stratify 切割成1:1資料應該會符合你的要求

這好像是python的語法,R語言能使用嗎

0
obarisk
iT邦研究生 2 級 ‧ 2021-12-14 22:34:19

正常/不正常分開抽樣. 最後再組起來就可以了

我要發表回答

立即登入回答