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 07 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
Python科学画图代码分享
Nov 29 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
10个顶级Python实用库推荐
Mar 04 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
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php强制运行广告的方法
2014/12/01 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python中正则表达式详解
2017/05/17 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
Order by的几种用法
2013/06/16 面试题
中专生职业生涯规划书范文
2014/01/10 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
药品业务员岗位职责
2014/04/17 职场文书
本科毕业生求职信
2014/06/15 职场文书
停车场管理协议书范本
2014/10/08 职场文书
工程项目合作意向书
2015/05/08 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang