2021年华数杯数学建模C题电动汽车目标客户销售策略求解全过程文档及程序

2021年华数杯数学建模

C题 电动汽车目标客户销售策略

原题再现:

  汽车产业是国民经济的重要支柱产业,而新能源汽车产业是战略性新兴产业。大力发展以电动汽车为代表的新能源汽车是解决能源环境问题的有效途径,市场前景广阔。但是,电动汽车毕竟是一个新兴的事物,与传统汽车相比,消费者在一些领域,如电池问题,还是存在着一些疑虑,其市场销售需要科学决策。
  某汽车公司最新推出了三款品牌电动汽车,包括合资品牌(用1表示)、自主品牌(用2表示)和新势力品牌(用3表示)。为研究消费者对电动汽车的购买意愿,制定相应的销售策略,销售部门邀请了1964位目标客户对三款品牌电动汽车进行体验。具体体验数据有电池技术性能(电池耐用和充电方便)满意度得分(满分100分,下同)a1、舒适性(环保与空间座椅)整体表现满意度得分a2、经济性(耗能与保值率)整体满意度得分a3、安全性表现(刹车和行车视野)整体满意度得分a4、动力性表现(爬坡和加速)整体满意度得分a5、驾驶操控性表现(转弯和高速的稳定性)整体满意度得分a6、外观内饰整体表现满意度得分a7、配置与质量品质整体满意度得分a8等。另外还有目标客户体验者个人特征的信息,详情见附录1和2。
  请你研究数据,查阅相关文献,运用数学建模的知识回答下列问题:

  1.请做数据清洗工作,指出异常值和缺失数据以及处理方法。对数据做描述性统计分析,包括目标客户对于不同品牌汽车满意度的比较分析。
  2.决定目标客户是否购买电动车的影响因素有很多,有电动汽车本身的因素,也有目标客户个人特征的因素。在这次目标客户体验活动中,有部分目标客户购买了体验的电动汽车(购买了用1表示,没有购买用0表示)。结合这些信息,请研究哪些因素可能会对不同品牌电动汽车的销售有影响?
  3.结合前面的研究成果,请你建立不同品牌电动汽车的客户挖掘模型,并评价模型的优良性。运用模型判断附件3中15名目标客户购买电动车的可能性。
  4.销售部门认为,满意度是目标客户汽车体验的一种感觉,只要营销者加大服务力度,在短的时间内提高a1-a8五个百分点的满意度是有可能的,但服务难度与提高的满意度百分点是成正比的,即提高体验满意度5%的服务难度是提高体验满意度1%服务难度的5倍。基于这种思路和前面的研究成果,请你在附件3每个品牌中各挑选1名没有购买电动汽车的目标客户,实施销售策略。
  5.根据前面的研究结论,请你给销售部门提出不超过500字的销售策略建议。

