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编程效率
Feb 16 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python中动态创建类实例的方法
Mar 24 Python
详解如何使用Python编写vim插件
Nov 28 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
python中append实例用法总结
Jul 30 Python
python实现简单银行管理系统
Oct 25 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 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实现rc4加密算法代码
2012/04/25 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python的多重继承的理解
2017/08/06 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python之时间和日期使用小结
2019/02/14 Python
python学习开发mock接口
2019/04/28 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
最新大学生创业计划书写作攻略
2014/04/02 职场文书
数学系毕业生求职信
2014/05/29 职场文书
护士年终考核评语
2014/12/31 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript