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线程池的实现实例
Nov 18 Python
python回溯法实现数组全排列输出实例分析
Mar 17 Python
Python中使用dom模块生成XML文件示例
Apr 05 Python
Python素数检测的方法
May 11 Python
Python os.access()用法实例
Feb 18 Python
Python中函数参数匹配模型详解
Jun 09 Python
Python数据存储之 h5py详解
Dec 26 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Python日志logging模块功能与用法详解
Apr 09 Python
对Python 字典元素进行删除的方法
Jul 31 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 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获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
基于python历史天气采集的分析
2019/02/14 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
工作违纪检讨书
2014/02/17 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
岗位职责怎么写
2014/03/14 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
医德医魂心得体会
2014/09/11 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
小学端午节活动总结
2015/02/11 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang