The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
This is an introduction to the package basemodels
. This
package provides equivalent functions for the dummy classifier and
regressor used in ‘Python’ ‘scikit-learn’ library with some
modifications. We aim to help R users easily identify baseline
performance for their classification and regression problems. Our
baseline models do not use any predictors to make predictions. They are
useful in cases of class imbalance, multi-class classification, and when
users want to quickly compare their statistical and machine learning
models with several baseline models to see how much they have
improved.
We show a few examples here. First, we split the data into training and testing sets.
set.seed(2023)
index <- sample(1:nrow(iris), nrow(iris) * 0.8)
train_data <- iris[index,]
test_data <- iris[-index,]
We can use the dummyClassifier method for the train() function in
caret
package.
ctrl1 <- caret::trainControl(method = "none")
# Train a dummy classifier with caret
dummy_model <- caret::train(Species ~ .,
data = train_data,
method = dummyClassifier,
strategy = "stratified",
trControl = ctrl1)
# Make predictions using the trained dummy classifier
pred_vec <- predict(dummy_model, test_data)
# Evaluate the performance of the dummy classifier
conf_matrix <- caret::confusionMatrix(pred_vec, test_data$Species)
print(conf_matrix)
#> Confusion Matrix and Statistics
#>
#> Reference
#> Prediction setosa versicolor virginica
#> setosa 3 4 3
#> versicolor 6 3 3
#> virginica 3 2 3
#>
#> Overall Statistics
#>
#> Accuracy : 0.3
#> 95% CI : (0.1473, 0.494)
#> No Information Rate : 0.4
#> P-Value [Acc > NIR] : 0.9060
#>
#> Kappa : -0.05
#>
#> Mcnemar's Test P-Value : 0.8964
#>
#> Statistics by Class:
#>
#> Class: setosa Class: versicolor Class: virginica
#> Sensitivity 0.2500 0.3333 0.3333
#> Specificity 0.6111 0.5714 0.7619
#> Pos Pred Value 0.3000 0.2500 0.3750
#> Neg Pred Value 0.5500 0.6667 0.7273
#> Prevalence 0.4000 0.3000 0.3000
#> Detection Rate 0.1000 0.1000 0.1000
#> Detection Prevalence 0.3333 0.4000 0.2667
#> Balanced Accuracy 0.4306 0.4524 0.5476
For a classification problem, we can use the dummy_classifier() function.
dummy_model <- dummy_classifier(train_data$Species, strategy = "proportional", random_state = 2024)
# Make predictions using the trained dummy classifier
pred_vec <- predict_dummy_classifier(dummy_model, test_data)
# Evaluate the performance of the dummy classifier
conf_matrix <- caret::confusionMatrix(pred_vec, test_data$Species)
print(conf_matrix)
#> Confusion Matrix and Statistics
#>
#> Reference
#> Prediction setosa versicolor virginica
#> setosa 6 3 3
#> versicolor 3 4 4
#> virginica 3 2 2
#>
#> Overall Statistics
#>
#> Accuracy : 0.4
#> 95% CI : (0.2266, 0.594)
#> No Information Rate : 0.4
#> P-Value [Acc > NIR] : 0.5689
#>
#> Kappa : 0.0909
#>
#> Mcnemar's Test P-Value : 0.8810
#>
#> Statistics by Class:
#>
#> Class: setosa Class: versicolor Class: virginica
#> Sensitivity 0.5000 0.4444 0.22222
#> Specificity 0.6667 0.6667 0.76190
#> Pos Pred Value 0.5000 0.3636 0.28571
#> Neg Pred Value 0.6667 0.7368 0.69565
#> Prevalence 0.4000 0.3000 0.30000
#> Detection Rate 0.2000 0.1333 0.06667
#> Detection Prevalence 0.4000 0.3667 0.23333
#> Balanced Accuracy 0.5833 0.5556 0.49206
For a regression problem, we can use the dummy_regressor() function.
# Make predictions using the trained dummy regressor
reg_model <- dummy_regressor(train_data$Sepal.Length, strategy = "median")
y_hat <- predict_dummy_regressor(reg_model, test_data)
# Find mean squared error
mean((test_data$Sepal.Length-y_hat)^2)
#> [1] 0.6056667
The dummyRegressor method can be used for the train() function in
caret
package.
ctrl1 <- caret::trainControl(method = "none")
# Train a dummy regressor with caret
reg_model <- caret::train(Sepal.Length ~ ., data = train_data,
method = dummyRegressor,
strategy = "median",
trControl = ctrl1)
y_hat <- predict(reg_model, test_data)
# Find mean squared error
mean((test_data$Sepal.Length-y_hat)^2)
#> [1] 0.6056667
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.