整体求解过程概述(摘要)

  本文探究的是某汽车公司中三个品牌电动汽车的目标客户满意度情况、影响因素、预测购买可能性以及制定销售策略等问题。
  针对问题一,通过分析附件一,同时结合附件二的个人特征调查表,提取调查表问题本身的限制条件,并发掘调查问题之间的关系,最终建立不同调查问题之间合理的约束关系,由此,对不同的异常数据和缺失数据采用了不同的填充策略。基于数据清洗后的结果,对各项影响满意度得分的指标取平均值,发现:目标客户对该公司三种品牌的满意度从高到低依次为合资品牌>自主品牌>新势力品牌。
  针对问题二,采用了基于惩罚项和基于树模型两种不同的嵌入法分别进行特征选取,前一种用 LR、LASSO、SVM 三种模型,后一种用 RF、LightGBM 模型共五个模型来进行机器学习,求出影响不同品牌销售的相关特征,对选出的特征上采用投票法,结果发现:电动车的电池技术性能、舒适性、目标客户全年房贷、车贷占家庭年收入情况对三种品牌的销售均有较大影响。除此之外,经济型、安全性、客户的工作情况等也在不同程度上对不同品牌的销售产生不同程度的影响。
  针对问题三,由于标签不均衡的问题严重,本文先通过 SMOTE 采样解决标签不平衡问题,再通过纵向比较和横向比较,纵向使用 F1-score 和 AUC 指标衡量训练效果,横向对不同模型的分数进行比较,从而挑选出适用于不同品牌的最优模型。进而利用网络搜索方法给每个品牌效果最优的模型进行超参数调优,其中 LightGBM 的在整个验证集上的 AUC 值达到 97.10%。最后利用这三个最优模型预测了附件三的 15名目标客户购买电动车的可能性。
  针对问题四,本文在问题三基础上,运用了多目标规划原理,建立三个目标函数,即提高体验满意度的服务难度尽量小,选择提高服务的数量尽可能少,目标客户购买概率提升的百分比尽可能大。用 python 求解该规划模型,结果显示,着重满足品牌 1、编号 3 的顾客在经济性上的需求;满足品牌 2、编号 9 的顾客在电池性能上的需求以及品牌 3、编号 14 的顾客在舒适性上的需求有助于提高顾客的购买率。
  针对问题五,基于问题一到问题四所建立的模型、因子探究等的基础上,提出了精准营销的策略,在人群洞察、品牌导向、效果评估这三个方向去探讨,旨在为该团队有针对性地制定销售策略,为该汽车公司创造最大的效益。

问题分析:

  问题一要求考虑题目要求和结合实际背景对附件一和附件三的数据进行数据清洗操作,并进行描述性统计,该题的思路分为一下三个步骤:
  1. 利用附件二的目标客户个人特征调查表,以及题目中对满意度评价表的约束,综合考虑实际生活和客观规律,充分挖掘问题本身的限制条件,以及不同问题之间的限制条件,最终建立不同回答之间合理的约束关系。
  2. 之后利用所建立出的约束关系,对附件一和附件三的异常数据进行初步清洗。对于离群类型异常值用有效数据的平均值替换。对于不满足约束关系的异常值,用数据间的关系做出推断后进行替换,对缺失数据的缺失情况进行综合分析,用已有的数据进行推断并分析实际背景,对缺失数据进行填充处理,以保证建模的准确性。
  3. 基于数据清洗后的结果,对各项影响满意度得分的指标取平均值,然后对各品牌进行排序。
  问题二需要筛选出影响不同品牌销售的主要因素,针对该问题采用基于惩罚项和基于树模型两种不同的嵌入法,前一种用 LR、LASSO、SVM 三种模型,后一种用RF、LightGBM 模型共五个模型,求出影响不同品牌销售的相关特征。再根据特征重要性程度从高到低排序,并设置一个阈值,得到每个算法重要性排名靠前的特征,在五个模型选出的结果上采用投票法,筛选出大于等于 2 票的特征,作为影响该品牌销售主要因素。
  问题三是建立在问题二的基础上的,通过 SMOTE 采样解决标签不平衡问题之后,利用 F1-score 和 AUC 指标,对模型的训练和预测效果进行纵向比较,并利用 k 折交叉验证,对不同模型进行横向比较。对三个品牌,分别训练这 5 个模型,通过比较分析,在不同品牌中,挑选出在验证集上 F1-score 和 AUC 值最优的模型,并利用网络搜索方法,给每个品牌对应的最优的模型进行超参数调优。最后利用这三个最优模型预测附件三的 15 名目标客户购买电动车的可能性。
  问题四,是在问题二、三基础上的多目标规划问题。需要建立以提高服务的难度最小,提高的服务的数量最少,购买概率提高的百分比最多的多目标规划模型。在附件三的 3 个品牌中挑选没有购买电动车的客户,求解得出使得各个体验满意度应该提高的百分比,对没有购买电动车的目标客户设计销售策略。
  问题五主要是建立在前四问的基础上以信件的方式对销售部门提出销售策略。根据问题一可以得出客户对不同品牌的倾向程度;根据问题二可以得出对三种品牌电动汽车销售影响较大的因子;根据问题三可以得出适合三种品牌预测目标客户购买可能性的模型;根据问题四可以在提升服务满意度与服务难度之间找到一个优化方案。

