最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

跟著小云蹭熱點,利用LASSO回歸和SVM-REF兩種機器學(xué)習(xí)算法進行特征變量篩選

2023-05-04 13:44 作者:爾云間  | 我要投稿

機器學(xué)習(xí),在現(xiàn)在生信文章中出現(xiàn)的頻率越來越高,尤其是通過幾種機器學(xué)習(xí)算法相結(jié)合的策略來識別相關(guān)疾病的特征基因,在現(xiàn)在是最火的生信分析熱點,今天小云帶著小伙伴也來蹭蹭熱點,通過LASSO回歸和SVM-REF兩種機器學(xué)習(xí)算法進行特征變量篩選,最后將兩種算法獲得的交叉基因作為特征基因;這就是小果為大家今天帶來的分享內(nèi)容,接下來和小云一起開啟今天的學(xué)習(xí)之旅吧!

1.何為LASSO回歸和SVM-REF算法?

在進行實操之前小云想為大家簡單的介紹一下這兩種算法,SVM-REF(support vector machine - recursive feature elimination)是基于支持向量機的機器學(xué)習(xí)方法, 通過刪減svm產(chǎn)生的特征向量來尋找最佳變量;LASSO回歸(logistic regression)也是機器學(xué)習(xí)的方法之一,通過尋找分類錯誤最小時的λ來確定變量,主要用于篩選特征變量,構(gòu)建最佳分類模型。

今天小云想利用這兩種算法進行特征選擇,最后取兩種方法得到的交叉基因作為特征基因,話不多說,跟著小果開始今天的實操吧!

2.?載入需要的R包

library(tidyverse)

library(glmnet)

source('msvmRFE.R') ?

library(VennDiagram)

library(sigFeature)

library(e1071)

library(caret)

library(randomForest)

3.數(shù)據(jù)準(zhǔn)備

svm.csv,行名為樣本名,第一列為分組信息,其他列為基因所對應(yīng)的表達矩陣。

4.LASSO回歸和SVM-REF篩選特征變量

train <- read.csv("svm.csv",row.names = 1,

??????????????????as.is = F) #后面svmRFE函數(shù)要求group的類型為factor

dim(train)

train[1:4,1:4]

# 轉(zhuǎn)為lasso需要的格式

x <- as.matrix(train[,-1])

(y <- ifelse(train$group == "NR", 0,1)) #把分組信息換成01

fit = glmnet(x, y, family = "binomial", alpha = 1, lambda = NULL)

# 繪制LASSO回歸曲線圖

pdf("1A_lasso.pdf", width = 30, height = 15)

plot(fit, xvar = "dev", label = TRUE)

dev.off()

#繪制LASSO回歸10折交叉驗證圖

cvfit = cv.glmnet(x, y,

??????????????????nfold=10, #例文描述:10-fold cross-validation

??????????????????family = "binomial", type.measure = "class")

pdf("2cvfit.pdf")

plot(cvfit)

dev.off()

#查看最佳lambda

cvfit$lambda.min

# 獲取LASSO選出來的特征

myCoefs <- coef(cvfit, s="lambda.min")

lasso_fea <- myCoefs@Dimnames[[1]][which(myCoefs != 0 )]

(lasso_fea <- lasso_fea[-1])

# 把lasso找到的特征保存到文件

write.csv(lasso_fea,"3feature_lasso.csv")

#SVM-REF算法輸入數(shù)據(jù)

input <- train

#采用五折交叉驗證 (k-fold crossValidation)

svmRFE(input, k = 5, halve.above = 100) #分割數(shù)據(jù),分配隨機數(shù)

nfold = 5

nrows = nrow(input)

folds = rep(1:nfold, len=nrows)[sample(nrows)]

folds = lapply(1:nfold, function(x) which(folds == x))

results = lapply(folds, svmRFE.wrap, input, k=5, halve.above=100) #特征選擇

top.features = WriteFeatures(results, input, save=F) #查看主要變量

head(top.features)

#把SVM-REF找到的特征保存到文件

write.csv(top.features,"4feature_svm.csv")

# 選前300個變量進行SVM模型構(gòu)建,選取的變量越多,運行速度越慢!

featsweep = lapply(1:300, FeatSweep.wrap, results, input) #300個變量

#save(featsweep,file = "featsweep.RData")

# 畫圖

no.info = min(prop.table(table(input[,1])))

