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判断字符串与大小写转换
Jun 08 Python
Python实现通讯录功能
Feb 22 Python
Python中安装easy_install的方法
Nov 18 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
python中os包的用法
Jun 01 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP模块memcached使用指南
2014/12/08 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
php上传excel表格并获取数据
2017/04/27 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
javascript 打印页面代码
2009/03/24 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
javascript基本算法汇总
2016/03/09 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
python实现字典嵌套列表取值
2019/12/16 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
美发活动策划书
2014/01/14 职场文书
个人优缺点自我评价
2014/01/27 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python