模型假设:

  1. 假设影响目标客户满意度的因素仅考虑题目给出的电池技术性能、舒适性、经济
    型、安全性、动力性、驾驶操控性、外观内饰整体表现和配置与质量品质,且各
    个影响因素之间相互独立。
  2. 假设服务难度与提高的满意度百分点是成正比的关系。
  3. 假设在做出销售策略的这段时间内,目标客户对电动汽车的满意度、购买意向等
    不会发生改变。
  4. 假设在做出销售策略的阶段不会有黑天鹅事件或重大自然灾害等对该公司的电动
    车销售带来影响。

模型的建立与求解

数据预处理

  缺失值、异常值的处理是数据处理不可缺少的一环。缺失值是源于数据采集的空缺、传输间丢失等不可控情况所导致或人为故意丢失等多种情况,如何处理空值是数据处理中恒久不变的问题。而其中异常值是由于数据传输错误所导致的,通常对其采取修改或是剔除的处理方式,但具体所采取的方式也需要依据客观上分析数据所决定。以下主要分成三点叙述本文所采用的处理方法及处理结果。
在这里插入图片描述
  (一) 满意度得分的异常数据清洗工作
  根据题意,该公司的销售部门对目标客户进行体验调查时,规定满意度得分满分为 100 分,故在数据清洗时剔除附录 1 中 a1~a8 数值大于 100 的数据。以 a1 为例,该列展示了目标客户对电池技术性能的满意度得分情况。利用散点图经筛查发现,编号为 0001 的目标客户对电池技术性能的满意度高达 753.04 分(> 100 分),故用正常值数据的平均值(77.93 分)进行替换。数据清洗前后的结果如图 2、图 3 所示。同理可分别对编号为 1964、0480 的目标客户对应在 a3、a5 的数据进行清洗(满意度原始评价分数分别为 703.00 分、605.03 分)
在这里插入图片描述
  (二) 目标客户个人特征的异常数据清洗工作
  1. 由于家庭年收入应大于等于个人年收入,故对附录 1 中 b13、b14 的数据进行筛查,共发现 76 条异常值。同理,家庭年收入应大于等于家庭的可支配年收入,故对附录 1 中 b13、b15 的数据进行筛查,共发现 73 条异常值。考虑到不同目标客户的家庭、个人收入极值差异较大,为了提高替换数据的准确度,故先以家庭可支配收入为基准,计算得有效数据中各个家庭的可支配年收入占年收入的比例,并对所有家庭该比例值进行排序,求得中位数为 0.6667,再用这个倍数关系,修正家庭的年收入值,并对修正后的年收入值与个人年收入进行比较、校验。清洗后的数据经检验仍有 7 条数据不满足上述规则,故再用相同的方法,以个人年收入为基准,计算得有效数据中个人年收入占家庭年收入比例的中位数为 0.7%,进行数据清洗后按照规则进行校验,满足规则要求。
  2.由附录 2 的目标客户个人特征调研表可知,B17 调查了目标客户全年车贷支出占家庭年收入的比例,故用正常值的平均值(10%)替换附录 1 中该题大于 100%的数值,即编号为 0223 的客户,其 B17 问题的原始数值高达 300%,数据清洗前后的散点图如图 4、图 5 所示。

在这里插入图片描述
  (三) 缺失值的处理
  由附录 1 可知,缺失数据集中在 B7,即目标客户的孩子数量。由于目前已有的数据仅为 1、2、3 名孩子数量,不符合常理,因此考虑了出生年份后,将所有缺失数据的孩子数量均替换为 0,共完成 1457 处的替换。

