1. ホーム
  2. r

[解決済み] C5.0決定木 - c50のコードは値1で終了と呼ばれます。

2022-02-18 12:11:37

質問

次のようなエラーが発生します。

c50 コードが値 1 で終了を呼び出した

Kaggleで公開されているタイタニックのデータでやっています。

# Importing datasets
train <- read.csv("train.csv", sep=",")

# this is the structure
  str(train)

出力 :-)

    'data.frame':   891 obs. of  12 variables:
 $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
 $ Survived   : int  0 1 1 1 0 0 0 0 1 1 ...
 $ Pclass     : int  3 1 3 1 3 3 1 3 3 2 ...
 $ Name       : Factor w/ 891 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ...
 $ Sex        : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
 $ Age        : num  22 38 26 35 35 NA 54 2 27 14 ...
 $ SibSp      : int  1 1 0 1 0 0 0 3 0 1 ...
 $ Parch      : int  0 0 0 0 0 0 0 1 2 0 ...
 $ Ticket     : Factor w/ 681 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ...
 $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
 $ Cabin      : Factor w/ 148 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ...
 $ Embarked   : Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ...

次に、C5.0のdtreeを使用してみました。

# Trying with C5.0 decision tree
library(C50)

#C5.0 models require a factor outcome otherwise error
train$Survived <- factor(train$Survived)

new_model <- C5.0(train[-2],train$Survived)

そこで、上記の行を実行すると、次のようなエラーが発生します。

c50 code called exit with value 1

何が問題なのかがわからないのですが?別のデータセットで同じようなコードを使っていて、うまくいっていたのですが。どうすれば私のコードをデバッグできるのか、何かアイデアはありませんか?

-ありがとうございます。

解決方法は?

ご興味のある方は、こちらでデータをご覧ください。 http://www.kaggle.com/c/titanic-gettingStarted/data . ダウンロードするには会員登録が必要だと思います。

あなたの問題についてですが、まず、あなたは次のように書いたかったのだと思います。

new_model <- C5.0(train[,-2],train$Survived)

次に CabinEmbarked 列です。これら2つの要素は、レベル名として空文字を使用します(チェックアウトは levels(train$Embarked) ). この点は C50 が倒れる。このようにデータを修正すると

levels(train$Cabin)[1] = "missing"
levels(train$Embarked)[1] = "missing"

これで、あなたのアルゴリズムはエラーなしで実行されるでしょう。