Python-006-灰色关联分析法-2020-7-14 参考
https://blog.csdn.net/starter_____/article/details/82085040 https://blog.csdn.net/weixin_43725886/article/details/102321646 https://blog.csdn.net/FontThrone/article/details/80607794
因为没解释,所以有些人可能不懂
目录
一、效果二、代码三、分析、解释结果四、拓展(通过文件导入数据)
一、效果
二、代码
import pandas as pd
x
= pd
.DataFrame([[1988,2061,2335,2750,3356,3806],[386,408,422,482,511,561], [839,846,960,1258,1577,1893], [763,808,953,1010,1268,1352]])
#
1、数据均值化处理
x_mean
=x
.mean(axis
=1)
for i in
range(x
.index
.size
):
x
.iloc
[i
,:] = x
.iloc
[i
,:]/x_mean
[i
]
print(x
)
#
2、提取参考队列和比较队列
ck
=x
.iloc
[0,:]
cp
=x
.iloc
[1:,:]
print(cp
)
# 比较队列与参考队列相减
t
=pd
.DataFrame()
for j in
range(cp
.index
.size
):
temp
=pd
.Series(cp
.iloc
[j
,:]-ck
)
t
=t
.append(temp
,ignore_index
=True
)
#求最大差和最小差
mmax
=t
.abs().max().max()
mmin
=t
.abs().min().min()
print('mmax',mmax
)
print('mmin',mmin
)
rho
=0.5
#
3、求关联系数
ksi
=((mmin
+rho
*mmax
)/(abs(t
)+rho
*mmax
))
print(ksi
)
#
4、求关联度
r
=ksi
.sum(axis
=1)/ksi
.columns
.size
#
5、关联度排序,得到结果r3
>r2
>r1
result
=r
.sort_values(ascending
=False
)
print('result')
print(result
)
三、分析、解释结果
①题目可以去看https://blog.csdn.net/starter_____/article/details/82085040 ②根据原博客实例结果
来自https://blog.csdn.net/starter_____/article/details/82085040
可以看到 r1是第一产业0.5088 r2是第二产业0.6248 r3是第三产业0.7577 和我们结果 ,之间的差异在于精度确度的原因。 ③原因: 上面是原博客实例中步骤三的计算结果 我们对比看看python计算结果 横竖摆放颠倒了一下,我们可以发现精确度高了两位所以。
四、拓展(通过文件导入数据)
import pandas as pd
import numpy as np
x
=pd
.read_excel('e:\\桌面\\2020数学建模校赛赛题\\huise.xlsx')
print(x
)
#
1、数据均值化处理
x_mean
=x
.mean(axis
=1)
for i in
range(x
.index
.size
):
x
.iloc
[i
,:] = x
.iloc
[i
,:]/x_mean
[i
]
# x.iloc[i,:] = x.iloc[i,:]/x_mean[i]
#
2、提取参考队列和比较队列
ck
=x
.iloc
[0,:]
cp
=x
.iloc
[1:,:]
# 比较队列与参考队列相减
t
=pd
.DataFrame()
for j in
range(cp
.index
.size
):
temp
=pd
.Series(cp
.iloc
[j
,:]-ck
)
t
=t
.append(temp
,ignore_index
=True
)
#求最大差和最小差
mmax
=t
.abs().max().max()
mmin
=t
.abs().min().min()
rho
=0.5
#
3、求关联系数
ksi
=((mmin
+rho
*mmax
)/(abs(t
)+rho
*mmax
))
#
4、求关联度
r
=ksi
.sum(axis
=1)/ksi
.columns
.size
#
5、关联度排序,得到结果r3
>r2
>r1
result
=r
.sort_values(ascending
=False
)
print(result
)
huise.xlsx下载地址:https://duolc.lanzous.com/iwNFneltwne 第一行空着 第二行是母序列 第三行、下面几行都是子序列
结果: