1

R を使用して機械学習を実践しています。トレーニングには rpart メソッドを使用しています。データは、UCI の成人向けデータ セットです。次のようにリンクします

http://archive.ics.uci.edu/ml/datasets/Adult

#Get the data    
adultData <- read.table("adult.data", header = FALSE, sep = ",")
adultName <- read.csv("adult.name", header = TRUE, sep = ",", stringsAsFactors = FALSE)
names(adultData) <- names(adultName)

練習を簡素化するために、いくつかの属性のみを選択し、データ セットを 20% のみに減らします。

selected <- c("age", "education", "marital.status", "relationship", "sex", "hours.per.week", "salary")
adultData <- subset(adultData, select = selected)
trainIndex = createDataPartition(adultData$salary, p=0.20, list=FALSE)
training = adultData[ trainIndex, ]

「rpart」を使用してモデルを適合させるには約 1 分かかります (「gbm」または「rf」では遅くなります)。

set.seed(33833)
modFit <- train(salary ~ ., method = "rpart", data=training)

問題は、新しいデータ値での私の予測から来ています。新しいデータ フレームを作成します

a <- data.frame(age = 40, education = "Bachelors", marital.status = "Divorced", relationship = "Wife", sex = "Female", hours.per.week = 40)
predict(modFit, newdata = a)

「教育に新しいレベルがあります」というエラーが返されます。

問題がこれらのカテゴリ (因子) 変数に起因することはわかっています。どういうわけか、彼らは「Bachelors」をすでに持っている要因としてではなく、新しい文字列 (新しい要因) として認識しています。

4

1 に答える 1