私はRを新しくしており、割り当てのためのC5.0決定木で5倍交差検証を実装するためにforループを使用しています。私はターゲット変数の結果を予測するために、ループ内で安全/ツリー全体モデルにアクセスするにはどうすればよいRでクロスバリデーションを使用してC5.0デシジョンツリーをループするときに個々の予測モデルを保存する方法?
explanatory_variables.dt<-names(data_known)[-16]
form.dt<-as.formula(paste("target ~", paste(explanatory_variables.dt,
collapse = "+")))
folds.dt<-split(data_known,cut(sample(1:nrow(data_known)),5))
errs.c50.dt<-rep(NA,length(folds.dt))
for (i in 1:length(folds.dt)) {
test.dt<-ldply(folds.dt[i],data.frame)
train.dt<-ldply(folds.dt[-i],data.frame)
tmp.model.dt<-C5.0(form.dt,train.dt)
tmp.predict.dt<-predict(tmp.model.dt, newdata=test.dt)
conf.mat.dt<-table(test.dt$target,tmp.predict.dt)
errs.c50.dt[i]<-1-sum(diag(conf.mat.dt))/sum(conf.mat.dt)
}
print(sprintf("average error using k-fold cross validation and C5.0
decision tree algorithm: %.3f percent", 100*mean(errs.c50.dt)))
:
head(data_known)
order_item_id order_date item_id item_size brand_id item_price user_id
1 1 2012-09 1507 UNSIZED 102 24.9 4694
2 2 2012-11 1745 10 64 75.0 6097
3 3 2013-01 2588 XXL 42 79.9 7223
4 4 2012-08 164 40 47 79.9 4124
5 5 2012-09 1640 L 97 69.9 881
6 6 2013-03 2378 38 72 129.9 1576
user_title user_dob user_state user_reg_date
1 Mrs 1964-11 Rhineland-Palatinate 2011-02
2 Mrs 1973-08 Brandenburg 2011-05
3 Mrs 1949-08 Saarland 2013-01
4 Mrs 1960-12 Thuringia 2012-08
5 Mrs 1971-06 Baden-Wuerttemberg 2012-01
6 Mrs 1965-10 North Rhine-Westphalia 2011-02
delivery_time_days user_title_NA item_size_NA user_dob_NA target
1 2 0 0 0 Return
2 4 0 0 0 No Return
3 2 0 0 0 Return
4 5 0 0 0 Return
5 3 0 0 0 Return
6 11 0 0 0 Return
を今私のループは、次のように私のデータセットが見えますその真の実現が未知の別のデータセット?クロスバリデーションを使用する場合は、tmp.model.dtだけで予測を行う必要がありますか?
ご協力いただきありがとうございます。
ベスト、ここで
ニコ
あなたの後ろの構造はリストです。モデルを作成し、そこにモデルを保存します。後で使うために 'save'を使ってリストを保存することができます。 –
素早い返信、ローマ字ありがとうございました。私はあなたとjのコメントのためにこれで解決することができました。 – Nico