一、问题重述
1.1问题背景
结缔组织病是影响结缔组织的一大类疾病的统称,也称胶原病或系统性风湿病。结缔组织是具有细胞外基质,可以支持、连结和保护器官的组织。结缔组织是形成人体结构的基本组织之一,由胶原蛋白和弹性蛋白组成。人体组织中有许多不同类型的胶原蛋白,弹性蛋白是韧带和皮肤的主要成分。在结缔组织病的患者中,胶原蛋白和弹性蛋白通常会因炎症反应而受损。许多结缔组织病是自体免疫性疾病,其成因是免疫系统的异常活动,并产生了攻击身体正常组织的抗体。当病情累及重要器官时可能造成严重的症状。例如红斑狼疮、类风湿性关节炎、硬皮病和干燥综合征等都属于结缔组织病。但总的来说其病因仍然未完全明确,对其分类也依然模糊。在这些疾病中,血栓形成是最严重的并发症之一,可能直接危及生命。人们发现这种并发症与抗心磷脂抗体有密切的关系。但在出现严重症状之前,对血栓形成的检测和预测依然是很困难的事情。医院收集的数据集,我们希望找到血栓形成的某些特定模式或规律。
1.2目标任务
任务一:找到可用于预测血栓形成的良好模式。包括发病时间上的模式或实验室检验指标上的模式。
任务二:寻找可以有效分类结缔组织病的特征。
二、问题分析
问题一:根据题目要求的,分析预测血栓形成的良好模式,包括发病时间上的模式和实验室检验指标上的模式,首先我们对附件给出的数据进行分析,由于附件的数据存在缺失,所以要先进行数据的预处理,选取的方法为“插值法+剔除法”相结合的方法,最后得到的测试数据包括“aCLIgG”,“aCLIgM”,“ANA”,“aCLIgA”,“KCT”,“RVVT”和“LAC”,研究这些因素对血栓形成程度的影响,对数据做了归一化处理以及定性指标定量化处理,利用Eviews软件对处理好的数据做分析,得到模型为:
并对该模型进行检验和分析,该模型对应的R2=0.,Prob=0.,模型效果较好,并根据此模型对血栓形成的模式做分析,认为:在发病时间的模式上,高岭土凝聚时间和蝰蛇毒时间越长,越有利于血栓的形成,但是在凝血检验实验中,时间的增加同时也会使狼疮抗凝物(LAC)浓度增加,而LAC因素在上述模型中,对血栓的生成带来的是负相关作用的影响,所以高岭土凝聚时间和蝰蛇毒时间也不应过长,应控制在合理区间范围内。对于实验室检验指标模式上,除了抗心磷脂抗体(IgA)的增加会使血栓生成程度减低以外,其他实验室检验指标对血栓的生成都有促进作用,其中抗心磷脂抗体(IgM)带来的作用最为明显,如果要让血栓的生成效率更高,则应该增加抗心磷脂抗体(IgM),减少抗心磷脂抗体(IgA)。
问题二:根据题目要求的对结缔组织病的特征进行分类,结合附件给出的相关数据,利用Python软件进行模型构建,采用的是XGBoost算法,该算法的基本思想是把多棵分类准确率较低的树模型集成起来,构建一个准确率相对更高的模型。该模型会不断地迭代提升,每次迭代生成1棵新树拟合前一棵树的残差,简单而言,梯度提升树算法是首先使用简单的模型拟合数据,得到一个比较一般的结果,通过然后不断添加弱学习器,提升模型的效果。最终确定出最优的模型来对结缔组织病的特征进行分类,构建的模型使用的评价指标包括准确率,查全率,查准率,召回率:
Accuracy=(truepositives+truenegatives)/(totalexamples)
Precision=(truepositives)/(truepositives+falsepositives)
Recall=(truepositives)/(truepositives+falsenegatives)
F1score=(2*precision*recall)/(precision+recall)
该模型在初次构建中,得到的准确率为87.47%,通过构造用户年龄特征,重新拟合血栓预测分类模型,得到的模型准确率为95.34%,根据特征重要度分析可知,特征在构建树的过程与其特征重要度得分呈正比,因此构造其top3的重要特征,统计"age","PLT","RBC",构造其特征频度特征,进行第二次模型改进,得到的准确率为96.05%,最终得出结论,在进行结缔组织病特征的分类过程中,患者年龄与其统计量,U-PRO(尿蛋白)、PLT(血小板)、CRE(肌酐)、WBC(白细胞)、RBC(红细胞)、CRP(C-反应蛋白)、LDH(乳酸脱氢酶)、C3(补体C3)、PLT统计量在进行决策时权重较大,其他特征与构造特征起辅助作用。
三、模型假设
1.假设数据预处理时候,某些客观因素对数据没有影响。
2.假设在血栓形成检验的实验过程中,除了题目和附件提到的相关因素以外,其他因素对血栓形成的影响较小,可以忽略不计。
3.假设在接受实验的病人群体中,不考虑结缔组织病以外的其他疾病,导致病人死亡。
四、符号说明
五、模型的建立和求解
5.1问题一的建模和求解
5.1.1问题一理论分析
根据题目要求,对血栓形成的良好模式进行预测,该模式的预测包括发病时间的预测和实验室检验指标模式的预测,根据附件给出的相关数据,当怀疑病例有血栓生成的时候,立即进行检查,即对有血栓生成的病例中,检查日期可以接近于血栓生成日期。
首先,要对一些基础概念进行掌握,血栓是指血流在心血管系统血管内面剥落处或修补处的表面所形成的小块,它的生成机理主要是心血管内膜的损伤,以及血流变慢、血流产生漩涡等,在临床表现中,血栓又可以分为以下几类:白色血栓、混合血栓、红色血栓以及透明血栓。血栓的形成对人体有严重的影响,可能会阻塞血管,可引起栓塞组织的败血性梗死等情况,对人体健康带来不利的影响。根据附件提供的相关数据资料,可以看出患者的血栓形成程度可以分为三个类别,分别以0,1,2三个数字进行表述,2代表的是血栓成阳性,并有严重的症状,1代表的是血栓呈现阳性,0代表的是血栓呈现阴性。
血栓形成机制包括多种因素的影响,根据附件给出的信息,选取aCLIgG,aCLIgM,ANA,aCLIgA,KCT,RVVT和LAC这些因素
不同ID用户的有对应相关指标的数值,在“KCT”,“RVVT”和“LAC”指标中,缺失数据比较多,故采用“插值法+剔除法”相结合的方法,对数据进行筛选和处理。同时还要将定性指标定量化处理,比如用“1”代替“+”,“0”代替“-”的方法,结合eviews软件进行模型构建,探索影响血栓形成的影响因素模型。
5.1.2模型数据预处理分析
模型构建前,采用的插值法和剔除法相结合的方法对数据做处理,插值法运用以数值型数据的填补,对于一些关系型不强的数据缺失,采用剔除法进行处理,最终从附近2中得到实验测试数据,见支持材料。
因此首先需要对缺失数据进行填补,为更科学的对数据进行填补,使得误差较小,本文采用三次样条插值算法进行填充
5.1.3Eviews软件模型构建和检验分析
将处理好的数据导入Eviews软件中,首先按照软件初始设置,建立最小二乘法模型,研究血栓影响因素的模式方程,得到如下结果:
对该模型进行检验分析,从模型输入结果可以看出,模型的R2系数为0.,表明模型可以较好的反应影响血栓形成的各类变量之间的关系,其次P值系数为0.,表明在显著性为0.15的情况下,该模型的表现形式是显著的。
对该模型结果做分析,从模型可以看出,X4变量和X7变量对血栓的生成带来的是负作用的影响,其他因素带来的是正作用的影响,血栓生成程度用0,1,2三个数字进行表示,如果数字越大,则表明血栓形成程度越严重,故X4变量和x7变量的增加会减低血栓的生成程度,其他变量的增加则会增加血栓的生产程度。故得出如下结论:血栓形成的良好模式中,在发病时间的模式上,高岭土凝聚时间和蝰蛇毒时间越长,越有利于血栓的形成,但是在凝血检验实验中,时间的增加同时也会使狼疮抗凝物(LAC)浓度增加,而LAC因素在上述模型中,对血栓的生成带来的是负相关作用的影响,所以高岭土凝聚时间和蝰蛇毒时间也不应过长,应控制在合理区间范围内。对于实验室检验指标模式上,除了抗心磷脂抗体(IgA)的增加会使血栓生成程度减低以外,其他实验室检验指标对血栓的生成都有促进作用,其中抗心磷脂抗体(IgM)带来的作用最为明显,如果要让血栓的生成效率更高,则应该增加抗心磷脂抗体(IgM),减少抗心磷脂抗体(IgA)。
5.2问题二的建模和求解
5.2.1问题二理论分析
根据题目的相关要求,要对结缔组织病的特征进行分类,首先要对结缔组织病的临床表现进行了解,再通过数据分析进行分类,由于数据分析可能会存在一定的偏差,故要结合结缔组织病相关理论对模型结果做合理性调整,使模型更加符合实际情况,为结缔组织病的临床治疗提供更多有价值的建议。
结缔组织病在临床中主要有以下表现形式,首先在患者皮肤方面,90%的患者皮肤会出现手沿慢性肿胀,出现皮肤紧绷,弹性差,出现雷诺现象。(雷诺现象是指由于寒冷或者情绪激动引起的发作性的手指苍白,发紫,然后变成潮红的一类综合征);其次,70%的患者有食道功能障碍,2/3的患者患有肺弥散功能减退,同时该病也影响了心脏功能,关节和肌肉功能,临床表现像心肌无力等情况;最后,该病还会对神经系统、血液系统带来一定的危害。
根据相关参考文献的学习,可知结缔组织病的理论上的分类依据的是不同种类的疾病的临床表现来划分的,不同类别之间也有共性,结合附件给出的数据,进行建模分析,对结缔组织病的分类做进一步研究。
5.2.2问题二模型构建和分析
为了对结缔组织病的特征进行有效分类,使用一种基于梯度提升树树模型的XBGoost算法,结合Python软件进行分析验证,对该问题进行研究。XGBoost算法是针对梯度提升树GBM(GradientBoostingMachine)的一个C++实现,主要用于处理工业界规模问题。XGBoost模型属于基于树集成的学习模型,它的基本思想是把多棵分类准确率较低的树模型组合起来,构建一个准确率相对更高的模型。该模型会不断地迭代提升,每次迭代生成一棵新树拟合前一棵树的残差,这个过程被称为梯度提升。简单而言,提升算法是首先使用简单的模型拟合数据,得到一个比较一般的结果,然后不断向模型中添加简单模型,提升模型的准确率。虽然多数情况下,XGBoost模型中为层数较浅的决策树,但随着树的增多,集成模型的复杂度逐渐变高,直到接近数据本身的复杂度时,训练达到最佳水平。
在树集成学习算法中很难一次列出所有可能的CART;相反地,XGBoost算法使用梯度提升策略,不是一次得到所有的树,而是每次添加1棵新树,不断修补之前的测试结果。假设在第t步的预测值为(t)i,则可得到如下的推导过程:
因此,得到XGBoost算法的目标优化函数,如下式所示:
为不失一般性,XGBoost算法的目标函数由损失值和正则项Ω(ft)两部分组成。在一般情况下,将损失函数的泰勒级数推广到2阶,并移出常数项,则第t步的目标函数变为:
其中,gi、hi分别为1阶和2阶导数。对于树,定义其正则项为:
其中,wj为树f中第j个叶子节点上的分值;T为树f中叶子节点的总数目;γ和λ为XGBoost自定义参数,γ为L1正则的惩罚项,λ为L2正则的惩罚项。从式(5)可以看出,XGBoost算法对树的复杂度项增加了一个L2正则化项,即针对每个叶结点的得分增加L2平滑,其目的是避免过拟合。最终得到目标函数为:
其中,I定义为每片叶子上的样本集合,Ij={iq(xi)=j},Ij为第j片叶子上的样本集合,结构函数q表示输入样本到叶子索引号之间的映射关系,q(xi)=j表示样本xi在对应树中叶子节点的索引号为j。由上式可知,目标值越小,整个树的结构越优。
根据附件提供的t_b.csv表“字段为结缔组织病实验室的检验结果”,对该表的数据进行分析,表2中Thrombosis特征表示血栓形成的程度,其中0:阴性;1:阳性;2:阳性并且出现严重症状。Thrombosis数值分布为0、1、2、3。其中3作为异常值进行清洗。1与2表示不同的血栓形成程度,因此模型将血栓作为二分类问题处理,将Thrombosis特征作为数据标注,Thrombosis为2的特征值替换为1,Thrombosis为3的特征值为异常值。
构造特征数据时,以患者ID为主键进行表联合,根据患者出生日期构造年龄特征。同时利用梯度提升树的特征重要度进行分析,统计"age","PLT","RBC",特征频度。
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(truepositive)、假正例(falsepositive)、真反例(truenegative)、假反例(falsenegative)四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusionmatrix)如下表所示:
其评价指标的对应模型公式为:
Accuracy=(truepositives+truenegatives)/(totalexamples)
Precision=(truepositives)/(truepositives+falsepositives)
Recall=(truepositives)/(truepositives+falsenegatives)
F1score=(2*precision*recall)/(precision+recall)
其中TruePositives,TP表示预测为正样本,实际也为正样本的特征数FalsePositives,FP表示预测为正样本,实际为负样本的特征数TrueNegatives,TN表示预测为负样本,实际也为负样本的特征数FalseNegatives,FN表示预测为负样本,实际为正样本的特征。
将患者ID与Table3进行联合,并对object类型特征进行LabelEncode编码,同时对空值进行fillna填充,划分数据集,设置test_size参数为0.3。使用Xgboost算法进行血栓分类建模,其评价指标与拟合变化图如下表:
上图为模型误差率的变化趋势图,从上图,可以看出,随着迭代次数的逐渐增加,模型的准确率随着模型的训练不断的提高,模型可以更好的反应出实际的分类效果,直至模型收敛。
由上图,也可以看出随着迭代次数的增加,模型的效果越来越好。在实验过程中,把数据集分为了训练数据和测试数据,其中训练数据约占30%,测试数据约占70%,根据软件编程结果,得到结缔组织病特征重要度图,如下图:
在上图中,横轴表示的是各个因素的重要度得分,纵轴是附件中的各个血栓指标。以此对结缔组织病的特征进行分类。从上图可以看出,PLT、RBC、WBC和LDH的重要性都超过,在进行结缔组织病的特征分类中,该类特征在模型决策时权重较大。
5.2.3模型改进
由于上述利用Xgboost算法进行血栓分类建模,得出的模型准确率为87.47%,其召回率与F1得分结果较差,可以通过对模型做进一步优化,来提高模型的准确率,使其更好地反映结缔组织病的分类特征。通过构造用户年龄特征,重新拟合血栓预测分类模型,得到下表:
从上表可以看出,其准确率,召回率,F1Score均有显著提高,其中准确率高达95.34%。表明模型的改进效果较好,可以更好的反应结缔组织病特征的分类,根据改进后的模型,得到如下的模型结果图:
模型改进后,age、U-PRO、RTC和RBC为重要的特征因素,在进行结缔组织病的特征分类中,需要优先考虑,同时a得到了改进后的训练集与测试集的logloss图和误差率图,从图中曲线的变化情况,可以进一步证明模型改进以后对结缔组织病的分类更加准确。
根据特征重要度分析可知,特征在构建树的过程与其特征重要度得分呈正比,因此构造其top3的重要特征,统计"age","PLT","RBC",构造其特征频度特征。
在第一次模型改进的基础上,利用Python编程,实现第二次模型改进,从上表可以看出模型改进以后的准确率为96.05%,模型效果进一步提升,同时得到相关的模型结果分析图:
并得到相应的模型误差率和logloss分析图,模型效果良好。
通过上述的建模分析,训练基于构造age与其相关频度的特征的血栓分类模型,由其重要度得分可知:患者年龄与其统计量,U-PRO(尿蛋白)、PLT(血小板)、CRE(肌酐)、WBC(白细胞)、RBC(红细胞)、CRP(C-反应蛋白)、LDH(乳酸脱氢酶)、C3(补体C3)、PLT统计量在进行决策时权重较大,其他特征与构造特征起辅助作用。
六、模型评价
6.1模型优点
1.本文在探索血栓形成的良好模式的研究上,利用了Eviews软件进行处理,Eviews软件具有操作便捷等特点,在数据处理过程中,首先对数据进行了预处理,利用插值法和剔除法相结合的方法,同时把一些定性数据进行了定量处理,使分析的过程更加科学严谨,其次,根据Eviews软件处理得到的模型,可以看出血栓形成程度与其他因素之间的关系,模型的R2值和P值都在合理区间,根据模型结果来预测发病时间模式和实验室的指标模式,探索更有利于血栓形成的最佳模式。
2.针对结缔组织病的分类问题,本文利用了Python软件进行编程分析,利用了XGBoost算法方法,该方法相对于其他传统分类方法,具有训练速度更快、准确率更高、普适性更强优点,同时分类的精准度更高,得到的模型效果更好,所以该方法在本文的运用对结缔组织病的处理更加具有借鉴意义。
3.XGBoost算法采用CART模型,对数据类型具有较强的适应能力,可以处理离散、连续等多种类型的数据,因此无需对SCADA数据进行标准化、归一化、特征离散化等处理。对于缺失值,由于XGBoost算法自身能够处理数据缺失的情况,因此特定条件下不需要对缺失数据进行任何处理。
6.2模型缺点
本文在分析血栓形成的良好模式中,可能还存在其他因素会影响到血栓的形成,对于血栓形成的良好模式,还有待于进一步修正提升,医院患者做了理想化假设,认为实验患者都死亡都是由于结缔组织病导致的,可能与现实情况存在一定的误差。
七、模型推广
1.本文对数据的处理中,利用了数据预处理方法,可以有效的解决数据缺失等问题,由于现实情形下,数据的处理难免会存在缺失和错误,所以对数据进行预处理,适用于大多数的科学研究情况。不仅适用于医学领域,而且还适用于工程建筑领域,经济决策领域等。
2.本文利用Eviews软件构建的多元回归模型,用以分析影响血栓形成的各个因子变量,多元回归模型的构建适用于有多个因变量对自变量产生影响的环境下,像在股票市场上,可以运用多元回归模型研究对股票价格产生影响的各个变量,通过模型系数来评定各个变量对股票价格带来的影响程度,从而为决策者提供更多有利的决策。
3.Python软件在对结缔组织病分析过程中所运用的方法,利用了XGBoost算法,该算法在工业界有了很多应用的案例,同时支持并行化计算,具有良好的推广效果。
八、参考文献
[1]混合性结缔组织病的七大重要表现[J].中国医学创新,,16(34)
[2]韩中庚,数学建模方法及其应用[M],北京;高等教育出版社,.
[3]司守奎孙兆亮.数学建模算法与应用(第二版)[M].北京:国防工业出版社,.4.
[4]王桂兰,赵洪山,米增强.XGBoost算法在风机主轴承故障预测中的应用[J].电力自动化设备,,1(39)
[5]刘辉海,赵星宇,赵洪山等,基于高度自编码网络模型的风电机组齿轮箱故障检测[J],电工技术学报,,32(17):-.
附录
lbl=preprocessing.LabelEncoder()
data_t_a=pd.read_csv(t_a.csv,low_memory=False,encoding="gbk")
data_t_b=pd.read_csv(t_b.csv,encoding="ISO--1")
data_t_c=pd.read_csv(t_c.csv,error_bad_lines=False,low_memory=False,encoding=ISO--1,warn_bad_lines=False)
#特征数据
data_ab=pd.merge(data_t_a,data_t_b,on=ID)
data=pd.merge(data_ab,data_t_c,on=ID)
fromdatetimeimporttimedelta,datetime
importdatetime
data.fillna(null,inplace=True)
data[Birthday]=data["Birthday"].apply(lambdax:datetime.datetime.strptime(x,%Y/%m/%d))
data[month]=data[Birthday].dt.month
data[day]=data[Birthday].dt.day
now_time=datetime.datetime.now()
now_year=now_time.strftime(%Y)
data[year]=data[Birthday].dt.year
data[age]=int(now_year)-data[year]
drop_col=[Birthday,Symptoms,FirstDate,ID,Description,Admission,Diagnosis_x,
Diagnosis_y,ExaminationDate,aCLIgG,aCLIgM,ANA,ANAPattern,KCT,RVVT,LAC,
aCLIgA,year,month,day,Date]
forcolindrop_col:
data.drop(col,axis=1,inplace=True)
#data.drop(Birthday,axis=1,inplace=True)
#data.drop(Symptoms,axis=1,inplace=True)
#data.drop(ID,axis=1,inplace=True)
feature=data
cols=data.columns
print(feature)
lbe_col=[GOT,GPT,LDH,ALP,TP,ALB,UA,CRE,T-BIL,T-CHO,TG,CPK,GLU,WBC,RBC,HGB,HCT,PLT,FG,PIC,TAT,TAT2,U-PRO,IGG,IGA,IGM,CRP,RA,RF,C3,C4,RNP,SM,SC,SSA,SSB,
CENTROMEA,UN,PT,APTT,DNA,DNA-II]
#forcolincols:
#ifstr(data[col].dtype)==float:
#feature[col]=data[col]
#ifstr(data[col].dtype)==int:
#feature[col]=data[col]
#%%-------------------------------
defgen_value_counts(data,col):
print(valuecounts,col)
df_tmp=pd.DataFrame(data[col].value_counts().reset_index())
df_tmp.columns=[col,tmp]
r=pd.merge(data,df_tmp,how=left,on=col)[tmp]
returnr.fillna(0)
value_counts_col=["age",
"PLT","RBC",
]
#forcolinvalue_counts_col:
#data[vc_+col]=gen_value_counts(data,col)
#%%-------------------------------
forcolinlbe_col:
feature[col]=lbl.fit_transform(feature[col].astype(str))
#feature.drop(feature[col],axis=1,inplace=True)
d=dict([("F",0),("M",1)])
defmap_sex(s):
returnd.get(s,0)
feature["SEX"]=[map_sex(s)forsinfeature["SEX"].values]
Thr_label=dict([(0,0),(1,1),(2,1),(3,3)])
defmap_label(s):
returnThr_label.get(s,0)
feature["Thrombosis"]=[map_label(s)forsinfeature["Thrombosis"].values]
#feature.loc[feature[Thrombosis]==2,Thrombosis]=1
#feature[feature["Thrombosis"]==2]["Thrombosis"]=1
print("===============================================")
print(feature["Thrombosis"].value_counts())
print("===============================================")
feature=feature[feature["Thrombosis"]=1]
label=feature[Thrombosis]
#标签
#label=data[Thrombosis]
feature.drop(Thrombosis,axis=1,inplace=True)
fromsklearn.metricsimportaccuracy_score,recall_score,f1_score
params={
booster:gbtree,
objective:multi:softmax,
num_class:3,
gamma:0.1,
max_depth:10,
lambda:2,
subsample:0.7,
colsample_bytree:0.7,
min_child_weight:3,
slient:1,
eta:0.1,
seed:,
nthread:4,
metric:(auc,"binary_logloss"),
learning_rate:0.1,
}
frommatplotlibimportpyplot
#X_train,X_test,y_train,y_test=train_test_split(feature,label,test_size=0.3,random_state=)
X_train,X_test,y_train,y_test=train_test_split(feature,label,test_size=0.3,random_state=)
#fitmodelnotrainingdata
tuned_parameters=[{n_estimators:[,],
max_depth:[5,7],##range(3,10,2)
learning_rate:[0.5,1.0],
subsample:[0.75,0.8]
}]
tuned_parameters=[{n_estimators:[,]
}]
model=XGBClassifier(
silent=0,#设置成1则没有运行信息输出,最好是设置为0.是否在运行升级时打印消息。
#nthread=4,#cpu线程数默认最大
learning_rate=0.1,#如同学习率
min_child_weight=1,
#这个参数默认是1,是每个叶子里面h的和至少是多少,对正负样本不均衡时的0-1分类而言
#,假设h在0.01附近,min_child_weight为1意味着叶子节点中最少需要包含个样本。
#这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易overfitting。
max_depth=13,#构建树的深度,越大越容易过拟合
gamma=0,#树的叶子节点上作进一步分区所需的最小损失减少,越大越保守,一般0.1、0.2这样子。
subsample=1,#随机采样训练样本训练实例的子采样比
max_delta_step=0,#最大增量步长,我们允许每个树的权重估计。
colsample_bytree=1,#生成树时进行的列采样
reg_lambda=1,#控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
#reg_alpha=0,#L1正则项参数
#scale_pos_weight=1,#如果取值大于0的话,在类别样本不平衡的情况下有助于快速收敛。平衡正负权重
#objective=multi:softmax,#多分类的问题指定学习任务和相应的学习目标
#num_class=10,#类别数,多分类与multisoftmax并用
n_estimators=,#树的个数
seed=,)#随机种子
eval_set=[(X_train,y_train),(X_test,y_test)]
model.fit(X_train,y_train,eval_metric=["error","logloss"],eval_set=eval_set,verbose=True)
#makepredictionsfortestdata
y_pred=model.predict(X_test)
predictions=[round(value)forvalueiny_pred]
#evaluatepredictions
accuracy=accuracy_score(y_test,predictions)
recall=recall_score(y_test,predictions)
f1=f1_score(y_test,predictions)
print("Accuracy:%.2f%%"%(accuracy*.0))
print("REC:",recall)
print("f1:",f1)
#retrieveperformancemetrics
results=model.evals_result()
epochs=len(results[validation_0][error])
x_axis=range(0,epochs)
#plotlogloss
fig,ax=pyplot.subplots()
ax.plot(x_axis,results[validation_0][logloss],label=Train)
ax.plot(x_axis,results[validation_1][logloss],label=Test)
ax.legend()
pyplot.ylabel(LogLoss)
pyplot.title(XGBoostLogLoss)
pyplot.show()
#plotclassificationerror
fig,ax=pyplot.subplots()
ax.plot(x_axis,results[validation_0][error],label=Train)
ax.plot(x_axis,results[validation_1][error],label=Test)
ax.legend()
pyplot.ylabel(ClassificationError)
pyplot.title(XGBoostClassificationError)
pyplot.show()
plot_importance(model)
pyplot.show()
LearningPower学习干货建模论文建模论文-房价问题建模论文-公交移动支付技术研究建模论文-高铁建设对人们出行选择的影响分析建模论文-遗传算法在优化问题中的应用综述狂搞计量狂搞计量1-单位根检验
狂搞计量2-变截距面板数据模型
狂搞计量3-模型选择问题总结
狂搞计量4-变系数面板模型研究
狂搞计量5-空间计量经济学资料汇总
狂搞计量6-动态面板数据模型以及马尔萨斯模型和logistics人口模型研究
狂搞计量7-面板向量自回归模型PVAR与层次分析法AHP代码
狂搞计量8-面板门限模型研究
狂搞计量9-我对内生性问题研究的知识点汇总
狂搞计量10-聚类标准误问题、交互项问题以及分位数回归模型
狂搞计量11-双重差分和三重差分
狂搞计量12-倾向性匹配得分PSM
狂搞计量13-合成控制法SCM
狂搞计量14-断点回归研究
狂搞计量15-面板协整检验
狂搞计量16-面板误差修正模型
狂搞计量17-二元离散选择模型
狂搞计量18-面板多元选择模型与多元排序模型
狂搞计量19-面板计数模型与Tobit模型
狂搞计量20-Stata的一些基本操作
寒假计量学习总结
计量21-最全解读匹配方法原理
计量22-DSGE模型学习整理
模型研究模型研究1-灰色关联度分析模型(GRA)模型研究2-K-means聚类模型研究3-主成分分析模型PCA模型研究4-相关系数问题(皮尔逊相关系数法)模型研究5-Matlab窗口模型研究6-命令行模型研究7-数据类型模型研究8-优化工具箱模型研究9-SimulatedAnnealing模型研究10-遗传算法模型研究11-一文搞懂神经网络算法模型研究12-蒙特卡洛算法模型研究13-蚁群算法模型研究14-决策树模型研究15-判别分析与朴素贝叶斯模型研究16-最邻近分类方法模型研究17-Matlab可视化模型研究18-聚类分析模型研究19-机器学习初步了解最强系列Citespace入门Eviews入门最强解析Stata入门最强解析matlab入门最强解析经典再现/SPSS入门最强解析问题探讨问题探讨1-资产价值泡沫背后的逻辑问题探讨2-所谓的新自由主义“神话”问题探讨3-全球公共物品的核心和供应问题生活旅游感悟记录一些瞬间拿起知识的武器,实践性的进行巧“怼”ZKC的旅游日记那些年,和博弈论的故事郑老师!谢谢你!资深郑教练公开传授经管学子美赛通关秘籍管理之道-以正道治国,以奇正用兵,以无为取天下没有什么可以阻挡我前进的步伐学术论文--好男人结婚了吗?天府之国行预览时标签不可点收录于话题#个上一篇下一篇