Python-006-灰色关联分析法

    技术2025-11-19  23

    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 第一行空着 第二行是母序列 第三行、下面几行都是子序列

    结果:

    Processed: 0.014, SQL: 9