最近总是下雨☔️,真的很不爽啊!~🫠
还能不能有个好天气啊!?🥹
天天都是歌荒啊,谁能推荐点好听的歌啊!~🥹
今天讲讲用机器学习的方法筛选重要基因吧,GeneSelectR
包。😘
如果你机器学习已经做的很熟练了,其实完全可以脱离这个包。😜
rm(list = ls())
library(tidyverse)
library(GeneSelectR)
GeneSelect
是基于使用Python
进行特征选择的。所以第一次用的时候需要安装相应的Python
模块,需要为包创建工作环境。
首先要设置一个conda
工作环境,大家不知道的话可能要补一下相关的知识了。
GeneSelectR::set_reticulate_python()
#GeneSelectR::configure_environment()
这里行是样本,列是基因。🧬
load("UrbanRandomSubset.rda")
DT::datatable(UrbanRandomSubset)
这里是基于sklearn
进行的机器学习,所以要把y
转换为数字形式。😘
X <- UrbanRandomSubset %>% dplyr::select(-treatment)
y <- UrbanRandomSubset['treatment']
y <- as.factor(y$treatment)
y <- as.integer(y)
y <- as.vector(y)
这里njobs = -1
会把所有的cores
都用上,大家按需分配吧,时间还是蛮久的。🥳
默认提供4
种方法进行选择,Univariate feature selection
, Logistic regression with L1 penalty
, boruta
和Random Forest
。🤓
selection_results <- GeneSelectR::GeneSelectR(X = X,
y = y,
njobs = -1)
selection_results
plot_feature_importance(selection_results, top_n_features = 10)
plot_metrics(selection_results)
如果你要看看machine learning
的performance
就可以用这个function
了。😏
这里我们没有test
集,就只展示CV
了哦。🙃
plot_metrics(selection_results)
selection_results$test_metrics
selection_results$cv_mean_score
overlap <- calculate_overlap_coefficients(selection_results)
overlap
三种方法计算哦!~😯
plot_overlap_heatmaps(overlap)
比如,这里可以是你的DEGs
。😜
按需选择你的list
吧。😘
custom_list <- list(custom_list = c('char1','char2','char3','char4','char5'),
custom_list2 = c('char1','char2','char3','char4','char5'))
overlap1 <- calculate_overlap_coefficients(selection_results, custom_lists = custom_list)
plot_overlap_heatmaps(overlap1)
组太多,那画个Upset
图吧,这里我们还可以显著标记哦。🙊
plot_upset(selection_results, custom_lists = custom_list)