library(stringr)
 library(rvest)
library(ggplot2)

ETAPA 1. ENTENDIMIENTO DEL NEGOCIO

SITUACIÓN ACTUAL

Datos de ventas, ordenes, sitios, personas, movimientos asociados a ventas de los últimos tres años.

Recursos computacionales para análisis: R, tableau, SSMS.

Requerimientos

Resultados visuales y fáciles de comunicar para la toma de desiciones.

Asumimos que los datos están correctos y que no hay necesidad de revisar otro material para corregir la información. ### Riesgos Que los datos no sean correctos

Terminología

Categoría y subcategoría: hace referencia a grupos de productos que son usados para una misma función.

Ticket promedio: ventas totales dividido entre en número de ordes, siendo una representación de que tan garndes son las compras que se hacen en alguna categoría, persona, región.

Costos y beneficios

Información útil para la toma de desiciones en cuanto a los productos que se están vendiendo y las regiones de importancia para dirigir esfuerzos de marketing.

Objetivos

Objetivo 1:

Identificar productos con baja rotación en inventario: Este objetivo busca optimizar la gestión del inventario, reduciendo costos asociados a productos que permanecen demasiado tiempo almacenados o que tienen poca demanda. Criterios de Éxito: ● Detectar productos con pocas unidades vendidas en los últimos 6 meses. ● Identificar productos que han permanecido en inventario sin movimiento durante los últimos 3 meses.

Objetivo 2:

Determinar regiones prioritarias en ventas para dirigir esfuerzos de marketing: Este objetivo busca conocer qué regiones generan mayores ingresos, para enfocar campañas de marketing y estrategias comerciales. Criterios de Éxito: ● Identificar los estados o países donde los ingresos por ventas han aumentado en el último año. ● Calcular el ticket promedio por cada región, determinando los más rentables o forma de flujo.

Criterios de exitos de minería.

  1. Identificar productos con baja rotación en el inventario para optimizar espacio y reducir costos..
  2. Analizar tendencias de venta por región para entender dónde enfocar esfuerzos comerciales.
  3. Determinar qué tipo de regiones generan mayor rentabilidad.

ETAPA 2. ENTENDIMIENTO DE LOS DATOS

Base de datos: AdventureWorks

Naturaleza de los datos: La base de datos AdventureWorks OLTP es un sistema transaccional utilizado para simular un entorno de negocio real. Contiene datos de ventas, productos,inventarios. Es usada usualmente para prácticas de desarrollo, modelado relacional y consultas

Tablas a utilizar:

● Tabla: Production.Product Campos de uso: ProductID, Name, ProductNumber, SafetyStockLevel, ReorderPoint Justificación: Información básica de productos, útil para identificar qué productos tienen baja rotación o están sobrestockeados.

● Tabla: Production.ProductInventory Campos de uso: ProductID, LocationID, Quantity Justificación: Permite conocer el inventario actual.

● Tabla: Sales.SalesOrderHeader Campos de uso: SalesOrderID, CustomerID, OrderDate, SubTotal Justificación: Útil para obtener las fechas de ventas, lo que permite analizar tendencias temporales.

● Tabla: Sales.SalesTerritory Campos de uso: TerritoryID, Name, CountryRegionCode Justificación: Permite agrupar y analizar ventas por región o país

FASE 3. PREPARACIÓN DE LOS DATOS

library(readxl)
library(purrr)

archivo <- "AdventureWorks.xlsx"

# Nombres de las hojas (usando el path)
hojas <- excel_sheets(archivo)

# Cargar todas las hojas en lista
datos <- map(hojas, ~ read_excel(archivo, sheet = .x)) %>%
  set_names(hojas)