目标客户对不同品牌汽车的满意度分析

  根据题意可知,影响目标客户对三款品牌电动汽车满意度的主要影响因素主要有8 个,分别为电池技术性能(电池耐用和充电方便)、舒适性(环保与空间座椅)整体表现、经济性(耗能与保值率)、安全性表现(刹车和行车视野)、动力性表现(爬坡和加速)、驾驶操控性表现(转弯和高速的稳定性)、外观内饰整体表现、配置与质量品质,其满意度分别是 a1至a8。为此,基于上述数据清洗的结果,对全体目标客户评价的 a1~a8 分别求平均值,然后再对这 8 项指标的平均值再次求平均,并求出最后得分。运行结果显示,合资品牌、自主品牌和新势力品牌的满意度最终得分分别为 78.16分、77.54 分和 76.93 分,表明目标客户普遍对合资品牌的满意度评价最高,新势力品牌的满意度最低。

  特征选择方法中的过滤法和包裹法,在特征选择过程与模型训练过程是独立进行的,而嵌入法则是综合考虑这两个过程,在学习的同时进行特征选择,因此,为了使结果更具有代表性,利于模型训练,本文使用以下两种嵌入法:
  一是基于惩罚项的特征选择法,本文采用基于 SVM 模型、LASSO 模型、逻辑回归模型的惩罚项特征选择法来选择特征。用正则 L1 范数作为惩罚项。L1 范数不但 可以降低过拟合风险,还可以使求得的 w 有较多分量为 0。所以当希望减少特征 的维度以用于其他分类器时,可以选择不为 0 的系数所对应的特征
  二是树模型的特征选择法,这种方法能够用来计算特征的重要程度,因此可以用来去除不相关的特征。本文采用随机森林模型、LightGBM 模型的树模型特征选择法来选择特征。再根据特征重要性程度,设置一个阈值,得到每个算法排名靠前的特征,最后在五个模型选出的结果上采用投票法,筛选出大于等于 2 票的特征,作为影响该品牌销售主要因素。

LightGBM 模型的建立

  LightGBM 是一款基于决策树算法的分布式梯度提升框架。它的优点在于减少了数据对内存的使用,保证单个及其在不牺牲速度的情况下尽可能使用多的数据,同时减少通信的代价,提升多级并行时的效率,实现在计算上的线性加速。

基于树模型特征法的选择特征结果

在这里插入图片描述
在这里插入图片描述
  图 6 是利用五种模型对各个特征进行投票得出的特征出现次数图,本文选取大于等于 2 出现次数的特征为重要特征,并认为会分别对三种品牌的电动汽车产生影响。
在这里插入图片描述
  由图 6 可知,对三种品牌来说,电动车的电池技术性能、舒适性、目标客户全年房贷、车贷占家庭年收入的占比均为两次及以上,说明这四个指标对顾客的购买情况有较大的影响。除了以上的四个指标外,影响品牌 1 购买情况的因子还有经济型、安全性、驾驶操控性以及目标客户的职位;经济型、安全性、动力性、外观内饰、目标客户的工作情况(包括工作年限、单位性质)、家庭年收入、可支配年收入会是目标客户购买品牌 2 的主要考虑因素;品牌 3 销售的主要影响指标则还有动力性、目标客户的婚姻家庭情况还有工作年限。

模型与三种品牌的匹配程度与检验

  (一)数据采样
  数据附件一中的 1964 条数据中只有 99 位客户有购买意愿,类别的比例不均衡时,多数类的样本会被过多地关注,这样,少数类样本的分类性能就会受到影响,因此需要对数据不平衡的问题进行处理,本文采用抽样 SMOTE 法解决标签类别不平衡问题,使得目标客户的购买意向 1 标签(购买)与 0 标签(不买)的比值调整为 0.6。
  (二)训练集与验证集的划分
  本文将把 1964 条数据集划分成训练集和验证集,训练集占比 0.8,验证集占比 0.2,进行 K 折交叉验证。
  (三)模型训练与比较
  使用 python 对五个模型在三个品牌的训练集上进行训练,对验证集进行预测,计算 F1 值和 AUC 值,计算结果如下:
在这里插入图片描述
  由表 3 中 F1、AUC 的结果可知,对品牌 1 和品牌 3 均适用于随机森林模型;品牌 2 则适合采用 LightGBM 模型。下图 7 为相应品牌与模型利用 python 软件绘制出的学习曲线。

