2020数学建模医疗和养老保障问题解决办法

量化分析医疗和养老保障

原题背景我就不放上面了 此题中首先对数据进行处理分析 先做个拟合曲线 使用spss对数据进行多元因子分析,然后为深入研究医疗与养老保障标准采用BP神经网络算法。
任务:
(1)参考国际上先进标准,根据现状给出未来5年、10年和15年深圳医疗和养老保障需要实现的目标的量化描述。
(2)根据深圳市的现状(人口数量与结构、经济收入与消费水平、医疗资源与水平、社会保障制度与能力等),分析研究在未来5年、10年和15年中,怎样合理配置医疗和养老资源(医院、保健院、养老院、医生、服务保障人员等),才能达到(1)中提出的目标。
(3)研究设计与(1)中目标相匹配的医疗和养老保险方案。

问题一分析
深圳市居民健康水平各个时间段各不相同,我们需要收集深圳市的健康水平数据,根据深圳市实际情况及附件一中的材料,我们详细的调查了深圳市的人口数量、GDP、人均工资、医院数量、医生数量、养老机构数量这6个方面及其各个辖区居民健康水平情况,通过调查数据定量分析得出影响深圳居民健康的因素及其深圳居民健康水平的现状发展趋势,并从我们调查的数据之中预测未来深圳居民健康水平,分析原题中的措施改变对深圳居民健康水平发展趋势的影响作用,积极为国家政府改善民生献计献策。
问题二分析
根据我们采集的大数据健康学科前沿成果数据,从人口数量、GDP、人均工资、医院数量、医生数量、养老机构数量六个方面,详细的分析了深圳市经济与居民健康水平发展的趋势及原因。综合考虑饮食习惯、生活方式、工作压力、医疗保障和环境质量因素,为建立能够支持健康水平动态测控需求的居民健康水平预测模型,采用层次分析法,以影响居民人口数量、GDP、人均工资三个因素为自变量,以影响城市居民健康医院数量、医生数量、养老机构数量为因变量建模求解。从政策环境和居民自身情况分析,给出降低“失配性”健康医疗和养老保障问题的最佳方案。达到预测的目的。
问题三分析
为提升深圳居民的健康水平和改善深圳的养老保障质量,基于问题二中构建的健康水平评估模型设计具有动态监测功能的干预方案,并结合“健康深圳”行动计划,制定实施方案,分析实施方案的适用性和干预方案的可行性。

在这里插入图片描述

解题密码

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

1.	import operator
2.	 3 from math import log
3.	 4 import time
4.	 5 
5.	 6 def createDataSet():
6.	 7     dataSet=[[1,1,'yes'],
7.	 8             [1,1,'yes'],
8.	 9             [1,0,'no'],
9.	10             [0,1,'no'],
10.	11             [0,1,'no']]
11.	12     labels = ['no surfaceing','flippers']
12.	13     return dataSet, labels
13.	14 
14.	15 #计算香农熵
15.	16 def calcShannonEnt(dataSet):
16.	17     numEntries = len(dataSet)
17.	18     labelCounts = {
    
    }
18.	19     for feaVec in dataSet:
19.	20         currentLabel = feaVec[-1]
20.	21         if currentLabel not in labelCounts:
21.	22             labelCounts[currentLabel] = 0
22.	23         labelCounts[currentLabel] += 1
23.	24     shannonEnt = 0.0
24.	25     for key in labelCounts:
25.	26         prob = float(labelCounts[key])/numEntries
26.	27         shannonEnt -= prob * log(prob, 2)
27.	28     return shannonEnt
28.	29 
29.	30 def splitDataSet(dataSet, axis, value):
30.	31     retDataSet = []
31.	32     for featVec in dataSet:
32.	33         if featVec[axis] == value:
33.	34             reducedFeatVec = featVec[:axis]
34.	35             reducedFeatVec.extend(featVec[axis+1:])
35.	36             retDataSet.append(reducedFeatVec)
36.	37     return retDataSet
37.	38     
38.	39 def chooseBestFeatureToSplit(dataSet):
39.	40     numFeatures = len(dataSet[0]) - 1#因为数据集的最后一项是标签
40.	41     baseEntropy = calcShannonEnt(dataSet)
41.	42     bestInfoGain = 0.0
42.	43     bestFeature = -1
43.	44     for i in range(numFeatures):
44.	45         featList = [example[i] for example in dataSet]
45.	46         uniqueVals = set(featList)
46.	47         newEntropy = 0.0
47.	48         for value in uniqueVals:
48.	49             subDataSet = splitDataSet(dataSet, i, value)
49.	50             prob = len(subDataSet) / float(len(dataSet))
50.	51             newEntropy += prob * calcShannonEnt(subDataSet)
51.	52         infoGain = baseEntropy -newEntropy
52.	53         if infoGain > bestInfoGain:
53.	54             bestInfoGain = infoGain
54.	55             bestFeature = i
55.	56     return bestFeature
56.	57             
57.	58 #因为我们递归构建决策树是根据属性的消耗进行计算的,所以可能会存在最后属性用完了,但是分类
58.	59 #还是没有算完,这时候就会采用多数表决的方式计算节点分类
59.	60 def majorityCnt(classList):
60.	61     classCount = {
    
    }
61.	62     for vote in classList:
62.	63         if vote not in classCount.keys():
63.	64             classCount[vote] = 0
64.	65         classCount[vote] += 1
65.	66     return max(classCount)         
66.	67     
67.	68 def createTree(dataSet, labels):
68.	69     classList = [example[-1] for example in dataSet]
69.	70     if classList.count(classList[0]) ==len(classList):#类别相同则停止划分
70.	71         return classList[0]
71.	72     if len(dataSet[0]) == 1:#所有特征已经用完
72.	73         return majorityCnt(classList)
73.	74     bestFeat = chooseBestFeatureToSplit(dataSet)
74.	75     bestFeatLabel = labels[bestFeat]
75.	76     myTree = {
    
    bestFeatLabel:{
    
    }}
76.	77     del(labels[bestFeat])
77.	78     featValues = [example[bestFeat] for example in dataSet]
78.	79     uniqueVals = set(featValues)
79.	80     for value in uniqueVals:
80.	81         subLabels = labels[:]#为了不改变原始列表的内容复制了一下
81.	82         myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet, 
82.	83                                         bestFeat, value),subLabels)
83.	84     return myTree
84.	85     
85.	86 def main():
86.	87     data,label = createDataSet()
87.	88     t1 = time.clock()
88.	89     myTree = createTree(data,label)
89.	90     t2 = time.clock()
90.	91     print myTree
91.	92     print 'execute for ',t2-t1
92.	93 if __name__=='__main__':
94     main()

如果你用matlab,我有matlab此题完整程序;如果你用python,我有python此题完整程序,如下图所示:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43292788/article/details/106437600