# Ver estructura de todos los datos
str(datos)
## List of 9
##  $ Territories           : tibble [29,481 × 8] (S3: tbl_df/tbl/data.frame)
##   ..$ OrderDate    : num [1:29481] 42736 42736 42736 42736 42736 ...
##   ..$ StockDate    : POSIXct[1:29481], format: "2003-12-13" "2003-09-24" ...
##   ..$ OrderNumber  : chr [1:29481] "SO61285" "SO61285" "SO61285" "SO61301" ...
##   ..$ ProductKey   : num [1:29481] 529 214 540 529 377 540 215 229 528 536 ...
##   ..$ CustomerKey  : num [1:29481] 23791 23791 23791 16747 16747 ...
##   ..$ TerritoryKey : num [1:29481] 1 1 1 1 1 1 4 4 6 6 ...
##   ..$ OrderLineItem: num [1:29481] 2 3 1 2 1 3 1 2 2 1 ...
##   ..$ OrderQuantity: num [1:29481] 2 1 1 2 1 1 1 1 2 2 ...
##  $ Territories_key       : tibble [10 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ SalesTerritoryKey: num [1:10] 1 2 3 4 5 6 7 8 9 10
##   ..$ Region           : chr [1:10] "Northwest" "Northwest" "Central" "Southwest" ...
##   ..$ Country          : chr [1:10] "United States" "United States" "United States" "United States" ...
##   ..$ Continent        : chr [1:10] "North America" "North America" "North America" "North America" ...
##  $ Sales                 : tibble [56,046 × 8] (S3: tbl_df/tbl/data.frame)
##   ..$ OrderDate    : POSIXct[1:56046], format: "2017-01-01" "2017-01-01" ...
##   ..$ StockDate    : POSIXct[1:56046], format: "2003-12-13" "2003-09-24" ...
##   ..$ OrderNumber  : chr [1:56046] "SO61285" "SO61285" "SO61285" "SO61301" ...
##   ..$ ProductKey   : num [1:56046] 529 214 540 529 377 540 215 229 528 536 ...
##   ..$ CustomerKey  : num [1:56046] 23791 23791 23791 16747 16747 ...
##   ..$ TerritoryKey : num [1:56046] 1 1 1 1 1 1 4 4 6 6 ...
##   ..$ OrderLineItem: num [1:56046] 2 3 1 2 1 3 1 2 2 1 ...
##   ..$ OrderQuantity: num [1:56046] 2 1 1 2 1 1 1 1 2 2 ...
##  $ Returns               : tibble [1,809 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ ReturnDate    : POSIXct[1:1809], format: "2015-01-18" "2015-01-18" ...
##   ..$ TerritoryKey  : num [1:1809] 9 10 8 4 6 1 9 8 8 9 ...
##   ..$ ProductKey    : num [1:1809] 312 310 346 311 312 312 311 314 350 350 ...
##   ..$ ReturnQuantity: num [1:1809] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Products              : tibble [293 × 11] (S3: tbl_df/tbl/data.frame)
##   ..$ ProductKey           : num [1:293] 214 215 218 219 220 223 226 229 232 235 ...
##   ..$ ProductSubcategoryKey: num [1:293] 31 31 23 23 31 19 21 21 21 21 ...
##   ..$ ProductSKU           : chr [1:293] "HL-U509-R" "HL-U509" "SO-B909-M" "SO-B909-L" ...
##   ..$ ProductName          : chr [1:293] "Sport-100 Helmet, Red" "Sport-100 Helmet, Black" "Mountain Bike Socks, M" "Mountain Bike Socks, L" ...
##   ..$ ModelName            : chr [1:293] "Sport-100" "Sport-100" "Mountain Bike Socks" "Mountain Bike Socks" ...
##   ..$ ProductDescription   : chr [1:293] "Universal fit, well-vented, lightweight , snap-on visor." "Universal fit, well-vented, lightweight , snap-on visor." "Combination of natural and synthetic fibers stays dry and provides just the right cushioning." "Combination of natural and synthetic fibers stays dry and provides just the right cushioning." ...
##   ..$ ProductColor         : chr [1:293] "Red" "Black" "White" "White" ...
##   ..$ ProductSize          : chr [1:293] "0" "0" "M" "L" ...
##   ..$ ProductStyle         : chr [1:293] "0" "0" "U" "U" ...
##   ..$ ProductCost          : chr [1:293] "13.0863" "12.0278" "3.3963" "3.3963" ...
##   ..$ ProductPrice         : chr [1:293] "34.99" "33.6442" "9.5" "9.5" ...
##  $ Products_subcategories: tibble [37 × 3] (S3: tbl_df/tbl/data.frame)
##   ..$ ProductSubcategoryKey: num [1:37] 1 2 3 4 5 6 7 8 9 10 ...
##   ..$ SubcategoryName      : chr [1:37] "Mountain Bikes" "Road Bikes" "Touring Bikes" "Handlebars" ...
##   ..$ ProductCategoryKey   : num [1:37] 1 1 1 2 2 2 2 2 2 2 ...
##  $ Products_categories   : tibble [4 × 2] (S3: tbl_df/tbl/data.frame)
##   ..$ ProductCategoryKey: num [1:4] 1 2 3 4
##   ..$ CategoryName      : chr [1:4] "Bikes" "Components" "Clothing" "Accessories"
##  $ Customers             : tibble [18,148 × 13] (S3: tbl_df/tbl/data.frame)
##   ..$ CustomerKey   : num [1:18148] 11000 11001 11002 11003 11004 ...
##   ..$ Prefix        : chr [1:18148] "MR." "MR." "MR." "MS." ...
##   ..$ FirstName     : chr [1:18148] "JON" "EUGENE" "RUBEN" "CHRISTY" ...
##   ..$ LastName      : chr [1:18148] "YANG" "HUANG" "TORRES" "ZHU" ...
##   ..$ BirthDate     : POSIXct[1:18148], format: "1966-04-08" "1965-05-14" ...
##   ..$ MaritalStatus : chr [1:18148] "M" "S" "M" "S" ...
##   ..$ Gender        : chr [1:18148] "M" "M" "M" "F" ...
##   ..$ EmailAddress  : chr [1:18148] "jon24@adventure-works.com" "eugene10@adventure-works.com" "ruben35@adventure-works.com" "christy12@adventure-works.com" ...
##   ..$ AnnualIncome  : chr [1:18148] "$90,000" "$60,000" "$60,000" "$70,000" ...
##   ..$ TotalChildren : num [1:18148] 2 3 3 0 5 0 3 4 0 0 ...
##   ..$ EducationLevel: chr [1:18148] "Bachelors" "Bachelors" "Bachelors" "Bachelors" ...
##   ..$ Occupation    : chr [1:18148] "Professional" "Professional" "Professional" "Professional" ...
##   ..$ HomeOwner     : chr [1:18148] "Y" "N" "Y" "N" ...
##  $ Calendar              : tibble [912 × 1] (S3: tbl_df/tbl/data.frame)
##   ..$ Date: POSIXct[1:912], format: "2015-01-01" "2015-01-02" ...

Calidad de los datos

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()         masks stats::filter()
## ✖ readr::guess_encoding() masks rvest::guess_encoding()
## ✖ dplyr::lag()            masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
resumen_completitud <- map_dfr(datos, ~ {
  tibble(
    Tabla = deparse(substitute(.x)),
    Total_Filas = nrow(.x),
    Total_Columnas = ncol(.x),
    Filas_Completas = sum(complete.cases(.x)),
    Porcentaje_Completitud = round(mean(complete.cases(.x)) * 100, 2)
  )
}, .id = "Tabla")

print(resumen_completitud)
## # A tibble: 9 × 5
##   Tabla        Total_Filas Total_Columnas Filas_Completas Porcentaje_Completitud
##   <chr>              <int>          <int>           <int>                  <dbl>
## 1 Territories        29481              8           11800                   40.0
## 2 Territories…          10              4              10                  100  
## 3 Sales              56046              8           38365                   68.4
## 4 Returns             1809              4            1809                  100  
## 5 Products             293             11             293                  100  
## 6 Products_su…          37              3              37                  100  
## 7 Products_ca…           4              2               4                  100  
## 8 Customers          18148             13           18018                   99.3
## 9 Calendar             912              1             912                  100

Valores faltantes

# Análisis específico de missing values
analizar_missing <- function(df, nombre_df) {
  missing_analysis <- map_dfr(names(df), ~ {
    columna <- df[[.x]]
    na_count <- sum(is.na(columna))
    tibble(
      Columna = .x,
      Total_NA = na_count,
      Porcentaje_NA = round(na_count / nrow(df) * 100, 2),
      Tipo_Dato = class(columna)[1]
    )
  }) %>%
    filter(Total_NA > 0) %>%
    arrange(desc(Porcentaje_NA))
  
  return(missing_analysis)
}

# Aplicar a todas las tablas
missing_analysis <- map(datos, analizar_missing)

# Mostrar tablas que tienen missing values
tablas_con_missing <- keep(missing_analysis, ~ nrow(.x) > 0)
print(tablas_con_missing)
## $Territories
## # A tibble: 1 × 4
##   Columna   Total_NA Porcentaje_NA Tipo_Dato
##   <chr>        <int>         <dbl> <chr>    
## 1 OrderDate    17681          60.0 numeric  
## 
## $Sales
## # A tibble: 1 × 4
##   Columna   Total_NA Porcentaje_NA Tipo_Dato
##   <chr>        <int>         <dbl> <chr>    
## 1 OrderDate    17681          31.6 POSIXct  
## 
## $Customers
## # A tibble: 1 × 4
##   Columna Total_NA Porcentaje_NA Tipo_Dato
##   <chr>      <int>         <dbl> <chr>    
## 1 Prefix       130          0.72 character

Datos específicos de interés

library(lubridate)

# Función específica para tu estructura de datos
analizar_calidad_aventura <- function(datos) {
  
  cat("=== ANÁLISIS DE CALIDAD DE DATOS ADVENTUREWORKS ===\n\n")
  
  # 1. Análisis de Ventas
  cat("1. DATOS DE VENTAS:\n")
  cat("   - Total registros:", nrow(datos$Sales), "\n")
  cat("   - Fechas de OrderDate:", range(datos$Sales$OrderDate, na.rm = TRUE), "\n")
  cat("   - Ventas sin cantidad:", sum(is.na(datos$Sales$OrderQuantity) | datos$Sales$OrderQuantity == 0), "\n")
  cat("   - Ventas sin producto:", sum(is.na(datos$Sales$ProductKey)), "\n")
  cat("   - Ventas sin cliente:", sum(is.na(datos$Sales$CustomerKey)), "\n\n")
  
  # 2. Análisis de Productos
  cat("2. DATOS DE PRODUCTOS:\n")
  cat("   - Total productos:", nrow(datos$Products), "\n")
  
  # Convertir precios a numérico y analizar
  datos$Products <- datos$Products %>%
    mutate(
      ProductCost = as.numeric(ProductCost),
      ProductPrice = as.numeric(ProductPrice)
    )
  
  cat("   - Productos sin precio:", sum(is.na(datos$Products$ProductPrice)), "\n")
  cat("   - Productos sin costo:", sum(is.na(datos$Products$ProductCost)), "\n")
  cat("   - Productos con costo > precio:", sum(datos$Products$ProductCost > datos$Products$ProductPrice, na.rm = TRUE), "\n")
  cat("   - Productos sin color:", sum(is.na(datos$Products$ProductColor) | datos$Products$ProductColor == ""), "\n\n")
  
  # 3. Análisis de Devoluciones
  cat("3. DATOS DE DEVOLUCIONES:\n")
  cat("   - Total devoluciones:", nrow(datos$Returns), "\n")
  cat("   - Tasa de devolución:", round(nrow(datos$Returns) / nrow(datos$Sales) * 100, 2), "%\n")
  cat("   - Devoluciones sin fecha:", sum(is.na(datos$Returns$ReturnDate)), "\n\n")
  
  # 4. Análisis de Territorios
  cat("4. DATOS DE TERRITORIOS:\n")
  cat("   - Total territorios:", nrow(datos$Territories_key), "\n")
  cat("   - Regiones únicas:", paste(unique(datos$Territories_key$Region), collapse = ", "), "\n")
  cat("   - Países únicos:", paste(unique(datos$Territories_key$Country), collapse = ", "), "\n\n")
  
  # 5. Análisis de Clientes
  cat("5. DATOS DE CLIENTES:\n")
  cat("   - Total clientes:", nrow(datos$Customers), "\n")
  cat("   - Clientes sin email:", sum(is.na(datos$Customers$EmailAddress) | datos$Customers$EmailAddress == ""), "\n")
  cat("   - Clientes sin ingresos:", sum(is.na(datos$Customers$AnnualIncome) | datos$Customers$AnnualIncome == ""), "\n")
}

# Ejecutar análisis de calidad
analizar_calidad_aventura(datos)
## === ANÁLISIS DE CALIDAD DE DATOS ADVENTUREWORKS ===
## 
## 1. DATOS DE VENTAS:
##    - Total registros: 56046 
##    - Fechas de OrderDate: 1420070400 1512518400 
##    - Ventas sin cantidad: 0 
##    - Ventas sin producto: 0 
##    - Ventas sin cliente: 0 
## 
## 2. DATOS DE PRODUCTOS:
##    - Total productos: 293 
##    - Productos sin precio: 0 
##    - Productos sin costo: 0 
##    - Productos con costo > precio: 0 
##    - Productos sin color: 0 
## 
## 3. DATOS DE DEVOLUCIONES:
##    - Total devoluciones: 1809 
##    - Tasa de devolución: 3.23 %
##    - Devoluciones sin fecha: 0 
## 
## 4. DATOS DE TERRITORIOS:
##    - Total territorios: 10 
##    - Regiones únicas: Northwest, Central, Southwest, Canada, France, Germany, Australia, United Kingdom 
##    - Países únicos: United States, Canada, France, Germany, Australia, United Kingdom 
## 
## 5. DATOS DE CLIENTES:
##    - Total clientes: 18148 
##    - Clientes sin email: 0 
##    - Clientes sin ingresos: 0

Limpieza de NA

# Limpieza específica para los nulos que detectaste
limpiar_nulos_especificos <- function(datos) {
  datos_limpios <- datos
  
  cat("=== LIMPIEZA QUIRÚRGICA DE NULOS ===\n\n")
  
  # 1. Territories - OrderDate (59.7% nulos)
  if("Territories" %in% names(datos)) {
    filas_antes <- nrow(datos_limpios$Territories)
    datos_limpios$Territories <- datos_limpios$Territories %>%
      filter(!is.na(OrderDate))
    filas_despues <- nrow(datos_limpios$Territories)
    cat("Territories - OrderDate:\n")
    cat("  Filas antes:", filas_antes, "\n")
    cat("  Filas después:", filas_despues, "\n")
    cat("  Eliminadas:", filas_antes - filas_despues, "\n")
    cat("  % Conservado:", round(filas_despues/filas_antes*100, 2), "%\n\n")
  }
  
  # 2. Sales - OrderDate (79.95% nulos) - ¡CUIDADO! Esto eliminaría muchos datos
  if("Sales" %in% names(datos)) {
    filas_antes <- nrow(datos_limpios$Sales)
    # Alternativa: convertir a fecha y mantener solo las válidas
    datos_limpios$Sales <- datos_limpios$Sales %>%
      mutate(OrderDate = as.POSIXct(OrderDate, origin = "1970-01-01")) %>%
      filter(!is.na(OrderDate))
    filas_despues <- nrow(datos_limpios$Sales)
    cat("Sales - OrderDate:\n")
    cat("  Filas antes:", filas_antes, "\n")
    cat("  Filas después:", filas_despues, "\n")
    cat("  Eliminadas:", filas_antes - filas_despues, "\n")
    cat("  % Conservado:", round(filas_despues/filas_antes*100, 2), "%\n\n")
  }
  
  # 3. Customers - Prefix (0.72% nulos) - Muy pocos, podemos eliminar
  if("Customers" %in% names(datos)) {
    filas_antes <- nrow(datos_limpios$Customers)
    datos_limpios$Customers <- datos_limpios$Customers %>%
      filter(!is.na(Prefix))
    filas_despues <- nrow(datos_limpios$Customers)
    cat("Customers - Prefix:\n")
    cat("  Filas antes:", filas_antes, "\n")
    cat("  Filas después:", filas_despues, "\n")
    cat("  Eliminadas:", filas_antes - filas_despues, "\n")
    cat("  % Conservado:", round(filas_despues/filas_antes*100, 2), "%\n\n")
  }
  
  return(datos_limpios)
}

# Aplicar limpieza quirúrgica
datos_limpios <- limpiar_nulos_especificos(datos)
## === LIMPIEZA QUIRÚRGICA DE NULOS ===
## 
## Territories - OrderDate:
##   Filas antes: 29481 
##   Filas después: 11800 
##   Eliminadas: 17681 
##   % Conservado: 40.03 %
## 
## Sales - OrderDate:
##   Filas antes: 56046 
##   Filas después: 38365 
##   Eliminadas: 17681 
##   % Conservado: 68.45 %
## 
## Customers - Prefix:
##   Filas antes: 18148 
##   Filas después: 18018 
##   Eliminadas: 130 
##   % Conservado: 99.28 %

