精华内容
下载资源
问答
  • 模拟退火筛选变量

    2019-01-28 14:30:49
    本文主要是采用模拟退火的方法选择变量,采取的评价方法是基于五折CV的auc...模拟退火调筛选变量 @author: 许竞 """ from sklearn.cross_validation import cross_val_score import ran

    本文主要是采用模拟退火的方法选择变量,采取的评价方法是基于五折CV的auc值均值

    # -*- coding: utf-8 -*-
    """
    Created on Sun Jan 27 23:15:34 2019
    模拟退火调筛选变量
    @author: xujingpilot
    """
    from sklearn.cross_validation import cross_val_score
    import random
    import math
    
    
    def test(model,x,y,c_v):
        #利用CV计算AUC值
        scores=cross_val_score(model, x, y, cv=c_v,scoring='roc_auc').mean()
        return scores
    
    def suiji1(name,name1):
        #随机添加选择变量
        #name 变量名字 name1 目前已有变量
    
        n=[x for x in name if x not in name1]
        num=random.randint(1,2)
        xx=random.sample(n,num)
        name2=name1.extend(xx)
        del xx,num,n,name,name1
        return name2
    
    def suiji2(name1):
        #随机删除选择变量
        #name1 目前已有变量
        xx=random.sample(name1,1)
        name1=name1.remove(xx)
        del xx
        return name1
    
    def mengtekaluo(cv1,cv2,T):
        #cv1:第一次cv cv2:第二次cv T温度
        if cv1>cv2:
            p=math.exp((cv1-cv2)/T)
        else:
            p=1
        return p
            
    def panduan(x,y,c_v,model,T,name1,cv1):
        #x:特征;y:标签;c_v:cv次数;T:温度 name1 初始变量 cv1:
        name=x.columns.tolist()
    
        name2=suiji1(name,name1)#随机添加1-3个变量
        name3=suiji2(name1)#随机删除1个变量
        x1=x[name3]
        cv2=test(model,x1,y,c_v)  
        p=mengtekaluo(cv1,cv2,T)
        if random.random()<p:
            na=name3
        else:
            na=name1
        del x,y,c_v,name1,name2,name1,x1
        return na,cv2
            
         
    
    
    
       
    if __name__ == "__main__":
        x=data['x']
        y=data['y']
        T=10#初始温度
        cool=0.8 # 退火降温速度
        c_v=5#5折
        name=x.columns.tolist()
        num=random.randint(3,6)
        #初始变量3-6个变量
        name1=random.sample(name,num)
        model=LogisticRegression()#逻辑回归为案例
        cv1=test(model,x[name1],y,c_v)
        cv=cv1
        for i in range(1000):
            name1,cv1=panduan(x,y,c_v,model,T,name1,cv1)
            T=T*cool
            if i%50==0:
                if cv-cv1<0.02:
                    break
                cv=cv1
    
    展开全文
  • 在回归分析中,影响因变量y的因素很多,而有些自变量的对目标变量y的影响程度不同,为了建立一个相对最优的回归方程,我们需要筛选掉对目标变量y影响不大的变量,这就涉及到了变量选择问题。 逐步回归是通过假设检验...

    在回归分析中,影响因变量y的因素很多,而有些自变量的对目标变量y的影响程度不同,为了建立一个相对最优的回归方程,我们需要筛选掉对目标变量y影响不大的变量,这就涉及到了变量选择问题。

    逐步回归是通过假设检验的方法来筛选强特征,但如果直接用特征变量和结果变量做回归,看系数的正负和大小来判断变量的相关性,其实也是合理的,但是为了考虑变量间的相互作用在回归模型中对结果的影响,通常还是应用逐步回归的方法。

    在逐步回归中,提取哪些变量主要基于的假设是:在线性条件下,哪些变量组合能够更显著的影响因变量,则将其保留。

    保留的具体操作方法有三种:

    1.Forwardselection:从前向后,首先模型中只有一个对因变量影响最显著的自变量,之后尝试将加入另一自变量,观察加入自变量后的整个模型对因变量的影响是否显著增加(这里需要进行检验,如F,t,r方),通过这一过程反复迭代,直到没有自变量再符合加入模型的条件;
    
    2.Backwardelimination:从后向前,此时,所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型对因变量的影响是否有显著变化,之后将使影响减少的最小的变量剔除出队列,此过程不断迭代,直到没有自变量符合剔除的条件。
    
    3.向前向后逐步回归:即前两种的结合,不是一味的增加变量,而是增加一个后,对整个模型的所有变量进行检验,剔除作用不显著的变量,最终得到一个相对最优的变量组合。
    

    三.Python中逐步回归的实现

    # -*- coding: utf-8 -*-
    
    # 载入包
    import pandas as pd
    from statsmodels.formula.api import ols #加载ols模型
    from sklearn.preprocessing import LabelEncoder
    
    
    # 读取数据
    data_path='D:/机器学习/实验作业/实验7/'
    data=pd.read_excel(data_path+'Reg_RawDt.xlsx')
    
    # 清洗面积段这个标签
    le = LabelEncoder()
    y6 = le.fit_transform(data['面积段'])
    data['面积段']=y6
    
    
    house_data=data
    
    #分训练集测试集
    import random
    random.seed(123) #设立随机数种子
    a=random.sample(range(len(house_data)),round(len(house_data)*0.3))
    house_test=[]
    for i in a:
        house_test.append(house_data.iloc[i])
    house_test=pd.DataFrame(house_test)
    house_train=house_data.drop(a)
    
    # print(house_train)
    # print(house_test)
    
    
    
    #定义向前逐步回归函数
    def forward_select(data,target):
        variate=set(data.columns)  #将字段名转换成字典类型
        variate.remove(target)  #去掉因变量的字段名
        selected=[]
        current_score,best_new_score=float('inf'),float('inf')  #目前的分数和最好分数初始值都为无穷大(因为AIC越小越好)
        #循环筛选变量
        while variate:
            aic_with_variate=[]
            for candidate in variate:  #逐个遍历自变量
                formula="{}~{}".format(target,"+".join(selected+[candidate]))  #将自变量名连接起来
                aic=ols(formula=formula,data=data).fit().aic  #利用ols训练模型得出aic值
                aic_with_variate.append((aic,candidate))  #将第每一次的aic值放进空列表
            aic_with_variate.sort(reverse=True)  #降序排序aic值
            best_new_score,best_candidate=aic_with_variate.pop()  #最好的aic值等于删除列表的最后一个值,以及最好的自变量等于列表最后一个自变量
            if current_score>best_new_score:  #如果目前的aic值大于最好的aic值
                variate.remove(best_candidate)  #移除加进来的变量名,即第二次循环时,不考虑此自变量了
                selected.append(best_candidate)  #将此自变量作为加进模型中的自变量
                current_score=best_new_score  #最新的分数等于最好的分数
                print("aic is {},continuing!".format(current_score))  #输出最小的aic值
            else:
                print("for selection over!")
                break
        formula="{}~{}".format(target,"+".join(selected))  #最终的模型式子
        print("final formula is {}".format(formula))
        model=ols(formula=formula,data=data).fit()
        return(model)
    
    # 利用向前逐步回归筛选变量
    forward_select(data=house_data,target='price')
    
    
    lm_1=ols("price~area+Ifsubway+幼儿园个数+面积段+室+中层住宅+toward_3+医院数量+厅+低中高住宅分类+GroupareaSplit+银行个数+所处楼层是否低层+公园个数+toward_无+小学个数+中学个数",data=house_train).fit()
    print(lm_1.summary())
    
    

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 01 研究背景 本章是基于Lasso回归筛选变量后,构建Cox回归临床预测模型,并绘制Nomogram图。Cox模型是一种半参数模型,该模型以生存结局和生存时间为因变量,分析多个因素对生存期的影响,常用RR来量化这种结果,...

    291db7e916f20605644398ce1acbde5e.png

    01 研究背景

    本章是基于Lasso回归筛选变量后,构建Cox回归临床预测模型,并绘制Nomogram图。Cox模型是一种半参数模型,该模型以生存结局和生存时间为因变量,分析多个因素对生存期的影响,常用RR来量化这种结果,绘制Nomogram列线图实现个体预测。有关Lasso回归可见公众号前文章介绍。

    02 案例研究

    本文数据收集了83例癌症患者的生存资料,包含患者年龄、性别、癌症分期等。研究目的探讨癌症患者生存情况的影响因素并构建预测模型。临床研究一般有提供多个危险因素,首先做单因素的筛选,具体筛选方法,见公众号之前的文章。本文采用Lasso回归筛选因素。

    具体分析步骤是①筛选变量②基于这些变量构建模型③绘制Nomogram图,预测不同时间生存概率。③计算模型c_index(区分度)该步骤用神包rms一步实现。接下来直接上代码。

    03 R代码及解读

    ##加载包 明确每个包的作用
    library(glmnet) ##Lasso回归
    library(rms)  ## 画列线图;
    library(VIM) ## 包中aggr()函数,判断数据缺失情况
    library(survival) ##  生存分析包
    #读取数据集
    dt <-read.csv("cancer.csv")
    str(dt)  ##查看每个变量结构
     aggr(dt,prop=T,numbers=T) #判断数据缺失情况,红色表示有缺失。
     dt <- na.omit(dt) 按行删除缺失值

    3bd3c1e41f96a11c1bc4a14cadf571cc.png

    由图片可看到所有变量都为蓝色,没有缺失值。如果用na.omit()函数按照行删除。

    第一步,也是很重要的一步,数据整理。

    #用for循环语句将数值型变量转为因子变量
    for(i in names(dt)[c(4:9)]) {dt[,i] <- as.factor(dt[,i])}
    ##筛选变量前,首先将自变量数据(因子变量)转变成矩阵(matrix)
    ## Lasso要求的数据类型
    x.factors <- modtel.matrix(~ dt$sex+dt$trt+dt$bui+dt$ch+dt$p+dt$stage,dt)[,-1]
    #将矩阵的因子变量与其它定量边量合并成数据框,定义了自变量。
    x <- as.matrix(dtata.frame(x.factors,dt[,3]))
    #设置应变量,打包生存时间和生存状态(生存数据)
    y <- data.matrix(Surv(dt$time,dt$censor))

    第二步:Lasso回归筛选变量

    #调用glmnet包中的glmnet函数,注意family那里一定要制定是“cox”,如果是做logistic需要换成"binomial"。
    fit <-glmnet(x,y,family = "cox",alpha = 1)
    plot(fit,label=T)
    plot(fit,xvar="lambda",label=T)
    #主要在做交叉验证,lasso
    fitcv <- cv.glmnet(x,y,family="cox", alpha=1,nfolds=10)
    plot(fitcv)
    coef(fitcv, s="lambda.min")
    ##
    #9 x 1 sparse Matrix of class "dgCMatrix"                1
    ##d.sex1    .       
    ##d.trt1    .       
    ##d.bui1    .       
    ##d.ch2     .       
    ##d.ch3     .       
    ##d.ch4    -0.330676
    ##d.p1      .       
    ##d.stage4  .       
    ##d...3.    .

    0defa1caf0798438d64b7c628c9df665.png

    f2a6a745763577b71217ef8ebea38050.png

    该图在之前文章提到,见如何进行高维变量筛选和特征选择(一)?Lasso回归,由上述代码以及图片完成变量筛选,这里只做演示,假设所有的变量都入选了,我们用这些入选的变量构建Cox回归模型。

    第三步:构建Cox模型,并检验等比例风险

    #拟合cox回归
    coxm <- cph(Surv(time,censor==1)~age+sex+trt+bui+ch+p+stage,x=T,y=T,data=dt,surv=T) 
    cox.zph(coxm)#等比例风险假定
    ##       chisq df     p
    ##age    1.993  1 0.158
    ##sex    0.363  1 0.547
    ##trt    3.735  1 0.053
    ##bui    2.587  1 0.108
    ##ch     0.296  1 0.587
    ##p      0.307  1 0.579
    ##stage  0.395  1 0.530
    ##GLOBAL 9.802  7 0.200

    注意chp()函数的写法,其中因变量需要用Surv()先打包。后面写法同LR。
    等比例风险检验:最后面的GLOBAL是整体看,P值大于0.05,全模型整体都是满足的。对于每一个分类来说P值大于0.05,也是满足的。

    第四步:绘制nomogram图,注意该函数里面的参数设置。

    ###开始cox nomo graph
    surv <- Survival(coxm) # 建立生存函数
    
    surv1 <- function(x)surv(1*3,lp=x) # 定义time.inc,3月OS
    surv2 <- function(x)surv(1*6,lp=x) # 定义time.inc,6月OS
    surv3 <- function(x)surv(1*12,lp=x) # 定义time.inc,1年OS
    
    dd<-datadist(dt) #设置工作环境变量,将数据整合
    options(datadist='dd') #设置工作环境变量,将数据整合
    
    plot(nomogram(coxm,
                  fun=list(surv1,surv2,surv3),
                  lp= F,
                  funlabel=c('3-Month Survival','6-Month survival','12-Month survival'),
                  maxscale=100,
                  fun.at=c('0.9','0.85','0.80','0.70','0.6','0.5','0.4','0.3','0.2','0.1')),
         xfrac=.45)
    #maxscale 参数指定最高分数,一般设置为100或者10分
    #fun.at 设置生存率的刻度
    #xfrac 设置数值轴与最左边标签的距离,可以调节下数值观察下图片变化情况
    plot(nomogram)

    b02f208acd6ee948b51ee126ba267eaf.png

    该图的使用,本质上是将Cox回归模型可视化展示,方便临床快速判断。假设有个病人性别为女,trt为0,P期为1,Nomogram用法是在sex变量上找到其值为1的刻度,然后画垂线投影到最上方的points刻度尺上,找到对应的分值为75分,同理找到trt为0的分值约为50分,P为1的对应分值为100,将这三个因素的points值加起来总分225。下一步在下面的Total Points刻度尺上找到225分,向下方的3个轴做垂线,6-Month-survival对应的值在0.6和0.7之间,约为0.65,说明该患者6个月的生存概率值为65%,其他以此类推。

    第三步:利用rms包计算模型区分度。

    ##模型验证
    #Concordance index
    f<-coxph(Surv(time,censor==1)~age+sex+trt+bui+ch+p+stage,data=d)
    sum.surv<-summary(f)
    c_index<-sum.surv$concordance
    c_index  ##
    ##C      se(C) 
    ##0.55396619 0.07664425

    该模型的区分度C-index为0.554,其本质同ROC曲线面积。结果显示,该模型的区分度一般。根据前面变量筛选,考虑纳入更多的影响因素和样本。

    04 更多阅读

    文章在公粽号:易学统计

    文章里的干货更多哟

    欢迎交流,欢迎提问

    展开全文
  • 01研究背景 本章是基于Lasso回归筛选变量后,构建Cox回归临床预测模型,并绘制Nomogram图。Cox模型是一种半参数模型,该模型以生存结局和生存时间为因变量,分析多个因素对生存期的影响,常用RR来量化这种结果,绘制...

    01

    研究背景

           本章是基于Lasso回归筛选变量后,构建Cox回归临床预测模型,并绘制Nomogram图。Cox模型是一种半参数模型,该模型以生存结局和生存时间为因变量,分析多个因素对生存期的影响,常用RR来量化这种结果,绘制Nomogram列线图实现个体预测。有关Lasso回归可见公众号前文章介绍。

    02

    案例研究

           本文数据收集了83例癌症患者的生存资料,包含患者年龄、性别、癌症分期等。研究目的探讨癌症患者生存情况的影响因素并构建预测模型。

           临床研究一般有提供多个危险因素,首先做单因素的筛选,具体筛选方法,见公众号之前的文章。本文采用Lasso回归筛选因素。

           具体分析步骤是①筛选变量②基于这些变量构建模型③绘制Nomogram图,预测不同时间生存概率。③计算模型c_index(区分度)该步骤用神包rms一步实现。接下来直接上代码。

    03

    R代码及解读

    ##加载包 明确每个包的作用library(glmnet) ##Lasso回归library(rms)  ## 画列线图;library(VIM) ## 包中aggr()函数,判断数据缺失情况library(survival) ##  生存分析包#读取数据集dt 
     str(dt)  ##查看每个变量结构 aggr(dt,prop=T,numbers=T) #判断数据缺失情况,红色表示有缺失。 dt 

    52c85e58ffd1d14275114d83939ff4d2.png

          由图片可看到所有变量都为蓝色,没有缺失值。如果用na.omit()函数按照行删除。

         第一步,也是很重要的一步,数据整理。

    #用for循环语句将数值型变量转为因子变量for(i in names(dt)[c(4:9)]) {dt[,i] ##筛选变量前,首先将自变量数据(因子变量)转变成矩阵(matrix)x.factors ~ dt$sex+dt$trt+dt$bui+dt$ch+dt$p+dt$stage,dt)[,-1]#将矩阵的因子变量与其它定量边量合并成数据框,定义了自变量。x 3]))#设置应变量,打包生存时间和生存状态(生存数据)y $time,dt

            第二步:Lasso回归筛选变量

    #调用glmnet包中的glmnet函数,注意family那里一定要制定是“cox”,如果是做logistic需要换成"binomial"。fit "cox",alpha = 1)plot(fit,label=T)plot(fit,xvar="lambda",label=T)#主要在做交叉验证,lassofitcv "cox", alpha=1,nfolds=10)plot(fitcv)coef(fitcv, s="lambda.min")###9 x 1 sparse Matrix of class "dgCMatrix"                1##d.sex1    .       ##d.trt1    .       ##d.bui1    .       ##d.ch2     .       ##d.ch3     .       ##d.ch4    -0.330676##d.p1      .       ##d.stage4  .       ##d...3.    .

    30f4a893259d6cb06c1e76cec7ec9751.png

    685cb325279ef1b837aa498da541ae91.png

       该图在之前文章提到,见如何进行高维变量筛选和特征选择(一)?Lasso回归,由上述代码以及图片完成变量筛选,这里只做演示,假设所有的变量都入选了,我们用这些入选的变量构建Cox回归模型。

    第三步:构建Cox模型,并检验等比例风险

    #拟合cox回归coxm <- cph(Surv(time,censor==1)~age+sex+trt+bui+ch+p+stage,x=T,y=T,data=dt,surv=T) cox.zph(coxm)#等比例风险假定##       chisq df     p##age    1.993  1 0.158##sex    0.363  1 0.547##trt    3.735  1 0.053##bui    2.587  1 0.108##ch     0.296  1 0.587##p      0.307  1 0.579##stage  0.395  1 0.530##GLOBAL 9.802  7 0.200

         注意chp()函数的写法,其中因变量需要用Surv()先打包。后面写法同LR。

         等比例风险检验:最后面的GLOBAL是整体看,P值大于0.05,全模型整体都是满足的。对于每一个分类来说P值大于0.05,也是满足的。

    第四步:绘制nomogram图,注意该函数里面的参数设置。

    ###开始cox nomo graphsurv # 建立生存函数surv1 x)surv(surv2 x)surv(surv3 x)surv(dd#设置工作环境变量,将数据整合options(datadist='dd') #设置工作环境变量,将数据整合plot(nomogram(coxm,              fun=list(surv1,surv2,surv3),              lp= F,              funlabel=c('3-Month Survival','6-Month survival','12-Month survival'),              maxscale=100,              fun.at=c('0.9','0.85','0.80','0.70','0.6','0.5','0.4','0.3','0.2','0.1')),     xfrac=.45)#maxscale 参数指定最高分数,一般设置为100或者10分#fun.at 设置生存率的刻度#xfrac 设置数值轴与最左边标签的距离,可以调节下数值观察下图片变化情况plot(nomogram)

    008ad5ed9260e36c5242862efdc06813.png

           该图的使用,本质上是将Cox回归模型可视化展示,方便临床快速判断。假设有个病人性别为女,trt为0,P期为1,Nomogram用法是在sex变量上找到其值为1的刻度,然后画垂线投影到最上方的points刻度尺上,找到对应的分值为75分,同理找到trt为0的分值约为50分,P为1的对应分值为100,将这三个因素的points值加起来总分225。下一步在下面的Total Points刻度尺上找到225分,向下方的3个轴做垂线,6-Month-survival对应的值在0.6和0.7之间,约为0.65,说明该患者6个月的生存概率值为65%,其他以此类推。

          第三步:利用rms包计算模型区分度。

    ##模型验证#Concordance indexf1)~age+sex+trt+bui+ch+p+stage,data=d)sum.survc_indexc_index  ####C      se(C) ##0.55396619 0.07664425

          该模型的区分度C-index为0.554,其本质同ROC曲线面积。结果显示,该模型的区分度一般。根据前面变量筛选,考虑纳入更多的影响因素和样本。

    04

    参考文献

    1. 方积乾等. 卫生统计学. 人民卫生出版社。

    2. 薛毅等.统计建模与R软件.清华大学出版社

    作者介绍:医疗大数据统计分析师,擅长R语言。

    更多阅读:

    如何进行高维变量筛选和特征选择(一)?Lasso回归

    R语言Logistic回归模型深度验证以及Nomogram绘制

    40198b2ea0245eb5220c0c82b0c74769.png

    0bea1aed2be5ea54138bb793738f7faa.png

    展开全文
  • 这一期咱们聊聊筛选变量的指标——IV值。计算公式如下:看公式有没有很熟悉,大家没有看错,其中一部分就是WOE的计算公式。区别就在于WOE是对一个变量的每个分组的计算,IV值是对一个变量的统计指标。如上图所示,...
  • 在回归分析中,影响因变量y的因素很多,而有些自变量的对目标变量y的影响程度不同,为了建立一个相对最优的回归方程,我们需要筛选掉对目标变量y影响不大的变量,这就涉及到了变量选择问题。 逐步回归是通过假设检验...
  • 01 研究背景 本章是基于Lasso回归筛选变量后,构建Cox回归临床预测模型,并绘制Nomogram图。Cox模型是一种半参数模型,该模型以生存结局和生存时间为因变量,分析多个因素对生存期的影响,常用RR来量化这种结果,...
  • R之筛选变量

    2017-08-03 18:08:00
    > names(hr) [1] "satisfaction" "evaluation" "project" "monthlyhour" "serviceyear""accident" "left" "promotion" "dept" ...变量选取的三种方法如下: 1.subset( ) eg: > hr01<-subset(hr, se...
  • 影像学、基因组学等数据进入医学统计分析,经常会面临对高维变量特征选择的问题,Lasso回归是在线性回归模型的代价函数后面加上L1范数的约束项的模型,它通过控制参数lambda进行变量筛选和复杂度调整,被广泛的用到...
  • 在分析一个电影拍摄数据库,有不同国家在美国拍摄的记录,一共5万多条数据百分之99都是美国的,建图时其他国家的数据基本就看不到了,想请问一下如何在建表时将美国的数据剔除。我有试过用filter但是用完之后数据...
  • 筛选变量方法-IV

    千次阅读 2018-10-24 12:11:03
    转发? ...  为了挑选并构造出对目标变量有较高预测力的自...但是,构造dummy变量也存在一些缺点,例如无法对自变量的每一个取值计算其信用得分,并且回归模型筛选变量时可能出现某个自变量被部分地舍弃的情况。  
  • fps=1一般情况下,数据集的特征成百上千,因此有必要从中选取对结果影响较大的特征来进行进一步建模,相关的方法有:主成分分析、lasso等,这里我们介绍的是通过随机森林来进行筛选。用随机森林进行特征重要性评估的...
  • R语言随机森林详细解析(基于randomforest包和...不知各位有没有发现,CSDN上随机森林的教程都说的有些模糊,好像在刻意回避着什么,而且很少有人说变量筛选的问题。所以,今日,我觉得有必要记录一下了。 随机森...
  • 在这种情况下可用逐步回归分析,进行x因子的筛选,这样建立的多元回归模型预测效果会更较好。逐步回归分析,首先要建立因变量y与自变量x之间的总回归方程,再对总的方程及每—个自变量进行假设检验。当总的方程不...
  • 01 模型简介最优子集回归是多元线性回归方程的自变量选择的一类方法。从全部自变量所有可能的自变量组合的子集回归方程中挑选最优者。如m个自变量会拟合2m-1个子集回归方程,然后用回归方程的统计量作准则(如交叉验证...
  • 一、决策树(类型、节点特征选择的算法原理、优缺点、随机森林算法产生的背景)1、分类树和回归树由目标变量是离散的还是连续的来决定的;目标变量是离散的,选择分类树;反之(目标变量是连续的,但自变量可以是分类的...
  • 原标题:统计学干货 I 逐步回归01. 前言这一篇我们来讲讲逐步回归。什么是逐步回归呢?就是字面意思, 一步一步进行回归。我们知道多元回归中的元是指自变量,...我们把这个筛选起作用的变量或者剔除不起作用变量的...
  • 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的...
  • 因此文中在分析随机森林算法的基本原理的基础上,提出一种改进的基于随机森林的特征筛选算法,并应用Python编程设计了一个能够预处理数据、调用这些算法、控制各参数并展现测试结果的系统,最终将该系统应用于肝癌...
  • 随机森林筛选变量(Python实现)

    万次阅读 2018-07-04 10:53:10
    筛选变量: importance = clf.feature_importances_ indices = np.argsort(importance)[::-1] features = x.columns for f in range(x.shape[1]): print(("%2d) %-*s %f" % (f + 1, 30, features[f], importance...
  • 昨晚,小伙伴收到了大鱼海棠为我们带来的FigureYa182RFSurv,使用随机森林对生存数据降维,根据变量重要性排序并筛选基因组成prognostic signature。这是我们第二次众筹随机森林相关分析,上次的FigureYa159LR_RF,...
  • 早上好我在R(randomForest,caret)中的随机林实现中使用置换重要性对变量进行排序。所有变量都是连续的,结果是明确的。在为了处理共线特性Terence Parr,Jeremy Howard和其他人更新了Python中的rfpimp包,将高度...
  • 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的...
  • from dtreeviz.trees import dtreeviz viz = dtreeviz(clf, iris['data'], iris['target'], target_name='', feature_names=np.array(iris['feature_names']), class_names={0:'setosa',1:'vers.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,343
精华内容 937
关键字:

筛选变量