0

文字列値の属性に基づいて J48 ディシジョン ツリーをプロットし、ターゲット変数 (カテゴリ) を予測しようとしています。数値に基づいてディシジョン ツリーをプロットする多くの例を見てきましたが、文字列に基づいて遭遇したことはありません。

これがサンプル データ セットです。J48 ディシジョン ツリーは問題なく動作します。

library(RWeka)
library(party)

MyData2 <- read.csv(file="iris.csv", header=TRUE, sep=",")
m3 <- J48(species~ ., data = MyData2)`enter code here`
if(require("party", quietly = TRUE)) plot(m3)


sepal_length    sepal_width petal_length    petal_width     species
5.1           3.5             1.4             0.2            setosa
4.9           3               1.4             0.2            setosa
7             3.2             4.7             1.4            versicolor
6.4           3.2             4.5             1.5            versicolor
6.3           3.3             6               2.5            virginica
5.8           2.7             5.1             1.9            virginica

ヘッダーの名前を sepal_length、sepal_width、および sepal_color に変更し、値を「白」、「黒」、色の組み合わせを setosa、versicolor、および virginca に変更した場合、決定木をプロットしてターゲット種の値を予測するにはどうすればよいですか。

以下のようなデータセットがあるとします。

 sepal_color    sepal_color petal_color petal_color species
    white         black       white        black    setosa
    white         yellow      white        yellow   versicolor
    green         brown       green        brown    virginica
4

2 に答える 2

1

文字列変数がカテゴリ変数のレベルを表す場合、それらはfactor()R で a に変換する必要があります。その後、J48()これらを適切に処理できます (他の回帰関数と同様)。

ただし、文字列にフリー テキストが含まれている場合、これらは直接サポートされません。を呼び出す前に、何らかの数値変数または因子変数に対する機能の前処理が必要になりますJ48()

カテゴリ変数に基づく分類の例として、irisデータ内の変数を 、 、 の 3 つのレベルを持つ要因にlow変えてみましょう(各変数を、対応する分位点で同じサイズの 3 つのグループに分割します)。mediumhigh

## load data and convert to factors via cut()
data("iris", package = "datasets")
for(i in 1:4) iris[[i]] <- cut(iris[[i]],
  quantile(iris[[i]], 0:3/3),
  labels = c("low", "medium", "high")
)
head(iris, 3)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          low        high          low         low  setosa
## 2          low      medium          low         low  setosa
## 3          low      medium          low         low  setosa

## fit and plot J4.8 tree
j48 <- J48(Species ~ ., data = iris)
plot(j48)

J4.8 ツリー

于 2019-02-19T15:11:23.887 に答える