Python实现灰色关联分析与结果可视化的详细代码


Posted in Python onMarch 25, 2022

之前在比赛的时候需要用Python实现灰色关联分析,从网上搜了下只有实现两个列之间的,于是我把它改写成了直接想Pandas中的计算工具直接计算person系数那样的形式,可以对整个矩阵进行运算,并给出了可视化效果,效果请见实现

灰色关联分析法

对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

简介

灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态历程分析。

计算步骤

  • 确实参考数列与比较数列
  • 对参考数列与比较数列进行无量纲化处理
  • 计算关联系数,求关联度

此处我给出的是第三步的实现方式,无量纲化请自己处理.数据使用UCI的红酒质量数据集.

代码实现

下载数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# 定义下载数据的函数
def ReadAndSaveDataByPandas(target_url = None,file_save_path = None ,save=False):
    if target_url !=None:
        target_url = ("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")   
    if file_save_path != None:
        file_save_path = "/home/fonttian/Data/UCI/Glass/glass.csv"
    wine = pd.read_csv(target_url, header=0, sep=";")
    if save == True:
        wine.to_csv(file_save_path, index=False)
    return wine
# 从硬盘读取数据进入内存
wine = pd.read_csv("/home/font/Data/UCI/WINE/wine.csv")
wine.head()

Python实现灰色关联分析与结果可视化的详细代码

实现灰色关联分析

import pandas as pd
from numpy import *
def GRA_ONE(DataFrame,m=0):
    gray= DataFrame
    #读取为df格式
    gray=(gray - gray.min()) / (gray.max() - gray.min())
    #标准化
    std=gray.iloc[:,m]#为标准要素
    ce=gray.iloc[:,0:]#为比较要素
    n=ce.shape[0]
    m=ce.shape[1]#计算行列

    #与标准要素比较,相减
    a=zeros([m,n])
    for i in range(m):
        for j in range(n):
            a[i,j]=abs(ce.iloc[j,i]-std[j])
    #取出矩阵中最大值与最小值
    c=amax(a)
    d=amin(a)
    #计算值
    result=zeros([m,n])
            result[i,j]=(d+0.5*c)/(a[i,j]+0.5*c)
    #求均值,得到灰色关联值
    result2=zeros(m)
            result2[i]=mean(result[i,:])
    RT=pd.DataFrame(result2)
    return RT
def GRA(DataFrame):
    list_columns = [str(s) for s in range(len(DataFrame.columns)) if s not in [None]]
    df_local = pd.DataFrame(columns=list_columns)
    for i in range(len(DataFrame.columns)):
        df_local.iloc[:,i] = GRA_ONE(DataFrame,m=i)[0]
    return df_local
data_wine_gra = GRA(wine)
# data_wine_gra.to_csv(path+"GRA.csv") 存储结果到硬盘
data_wine_gra
Empty DataFrame
Columns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Index: []

Python实现灰色关联分析与结果可视化的详细代码

结果可视化

# 灰色关联结果矩阵可视化
import seaborn as sns
%matplotlib inline
def ShowGRAHeatMap(DataFrame):
    import matplotlib.pyplot as plt
    import seaborn as sns
    %matplotlib inline
    colormap = plt.cm.RdBu
    plt.figure(figsize=(14,12))
    plt.title('Pearson Correlation of Features', y=1.05, size=15)
    sns.heatmap(DataFrame.astype(float),linewidths=0.1,vmax=1.0, square=True, cmap=colormap, linecolor='white', annot=True)
    plt.show()
ShowGRAHeatMap(data_wine_gra)

Python实现灰色关联分析与结果可视化的详细代码

参考文章

到此这篇关于Python实现灰色关联分析与结果可视化的文章就介绍到这了,更多相关Python灰色关联分析内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python绘制双柱形图代码实例
Dec 14 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Django 缓存配置Redis使用详解
Jul 23 Python
python tkinter实现屏保程序
Jul 30 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
python爬虫 正则表达式解析
Sep 28 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
Python调用C/C++的方法解析
Aug 05 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
pycharm安装深度学习pytorch的d2l包失败问题解决
利用For循环遍历Python字典的三种方法实例
Mar 25 #Python
Python装饰器详细介绍
Mar 25 #Python
python中数组和列表的简单实例
Mar 25 #Python
Python if else条件语句形式详解
python中的getter与setter你了解吗
Mar 24 #Python
You might like
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
Python sep参数使用方法详解
2020/02/12 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
2015年个人审计工作总结
2015/04/07 职场文书
涨价通知
2015/04/23 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers