Почему размер дерева решений равен нулю со следующей ошибкой кода c50, называемой выходом со значением 1? - PullRequest
0 голосов
/ 19 октября 2019

У меня есть эта переменная с 0's и 1's, которые были преобразованы в NO's и YES's. Имя переменной default и имя набора данных credit_train. Первоначальное решение, которое я попытался, но не сработавшее, заключалось в том, чтобы переменная класса integer default была factor с помощью следующего кода: credit_train$default <- factor(credit_train$default). Это дало переход от следующего:

> class(credit_train$default)
[1] "integer"

> class(credit_train$default)
[1] "factor"

Коэффициент был необходим для следующего алгоритма дерева решений:

credit_model <- C5.0(credit_train[-1],credit_train$default)

Но, после его проверки, было найдено следующее (Размер дерева= 0):

> credit_model

Call:
C5.0.default(x = credit_train[-1], y = credit_train$default)

Classification Tree
Number of samples: 900 
Number of predictors: 20 

Tree size: 0 

Non-standard options: attempt to group attributes

Итак, я попытался установить коэффициенты ДА и НЕТ, поскольку 1 и 0 могли быть проблематичными.

Я включаю полный код прямо нижездесь (до проблемы):

install.packages("C50", dependencies=TRUE, repos='http://cran.rstudio.com/')
library(C50)  # Gives the decision tree algorithm


#######Step 2: EXploring and Preparing the Data####
credit <- read.csv("german.csv")
credit
str(credit)
table(credit$account_check_status)
table(credit$savings)

summary(credit$duration_in_month)
summary(credit$credit_amount)


# A successful model that identifies applicants who are at
# high risk of default, allowing the bank to refuse the credit 
# request before the money is given.
table(credit$default)

# Data Preparation: Create RANDOM training and test datasets
# Use 90% data for training & 10% data for testing
# B/C its not RANDOM (bank sorted data by loan amount, largest
# at end of the file & so train only on the smallest loans)
set.seed(123)

# select 900 values at random out of the sequence of integers
# of 1 to 1,000
train_sample <- sample(1000,900)

# Shows the random selection
str(train_sample)

# The 'train_sample'(900) is passed as selected rows.
credit_train <- credit[train_sample,]

# The REMAINING rows NOT passed (100) become the test
credit_test <- credit[-train_sample,]

# Check to see if randomization was done correctly by having
# 30 percent of loans with default in each of the datasets
prop.table(table(credit_train$default))
prop.table(table(credit_test$default))

#####STEP3: Training a model on the Data ######

# This is yielding a tree size of zero. Removes the default variable since it
# will be used as the target. It needs to be as class factor.
credit_model <- C5.0(credit_train[-1],credit_train$default) 

Вот набор данных:

Пожалуйста, нажмите здесь для данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...