在这里插入图片描述
在这里插入图片描述
  先通过网格搜索确定决策树数目和决策树最大深度,再确定分裂所需最少样本数和叶节点最少承载样本数,可以很直观地看到随机森林模型的表现性能更好,与比线性模型相比有着很大优势。并且在运行随机森林的时候发现代码的运行速度快,这是由于随机森林容易做成并行化方法,随机森林在训练时,树与树之间是相互独立的。

在这里插入图片描述
  LightGBM 模型的参数较多,但是调参规则和每一个基于决策树的模型是差不多的,先确定 0.1 为初始学习率,可以使模型有更快的收敛速度,然后通过网格搜索确定决策树数目和决策树最大深度,再确定最大叶子节点数,最后调节叶节点最小样本数防止模型过拟合。
在这里插入图片描述
  由上述分析可知,品牌 1 和 3 与随机森林模型匹配性较好,品牌二与 LightGBM模型的匹配性较好,故本文将利用随机森林、LightGBM 模型来预测附件三中 15 名目标客户购买电动汽车的可能性。

判断指定客户购买电动汽车的可能性

  利用随机森林模型、LightGBM 模型、随机森林模型分别对品牌 1、2 和 3 的客户进行预测,结果如表 8 所示。
在这里插入图片描述
  由结果可知,附件三中 15 名待预测的目标客户中,仅有编号为 1、6、7 的客户有较大概率会选购品牌 1、品牌 2、品牌 2 的电动汽车,其他客户选购电动车的可能性较低。

  本文从附件 3 中选取没有购买意愿,但购买意愿的预测值较高的客户,即编号为3、9、14 号的目标客户,分别制定品牌 1、2、3 的销售策略。考虑到服务难度与提高的满意度百分点是成正比的,故本文的目标是使提高服务的难度最小的同时提高顾客满意度,从而提高购买概率。通过使用规划的方法,记录下满意度有提升的指标,结果如表 9~11 所示。
  与此同时,本文基于问题二的结果,通过模型对目标客户的个人特征进行探究,通过聚焦目标客户的背景情况去实施销售策略,可以在不额外提高满意度的情况下提升客户的购车概率。
  (一)品牌 1 的销售策略——以编号 3 的目标客户为例
  基于问题二的结论,选择对品牌 1 销售影响较大的 a1、a2、a3、a4 进行讨论,再基于问题三的研究背景,选用随机森林作为模型进行预测。编号 3 的顾客 a1~a4 的初始满意度分数分别为 76.29、74.61、66.69、88.88 分,原始购买概率为 0.02。规划模型如式(17)至(21)所示。
  购买概率:该销售部门的销售目标是在实施策略后能使目标客户购买电动车概率最大,即:
在这里插入图片描述
在这里插入图片描述
  因此对编号 3 顾客的销售方向应着重考虑品牌 1(合资品牌)的经济性,也即耗能与保值率上,在销售过程中,可以重点对该电动汽车的耗能进行全方位多角度的阐述,详细介绍电池容量,耗电率,使用年限等指标。
  (二)品牌 2 的销售策略——以编号 9 的目标客户为例
  基于问题二的结论,从目标客户的个人特征入手,通过 LightGBM 模型与 python运行后我们发现,编号为 9 的目标客户个人年收入为 10 万(<25 万),相比同品牌其他客户有较高的购买概率,因此选择编号 9 作为销售对象,并在满意度上于下文进一
步讨论。
  从提高满意度的角度,选择对品牌 2 销售影响较大的 a1、a2、a3、a4、a5、a7 进行讨论,再基于问题三的研究背景,选用 LightBGM 作为模型进行预测。编号 3 的顾客 a1~a5、a7 的初始满意度分数分别为 82.41、88.92、85.17、85.61、85.63、82.35 分,原始购买概率为 0.01。
