Как добавить новую строку в данный набор данных в R и предсказать классы?Я делаю классификацию или регресс? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть набор данных. Моя задача - применять разные классификаторы и прогнозировать класс новых данных.

Мой вопрос: как прогнозировать кредитный рейтинг

Значения рядом с именем каждой переменной - это оценка, которую человек должен иметь против этих конкретных переменных.

Я имею в виду, я знаю, как тренироваться и тестировать весь набор данных. Например, я бы сделал что-то вроде этого, чтобы предсказать, используя дерево решений:

train_tree<-rpart(rating~.,data=train,method = "class")
predict_test<-predict(rating~.,data=test,type="class")

Теперь, как мне прогнозировать кредитный рейтинг клиента? Любые предложения будут высоко оценены. Заранее спасибо.

1 Ответ

0 голосов
/ 18 мая 2018

Способ прогнозировать срединную единицу состоит в том, чтобы создать новый фрейм данных с единицей, которая имеет медианные значения по всем переменным, и скорректировать ее до predict().Пример с линейной регрессией будет:

set.seed(2018)

## Let's make some example data.
df <- data.frame(
  x1 = rnorm(1000, 1),
  x2 = rnorm(1000),
  x3 = rnorm(1000, -1)
)
df$y = .4 * df$x1 + -.2 * df$x2 + .1 * df$x3 + rnorm(1000)

## ... and fit a simple linear model.
fit <- lm(y ~ x1 + x2 + x3, data = df)
summary(fit)

#> Call:
#> lm(formula = y ~ x1 + x2 + x3, data = df)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -3.13203 -0.66952 -0.05941  0.67924  2.85789 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept) -0.10350    0.05593  -1.850   0.0646 .  
#> x1           0.43968    0.03123  14.077  < 2e-16 ***
#> x2          -0.18725    0.03179  -5.891 5.26e-09 ***
#> x3           0.01585    0.03219   0.492   0.6226    
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> Residual standard error: 1.001 on 996 degrees of freedom
#> Multiple R-squared:  0.1914, Adjusted R-squared:  0.189 
#> F-statistic:  78.6 on 3 and 996 DF,  p-value: < 2.2e-16


## To get the median unit, just make a unit which as median value on
## each variable.
new_data <- data.frame(
  x1 = median(df$x1),
  x2 = median(df$x2),
  x3 = median(df$x3)
)

## You can also do this much more efficiently. Here is an example if
## all your variables are numeric.
new_data <- as.data.frame(lapply(df, median))

## Give this new data frame to `predict()` to predict y for the median
## unit.
predict(fit, newdata = new_data)

#>        1 
#> 0.3407412 


## Lets compare to the mean of y.
mean(df$y)

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