library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readr)
library(DataExplorer)
library(ggplot2)
library(rsample)
library(caret)
## Loading required package: lattice
##
## Attaching package: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
##
## The following object is masked from 'package:dplyr':
##
## combine
##
## The following object is masked from 'package:ggplot2':
##
## margin
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
##
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(xgboost)
##
## Attaching package: 'xgboost'
##
## The following object is masked from 'package:dplyr':
##
## slice
library(rpart)
library(rpart.plot)
## lee los datos
url <-"https://raw.githubusercontent.com/pvbl/churn-modeling-telco-data/main/telco_dataset.csv"
datos <- read_csv(url)
## Rows: 7053 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): customerID, gender, Partner, Dependents, PhoneService, MultipleLin...
## dbl (7): SeniorCitizen, tenure, MonthlyCharges, TotalCharges, year_saved, t...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# mira la tipología de cada una de las variables
str(datos)
## spc_tbl_ [7,053 × 25] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ customerID : chr [1:7053] "7590-VHVEG" "5575-GNVDE" "3668-QPYBK" "7795-CFOCW" ...
## $ gender : chr [1:7053] "Female" "Male" "Male" "Male" ...
## $ SeniorCitizen : num [1:7053] 0 0 0 0 0 0 0 0 0 0 ...
## $ Partner : chr [1:7053] "Yes" "No" "No" "No" ...
## $ Dependents : chr [1:7053] "No" "No" "No" "No" ...
## $ tenure : num [1:7053] 1 34 2 45 2 8 22 10 28 62 ...
## $ PhoneService : chr [1:7053] "No" "Yes" "Yes" "No" ...
## $ MultipleLines : chr [1:7053] "No phone service" "No" "No" "No phone service" ...
## $ InternetService : chr [1:7053] "DSL" "DSL" "DSL" "DSL" ...
## $ OnlineSecurity : chr [1:7053] "No" "Yes" "Yes" "Yes" ...
## $ OnlineBackup : chr [1:7053] "Yes" "No" "Yes" "No" ...
## $ DeviceProtection: chr [1:7053] "No" "Yes" "No" "Yes" ...
## $ TechSupport : chr [1:7053] "No" "No" "No" "Yes" ...
## $ StreamingTV : chr [1:7053] "No" "No" "No" "No" ...
## $ StreamingMovies : chr [1:7053] "No" "No" "No" "No" ...
## $ Contract : chr [1:7053] "Month-to-month" "One year" "Month-to-month" "One year" ...
## $ PaperlessBilling: chr [1:7053] "Yes" "No" "Yes" "No" ...
## $ PaymentMethod : chr [1:7053] "Electronic check" "Mailed check" "Mailed check" "Bank transfer (automatic)" ...
## $ MonthlyCharges : num [1:7053] 29.9 57 53.9 42.3 70.7 ...
## $ TotalCharges : num [1:7053] 29.9 1889.5 108.2 1840.8 151.7 ...
## $ Churn : chr [1:7053] "No" "No" "Yes" "No" ...
## $ year_saved : num [1:7053] 2022 2022 2022 2022 2022 ...
## $ source : chr [1:7053] "IBM" "IBM" "IBM" "IBM" ...
## $ tenure_years : num [1:7053] 0 3 0 4 0 1 2 1 2 5 ...
## $ age : num [1:7053] 27 27 27 27 27 27 27 27 27 27 ...
## - attr(*, "spec")=
## .. cols(
## .. customerID = col_character(),
## .. gender = col_character(),
## .. SeniorCitizen = col_double(),
## .. Partner = col_character(),
## .. Dependents = col_character(),
## .. tenure = col_double(),
## .. PhoneService = col_character(),
## .. MultipleLines = col_character(),
## .. InternetService = col_character(),
## .. OnlineSecurity = col_character(),
## .. OnlineBackup = col_character(),
## .. DeviceProtection = col_character(),
## .. TechSupport = col_character(),
## .. StreamingTV = col_character(),
## .. StreamingMovies = col_character(),
## .. Contract = col_character(),
## .. PaperlessBilling = col_character(),
## .. PaymentMethod = col_character(),
## .. MonthlyCharges = col_double(),
## .. TotalCharges = col_double(),
## .. Churn = col_character(),
## .. year_saved = col_double(),
## .. source = col_character(),
## .. tenure_years = col_double(),
## .. age = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
# chequea tenga coherencia
glimpse(datos)
## Rows: 7,053
## Columns: 25
## $ customerID <chr> "7590-VHVEG", "5575-GNVDE", "3668-QPYBK", "7795-CFOCW…
## $ gender <chr> "Female", "Male", "Male", "Male", "Female", "Female",…
## $ SeniorCitizen <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ Partner <chr> "Yes", "No", "No", "No", "No", "No", "No", "No", "Yes…
## $ Dependents <chr> "No", "No", "No", "No", "No", "No", "Yes", "No", "No"…
## $ tenure <dbl> 1, 34, 2, 45, 2, 8, 22, 10, 28, 62, 13, 16, 58, 49, 2…
## $ PhoneService <chr> "No", "Yes", "Yes", "No", "Yes", "Yes", "Yes", "No", …
## $ MultipleLines <chr> "No phone service", "No", "No", "No phone service", "…
## $ InternetService <chr> "DSL", "DSL", "DSL", "DSL", "Fiber optic", "Fiber opt…
## $ OnlineSecurity <chr> "No", "Yes", "Yes", "Yes", "No", "No", "No", "Yes", "…
## $ OnlineBackup <chr> "Yes", "No", "Yes", "No", "No", "No", "Yes", "No", "N…
## $ DeviceProtection <chr> "No", "Yes", "No", "Yes", "No", "Yes", "No", "No", "Y…
## $ TechSupport <chr> "No", "No", "No", "Yes", "No", "No", "No", "No", "Yes…
## $ StreamingTV <chr> "No", "No", "No", "No", "No", "Yes", "Yes", "No", "Ye…
## $ StreamingMovies <chr> "No", "No", "No", "No", "No", "Yes", "No", "No", "Yes…
## $ Contract <chr> "Month-to-month", "One year", "Month-to-month", "One …
## $ PaperlessBilling <chr> "Yes", "No", "Yes", "No", "Yes", "Yes", "Yes", "No", …
## $ PaymentMethod <chr> "Electronic check", "Mailed check", "Mailed check", "…
## $ MonthlyCharges <dbl> 29.85, 56.95, 53.85, 42.30, 70.70, 99.65, 89.10, 29.7…
## $ TotalCharges <dbl> 29.85, 1889.50, 108.15, 1840.75, 151.65, 820.50, 1949…
## $ Churn <chr> "No", "No", "Yes", "No", "Yes", "Yes", "No", "No", "Y…
## $ year_saved <dbl> 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,…
## $ source <chr> "IBM", "IBM", "IBM", "IBM", "IBM", "IBM", "IBM", "IBM…
## $ tenure_years <dbl> 0, 3, 0, 4, 0, 1, 2, 1, 2, 5, 1, 1, 5, 4, 2, 6, 4, 6,…
## $ age <dbl> 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, NaN, 27, 27, …
# haz un gráfico de las columnas y su tipo con DataExplorer (plot_str)
plot_str(datos)
## muestra el número de filas y columnas
dim(datos)
## [1] 7053 25
## muestra un sumary de los datos
summary(datos)
## customerID gender SeniorCitizen Partner
## Length:7053 Length:7053 Min. :0.0000 Length:7053
## Class :character Class :character 1st Qu.:0.0000 Class :character
## Mode :character Mode :character Median :0.0000 Mode :character
## Mean :0.1619
## 3rd Qu.:0.0000
## Max. :1.0000
##
## Dependents tenure PhoneService MultipleLines
## Length:7053 Min. : 0.00 Length:7053 Length:7053
## Class :character 1st Qu.: 9.00 Class :character Class :character
## Mode :character Median :29.00 Mode :character Mode :character
## Mean :32.36
## 3rd Qu.:55.00
## Max. :72.00
##
## InternetService OnlineSecurity OnlineBackup DeviceProtection
## Length:7053 Length:7053 Length:7053 Length:7053
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## TechSupport StreamingTV StreamingMovies Contract
## Length:7053 Length:7053 Length:7053 Length:7053
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## PaperlessBilling PaymentMethod MonthlyCharges TotalCharges
## Length:7053 Length:7053 Min. : 18.25 Min. : 18.8
## Class :character Class :character 1st Qu.: 35.50 1st Qu.: 401.1
## Mode :character Mode :character Median : 70.35 Median :1397.5
## Mean : 64.76 Mean :2282.0
## 3rd Qu.: 89.85 3rd Qu.:3787.9
## Max. :118.75 Max. :8684.8
## NA's :11
## Churn year_saved source tenure_years
## Length:7053 Min. :2022 Length:7053 Min. :0.000
## Class :character 1st Qu.:2022 Class :character 1st Qu.:1.000
## Mode :character Median :2022 Mode :character Median :2.000
## Mean :2022 Mean :2.684
## 3rd Qu.:2022 3rd Qu.:5.000
## Max. :2022 Max. :6.000
##
## age
## Min. :27
## 1st Qu.:27
## Median :27
## Mean :27
## 3rd Qu.:27
## Max. :27
## NA's :2
##¿Existe alguna(s) variable(s) que sea constante (tenga todos los valores iguales)? Usa para ello la función n_distinct de tidyverse
constantes <- sapply(datos, function(x) n_distinct(x) == 1)
names(datos)[constantes]
## [1] "year_saved" "source"
## Si es así eliminala(s)
datos <- datos[, !constantes]
# Evalúa el número de duplicados. En caso de que haya, ¿cuantos hay? Eliminalos
nrow(datos) - nrow(distinct(datos))
## [1] 10
datos <- distinct(datos)
# idenfica si después de eliminar los duplicados, existe algún customerID duplicado.
datos %>%
group_by(customerID) %>%
filter(n() > 1) %>%
ungroup()
## # A tibble: 0 × 23
## # ℹ 23 variables: customerID <chr>, gender <chr>, SeniorCitizen <dbl>,
## # Partner <chr>, Dependents <chr>, tenure <dbl>, PhoneService <chr>,
## # MultipleLines <chr>, InternetService <chr>, OnlineSecurity <chr>,
## # OnlineBackup <chr>, DeviceProtection <chr>, TechSupport <chr>,
## # StreamingTV <chr>, StreamingMovies <chr>, Contract <chr>,
## # PaperlessBilling <chr>, PaymentMethod <chr>, MonthlyCharges <dbl>,
## # TotalCharges <dbl>, Churn <chr>, tenure_years <dbl>, age <dbl>
# Haz un descriptivo con plot_intro de DataExplorer
plot_intro(datos)
¿Existen valores NaNs?
# plotea los missing values con Data Explorer
plot_missing(datos)
# haz un summary del subset del dataframe que contenga los nans (filtra el dataframe con todos los nans y haz un sumary)
datos_nans <- datos[!complete.cases(datos), ]
summary(datos_nans)
## customerID gender SeniorCitizen Partner
## Length:13 Length:13 Min. :0.00000 Length:13
## Class :character Class :character 1st Qu.:0.00000 Class :character
## Mode :character Mode :character Median :0.00000 Mode :character
## Mean :0.07692
## 3rd Qu.:0.00000
## Max. :1.00000
##
## Dependents tenure PhoneService MultipleLines
## Length:13 Min. : 0.000 Length:13 Length:13
## Class :character 1st Qu.: 0.000 Class :character Class :character
## Mode :character Median : 0.000 Mode :character Mode :character
## Mean : 1.077
## 3rd Qu.: 0.000
## Max. :13.000
##
## InternetService OnlineSecurity OnlineBackup DeviceProtection
## Length:13 Length:13 Length:13 Length:13
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## TechSupport StreamingTV StreamingMovies Contract
## Length:13 Length:13 Length:13 Length:13
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## PaperlessBilling PaymentMethod MonthlyCharges TotalCharges
## Length:13 Length:13 Min. :19.70 Min. : 39.65
## Class :character Class :character 1st Qu.:20.25 1st Qu.:176.60
## Mode :character Mode :character Median :39.65 Median :313.55
## Mean :41.94 Mean :313.55
## 3rd Qu.:56.05 3rd Qu.:450.50
## Max. :80.85 Max. :587.45
## NA's :11
## Churn tenure_years age
## Length:13 Min. :0.00000 Min. :27
## Class :character 1st Qu.:0.00000 1st Qu.:27
## Mode :character Median :0.00000 Median :27
## Mean :0.07692 Mean :27
## 3rd Qu.:0.00000 3rd Qu.:27
## Max. :1.00000 Max. :27
## NA's :2
# evalúa cual es el valor más frecuente de la variable tenure para el subset anterior. Luego mira dentro de todo el dataframe, cuantas veces aparece repetido ese valor más frecuente. ¿Qué crees que puede decirnos esto?
valor_frecuente_s <- which.max(table(datos_nans$tenure))
valor_frecuente <- names(valor_frecuente_s)
frecuencia_total <- sum(datos$tenure == as.numeric(valor_frecuente))
cat(valor_frecuente, frecuencia_total)
## 0 11
# A qué crees que se debe esto? ¿Qué valor crees que hay que imputar en los NaNs¿
# Que Total Charges tenga 11 NaN, y tenemos 11 valores en tenure iguales a 0, indica que TotalCharges depende del valor de tenure (meses que los clientes han estado en la compañía), es decir, indicaría clientes nuevos. Por tanto, implicar una mediana podría no ser la mejor idea y representar TotalCharges con un 0 sería lo lógico.
# imputa el valor de los nans a la columna TotalCharges
datos$TotalCharges[is.na(datos$TotalCharges) & datos$tenure == 0] <- 0
# chequea que no hay missing values ahora
sum(is.na(datos$TotalCharges))
## [1] 0
plot_missing(datos)
# Identificar filas con valores NA en la columna age
missing_age <- is.na(datos$age)
# Ver las filas con valores faltantes en age
datos[missing_age, ]
## # A tibble: 2 × 23
## customerID gender SeniorCitizen Partner Dependents tenure PhoneService
## <chr> <chr> <dbl> <chr> <chr> <dbl> <chr>
## 1 9763-GRSKD Male 0 Yes Yes 13 Yes
## 2 8779-QRDMV Male 1 No No 1 No
## # ℹ 16 more variables: MultipleLines <chr>, InternetService <chr>,
## # OnlineSecurity <chr>, OnlineBackup <chr>, DeviceProtection <chr>,
## # TechSupport <chr>, StreamingTV <chr>, StreamingMovies <chr>,
## # Contract <chr>, PaperlessBilling <chr>, PaymentMethod <chr>,
## # MonthlyCharges <dbl>, TotalCharges <dbl>, Churn <chr>, tenure_years <dbl>,
## # age <dbl>
# Eliminar la columna 'age' del dataframe
datos <- datos[, !names(datos) %in% "age"]
# Verificar que la columna ha sido eliminada
str(datos)
## tibble [7,043 × 22] (S3: tbl_df/tbl/data.frame)
## $ customerID : chr [1:7043] "7590-VHVEG" "5575-GNVDE" "3668-QPYBK" "7795-CFOCW" ...
## $ gender : chr [1:7043] "Female" "Male" "Male" "Male" ...
## $ SeniorCitizen : num [1:7043] 0 0 0 0 0 0 0 0 0 0 ...
## $ Partner : chr [1:7043] "Yes" "No" "No" "No" ...
## $ Dependents : chr [1:7043] "No" "No" "No" "No" ...
## $ tenure : num [1:7043] 1 34 2 45 2 8 22 10 28 62 ...
## $ PhoneService : chr [1:7043] "No" "Yes" "Yes" "No" ...
## $ MultipleLines : chr [1:7043] "No phone service" "No" "No" "No phone service" ...
## $ InternetService : chr [1:7043] "DSL" "DSL" "DSL" "DSL" ...
## $ OnlineSecurity : chr [1:7043] "No" "Yes" "Yes" "Yes" ...
## $ OnlineBackup : chr [1:7043] "Yes" "No" "Yes" "No" ...
## $ DeviceProtection: chr [1:7043] "No" "Yes" "No" "Yes" ...
## $ TechSupport : chr [1:7043] "No" "No" "No" "Yes" ...
## $ StreamingTV : chr [1:7043] "No" "No" "No" "No" ...
## $ StreamingMovies : chr [1:7043] "No" "No" "No" "No" ...
## $ Contract : chr [1:7043] "Month-to-month" "One year" "Month-to-month" "One year" ...
## $ PaperlessBilling: chr [1:7043] "Yes" "No" "Yes" "No" ...
## $ PaymentMethod : chr [1:7043] "Electronic check" "Mailed check" "Mailed check" "Bank transfer (automatic)" ...
## $ MonthlyCharges : num [1:7043] 29.9 57 53.9 42.3 70.7 ...
## $ TotalCharges : num [1:7043] 29.9 1889.5 108.2 1840.8 151.7 ...
## $ Churn : chr [1:7043] "No" "No" "Yes" "No" ...
## $ tenure_years : num [1:7043] 0 3 0 4 0 1 2 1 2 5 ...
# Verificar si aún hay valores faltantes en age
# sum(is.na(datos$age))
# Resulta que todas las edades del dataset eran igual a 27, por tanto, es mejor eliminar esta columna que no aporta información
# que imputar ningún valor sobre la columna
# analisis del numero de ceros total
## saca el número de ceros que tiene cada columna
## ¿ Qué columna tiene más ceros y a qué se debe?
ceros_por_columna <- sapply(datos, function(x) sum(x == 0, na.rm = TRUE))
ceros_por_columna
## customerID gender SeniorCitizen Partner
## 0 0 5901 0
## Dependents tenure PhoneService MultipleLines
## 0 11 0 0
## InternetService OnlineSecurity OnlineBackup DeviceProtection
## 0 0 0 0
## TechSupport StreamingTV StreamingMovies Contract
## 0 0 0 0
## PaperlessBilling PaymentMethod MonthlyCharges TotalCharges
## 0 0 0 11
## Churn tenure_years
## 0 1481
nombre_columna_max_ceros <- names(which.max(ceros_por_columna))
max_ceros <- max(ceros_por_columna)
cat("Columna con más ceros: ", nombre_columna_max_ceros, max_ceros)
## Columna con más ceros: SeniorCitizen 5901
# SeniorCitizen indica si el cliente está jubilado o no, con un 1 o un 0 respectivamente. Por tanto obtendríamos que la mayoría de los clientes NO están jubilados (5901/7053). Esta desproporción podría generarnos problemas a la hora de hacer un modelo generalizable, según los datos sociodemográficos de nuestros clientes, esta muestra podría no ser suficiente.
# transforma las variables tipo str a factor. Usa para ello la función
## mutate_if(dataframe,condicion,funcion de conversion)
datos <- datos %>%
mutate_if(is.character, as.factor)
# haz un histograma con ggplot2 de tenure que tenga coloreado los bines según el churn (si el cliente se ha ido o no)
ggplot(datos, aes(x = tenure, fill = Churn)) +
geom_histogram(binwidth = 1, position = "identity", alpha = 0.6) +
labs(x = "Tenure (meses)", y = "Frecuencia", fill = "Churn") +
theme_minimal()
# Quise hacerlo un poco más elegante para verlo mejor. Vemos una clara relación entre quedarse más meses y no haber abandonado la compañía.
# Lo más característico es la tasa de abandono en los primeros meses y la clara estrategia de fidelización del cliente.
# haz un gráfico de barras de la variable PhoneServices y que esté coloreado con el Churn
ggplot(datos, aes(x = PhoneService, fill = Churn)) +
geom_bar(position = "dodge") +
labs(x = "Servicio Telefónico", y = "Frecuencia", fill = "Churn") +
theme_minimal()
# Casi todos tienen servicio telefónico, pero tenerlo o no tenerlo apenas supone diferencia en el abandono.
# haz una gráfica de puntos de total charges en el eje de las y y Monthly Charges en el eje de las X, colorea según la variable Contract la gráfica tiene una forma particular, a qué crees que se debe?
ggplot(datos, aes(x = MonthlyCharges, y = TotalCharges, color = Contract)) +
geom_point(alpha = 0.6) +
labs(x = "Cargos Mensuales", y = "Cargos Totales", color = "Tipo de Contrato") +
theme_minimal()
# A mayor tiempo de duración del contrato, mayor precio mensual. Vemos como los contratos a largo plazo suponen el mayor equilibrio entre Cargos Totales y Cargos Mensuales. Además, es un producto que parece ser elegido con el tiempo por los consumidores.
# haz un report de dataexplorer en el que estén los histogramas
## ¿Qué tipo de distribución ves en MonthlyCharges, qué particularidad tiene?
##
create_report(datos, y = "MonthlyCharges")
##
##
## processing file: report.rmd
##
|
| | 0%
|
|. | 2%
|
|.. | 5% [global_options]
|
|... | 7%
|
|.... | 10% [introduce]
|
|.... | 12%
|
|..... | 14% [plot_intro]
|
|...... | 17%
|
|....... | 19% [data_structure]
|
|........ | 21%
|
|......... | 24% [missing_profile]
|
|.......... | 26%
|
|........... | 29% [univariate_distribution_header]
|
|........... | 31%
|
|............ | 33% [plot_histogram]
|
|............. | 36%
|
|.............. | 38% [plot_density]
|
|............... | 40%
|
|................ | 43% [plot_frequency_bar]
|
|................. | 45%
|
|.................. | 48% [plot_response_bar]
|
|.................. | 50%
|
|................... | 52% [plot_with_bar]
|
|.................... | 55%
|
|..................... | 57% [plot_normal_qq]
|
|...................... | 60%
|
|....................... | 62% [plot_response_qq]
|
|........................ | 64%
|
|......................... | 67% [plot_by_qq]
|
|.......................... | 69%
|
|.......................... | 71% [correlation_analysis]
|
|........................... | 74%
|
|............................ | 76% [principal_component_analysis]
|
|............................. | 79%
|
|.............................. | 81% [bivariate_distribution_header]
|
|............................... | 83%
|
|................................ | 86% [plot_response_boxplot]
|
|................................. | 88%
|
|................................. | 90% [plot_by_boxplot]
|
|.................................. | 93%
|
|................................... | 95% [plot_response_scatterplot]
|
|.................................... | 98%
|
|.....................................| 100% [plot_by_scatterplot]
## output file: E:/Master_EOI/M5_Analisis_de_Datos/5.2_analisis_estadistico_con_R/eoi-curso-introduccion-R-main/report.knit.md
## "C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS "E:\Master_EOI\M5_Analisis_de_Datos\5.2_analisis_estadistico_con_R\eoi-curso-introduccion-R-main\report.knit.md" --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc1a80229576ed.html --lua-filter "C:\Users\Roman\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\Roman\AppData\Local\R\win-library\4.3\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template "C:\Users\Roman\AppData\Local\R\win-library\4.3\rmarkdown\rmd\h\default.html" --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable "mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" --include-in-header "C:\Users\Roman\AppData\Local\Temp\RtmpaaSMM7\rmarkdown-str1a805539281e.html"
##
## Output created: report.html
# utiliza la función de plot_correlation de dataexplorer, pon que el tipo de variables a evaluar son sólo las tipo "continuous"
plot_correlation(datos, type= "continuous")
## ¿ves algunas variables que tengan una correlación alta y que puedan significar lo mismo (>0.90)?
# tenure y tenure_years son prácticamente idénticos. Procederemos a eliminar tenure_years, ya que meses creo que nos va a proporcionar más información o al menos más detallada.
## elimina aquella que creas más conveniente
datos <- datos %>% select(-tenure_years)
# haz una división train test split usando initial_split con una prop de 3/4 de la librería rsample
# elimina la varible del df CustomerID (si no lo has hecho antes)
# Eliminamos la variable CustomerID
datos <- select(datos, -customerID)
# División del conjunto de datos con proporción 3/4
set.seed(123)
split <- initial_split(datos, prop = 3/4)
# Creamos los conjuntos de datos de entrenamiento y test
train_set <- training(split)
test_set <- testing(split)
# haz un random forest con caret, usa el siguiente trainControl para ello, la métrica de optimización es la ROC (metric=ROC)
# evalúa el performance del modelo como con el árbol de decisión
# plotea la importancia de las variables
# plotea la curva ROC usando la librería caTools
# ¿piensas que son los resultados congruentes a partir del feature importance?
# La importancia es congruente, el tenure (número de meses en la compañía) como factor más relevante es coherente con los resultados que hemos obtenidos de los resultados previos, en los que la fidelización del cliente era clave para el no abandono. Los cargos totales son casi igual de importantes a la hora de dictaminar si un cliente se queda o no, este sería el factor que menos podría explicar pero sigo intuyéndole cierto sentido, ya que siempre es un factor crucial en el ámbito comercial. Con las métricas de la matriz de confusión obtenemos que se trata de un modelo con mucha sensibilidad (capacidad de predecir correctamente aquellos clientes que efectivamente se van a fugar). Sin embargo, deja mucho que desear a la hora de clasificar correctamente a aquellos que permanecen en la compañía.
# control de entrenamiento con cv
ctrl <- trainControl(method = "cv",
number = 5,
classProbs = TRUE, # Para la curva ROC
summaryFunction = twoClassSummary)
# Nos aseguramos de que Churn sea un factor
train_set$Churn <- as.factor(train_set$Churn)
# entrenamos
rf_model <- train(Churn ~ ., data = train_set,
method = "rf",
trControl = ctrl,
metric = "ROC")
print(rf_model)
## Random Forest
##
## 5282 samples
## 19 predictor
## 2 classes: 'No', 'Yes'
##
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 4226, 4226, 4226, 4224, 4226
## Resampling results across tuning parameters:
##
## mtry ROC Sens Spec
## 2 0.8290963 0.9454687 0.3480057
## 16 0.8208020 0.8867809 0.4842962
## 30 0.8153178 0.8854839 0.4863917
##
## ROC was used to select the optimal model using the largest value.
## The final value used for the model was mtry = 2.
# Importancia
importance <- varImp(rf_model, scale = FALSE)
print(importance)
## rf variable importance
##
## only 20 most important variables shown (out of 30)
##
## Overall
## tenure 97.38
## TotalCharges 82.38
## MonthlyCharges 57.62
## PaymentMethodElectronic check 42.01
## InternetServiceFiber optic 40.08
## ContractTwo year 38.89
## TechSupportYes 26.33
## OnlineSecurityYes 24.51
## ContractOne year 20.05
## PaperlessBillingYes 15.24
## InternetServiceNo 13.65
## StreamingTVNo internet service 13.41
## OnlineBackupYes 12.95
## TechSupportNo internet service 12.78
## OnlineBackupNo internet service 11.45
## DeviceProtectionYes 11.41
## PartnerYes 11.23
## OnlineSecurityNo internet service 11.12
## DependentsYes 10.73
## SeniorCitizen 10.41
plot(importance)
# Predicciones
rf_predictions <- predict(rf_model, test_set, type = "prob")
# Aseguraciones y preparaciones previas al gráfico
test_set$Churn <- factor(test_set$Churn, levels = c("No", "Yes"))
# Usar roc()
ROC_result <- roc(response = test_set$Churn, predictor = rf_predictions[, "Yes"])
## Setting levels: control = No, case = Yes
## Setting direction: controls < cases
# Graficar
plot(ROC_result)
# matriz de confusión
predicted_classes <- ifelse(rf_predictions[, "Yes"] > 0.5, "Yes", "No")
conf_matrix <- confusionMatrix(as.factor(predicted_classes), test_set$Churn)
print(conf_matrix)
## Confusion Matrix and Statistics
##
## Reference
## Prediction No Yes
## No 1262 272
## Yes 61 166
##
## Accuracy : 0.8109
## 95% CI : (0.7918, 0.8289)
## No Information Rate : 0.7513
## P-Value [Acc > NIR] : 1.505e-09
##
## Kappa : 0.3968
##
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.9539
## Specificity : 0.3790
## Pos Pred Value : 0.8227
## Neg Pred Value : 0.7313
## Prevalence : 0.7513
## Detection Rate : 0.7166
## Detection Prevalence : 0.8711
## Balanced Accuracy : 0.6664
##
## 'Positive' Class : No
##
# haz un xgboost con caret, usa el trainControl anterior (del randomforest) para ello, la métrica de optimización es la ROC (metric=ROC)
# evalúa el performance del modelo como con el árbol de decisión
# plotea la importancia de las variables
# plotea la curva ROC usando la librería caTools
# Comenta qué pasos seguirías realizando para seguir mejorando el modelo.
# Seguiría probando con el número de árboles, la profundidad, el número de hojas, tasa de aprendizaje, ... hiperparámetros que me permitieran buscar el mejor modelo a través de diferentes técnicas como las búsquedas randomgrid (aleatorio mejor que secuencial creo). XGBoost mejora el modelo en términos generales (a costa de perder algo de sensibilidad), así que probar diferentes configuraciones de hiperparámetros resultaría en una mejora del modelo muy seguramente. Pensar quizás en probar redes neuronales sería otra opción de mejora.
# Configuración de control
ctrl <- trainControl(method = "cv",
number = 5,
classProbs = TRUE,
summaryFunction = twoClassSummary)
# Entrenamos el modelo XGBoost
xgb_model <- train(Churn ~ ., data = train_set,
method = "xgbTree",
trControl = ctrl,
metric = "ROC",
verbose = FALSE)
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:52] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:53] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:53] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:53] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:53] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:54] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:55] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:55] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:55] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:55] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:56] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:57] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:58] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:07:59] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:00] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:00] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:00] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:00] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:01] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:02] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:03] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:03] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:03] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:03] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:04] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:05] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:06] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:07] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:08] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:09] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:10] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:11] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:12] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:13] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:14] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:15] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:16] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:17] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:18] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:19] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:20] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:21] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:22] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:23] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:24] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:25] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:26] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:27] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:28] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:29] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:30] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:31] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:32] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:33] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:34] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:35] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [03:08:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
print(xgb_model)
## eXtreme Gradient Boosting
##
## 5282 samples
## 19 predictor
## 2 classes: 'No', 'Yes'
##
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 4225, 4225, 4226, 4226, 4226
## Resampling results across tuning parameters:
##
## eta max_depth colsample_bytree subsample nrounds ROC Sens
## 0.3 1 0.6 0.50 50 0.8437106 0.9036596
## 0.3 1 0.6 0.50 100 0.8450120 0.8976879
## 0.3 1 0.6 0.50 150 0.8443574 0.8966493
## 0.3 1 0.6 0.75 50 0.8450489 0.9078165
## 0.3 1 0.6 0.75 100 0.8449460 0.8987256
## 0.3 1 0.6 0.75 150 0.8447434 0.8976869
## 0.3 1 0.6 1.00 50 0.8444426 0.9091148
## 0.3 1 0.6 1.00 100 0.8452025 0.9013223
## 0.3 1 0.6 1.00 150 0.8450350 0.8997642
## 0.3 1 0.8 0.50 50 0.8438565 0.9046986
## 0.3 1 0.8 0.50 100 0.8447961 0.8974292
## 0.3 1 0.8 0.50 150 0.8433290 0.8948318
## 0.3 1 0.8 0.75 50 0.8444629 0.9049600
## 0.3 1 0.8 0.75 100 0.8449423 0.8971678
## 0.3 1 0.8 0.75 150 0.8444919 0.8971681
## 0.3 1 0.8 1.00 50 0.8440652 0.9088537
## 0.3 1 0.8 1.00 100 0.8450240 0.9008025
## 0.3 1 0.8 1.00 150 0.8449860 0.9008025
## 0.3 2 0.6 0.50 50 0.8411009 0.8943123
## 0.3 2 0.6 0.50 100 0.8370807 0.8935351
## 0.3 2 0.6 0.50 150 0.8343634 0.8927535
## 0.3 2 0.6 0.75 50 0.8421242 0.8971671
## 0.3 2 0.6 0.75 100 0.8385695 0.8940519
## 0.3 2 0.6 0.75 150 0.8354992 0.8914572
## 0.3 2 0.6 1.00 50 0.8433836 0.8956117
## 0.3 2 0.6 1.00 100 0.8404676 0.8932737
## 0.3 2 0.6 1.00 150 0.8357837 0.8906760
## 0.3 2 0.8 0.50 50 0.8408623 0.8901578
## 0.3 2 0.8 0.50 100 0.8390052 0.8953503
## 0.3 2 0.8 0.50 150 0.8361845 0.8911958
## 0.3 2 0.8 0.75 50 0.8421272 0.8953516
## 0.3 2 0.8 0.75 100 0.8384980 0.8927546
## 0.3 2 0.8 0.75 150 0.8340556 0.8898998
## 0.3 2 0.8 1.00 50 0.8416967 0.8989870
## 0.3 2 0.8 1.00 100 0.8389275 0.8948305
## 0.3 2 0.8 1.00 150 0.8361220 0.8904169
## 0.3 3 0.6 0.50 50 0.8357255 0.8911981
## 0.3 3 0.6 0.50 100 0.8269791 0.8847063
## 0.3 3 0.6 0.50 150 0.8237648 0.8849630
## 0.3 3 0.6 0.75 50 0.8390743 0.8906773
## 0.3 3 0.6 0.75 100 0.8333022 0.8860023
## 0.3 3 0.6 0.75 150 0.8276387 0.8802894
## 0.3 3 0.6 1.00 50 0.8384286 0.8969087
## 0.3 3 0.6 1.00 100 0.8328148 0.8893796
## 0.3 3 0.6 1.00 150 0.8277345 0.8888591
## 0.3 3 0.8 0.50 50 0.8360575 0.8956104
## 0.3 3 0.8 0.50 100 0.8282308 0.8841855
## 0.3 3 0.8 0.50 150 0.8237402 0.8852271
## 0.3 3 0.8 0.75 50 0.8388824 0.8914569
## 0.3 3 0.8 0.75 100 0.8317048 0.8862624
## 0.3 3 0.8 0.75 150 0.8270295 0.8828875
## 0.3 3 0.8 1.00 50 0.8371009 0.8922361
## 0.3 3 0.8 1.00 100 0.8330685 0.8948321
## 0.3 3 0.8 1.00 150 0.8268894 0.8891182
## 0.4 1 0.6 0.50 50 0.8424355 0.8937922
## 0.4 1 0.6 0.50 100 0.8434601 0.8901575
## 0.4 1 0.6 0.50 150 0.8429883 0.8919774
## 0.4 1 0.6 0.75 50 0.8452322 0.8992457
## 0.4 1 0.6 0.75 100 0.8452516 0.8966483
## 0.4 1 0.6 0.75 150 0.8440518 0.8963906
## 0.4 1 0.6 1.00 50 0.8452657 0.9028811
## 0.4 1 0.6 1.00 100 0.8448924 0.8997638
## 0.4 1 0.6 1.00 150 0.8444698 0.8984672
## 0.4 1 0.8 0.50 50 0.8440034 0.9023626
## 0.4 1 0.8 0.50 100 0.8439604 0.8966507
## 0.4 1 0.8 0.50 150 0.8425287 0.8976869
## 0.4 1 0.8 0.75 50 0.8456924 0.8979470
## 0.4 1 0.8 0.75 100 0.8454195 0.8984668
## 0.4 1 0.8 0.75 150 0.8442754 0.8961295
## 0.4 1 0.8 1.00 50 0.8457420 0.9033995
## 0.4 1 0.8 1.00 100 0.8453056 0.9005431
## 0.4 1 0.8 1.00 150 0.8446410 0.8997645
## 0.4 2 0.6 0.50 50 0.8379721 0.8940519
## 0.4 2 0.6 0.50 100 0.8339624 0.8875628
## 0.4 2 0.6 0.50 150 0.8319985 0.8893756
## 0.4 2 0.6 0.75 50 0.8398527 0.8943143
## 0.4 2 0.6 0.75 100 0.8363732 0.8935345
## 0.4 2 0.6 0.75 150 0.8307991 0.8893800
## 0.4 2 0.6 1.00 50 0.8421683 0.8961312
## 0.4 2 0.6 1.00 100 0.8370791 0.8911971
## 0.4 2 0.6 1.00 150 0.8326346 0.8896414
## 0.4 2 0.8 0.50 50 0.8373522 0.8950942
## 0.4 2 0.8 0.50 100 0.8327268 0.8857456
## 0.4 2 0.8 0.50 150 0.8273112 0.8826277
## 0.4 2 0.8 0.75 50 0.8408804 0.8945744
## 0.4 2 0.8 0.75 100 0.8335522 0.8857463
## 0.4 2 0.8 0.75 150 0.8297454 0.8867842
## 0.4 2 0.8 1.00 50 0.8411804 0.8958701
## 0.4 2 0.8 1.00 100 0.8368088 0.8953499
## 0.4 2 0.8 1.00 150 0.8328081 0.8901565
## 0.4 3 0.6 0.50 50 0.8325518 0.8883420
## 0.4 3 0.6 0.50 100 0.8187363 0.8771735
## 0.4 3 0.6 0.50 150 0.8174484 0.8743167
## 0.4 3 0.6 0.75 50 0.8303985 0.8873034
## 0.4 3 0.6 0.75 100 0.8257510 0.8810723
## 0.4 3 0.6 0.75 150 0.8173634 0.8784729
## 0.4 3 0.6 1.00 50 0.8374986 0.8909397
## 0.4 3 0.6 1.00 100 0.8300273 0.8862637
## 0.4 3 0.6 1.00 150 0.8246209 0.8888581
## 0.4 3 0.8 0.50 50 0.8344480 0.8924955
## 0.4 3 0.8 0.50 100 0.8269087 0.8860023
## 0.4 3 0.8 0.50 150 0.8157506 0.8717196
## 0.4 3 0.8 0.75 50 0.8300540 0.8880809
## 0.4 3 0.8 0.75 100 0.8242934 0.8865228
## 0.4 3 0.8 0.75 150 0.8175750 0.8795102
## 0.4 3 0.8 1.00 50 0.8350161 0.8919757
## 0.4 3 0.8 1.00 100 0.8276621 0.8888605
## 0.4 3 0.8 1.00 150 0.8237412 0.8789954
## Spec
## 0.5066568
## 0.5262250
## 0.5325090
## 0.5059501
## 0.5269219
## 0.5339149
## 0.4856899
## 0.5185376
## 0.5269267
## 0.5108404
## 0.5325065
## 0.5220194
## 0.5031578
## 0.5317999
## 0.5276138
## 0.4863697
## 0.5171316
## 0.5213275
## 0.5360030
## 0.5227212
## 0.5234254
## 0.5178309
## 0.5367121
## 0.5171390
## 0.5227285
## 0.5255427
## 0.5262494
## 0.5206379
## 0.5276114
## 0.5290319
## 0.5304208
## 0.5234351
## 0.5192296
## 0.5157379
## 0.5164494
## 0.5087522
## 0.5234327
## 0.5178529
## 0.5213153
## 0.5290246
## 0.5262347
## 0.5199289
## 0.5248142
## 0.5269170
## 0.5220268
## 0.5094223
## 0.5157306
## 0.5283156
## 0.5227358
## 0.5262250
## 0.5241247
## 0.5136546
## 0.5171365
## 0.5143442
## 0.5401793
## 0.5297044
## 0.5367096
## 0.5192320
## 0.5311055
## 0.5339051
## 0.5024536
## 0.5206355
## 0.5283229
## 0.5206208
## 0.5360079
## 0.5255281
## 0.5171365
## 0.5262250
## 0.5220243
## 0.5108477
## 0.5248264
## 0.5234302
## 0.5192125
## 0.5157282
## 0.5178261
## 0.5220243
## 0.5269292
## 0.5192466
## 0.5136571
## 0.5157598
## 0.5122560
## 0.5206087
## 0.5240979
## 0.5185278
## 0.5276138
## 0.5346142
## 0.5220268
## 0.5290295
## 0.5269340
## 0.5150459
## 0.5185278
## 0.5220268
## 0.5255184
## 0.5080480
## 0.5157452
## 0.5164445
## 0.5164397
## 0.5227066
## 0.5227114
## 0.5297044
## 0.5338929
## 0.5157306
## 0.5150386
## 0.5199264
## 0.5150289
## 0.5157428
## 0.5136254
## 0.5240930
##
## Tuning parameter 'gamma' was held constant at a value of 0
## Tuning
## parameter 'min_child_weight' was held constant at a value of 1
## ROC was used to select the optimal model using the largest value.
## The final values used for the model were nrounds = 50, max_depth = 1, eta
## = 0.4, gamma = 0, colsample_bytree = 0.8, min_child_weight = 1 and subsample
## = 1.
# Importancia
importance <- varImp(xgb_model, scale = FALSE)
print(importance)
## xgbTree variable importance
##
## only 20 most important variables shown (out of 30)
##
## Overall
## tenure 0.311523
## InternetServiceFiber optic 0.198396
## ContractTwo year 0.192313
## PaymentMethodElectronic check 0.099154
## ContractOne year 0.051934
## InternetServiceNo 0.027262
## PaperlessBillingYes 0.021395
## OnlineSecurityNo internet service 0.013916
## OnlineSecurityYes 0.013854
## StreamingMoviesYes 0.011168
## StreamingTVYes 0.010420
## MonthlyCharges 0.009415
## TotalCharges 0.008448
## TechSupportYes 0.007447
## SeniorCitizen 0.006909
## OnlineBackupNo internet service 0.004731
## PhoneServiceYes 0.003946
## MultipleLinesYes 0.003711
## DependentsYes 0.002939
## OnlineBackupYes 0.001117
plot(importance)
# predicciones
xgb_predictions <- predict(xgb_model, test_set, type = "prob")
# Churn como factor para la ROC
test_set$Churn <- factor(test_set$Churn, levels = c("No", "Yes"))
# curva ROC
roc_resultado <- roc(response = test_set$Churn, predictor = xgb_predictions[, "Yes"])
plot(roc_resultado)
# matriz de confusión
predicted_classes <- ifelse(xgb_predictions[, "Yes"] > 0.5, "Yes", "No")
conf_matrix <- confusionMatrix(as.factor(predicted_classes), as.factor(test_set$Churn))
print(conf_matrix)
## Confusion Matrix and Statistics
##
## Reference
## Prediction No Yes
## No 1222 210
## Yes 101 228
##
## Accuracy : 0.8234
## 95% CI : (0.8048, 0.8409)
## No Information Rate : 0.7513
## P-Value [Acc > NIR] : 2.355e-13
##
## Kappa : 0.4845
##
## Mcnemar's Test P-Value : 9.119e-10
##
## Sensitivity : 0.9237
## Specificity : 0.5205
## Pos Pred Value : 0.8534
## Neg Pred Value : 0.6930
## Prevalence : 0.7513
## Detection Rate : 0.6939
## Detection Prevalence : 0.8132
## Balanced Accuracy : 0.7221
##
## 'Positive' Class : No
##
# haz un arbol de decision con rpart (manten el seed)
# evalua sus métricas con la función ConfusionMatrix de caret
# plotea el arbol de decision y su feature importance
# usa rpart.rules para ver las reglas del árbol
# A continuación, haz el mismo proceso pero cambia el seed a 555, ¿cambia el árbol? ¿Es igual la feature importance?¿ Y la estructura del árbol? Si cambia, a que crees que se debe?
#En mi caso el modelo apenas cambia, por no decir que no lo hace en absoluto. La feature importance parece igual en ambos casos, así como la estructura del árbol, que es idéntica. Si cambiara debería ser en base a la semilla e inidicaría quizás que el modelo no puede ajustarse del todo bien a los datos, ya que no sería capaz de predefinir unas características como claramente más importante que otras, no daría un resultado medible o reproducible.
## Evalúa la feature importance del primer modelo, ¿tiene lógica de negocio?
# Tiene bastante lógica de negocio. El saber qué contratos ofrecer, qué precio cerrado ofrecer y bajo qué condiciones de servicio (contar con línea de teléfono) para garantizar la máxima permanencia de tus clientes, es un paso gigante en la lógica de negocio ya que permite conocer las tendencias de los consumidores y adaptarse a la mejor forma posible de captar y/o mantener a sus clientes y seguir generando ingresos.
# Establecemos la semilla inicial para reproducibilidad
set.seed(200)
# Entrenamos
tree_model <- rpart(Churn ~ ., data = train_set, method = "class")
# Realizamos predicciones y evaluar el modelo con ConfusionMatrix
predictions <- predict(tree_model, test_set, type = "class")
conf_matrix <- confusionMatrix(as.factor(predictions), as.factor(test_set$Churn))
print(conf_matrix)
## Confusion Matrix and Statistics
##
## Reference
## Prediction No Yes
## No 1246 273
## Yes 77 165
##
## Accuracy : 0.8012
## 95% CI : (0.7818, 0.8197)
## No Information Rate : 0.7513
## P-Value [Acc > NIR] : 3.932e-07
##
## Kappa : 0.3746
##
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.9418
## Specificity : 0.3767
## Pos Pred Value : 0.8203
## Neg Pred Value : 0.6818
## Prevalence : 0.7513
## Detection Rate : 0.7076
## Detection Prevalence : 0.8626
## Balanced Accuracy : 0.6593
##
## 'Positive' Class : No
##
# Para visualizar el árbol
rpart.plot(tree_model)
# Obtenemos e imprimimos la importancia
importance <- varImp(tree_model, scale = FALSE)
print(importance)
## Overall
## Contract 342.88325
## InternetService 287.75541
## MonthlyCharges 78.50194
## OnlineSecurity 330.52609
## PaymentMethod 78.65737
## TechSupport 311.85774
## tenure 276.90835
## TotalCharges 61.04315
## gender 0.00000
## SeniorCitizen 0.00000
## Partner 0.00000
## Dependents 0.00000
## PhoneService 0.00000
## MultipleLines 0.00000
## OnlineBackup 0.00000
## DeviceProtection 0.00000
## StreamingTV 0.00000
## StreamingMovies 0.00000
## PaperlessBilling 0.00000
plot(importance)
# Detalles adicionales y reglas de divisón
summary(tree_model)
## Call:
## rpart(formula = Churn ~ ., data = train_set, method = "class")
## n= 5282
##
## CP nsplit rel error xerror xstd
## 1 0.05590496 0 1.0000000 1.0000000 0.02257188
## 2 0.01000000 3 0.7924528 0.8134172 0.02105139
##
## Variable importance
## Contract tenure TotalCharges TechSupport
## 23 16 11 11
## OnlineSecurity MonthlyCharges DeviceProtection InternetService
## 9 8 7 7
## MultipleLines OnlineBackup Partner StreamingTV
## 4 2 1 1
##
## Node number 1: 5282 observations, complexity param=0.05590496
## predicted class=No expected loss=0.2709201 P(node) =1
## class counts: 3851 1431
## probabilities: 0.729 0.271
## left son=2 (2339 obs) right son=3 (2943 obs)
## Primary splits:
## Contract splits as RLL, improve=342.8833, (0 missing)
## OnlineSecurity splits as RLL, improve=233.4878, (0 missing)
## TechSupport splits as RLL, improve=230.2841, (0 missing)
## tenure < 17.5 to the right, improve=216.5833, (0 missing)
## InternetService splits as LRL, improve=188.3356, (0 missing)
## Surrogate splits:
## tenure < 37.5 to the right, agree=0.789, adj=0.524, (0 split)
## TechSupport splits as RLL, agree=0.721, adj=0.371, (0 split)
## OnlineSecurity splits as RLL, agree=0.697, adj=0.317, (0 split)
## TotalCharges < 3023.6 to the right, agree=0.696, adj=0.313, (0 split)
## DeviceProtection splits as RLL, agree=0.690, adj=0.301, (0 split)
##
## Node number 2: 2339 observations
## predicted class=No expected loss=0.06883283 P(node) =0.4428247
## class counts: 2178 161
## probabilities: 0.931 0.069
##
## Node number 3: 2943 observations, complexity param=0.05590496
## predicted class=No expected loss=0.4315324 P(node) =0.5571753
## class counts: 1673 1270
## probabilities: 0.568 0.432
## left son=6 (1331 obs) right son=7 (1612 obs)
## Primary splits:
## InternetService splits as LRL, improve=99.41977, (0 missing)
## OnlineSecurity splits as RLL, improve=79.05953, (0 missing)
## MonthlyCharges < 67.675 to the left, improve=78.50194, (0 missing)
## TechSupport splits as RLL, improve=69.38357, (0 missing)
## PaymentMethod splits as LLRL, improve=64.08745, (0 missing)
## Surrogate splits:
## MonthlyCharges < 68.9 to the left, agree=0.973, adj=0.941, (0 split)
## MultipleLines splits as LLR, agree=0.697, adj=0.331, (0 split)
## OnlineSecurity splits as RLL, agree=0.686, adj=0.306, (0 split)
## TechSupport splits as RLL, agree=0.681, adj=0.294, (0 split)
## OnlineBackup splits as RLR, agree=0.680, adj=0.293, (0 split)
##
## Node number 6: 1331 observations
## predicted class=No expected loss=0.2885049 P(node) =0.2519879
## class counts: 947 384
## probabilities: 0.711 0.289
##
## Node number 7: 1612 observations, complexity param=0.05590496
## predicted class=Yes expected loss=0.4503722 P(node) =0.3051874
## class counts: 726 886
## probabilities: 0.450 0.550
## left son=14 (851 obs) right son=15 (761 obs)
## Primary splits:
## TotalCharges < 1240.325 to the right, improve=61.04315, (0 missing)
## tenure < 14.5 to the right, improve=60.32503, (0 missing)
## OnlineSecurity splits as R-L, improve=17.97875, (0 missing)
## PaymentMethod splits as LLRR, improve=14.56992, (0 missing)
## TechSupport splits as R-L, improve=12.19007, (0 missing)
## Surrogate splits:
## tenure < 14.5 to the right, agree=0.976, adj=0.950, (0 split)
## MonthlyCharges < 81.275 to the right, agree=0.697, adj=0.359, (0 split)
## MultipleLines splits as R-L, agree=0.672, adj=0.305, (0 split)
## Partner splits as RL, agree=0.628, adj=0.213, (0 split)
## StreamingTV splits as R-L, agree=0.618, adj=0.191, (0 split)
##
## Node number 14: 851 observations
## predicted class=No expected loss=0.4195065 P(node) =0.1611132
## class counts: 494 357
## probabilities: 0.580 0.420
##
## Node number 15: 761 observations
## predicted class=Yes expected loss=0.304862 P(node) =0.1440742
## class counts: 232 529
## probabilities: 0.305 0.695
# Hacer predicciones probabilísticas
prob_predictions <- predict(tree_model, test_set, type = "prob")
# Convertimos 'Churn' para graficar
test_set$Churn <- factor(test_set$Churn, levels = c("No", "Yes"))
# curva ROC
roc_resultado <- roc(response = test_set$Churn, predictor = prob_predictions[, "Yes"])
## Setting levels: control = No, case = Yes
## Setting direction: controls < cases
plot(roc_resultado, main = "Curva ROC para Árbol de Decisión")
# Creamos clases, con un umbral de probabilidad del 50% (mayores serán Yes)
predicted_classes <- ifelse(prob_predictions[, "Yes"] > 0.5, "Yes", "No")
conf_matrix_prob <- confusionMatrix(as.factor(predicted_classes), test_set$Churn)
print(conf_matrix_prob)
## Confusion Matrix and Statistics
##
## Reference
## Prediction No Yes
## No 1246 273
## Yes 77 165
##
## Accuracy : 0.8012
## 95% CI : (0.7818, 0.8197)
## No Information Rate : 0.7513
## P-Value [Acc > NIR] : 3.932e-07
##
## Kappa : 0.3746
##
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.9418
## Specificity : 0.3767
## Pos Pred Value : 0.8203
## Neg Pred Value : 0.6818
## Prevalence : 0.7513
## Detection Rate : 0.7076
## Detection Prevalence : 0.8626
## Balanced Accuracy : 0.6593
##
## 'Positive' Class : No
##
set.seed(555)
tree_model_555 <- rpart(Churn ~ ., data = train_set, method = "class")
# Evaluar las métricas
predicciones_555 <- predict(tree_model_555, test_set, type = "class")
conf_matrix_555 <- confusionMatrix(predicciones_555, test_set$Churn)
print(conf_matrix_555)
## Confusion Matrix and Statistics
##
## Reference
## Prediction No Yes
## No 1246 273
## Yes 77 165
##
## Accuracy : 0.8012
## 95% CI : (0.7818, 0.8197)
## No Information Rate : 0.7513
## P-Value [Acc > NIR] : 3.932e-07
##
## Kappa : 0.3746
##
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.9418
## Specificity : 0.3767
## Pos Pred Value : 0.8203
## Neg Pred Value : 0.6818
## Prevalence : 0.7513
## Detection Rate : 0.7076
## Detection Prevalence : 0.8626
## Balanced Accuracy : 0.6593
##
## 'Positive' Class : No
##
# Árbol gráfica
rpart.plot(tree_model_555)
# Importancia
importancia_555 <- varImp(tree_model_555)
print(importancia_555)
## Overall
## Contract 342.88325
## InternetService 287.75541
## MonthlyCharges 78.50194
## OnlineSecurity 330.52609
## PaymentMethod 78.65737
## TechSupport 311.85774
## tenure 276.90835
## TotalCharges 61.04315
## gender 0.00000
## SeniorCitizen 0.00000
## Partner 0.00000
## Dependents 0.00000
## PhoneService 0.00000
## MultipleLines 0.00000
## OnlineBackup 0.00000
## DeviceProtection 0.00000
## StreamingTV 0.00000
## StreamingMovies 0.00000
## PaperlessBilling 0.00000
plot(importancia_555)