【练习笔记(第一次)】2020年数学建模国赛C题:数据处理、源代码 |
您所在的位置:网站首页 › 数学建模数据处理遇到的问题及对策分析论文 › 【练习笔记(第一次)】2020年数学建模国赛C题:数据处理、源代码 |
前言
本来因为ACM竞赛培训的原因没有参加数学建模的培训和系列赛事,开学被同学拉过来凑数,就这样阴差阳错的参加了一次数学建模国赛。由于没有系统的学习数学建模,还是第一次接触数学建模正式赛事,所以论文写的比较水。主要用到的方法都是烂大街的没有新意的方法,都是我在平时做数据练习时的一些偏机器学习的模型。前期想着队长能有什么模型想出来,结果队长啥也没想出来只好自己上,导致正式开始动笔建模时已经比较晚。其实论文还有很多可以改进的地方,比如没有查阅足够的文献资料,综合前人的结果,其实前人已经做出一些信用风险评估模型,其次集成学习比较仓促,没有分配分类器权重系数,时间够的话还应该可以做一下信用迁移矩阵,将题目中的时间用到。但最终还是写出了一个可行但并非最优解,也算完成论文。 最近好多童鞋在问我要论文,这里统一回复一下,当时做的实在太烂了,没有留下相关资源 2020年国赛明令提出不能使用topsis等算法,我使用了,其实做的很烂 题目请见代码仓库,过一阵子放 数据预处理据说这个部分让很多队伍头痛,其实也不是很难,不用很多时间。主要是根据发票信息对每个公司进行统计,我们算出了一些指标,以便以后使用,由于时间原因,没有处理发票中的时间信息。如果时间足够的话,其实还可以算一下信用迁移矩阵。详细程序见下。 综合评价系统我们用的是Topsis+熵权法,其实综合评价系统有很多种,应该针对不同的数据区别使用,但笔者没系统学过建模,也是现学现用。读者可以尝试使用其他评价系统,或者尝试一些现有信用风险模型,谷歌学术搜一搜就可。 分类系统使用kmeans分类,我也只知道这个,太菜了╯﹏╰。论文里分了九类,是根据聚类效果评价算法得出来的最佳聚类簇个数,其实3个也就够了的。 程序 1.问题1 数据读取 #导入相关库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.stats import zscore from sklearn.decomposition import PCA from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score #读取数据 data = pd.read_excel('a0.xlsx') data2 =pd.read_excel('a0.xlsx',sheet_name=1) data3 =pd.read_excel('a0.xlsx',sheet_name=2) #将企业代号前的E去掉,使其成为数值型变量,便于排序 data['企业代号']=data['企业代号'].apply(lambda x:int(x[1:])) data2['企业代号']=data2['企业代号'].apply(lambda x:int(x[1:])) data3['企业代号']=data3['企业代号'].apply(lambda x:int(x[1:])) 数据概览 data 企业代号企业名称信誉评级是否违约01***电器销售有限公司A否12***技术有限责任公司A否23***电子(中国)有限公司***分公司C否34***发展有限责任公司C否45***供应链管理有限公司B否...............118119***药房D是119120***陈列广告有限公司D是120121***药业连锁有限公司***药店D是121122***商贸有限责任公司D是122123***创科技有限责任公司D是123 rows × 4 columns data2 企业代号发票号码开票日期销方单位代号金额税额价税合计发票状态0133909392017-07-18A00297-943.40-56.60-1000.00有效发票1133909402017-07-18A00297-4780.24-286.81-5067.05有效发票2133909412017-07-18A00297943.4056.601000.00有效发票3133909422017-07-18A002974780.24286.815067.05有效发票4199026692017-08-07A05061326.219.79336.00有效发票...........................210942122547062342019-04-17A08967223.306.70230.00有效发票210943122557213442020-01-10A09184264.1515.85280.00有效发票210944123384932952017-12-15A03624264.1515.85280.00有效发票210945123954720012018-12-29A03626264.1515.85280.00有效发票210946123544698832019-12-18A03626264.1515.85280.00有效发票210947 rows × 8 columns data3 企业代号发票号码开票日期购方单位代号金额税额价税合计发票状态01114593562017-08-04B037119401.711598.2911000.0有效发票1150762392017-08-09B008448170.941389.069560.0有效发票2150762402017-08-09B008448170.941389.069560.0有效发票3150762412017-08-09B008444085.47694.534780.0有效发票4150762422017-08-09B008444085.47694.534780.0有效发票...........................16247912388877012019-12-17B109444827.67144.834972.5有效发票16248012388877022019-12-17B109447412.62222.387635.0有效发票162481123341730852019-12-17B130931917.4757.531975.0有效发票16248212388877032019-12-25B130937252.42217.587470.0有效发票16248312388877042019-12-25B130936660.19199.816860.0有效发票162484 rows × 8 columns 数据预处理 #计算有效发票、负数发票和作废发票数量 def cnt(a,b,df): tot=0 for i in range(a,b): if df.iloc[i,6] |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |