最近有小伙伴反映收不到推送,因为公众号改了推送算法,现在需要加星标,多点赞、点在看,才能准时收到推送哦。
导语:R语言在机器学习和深度学习领域有着丰富的生态系统。虽然Python在深度学习领域更流行,但R凭借其强大的统计基础、数据可视化和数据处理能力,在传统机器学习和部分深度学习任务中表现出色。
北京墨因生物已经与国内50+知名医院的老师或名牌大学实验室合作(协和、哈工大、同济、哈医大等)。欢迎有生信分析需求的老师垂询,公共数据库数据挖掘或自测数据分析均可。

1.数据准备library(tidymodels)library(ggplot2)
data("boston_housing", package = "modeldata")
glimpse(boston_housing)
set.seed(123)data_split 0.8, strata = medv)train_data test_data
recipe_spec % step_normalize(all_numeric_predictors()) %>% step_dummy(all_nominal_predictors())
2.多种机器学习模型的实现models linear_reg = linear_reg(engine = "lm"),
random_forest = rand_forest( trees = 200, mode = "regression", engine = "ranger" ),
xgboost = boost_tree( trees = 200, mode = "regression", engine = "xgboost" ),
svm = svm_rbf( mode = "regression", engine = "kernlab" ),
knn = nearest_neighbor( mode = "regression", engine = "kknn" ),
neural_net = mlp( hidden_units = 10, mode = "regression", engine = "nnet" ))
results for (model_name in names(models)) { cat("训练模型:", model_name, "\n")
wf % add_recipe(recipe_spec) %>% add_model(models[[model_name]])
fit_model % fit(data = train_data)
predictions % bind_cols(test_data %>% select(medv))
metrics % metrics(truth = medv, estimate = .pred)
results[[model_name]] fit = fit_model, predictions = predictions, metrics = metrics )}
performance_comparison function(model_name) { results[[model_name]]$metrics %>% mutate(model = model_name)})
performance_comparison %>% ggplot(aes(x = model, y = .estimate, fill = .metric)) + geom_col(position = "dodge") + labs(title = "机器学习模型性能比较", y = "指标值", x = "模型") + theme_minimal()
3. 超参数调优示例(以随机森林为例)tune_spec mtry = tune(), trees = tune(), min_n = tune(), mode = "regression") %>% set_engine("ranger")
tune_wf % add_recipe(recipe_spec) %>% add_model(tune_spec)
set.seed(123)folds
param_grid parameters(tune_spec), size = 20 )
tune_results tune_wf, resamples = folds, grid = param_grid, metrics = metric_set(rmse, rsq))
best_params "rmse")
final_wf final_fit % fit(data = train_data)
final_predictions % bind_cols(test_data %>% select(medv))
final_metrics % metrics(truth = medv, estimate = .pred)
print(final_metrics)
1.环境配置install.packages("keras")library(keras)
install_keras()
library(tfdatasets)
2.回归问题深度学习模型x_train % select(-medv) %>% as.matrix()y_train % pull(medv)x_test % select(-medv) %>% as.matrix() y_test % pull(medv)
x_train scale(x_train)x_test scale(x_test)
build_model function() { model keras_model_sequential() %>% layer_dense(units = 64, activation = "relu", input_shape = ncol(x_train)) %>% layer_batch_normalization() %>% layer_dropout(rate = 0.3) %>% layer_dense(units = 32, activation = "relu") %>% layer_dropout(rate = 0.2) %>% layer_dense(units = 16, activation = "relu") %>% layer_dense(units = 1)
model %>% compile( optimizer = optimizer_adam(learning_rate = 0.001), loss = "mse", metrics = c("mae") )
return(model)}
model build_model()summary(model)
early_stop callback_early_stopping( monitor = "val_loss", patience = 20, restore_best_weights = TRUE)
history % fit( x_train, y_train, epochs = 200, batch_size = 32, validation_split = 0.2, callbacks = list(early_stop), verbose = 1)
plot(history)
model %>% evaluate(x_test, y_test)
dl_predictions % predict(x_test)
results_comparison frame( Actual = y_test, Predicted = as.vector(dl_predictions), Model = "Deep Learning")
3.分类问题深度学习模型data(iris)
set.seed(123)iris_split initial_split(iris, prop = 0.8, strata = Species)iris_train training(iris_split)iris_test testing(iris_split)
x_train_iris % select(-Species) %>% as.matrix()y_train_iris % pull(Species) %>% as.numeric() - 1 x_test_iris % select(-Species) %>% as.matrix()y_test_iris % pull(Species) %>% as.numeric() - 1
y_train_categorical to_categorical(y_train_iris, 3)y_test_categorical to_categorical(y_test_iris, 3)
build_classification_model function() { model keras_model_sequential() %>% layer_dense(units = 32, activation = "relu", input_shape = 4) %>% layer_dropout(rate = 0.3) %>% layer_dense(units = 16, activation = "relu") %>% layer_dropout(rate = 0.2) %>% layer_dense(units = 3, activation = "softmax")
model %>% compile( optimizer = optimizer_adam(learning_rate = 0.001), loss = "categorical_crossentropy", metrics = c("accuracy") )
return(model)}
class_model build_classification_model()
history_class % fit( x_train_iris, y_train_categorical, epochs = 100, batch_size = 16, validation_split = 0.2, callbacks = list(early_stop), verbose = 0)
class_model %>% evaluate(x_test_iris, y_test_categorical)
class_predictions % predict(x_test_iris) %>% k_argmax() %>% as.numeric()predicted_species levels(iris$Species)[class_predictions + 1]
accuracy mean(predicted_species == iris_test$Species)cat("深度学习分类准确率:", round(accuracy, 3))
4.使用管道的深度学习模型create_dataset function(x, y, batch_size = 32, shuffle = TRUE) { dataset tensor_slices_dataset(list(x, y))
if (shuffle) { dataset % dataset_shuffle(buffer_size = nrow(x)) }
dataset %>% dataset_batch(batch_size) %>% dataset_prefetch(buffer_size = tf$data$AUTOTUNE)}
train_dataset create_dataset(x_train, y_train)val_dataset create_dataset(x_test, y_test, shuffle = FALSE)
build_advanced_model function(input_shape) { inputs layer_input(shape = input_shape)
path1 % layer_dense(64, activation = "relu") %>% layer_batch_normalization()
path2 % layer_dense(32, activation = "relu") %>% layer_batch_normalization()
concatenated layer_concatenate(list(path1, path2))
outputs % layer_dense(32, activation = "relu") %>% layer_dropout(0.3) %>% layer_dense(1)
model keras_model(inputs, outputs)
model %>% compile( optimizer = optimizer_adam(learning_rate = 0.001), loss = "mse", metrics = c
("mae") )
return(model)}
advanced_model build_advanced_model(ncol(x_train))
history_advanced % fit( train_dataset, epochs = 100, validation_data = val_dataset, callbacks = list(early_stop), verbose = 1)
comparison_results performance_comparison %>% filter(.metric == "rmse") %>% select(model, rmse = .estimate) %>% mutate(type = "Machine Learning"),
data.frame( model = "Deep Learning", rmse = sqrt(model %>% evaluate(x_test, y_test, verbose = 0)[[1]]), type = "Deep Learning" ))
ggplot(comparison_results, aes(x = reorder(model, rmse), y = rmse, fill = type)) + geom_col() + coord_flip() + labs(title = "模型性能比较 (RMSE越低越好)", x = "模型", y = "RMSE") + theme_minimal()
R语言在AI领域已经形成了独特的竞争优势:将统计学的严谨性与现代AI的灵活性完美结合。无论是传统的机器学习任务还是前沿的深度学习应用,R都提供了生产级的解决方案。特别适合那些需要深厚统计基础、强调可解释性、并追求完整数据分析生命周期的应用场景。码字不易,欢迎读者分享或转发到朋友圈,任何公众号或其他媒体未经许可不得私自转载或抄袭。由于微信平台算法改版,公众号内容将不再以时间排序展示,建议设置“作图丫”公众号为星标,防止丢失。星标具体步骤为:(2)点击右上角的小点点,在弹出界面选择“设为星标”即可。