errors = sapply(featsweep, function(x) ifelse(is.null(x), NA, x$error))

#繪制基于SVM-REF算法的錯誤率曲線圖

pdf("5B_svm-error.pdf",width = 5,height = 5)

PlotErrors(errors, no.info=no.info) #查看錯誤率

dev.off()

#繪制基于SVM-REF算法的正確率曲線圖

#dev.new(width=4, height=4, bg='white')

pdf("6B_svm-accuracy.pdf",width = 5,height = 5)

Plotaccuracy(1-errors,no.info=no.info) #查看準(zhǔn)確率

dev.off()

# 圖中紅色圓圈所在的位置,即錯誤率最低點

which.min(errors)

#比較lasso和SVM-REF方法一找出的特征變量,畫Venn圖

(myoverlap <- intersect(lasso_fea, top.features[1:which.min(errors), "FeatureName"])) #交集

#統(tǒng)計交叉基因有多少個

summary(lasso_fea%in%top.features[1:which.min(errors), "FeatureName"])

#繪制venn圖

pdf("7C_lasso_SVM_venn.pdf", width = 15, height = 8)

grid.newpage()

venn.plot <- venn.diagram(list(LASSO = lasso_fea, #畫圖

? ? ? ? ?SVM_RFE = as.character(top.features[1:which.min(errors),"FeatureName"])), NULL,

??????????????????????????fill = c("#E31A1C","#E7B800"),

??????????????????????????alpha = c(0.5,0.5), cex = 4, cat.fontface=3,

??????????????????????????category.names = c("LASSO", "SVM_RFE"),

??????????????????????????main = "Overlap")

grid.draw(venn.plot)

dev.off()

5.?結(jié)果文件

1.1A_lasso.pdf

該結(jié)果圖片為Lasso回歸圖。

2.?2cvfit.pdf

該結(jié)果圖片為10折交叉驗證圖。

3.5B_svm-error.pdf

該結(jié)果圖片為基于SVM-RFE算法5折交叉驗證的錯誤率曲線圖。

????

4.6B_svm-accuracy.pdf

該結(jié)果圖片為基于SVM-RFE算法5折交叉驗證的正確率曲線圖

5.3feature_lasso.csv

該結(jié)果是基于Lasso算法經(jīng)過特征選擇,篩選出的特征基因。

6.4feature_svm.csv

該結(jié)果是基于SVM-REF算法經(jīng)過特征選擇,篩選出的特征基因,F(xiàn)eatureName表示基因名

7.7C_lasso_SVM_venn.pdf

該結(jié)果圖片為通過LASSO回歸和SVM-REF算法進行特征選擇,最后取兩種方法得到的16個交叉基因作為特征基因的Venn圖。

最終小云順利完成了利用 lassso回歸和SVM-REF兩種機器學(xué)習(xí)算法進行了特征基因篩選,機器學(xué)習(xí)相關(guān)其他分析內(nèi)容歡迎嘗試本公司新開發(fā)的云平臺生物信息分析小工具,零代碼完成分析,云平臺網(wǎng)址:http://www.biocloudservice.com/home.html,主要包括lasso回歸模型篩選特征基因(http://www.biocloudservice.com/116/116.php),隨機森林的十折交叉驗證

(http://www.biocloudservice.com/646/646.php),svm-ref支持向量機的機器學(xué)習(xí)(http://www.biocloudservice.com/372/372.php)等機器學(xué)習(xí)相關(guān)的小工具,歡迎大家來嘗試喲,今天小果的分享就到這里啦!


跟著小云蹭熱點,利用LASSO回歸和SVM-REF兩種機器學(xué)習(xí)算法進行特征變量篩選的評論 (共 條)

分享到微博請遵守國家法律
定日县| 洛阳市| 安新县| 交城县| 云安县| 临沧市| 尉氏县| 霍山县| 锦州市| 曲靖市| 巴里| 吉木乃县| 嵩明县| 瑞昌市| 将乐县| 永嘉县| 常熟市| 河津市| 日土县| 依兰县| 松滋市| 绥江县| 册亨县| 临澧县| 长汀县| 静乐县| 嘉峪关市| 枝江市| 三台县| 凤阳县| 石林| 怀化市| 五莲县| 门源| 闽侯县| 湖口县| 苏州市| 霍邱县| 阳江市| 金沙县| 丰镇市|