前提・実現したいこと
Rでデータ分析(ランダムフォレスト)を行なっており、その際にcreatefold関数でデータを10分割しています。
最終目的は、
・「Fold01の訓練用(90%)」でモデルを作って、「Fold01のテスト用(10%)」で目的変数の予測を付与(=predict関数)しモデル評価・・・を10回繰り返し行ない、predict関数で追加したデータは残したまま、10分割されたデータを元に戻してCSV出力したいと考えております。
■保存したいイメージ
№ 目的変数予測(テストデータにpredict関数で予測した値 ※0or1)
1 0
2 1
3 1
. .
. .
. .
発生している問題・エラーメッセージ
上記を実行した結果下記のようにfold毎に結果が出ます。
$fold01
(№)
3 5 18 38 43 60 91 97 99 ...
(目的変数予測=0か1)
0 1 0 1 0 1 1 1 1...
$fold02
.
.
.
この結果をCSV出力しようとしましたが、下記エラーが発生します。
write.csv(results, "○○○.csv")
以下エラー
(function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, でエラー:
arguments imply differing number of rows: 118, 119, 117
R
1#ライブラリダウンロード 2library(randomForest) 3library(caret) 4library(modelr) 5library(dplyr) 6 7#データの読み込み 8dfj <- read.csv("任意のデータ.csv",header=T) 9 10#目的変数の属性をfactorに変更 11dfj$目的変数<-as.factor(dfj$P目的変数) 12 13#学習用とテスト用データに分ける 14set.seed(123) 15index <- createDataPartition(dfj$目的変数, p=.8, list=F) 16dfj.train <- dfj[index, ] 17dfj.test <- dfj[-index,] 18 19#データを10分割する 20set.seed(123) 21folds <- createFolds(dfj.train$目的変数,k=10) 22 23#ランダムフォレストを10分割分全て行ない、テストデータにpredictを付与する。 24results <- lapply(folds, function(x){ 25df_train <- dfj.train[-x,] 26df_test <- dfj.train[x,] 27df_model <- randomForest(目的変数 ~ ., data=df_train) 28df_pred <- predict(df_model,df_test) 29}) 30
試したこと
元々下記サイトを参考に進めていましたが、対応に苦慮しております。
http://rtokei.tech/machine-learning/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%80%9C%E3%83%A2%E3%83%87%E3%83%AB%E8%A9%95%E4%BE%A1%E6%B3%95%E3%80%9C/
また、交差検証で分割したデータを元に戻す、といったようなことはネット検索しても有力な手がかりがありませんでした。
何卒、よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/28 08:11
2019/05/28 08:48
2019/05/28 08:58
2019/05/28 23:41
2019/05/29 15:27
2019/05/29 23:46