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进阶教程之动态类型详解
Aug 30 Python
python实现学生信息管理系统
Apr 05 Python
django将图片上传数据库后在前端显式的方法
May 25 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python 如何调试程序崩溃错误
Aug 03 Python
Python 列表推导式需要注意的地方
Oct 23 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
python实现简易名片管理系统
Apr 11 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+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
React优化子组件render的使用
2019/05/12 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
web.py中调用文件夹内模板的方法
2014/08/26 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
无偿献血倡议书
2014/04/14 职场文书
投标承诺函范文
2015/01/21 职场文书
逃课检讨书范文
2015/05/06 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL