Python实现灰色关联分析与结果可视化的详细代码
作者:FontTian的专栏 发布时间:2023-08-03 15:01:56
标签:Python,灰色关联分析,结果可视化
之前在比赛的时候需要用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()
实现灰色关联分析
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: []
结果可视化
# 灰色关联结果矩阵可视化
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实现灰色关联
来源:https://www.cnblogs.com/fonttian/p/9162716.html


猜你喜欢
- text-overflow这个属性真让Firefox折腾,虽然之前有写过Firefox通过XUL实现text-overflow:ellips
- 本文实例讲述了MySQL主从复制与读写分离原理及用法。分享给大家供大家参考,具体如下:主从复制概念影响MySQL-A数据库的操作,在数据库执
- 写代码时,我们希望把一些操作放到一个代码块中,这样在代码块中执行时就可以保持在某种运行状态,而当离开该代码块时就执行另一个操作,结束当前状态
- pycharm没找到database问题pycharm的社区版本身是没有database的;只有专业版里面会直接出现右上角的database
- python的库一般都用pip安装。但是有时候也会出现在线安装失败的情况,如下图安装PIL模块时报错:这时候可以采取离线安装的方式;一、首先
- 本文实例为大家分享了python图片插入文字的具体代码,供大家参考,具体内容如下问题如何在图片中插入大量文字并且自动换行效果原始图效果图注明
- <%dim conn ’定义一个连接变量 dim&nbs
- Microsoft SQL Server Management Studio是SQL SERVER的客户端工具,相信大家都知道。我不知道大伙
- 目录linux mysql5.5升级至mysql5.71.下载mysql5.7.322. 进入旧的mysql的bin目录下导出mysql的数
- 本文将结合实例给大家演示如何使用ASP读取一个目录结构(及包含的文件信息)。演示页面中遍历显示了代码吾爱站点上若干目录文件夹——其中包含它们
- 最近,QQ的办公版本——TIM进行了一次更新升级。本次更新升级大幅修改了界面的样式,看起来更加的清爽、简洁和高效了。这种界面州的先生还是比较
- 在安装数据库的时候出现了如下错误:解决办法如下:1.在bin目录下 输入:kill -s 9 9907 再输入:ps
- 这篇文章主要介绍了Python命令行click参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 这篇文章主要介绍了python sorted方法和列表使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 没有使用队列,也没有线程池还在学习只是多线程 #coding:utf8 import urllib2,sys,re import threa
- 还是用图说话A文件:比如,我想筛选出“设计井别”、“投产井别”、“目前井别”三列数据都为11的数据,结果如下:当然,这里的筛选条件可以根据用
- 前言本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的。最近在回顾和构思shell脚本工具,
- 前言调用EXPLAIN可以获取关于查询执行计划的信息,以及如何解释输出。EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法,但该动
- 上篇文章给大家介绍过解决Navicat for Mysql连接报错1251的问题(连接失败),今天介绍Navicat for MySQL 连
- 话不多说,附上源码,仅供大家参考<!DOCTYPE html><html xmlns="http://www.w