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 相关文章推荐
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
python实现最大优先队列
Aug 29 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
python实现三次密码验证的示例
Apr 29 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php取得字符串首字母的方法
2015/03/25 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
利用python获得时间的实例说明
2013/03/25 Python
python采集博客中上传的QQ截图文件
2014/07/18 Python
深入理解Python装饰器
2016/07/27 Python
python脚本实现验证码识别
2018/06/07 Python
代码详解django中数据库设置
2019/01/28 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python银行系统实战源码
2019/10/25 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
python 读取、写入txt文件的示例
2020/09/27 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
《小儿垂钓》教学反思
2014/02/23 职场文书
低碳生活倡议书
2014/04/14 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
永不妥协观后感
2015/06/10 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
golang interface判断为空nil的实现代码
2021/04/24 Golang