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中apply函数的用法实例教程
Jul 31 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
详解python3实现的web端json通信协议
Dec 29 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python语言快速上手学习方法
Dec 14 Python
python实现远程控制电脑
May 23 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Python操作redis和mongoDB的方法
Dec 19 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
详解Python yaml模块
Sep 23 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
一个域名查询的程序
2006/10/09 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
python测试mysql写入性能完整实例
2018/01/18 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python3个性签名设计实现代码
2018/06/19 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
python3.5的包存放的具体路径
2020/08/16 Python
详解rem 适配布局
2018/10/31 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
解放思想大讨论活动心得体会
2014/09/11 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Python中递归以及递归遍历目录详解
2021/10/24 Python
详解nginx location指令
2022/01/18 Servers
Python实现Hash算法
2022/03/18 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python