首页 > 编程知识 正文

灰色关联分析怎么检验,灰色关联分析适用数据

时间:2023-05-04 14:54:35 阅读:232911 作者:4976

前言

1、Python 灰色关联度分析 采用一个示例,简单分析一下。
灰色关联度分析是 度量两条曲线的形态和走势是否相近
本文是在前文的基础上,进行结果可视化展示。

程序 读数据 import pandas as pimport numpy as npfrom numpy import *import matplotlib.pyplot as plt# 从硬盘读取数据进入内存data = pd.read_excel('data.xlsx',usecols=[0,1,2,3])data.head() 方法 # 无量纲化def dimensionlessProcessing(df): newDataFrame = pd.DataFrame(index=df.index) columns = df.columns.tolist() for c in columns: d = df[c] MAX = d.max() MIN = d.min() MEAN = d.mean() newDataFrame[c] = ((d - MEAN) / (MAX - MIN)).tolist() return newDataFramedef GRA_ONE(gray, m=0): # 读取为df格式 gray = dimensionlessProcessing(gray) # 标准化 std = gray.iloc[:, m] # 为标准要素 gray.drop(str(m),axis=1,inplace=True) ce = gray.iloc[:, 0:] # 为比较要素 shape_n, shape_m = ce.shape[0], ce.shape[1] # 计算行列 # 与标准要素比较,相减 a = zeros([shape_m, shape_n]) for i in range(shape_m): for j in range(shape_n): a[i, j] = abs(ce.iloc[j, i] - std[j]) # 取出矩阵中最大值与最小值 c, d = amax(a), amin(a) # 计算值 result = zeros([shape_m, shape_n]) for i in range(shape_m): for j in range(shape_n): result[i, j] = (d + 0.5 * c) / (a[i, j] + 0.5 * c) # 求均值,得到灰色关联值,并返回 result_list = [mean(result[i, :]) for i in range(shape_m)] result_list.insert(m,1) return pd.DataFrame(result_list)def GRA(DataFrame): df = DataFrame.copy() list_columns = [ str(s) for s in range(len(df.columns)) if s not in [None] ] df_local = pd.DataFrame(columns=list_columns) df.columns=list_columns for i in range(len(df.columns)): df_local.iloc[:, i] = GRA_ONE(df, m=i)[0] return df_local 画图 # 灰色关联结果矩阵可视化# 灰色关联结果矩阵可视化import seaborn as snsdef ShowGRAHeatMap(DataFrame): colormap = plt.cm.RdBu ylabels = DataFrame.columns.values.tolist() f, ax = plt.subplots(figsize=(14, 14)) ax.set_title('GRA HeatMap') # 设置展示一半,如果不需要注释掉mask即可 mask = np.zeros_like(DataFrame) mask[np.triu_indices_from(mask)] = True with sns.axes_style("white"): sns.heatmap(DataFrame, cmap="YlGnBu", annot=True, mask=mask, ) plt.show() data_wine_gra = GRA(data)ShowGRAHeatMap(data_wine_gra)

结果展示

全热力图 # 灰色关联结果矩阵可视化# 灰色关联结果矩阵可视化import seaborn as snsdef ShowGRAHeatMap(DataFrame): colormap = plt.cm.RdBu ylabels = DataFrame.columns.values.tolist() f, ax = plt.subplots(figsize=(14, 14)) ax.set_title('GRA HeatMap') # 设置展示一半,如果不需要注释掉mask即可# mask = np.zeros_like(DataFrame)# mask[np.triu_indices_from(mask)] = True with sns.axes_style("white"): sns.heatmap(DataFrame, cmap="YlGnBu", annot=True,# mask=mask, ) plt.show() data_wine_gra = GRA(wine)ShowGRAHeatMap(data_wine_gra)

结果展示

参考代码来自
Python 实现 灰色关联分析 与结果可视化

历史中提交的图片或压缩文件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。