前提
R言語初心者です.
R言語を使って決定木アルゴリズムのCHAIDを利用したいのですが,うまくいきません.
発生している問題・エラーメッセージ
> treeModel <- chaid(data = Data)# CHAIDを実行 Error in step1internal(response, xvars[[i]], weights, indices[[i]], ctrl) : is.factor(x) は TRUE ではありません
該当のソースコード
R
1library(CHAID) # ライブラリを読み込み 2Data <- read.csv("E:/masato/study/lab/experiment/SQL/resurt/emp_type_pop.csv", header=T, stringsAsFactors=TRUE) # データを読み込み 3cls <- read.csv("E:/masato/study/lab/experiment/cpp/cls/cls001_class.csv", header=T, stringsAsFactors=TRUE) # クラスを読み込み 4cls <- cls[,colnames(cls) != "X"] 5#Data$city_code <- as.character(Data$city_code) 6cls$cls <- as.factor(cls$cls) 7Data <- merge(Data,cls,by="city_code") 8Data <- Data[,colnames(Data) != "city_code"] 9 10for (i in 1:ncol(Data)) { # ループの始まり。データの列数を数えて同じ回数繰り返す 11 if (class(Data[,i]) == "numeric") { # 条件分岐の始まり 12 Data[,i] <- droplevels(cut(Data[,i], breaks = 5,include.lowest = TRUE))# 5分割する場合。量的データは、質的データに変換する。 13 } # if文の処理の終わり 14} # ループの終わり 15treeModel <- chaid(cls ~ ., data = Data)# CHAIDを実行 16plot(treeModel) # グラフにする。
補足情報(FW/ツールのバージョンなど)
Dataの中身はこのようになっています.
str(Data)
'data.frame': 499 obs. of 5 variables:
$ unemp : int 67749 49825 100513 95749 69178 48446 23085 12335 99148 21399 ...
$ general : int 27805 22223 40515 40775 28988 19127 8089 5426 43399 8277 ...
$ short : int 13410 9497 17173 17330 12980 7995 3492 2335 15816 3368 ...
$ temporary: int 587 424 757 694 509 381 147 101 695 126 ...
$ cls : Factor w/ 5 levels "0","1","2","3",..: 5 5 5 5 5 5 5 4 5 5 ...
CHAIDのインストールはこのように行いました.
install.packages("CHAID",repos="http://R-Forge.R-project.org")

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。