FASE 4. ANALISIS EXPLORATORIO

explorar_productos <- function(datos) {
  if(!"Products" %in% names(datos)) return()
  
  cat("=== ANÁLISIS EXPLORATORIO DE PRODUCTOS ===\n\n")
  
  products <- datos$Products
  
  # Estadísticas básicas
  cat("1. INFORMACIÓN GENERAL:\n")
  cat("   - Total productos:", nrow(products), "\n")
  cat("   - Categorías únicas:", n_distinct(products$ProductSubcategoryKey), "\n")
  cat("   - Colores únicos:", n_distinct(products$ProductColor), "\n")
  cat("   - Tamaños únicos:", n_distinct(products$ProductSize), "\n\n")
  
  # Análisis de precios
  if("ProductPrice" %in% names(products)) {
    products <- products %>% mutate(ProductPrice = as.numeric(ProductPrice))
    
    cat("2. ANÁLISIS DE PRECIOS:\n")
    cat("   - Precio mínimo: $", round(min(products$ProductPrice, na.rm = TRUE), 2), "\n")
    cat("   - Precio máximo: $", round(max(products$ProductPrice, na.rm = TRUE), 2), "\n")
    cat("   - Precio promedio: $", round(mean(products$ProductPrice, na.rm = TRUE), 2), "\n")
    cat("   - Precio mediano: $", round(median(products$ProductPrice, na.rm = TRUE), 2), "\n\n")
  }
  
  # Análisis de costos y márgenes
  if("ProductCost" %in% names(products) & "ProductPrice" %in% names(products)) {
    products <- products %>% mutate(
      ProductCost = as.numeric(ProductCost),
      Margen = ProductPrice - ProductCost,
      Margen_Porcentaje = (Margen / ProductPrice) * 100
    )
    
    cat("3. ANÁLISIS DE MÁRGENES:\n")
    cat("   - Margen mínimo: $", round(min(products$Margen, na.rm = TRUE), 2), "\n")
    cat("   - Margen máximo: $", round(max(products$Margen, na.rm = TRUE), 2), "\n")
    cat("   - Margen promedio: $", round(mean(products$Margen, na.rm = TRUE), 2), "\n")
    cat("   - Margen porcentual promedio:", round(mean(products$Margen_Porcentaje, na.rm = TRUE), 2), "%\n")
    cat("   - Productos con margen negativo:", sum(products$Margen < 0, na.rm = TRUE), "\n\n")
  }
  
  # Distribución por categorías
  if("ProductSubcategoryKey" %in% names(products)) {
    cat("4. DISTRIBUCIÓN POR SUBCATEGORÍAS:\n")
    dist_categorias <- products %>%
      count(ProductSubcategoryKey) %>%
      arrange(desc(n))
    
    print(head(dist_categorias, 10))
    cat("\n")
  }
  
  return(products)
}

# Ejecutar análisis de productos
products_analysis <- explorar_productos(datos_limpios)
## === ANÁLISIS EXPLORATORIO DE PRODUCTOS ===
## 
## 1. INFORMACIÓN GENERAL:
##    - Total productos: 293 
##    - Categorías únicas: 37 
##    - Colores únicos: 10 
##    - Tamaños únicos: 19 
## 
## 2. ANÁLISIS DE PRECIOS:
##    - Precio mínimo: $ 2.29 
##    - Precio máximo: $ 3578.27 
##    - Precio promedio: $ 714.44 
##    - Precio mediano: $ 333.42 
## 
## 3. ANÁLISIS DE MÁRGENES:
##    - Margen mínimo: $ 1.43 
##    - Margen máximo: $ 1487.84 
##    - Margen promedio: $ 300.78 
##    - Margen porcentual promedio: 47.64 %
##    - Productos con margen negativo: 0 
## 
## 4. DISTRIBUCIÓN POR SUBCATEGORÍAS:
## # A tibble: 10 × 2
##    ProductSubcategoryKey     n
##                    <dbl> <int>
##  1                     2    43
##  2                     1    32
##  3                    14    31
##  4                    12    28
##  5                     3    22
##  6                    16    18
##  7                    17    14
##  8                    37    11
##  9                    15     9
## 10                     4     8
#Analisis de productos
library(ggplot2)
library(dplyr)
library(scales)
## 
## Adjuntando el paquete: 'scales'
## The following object is masked from 'package:readr':
## 
##     col_factor
## The following object is masked from 'package:purrr':
## 
##     discard
# 1. Distribución de precios de productos
ggplot(datos_limpios$Products, aes(x = as.numeric(ProductPrice))) +
  geom_histogram(fill = "steelblue", bins = 20, alpha = 0.7) +
  labs(title = "Distribución de Precios de Productos",
       x = "Precio ($)", y = "Cantidad de Productos") +
  scale_x_continuous(labels = dollar) +
  theme_minimal()

# 2. Productos por categoría (usando subcategorías)
productos_categoria <- datos_limpios$Products %>%
  left_join(datos_limpios$Products_subcategories, by = "ProductSubcategoryKey") %>%
  count(SubcategoryName) %>%
  arrange(desc(n)) %>%
  head(10)  # Top 10 subcategorías

ggplot(productos_categoria, aes(x = reorder(SubcategoryName, n), y = n)) +
  geom_col(fill = "darkgreen", alpha = 0.7) +
  coord_flip() +
  labs(title = "Top 10 Subcategorías con Más Productos",
       x = "Subcategoría", y = "Número de Productos") +
  theme_minimal()

# 3. Distribución de cantidades vendidas
ggplot(datos_limpios$Sales, aes(x = OrderQuantity)) +
  geom_histogram(fill = "orange", bins = 30, alpha = 0.7) +
  labs(title = "Distribución de Cantidades por Venta",
       x = "Cantidad Vendida", y = "Frecuencia") +
  theme_minimal()

# 4. Ventas por territorio (top 10)
ventas_territorio <- datos_limpios$Sales %>%
  count(TerritoryKey) %>%
  arrange(desc(n)) %>%
  head(10)

ggplot(ventas_territorio, aes(x = reorder(factor(TerritoryKey), n), y = n)) +
  geom_col(fill = "purple", alpha = 0.7) +
  labs(title = "Top 10 Territorios con Más Ventas",
       x = "Territorio", y = "Número de Ventas") +
  theme_minimal()

# 5. Distribución por género
if("Gender" %in% names(datos_limpios$Customers)) {
  genero_count <- datos_limpios$Customers %>%
    count(Gender)
  
  ggplot(genero_count, aes(x = Gender, y = n, fill = Gender)) +
    geom_col(alpha = 0.7) +
    labs(title = "Distribución de Clientes por Género",
         x = "Género", y = "Número de Clientes") +
    theme_minimal()
}

# 6. Distribución por estado civil
if("MaritalStatus" %in% names(datos_limpios$Customers)) {
  estado_count <- datos_limpios$Customers %>%
    count(MaritalStatus)
  
  ggplot(estado_count, aes(x = MaritalStatus, y = n, fill = MaritalStatus)) +
    geom_col(alpha = 0.7) +
    labs(title = "Distribución por Estado Civil",
         x = "Estado Civil", y = "Número de Clientes") +
    theme_minimal()
}

Analisis numerico basico

# Función para resumen numérico simple
resumen_basico <- function(datos) {
  cat("=== RESUMEN BÁSICO DE LOS DATOS ===\n\n")
  
  # Ventas
  if("Sales" %in% names(datos)) {
    cat("VENTAS:\n")
    cat("- Total transacciones:", nrow(datos$Sales), "\n")
    cat("- Productos únicos:", n_distinct(datos$Sales$ProductKey), "\n")
    cat("- Cantidad total vendida:", sum(datos$Sales$OrderQuantity, na.rm = TRUE), "\n")
    cat("- Territorios con ventas:", n_distinct(datos$Sales$TerritoryKey), "\n\n")
  }
  
  # Productos
  if("Products" %in% names(datos)) {
    cat("PRODUCTOS:\n")
    cat("- Total productos:", nrow(datos$Products), "\n")
    precios <- as.numeric(datos$Products$ProductPrice)
    cat("- Precio promedio: $", round(mean(precios, na.rm = TRUE), 2), "\n")
    cat("- Rango precios: $", round(min(precios, na.rm = TRUE), 2), 
        " - $", round(max(precios, na.rm = TRUE), 2), "\n\n")
  }
  
  # Clientes
  if("Customers" %in% names(datos)) {
    cat("CLIENTES:\n")
    cat("- Total clientes:", nrow(datos$Customers), "\n")
    if("Gender" %in% names(datos$Customers)) {
      generos <- table(datos$Customers$Gender)
      cat("- Distribución género: M =", generos["M"], "F =", generos["F"], "\n")
    }
  }
}

# Ejecutar resumen
resumen_basico(datos_limpios)
## === RESUMEN BÁSICO DE LOS DATOS ===
## 
## VENTAS:
## - Total transacciones: 38365 
## - Productos únicos: 130 
## - Cantidad total vendida: 57000 
## - Territorios con ventas: 10 
## 
## PRODUCTOS:
## - Total productos: 293 
## - Precio promedio: $ 714.44 
## - Rango precios: $ 2.29  - $ 3578.27 
## 
## CLIENTES:
## - Total clientes: 18018 
## - Distribución género: M = 9126 F = 8892

FASE 5. MODELADO DE DATOS

Preparación de los datos

# Librerías
library(tidyverse)
library(lubridate)
library(scales)
library(plotly)
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(kableExtra)
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
# Configurar fechas de análisis
fecha_actual <- as.Date("2017-12-31")  # Asumiendo fecha de análisis
fecha_6_meses <- fecha_actual %m-% months(6)
fecha_3_meses <- fecha_actual %m-% months(3)
fecha_1_ano <- fecha_actual %m-% years(1)

cat("Fechas de análisis:")
## Fechas de análisis:
cat("\n- Actual:", as.character(fecha_actual))
## 
## - Actual: 2017-12-31
cat("\n- 6 meses atrás:", as.character(fecha_6_meses))
## 
## - 6 meses atrás: 2017-06-30
cat("\n- 3 meses atrás:", as.character(fecha_3_meses))
## 
## - 3 meses atrás: 2017-09-30
cat("\n- 1 año atrás:", as.character(fecha_1_ano))
## 
## - 1 año atrás: 2016-12-31

##Optimización del inventario del negocio Predice productos de baja Rotación

# Librerías para machine learning
library(tidyverse)
library(caret)
## Cargando paquete requerido: lattice
## 
## Adjuntando el paquete: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift
library(randomForest)
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
## 
## Adjuntando el paquete: 'randomForest'
## The following object is masked from 'package:dplyr':
## 
##     combine
## The following object is masked from 'package:ggplot2':
## 
##     margin
library(xgboost)
## 
## Adjuntando el paquete: 'xgboost'
## The following object is masked from 'package:plotly':
## 
##     slice
## The following object is masked from 'package:dplyr':
## 
##     slice
library(cluster)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ROCR)
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Adjuntando el paquete: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(corrplot)
## corrplot 0.95 loaded
# Configurar semilla para reproducibilidad
set.seed(123)

Modelado

Modelo de clasificación para predicción de productos de baja rotación

# Crear variable objetivo para clasificación
datos_modelo_clasificacion <- datos_limpios$Sales %>%
  mutate(OrderDate_clean = as.Date(OrderDate)) %>%
  filter(OrderDate_clean >= as.Date("2017-01-01")) %>%  # Último año para entrenamiento
  group_by(ProductKey) %>%
  summarise(
    total_ventas = sum(OrderQuantity, na.rm = TRUE),
    num_transacciones = n_distinct(OrderNumber),
    dias_ultima_venta = as.numeric(as.Date("2017-12-31") - max(OrderDate_clean)),
    avg_cantidad_por_transaccion = mean(OrderQuantity, na.rm = TRUE),
    .groups = 'drop'
  ) %>%
  left_join(datos_limpios$Products %>% 
              select(ProductKey, ProductSubcategoryKey, ProductCost, ProductPrice) %>%
              mutate(
                ProductCost = as.numeric(ProductCost),
                ProductPrice = as.numeric(ProductPrice)
              ), 
            by = "ProductKey") %>%
  left_join(datos_limpios$Products_subcategories %>% 
              select(ProductSubcategoryKey, SubcategoryName),
            by = "ProductSubcategoryKey") %>%
  mutate(
    margen = ProductPrice - ProductCost,
    precio_costo_ratio = ProductPrice / ProductCost,
    # Variable objetivo: 1 si es baja rotación (percentil inferior 25% en ventas)
    baja_rotacion = as.factor(ifelse(total_ventas <= quantile(total_ventas, 0.25), 1, 0))
  ) %>%
  filter(!is.na(margen) & !is.infinite(precio_costo_ratio))

# Verificar balance de clases
cat("Distribución de la variable objetivo:\n")
## Distribución de la variable objetivo:
table(datos_modelo_clasificacion$baja_rotacion)
## 
##  0  1 
## 76 26
cat("\nProporción:", round(prop.table(table(datos_modelo_clasificacion$baja_rotacion)) * 100, 1), "%")
## 
## Proporción: 74.5 25.5 %
# Seleccionar variables para el modelo
variables_modelo <- datos_modelo_clasificacion %>%
  select(total_ventas, num_transacciones, dias_ultima_venta, 
         avg_cantidad_por_transaccion, margen, precio_costo_ratio,
         baja_rotacion)

# Convertir subcategoría en variables dummy
subcategoria_dummy <- model.matrix(~ SubcategoryName - 1, data = datos_modelo_clasificacion)

# Datos finales para modelo
datos_modelo_final <- cbind(
  variables_modelo %>% select(-baja_rotacion),
  subcategoria_dummy,
  target = variables_modelo$baja_rotacion
) %>%
  na.omit()

cat("\nDimensiones del dataset final:", dim(datos_modelo_final))
## 
## Dimensiones del dataset final: 102 24

División en test y testing

# División 70/30
train_index <- createDataPartition(datos_modelo_final$target, p = 0.7, list = FALSE)
train_data <- datos_modelo_final[train_index, ]
test_data <- datos_modelo_final[-train_index, ]

cat("Tamaño del conjunto de entrenamiento:", nrow(train_data), "\n")
## Tamaño del conjunto de entrenamiento: 73
cat("Tamaño del conjunto de prueba:", nrow(test_data), "\n")
## Tamaño del conjunto de prueba: 29
cat("Proporción de clases en entrenamiento:", 
    round(prop.table(table(train_data$target)) * 100, 1), "%")
## Proporción de clases en entrenamiento: 74 26 %
# Configurar validación cruzada
ctrl <- trainControl(
  method = "cv",
  number = 5,
  classProbs = TRUE,
  summaryFunction = twoClassSummary,
  savePredictions = "final"
)

# Nombres de las variables sean válidos
names(train_data) <- make.names(names(train_data))
names(test_data) <- make.names(names(test_data))

# Convertir target a factor con nombres válidos
train_data$target <- factor(train_data$target, levels = c(0, 1), labels = c("Alta", "Baja"))
test_data$target <- factor(test_data$target, levels = c(0, 1), labels = c("Alta", "Baja"))

# Modelo 1: Random Forest
cat("Entrenando Random Forest...\n")
## Entrenando Random Forest...
model_rf <- train(
  target ~ .,
  data = train_data,
  method = "rf",
  trControl = ctrl,
  metric = "ROC",
  tuneLength = 3
)

# Modelo 2: XGBoost
cat("Entrenando XGBoost...\n")
## Entrenando XGBoost...
model_xgb <- train(
  target ~ .,
  data = train_data,
  method = "xgbTree",
  trControl = ctrl,
  metric = "ROC",
  tuneLength = 3
)
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:36] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:37] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:38] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:39] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:40] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:41] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:42] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:43] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:44] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:45] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:46] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:47] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:48] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:49] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:50] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
## [15:49:51] WARNING: src/c_api/c_api.cc:935: `ntree_limit` is deprecated, use `iteration_range` instead.
# Modelo 3: Regresión Logística
cat("Entrenando Regresión Logística...\n")
## Entrenando Regresión Logística...
model_glm <- train(
  target ~ .,
  data = train_data,
  method = "glm",
  trControl = ctrl,
  metric = "ROC",
  family = "binomial"
)
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Comparar modelos
modelos_comparacion <- resamples(list(
  RandomForest = model_rf,
  XGBoost = model_xgb,
  LogisticRegression = model_glm
))

cat("\nCOMPARACIÓN DE MODELOS (AUC ROC):\n")
## 
## COMPARACIÓN DE MODELOS (AUC ROC):
summary(modelos_comparacion)
## 
## Call:
## summary.resamples(object = modelos_comparacion)
## 
## Models: RandomForest, XGBoost, LogisticRegression 
## Number of resamples: 5 
## 
## ROC 
##                         Min.   1st Qu. Median      Mean 3rd Qu. Max. NA's
## RandomForest       1.0000000 1.0000000      1 1.0000000       1    1    0
## XGBoost            1.0000000 1.0000000      1 1.0000000       1    1    0
## LogisticRegression 0.9090909 0.9545455      1 0.9727273       1    1    0
## 
## Sens 
##                         Min.   1st Qu. Median      Mean 3rd Qu. Max. NA's
## RandomForest       0.9090909 1.0000000      1 0.9818182       1    1    0
## XGBoost            0.9090909 1.0000000      1 0.9818182       1    1    0
## LogisticRegression 0.7272727 0.9090909      1 0.9272727       1    1    0
## 
## Spec 
##                         Min. 1st Qu. Median      Mean 3rd Qu. Max. NA's
## RandomForest       0.6666667    0.75      1 0.8833333       1    1    0
## XGBoost            0.7500000    1.00      1 0.9500000       1    1    0
## LogisticRegression 0.3333333    1.00      1 0.8666667       1    1    0

Evaluación del mejor modelo

# Usar el mejor modelo (Random Forest basado en AUC)
mejor_modelo <- model_rf

# Predicciones en test
predicciones <- predict(mejor_modelo, newdata = test_data, type = "prob")
predicciones_class <- predict(mejor_modelo, newdata = test_data)

# Matriz de confusión
cat("MATRIZ DE CONFUSIÓN:\n")
## MATRIZ DE CONFUSIÓN:
confusion_matrix <- confusionMatrix(predicciones_class, test_data$target, positive = "Baja")
print(confusion_matrix)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Alta Baja
##       Alta   21    0
##       Baja    1    7
##                                           
##                Accuracy : 0.9655          
##                  95% CI : (0.8224, 0.9991)
##     No Information Rate : 0.7586          
##     P-Value [Acc > NIR] : 0.003392        
##                                           
##                   Kappa : 0.9102          
##                                           
##  Mcnemar's Test P-Value : 1.000000        
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.9545          
##          Pos Pred Value : 0.8750          
##          Neg Pred Value : 1.0000          
##              Prevalence : 0.2414          
##          Detection Rate : 0.2414          
##    Detection Prevalence : 0.2759          
##       Balanced Accuracy : 0.9773          
##                                           
##        'Positive' Class : Baja            
## 
# Métricas adicionales
cat("\nMÉTRICAS DETALLADAS:\n")
## 
## MÉTRICAS DETALLADAS:
cat("Precisión:", round(confusion_matrix$overall["Accuracy"], 3), "\n")
## Precisión: 0.966
cat("Sensibilidad (Recall):", round(confusion_matrix$byClass["Sensitivity"], 3), "\n")
## Sensibilidad (Recall): 1
cat("Precisión (Precision):", round(confusion_matrix$byClass["Precision"], 3), "\n")
## Precisión (Precision): 0.875
cat("F1-Score:", round(confusion_matrix$byClass["F1"], 3), "\n")
## F1-Score: 0.933
# Curva ROC
roc_curve <- roc(as.numeric(test_data$target == "Baja"), predicciones$Baja)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
cat("AUC ROC:", round(auc(roc_curve), 3), "\n")
## AUC ROC: 1
# Plot ROC
plot(roc_curve, main = "Curva ROC - Modelo de Clasificación", col = "blue", lwd = 2)
legend("bottomright", legend = paste("AUC =", round(auc(roc_curve), 3)), col = "blue", lwd = 2)

Importancia de variables

# Importancia de variables
importancia <- varImp(mejor_modelo, scale = TRUE)

# Convertir a data frame para ggplot
importancia_df <- as.data.frame(importancia$importance)
importancia_df$Variable <- rownames(importancia_df)
rownames(importancia_df) <- NULL

# Ordenar y tomar top 15
importancia_top <- importancia_df %>%
  arrange(desc(Overall)) %>%
  head(15)

# Graficar top 15 variables más importantes
ggplot(importancia_top, aes(x = Overall, y = reorder(Variable, Overall))) +
  geom_col(fill = "steelblue", alpha = 0.8) +
  labs(title = "Variables Más Importantes para Predecir Baja Rotación",
       x = "Importancia",
       y = "Variables") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))