在这里插入图片描述
  由表 9.经计算后可知,序号 5 的优化结果使 a1 提升了 16 分,服务满意度提升了2.43%(<5%),且购买概率提升了 9%,满足题目要求。
  故针对编号 9 顾客的销售方向应着重考虑品牌 2(自主品牌)的电池技术性能,也即电池耐用和充电方便程度上,在销售过程中,销售人员可以详细阐述电池的容量,充电方式,充电桩地点分布,使目标客户对于该汽车的电池耐用度和充电便捷程度上,尽可能达到满意的水平。
  (三)品牌 3 的销售策略——以编号 14 的目标客户为例
  基于问题二的结论,从目标客户的个人特征入手,通过 LightGBM 模型与 python运行后我们发现,编号为 14 的目标客户的全年房贷、车贷支出为 0,相比同品牌其他客户有较高的购买概率,因此选择编号 14 作为销售对象,并在满意度上于下文进一步讨论。
  从提高满意度的角度,选择对品牌 3 销售影响较大的 a1、a2、a5 进行讨论,再基于问题三的研究背景,选用随机森林作为模型进行预测。编号 14 的顾客 a1、a2、a5的初始满意度分数分别为 76.89、77.80、74.69 分,原始购买概率为 0.07。
在这里插入图片描述
  由表 11.经计算后可知,序号为 10 的优化方案使 a2 提升了 17 分,服务满意度提升了 2.8%(<5%),且购买概率提升了 35%,满足题目要求。
  故针对编号 14 顾客的销售方向应着重考虑品牌 3(新势力品牌)的舒适性,也即环保与空间座椅上,在销售过程中尽量营造良好的舒适体验感,辅以侧面手段,如播放令人放松的音乐等侧面方法,以打造轻松的环境。
  (四)销售策略总结
  综上所述,我们使用精准营销的策略,进行点对点的差异化营销。在没有购买意愿客户中,挑选经济条件较好的客户,对品牌一的客户应当重点对该电动汽车的耗能进行全方位多角度的阐述,对品牌二的客户详细阐述电池的容量,充电方式,充电桩地点分布,对品牌三的客户在销售过程中尽量营造良好的舒适体验感,辅以侧面手段,以打造轻松的环境。

  本文基于问题一至四的结论,提出的模型具有很好的解释性,能考虑满意度与目标客户个人特征之间以及特征和模型之间的相关性,得到的结论更具说服力;且筛选出来的最终影响因素更具代表性。基于上述分析,本文提出以下销售策略:
  (一)品牌分析
  基于数据清洗工作的结果,对目标客户三个品牌的满意度进行比较分析。结果显示,目标客户比较青睐于合资品牌,因此可将销售的重心放在推广合资品牌的电动汽车上,自主、新势力品牌次之。
  (二)人群洞察
  在人群选择上,我们发现,户口在本城市、已婚、自由职业之或收入情况中等的家庭会更加倾向于购买电动汽车,为此可针对这些群体进行精准营销。三种品牌的销售都可从电池技术性能、舒适性入手为顾客进行介绍。此外,目标客户在选择合资品牌时还会关注经济性、安全性、驾驶操控性问题;经济性、安全性、动力性、外观内饰是影响自主品牌销售的主要因素;新势力品牌可以电动车的动力性为重点。
  (三)效果评估
  本团队通过对五种模型进行比对、校验,发现随机森林适用于合资品牌与新势力品牌,自主品牌适合 LightGBM 模型,且两种模型的 F1 值、AUC 值均大于 97%,接近完美模型,因此可在这些模型的基础上进行精准营销。为了在提高顾客满意度与减少服务难度中找到优化方案,在建立模型的基础上得出结论:合资、自主和新势力品牌在其他条件不变的情况下,分别提升客户对经济性、电池性能和舒适性的满意度有助于提高客户的购车率。
  综上所述,以上销售策略满足:需要在服务个数、服务难度尽可能小的情况下,提高客户满意度与购买率;对有一定特征的目标客户,如家庭住址在本城市、已婚、自由职业之或收入情况中等的家庭进行精准营销,从而助力销售部门实现效益的最大化。

论文缩略图:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

程序代码:

svm_get_features.py
from sklearn.linear_model import LogisticRegression as LR
from sklearn.svm import LinearSVC
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso, LassoCV
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
import numpy as np
df = pd.read_excel('2.xlsx')

# b13,14,15 处理
df.loc[(df['B13'] < df['B14']) | (df['B13'] < df['B15']), 'B13'] = np.nan
df.loc[df['B13'].isnull(), 'B13'] = df.loc[df['B13'].isnull(), 'B15'] * 1.667
df.loc[(df['B13'] < df['B14']) | (df['B13'] < df['B15']), 'B13'] = np.nan
df.loc[df['B13'].isnull(), 'B13'] = df.loc[df['B13'].isnull(), 'B14'] * 1.7142
x = df.iloc[:, 2:-1]
Y = df.iloc[:, -1]
Scaler = MinMaxScaler().fit(x) # 标准化
X = Scaler.transform(x)
print(X.shape)
print(Y.shape)
# SVM 模型
lsvc = LinearSVC(C=3, penalty="l1", dual=False) # 1-0.99; 2-3;3-0.35
sfm = SelectFromModel(lsvc, max_features=8).fit(X, Y)
print(sfm)
print(sfm.get_support())
print(df.columns[2:-1][sfm.get_support()])
# lasso 回归模型
clf = LassoCV()
sfm = SelectFromModel(clf, max_features=8).fit(X, Y)
print(sfm)
print(sfm.get_support())
print(df.columns[2:-1][sfm.get_support()])
# LR 逻辑回归模型
sfm = SelectFromModel(estimator=LR(C=7), max_features=8).fit(X, Y)
print(sfm)
print(sfm.get_support())
print(df.columns[2:-1][sfm.get_support()]
Lgb_get_features.py
from sklearn.metrics import mean_squared_error
import lightgbm as lgb
from sklearn.model_selection import train_test_split
df = pd.read_excel('2_del.xlsx')
X = df.iloc[:,0:12]
# X.drop(['B1','B6','B7'],axis=1)
# X.sample(n=100,random_state=0)
target = df.iloc[:,12]
X_train, X_test, y_train, y_test = train_test_split(X, target, test_size=0.2,random_state=0)
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import
confusion_matrix,classification_report,accuracy_score,roc_auc_score,f1_score
evals_result = {}
valid_sets = [X_train, X_test]
valid_name = ['train', 'eval']
# 创建成 lgb 特征的数据集格式
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
# 将参数写成字典下形式
params = {
'task': 'train', 'boosting_type': 'gbdt', # 设置提升类型
'min_data_in_leaf': 10, 'max_depth': -1, 'objective': 'binary', # 目标函数
'metric': {'binary_logloss', 'auc','f1'}, # 评估函数
'num_leaves':3, # 叶子节点数
'learning_rate': 0.0001, # 学习速率
'feature_fraction': 0.8, # 建树的特征选择比例
'bagging_fraction': 0.8, # 建树的样本采样比例
"lambda_l1": 0.1, 'verbose': -1 ,# <0 显示致命的, =0 显示错误 (警告), >0 显示信息
"nthread": -1, 'n_estimators' : 500, 'is_unbalance':True, }
# 训练 cv and train
gbm = lgb.train(params, lgb_train, valid_names=valid_name, num_boost_round=500, valid_sets=lgb_eval, evals_result=evals_result, early_stopping_rounds=20)
# 预测数据集
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
lgb.plot_metric(evals_result, metric='auc')
plt.figure(figsize=(12,6))
lgb.plot_importance(gbm, max_num_features=30)
plt.title("Featurertances")
# plt.savefig(f'F:./图片/特征重要度 1.png',dpi=600)
importance = gbm.feature_importance(importance_type='split')
feature_name = gbm.feature_name()
# for (feature_name,importance) in zip(feature_name,importance):
# print (feature_name,importance)
feature_importance =
pd.DataFrame({'feature_name':feature_name,'importance':importance} )
feature_importance.sort_values(['importance'],ascending=False)
lgb_predictors = [i for i in X_train.columns[2:27]]
pd.Series(gbm.feature_importance(), lgb_predictors).sort_values(ascending=False)
  • 16
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值