python做灰色关联度分析_python实现灰色关联分析(GRA)——以红酒质量指标为例
目录
程序简述
数据集截图
程序/数据集下载
核心代码解析
Module/BuildModel.py(接口,可以直接运行)
接口调用、运行效果
Main.py
程序简述
对红酒质量指标数据进行灰色关联分析,首先进行数据标准化,然后计算关联系数矩阵和平均综合关联度
程序输入:第一列为母序列的指标矩阵
程序输出:关联度矩阵
灰色关联分析方法(GRA),是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。
数据集截图
图1,红酒质量指标
程序/数据集下载
点击进入下载地址
核心代码解析
Module/BuildModel.py(接口,可以直接运行)
建立灰色关联度模型,输入数据可选择是否需要标准化,结果保存在对象的result里,该代码可直接运行
# -*- coding: utf-8 -*-
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np
import os
class GraModel():
'''灰色关联度分析模型'''
def __init__(self,inputData,p=0.5,standard=True):
'''
初始化参数
inputData:输入矩阵,纵轴为属性名,第一列为母序列
p:分辨系数,范围0~1,一般取0.5,越小,关联系数间差异越大,区分能力越强
standard:是否需要标准化
'''
self.inputData = np.array(inputData)
self.p = p
self.standard = standard
#标准化
self.standarOpt()
#建模
self.buildModel()
def standarOpt(self):
'''标准化输入数据'''
if not self.standard:
return None
self.scaler = StandardScaler().fit(self.inputData)
self.inputData = self.scaler.transform(self.inputData)
def buildModel(self):
#第一列为母列,与其他列求绝对差
momCol = self.inputData[:,0]
sonCol = self.inputData[:,0:]
for col in range(sonCol.shape[1]):
sonCol[:,col] = abs(sonCol[:,col]-momCol)
#求两级最小差和最大差
minMin = sonCol.min()
maxMax = sonCol.max()
#计算关联系数矩阵
cors = (minMin + self.p*maxMax)/(sonCol+self.p*maxMax)
#求平均综合关联度
meanCors = cors.mean(axis=0)
self.result = {'cors':{'value':cors,'desc':'关联系数矩阵'},'meanCors':{'value':meanCors,'desc':'平均综合关联系数'}}
if __name__ == "__main__":
#路径目录
curDir = os.path.dirname(os.path.abspath(__file__))#当前目录
baseDir = os.path.dirname(curDir)#根目录
staticDir = os.path.join(baseDir,'Static')#静态文件目录
resultDir = os.path.join(baseDir,'Result')#结果文件目录
#读数
data = [
[1,1.1,2,2.25,3,4],
[1,1.166,1.834,2,2.314,3],
[1,1.125,1.075,1.375,1.625,1.75],
[1,1,0.7,0.8,0.9,1.2]
]
data = np.array(data).T
#建模
model = GraModel(data,standard=True)
print(model.result)
接口调用、运行效果
Main.py
调用BuildModel.py的接口,实例分析,得到红酒质量与红酒PH等指标之间的关联度。
# -*- coding: utf-8 -*-
from Module.BuildModel import GraModel
import pandas as pd
import numpy as np
import os
import matplotlib.pyplot as plt
import seaborn as sns
#路径目录
baseDir = os.path.dirname(os.path.abspath(__file__))#当前目录
staticDir = os.path.join(baseDir,'Static')#静态文件目录
resultDir = os.path.join(baseDir,'Result')#结果文件目录
#接口要求第一列为母序列,即红酒质量
data = pd.read_csv(staticDir+'/winequality-red.csv',sep=';')
columns = ['quality','fixed acidity', 'volatile acidity',
'citric acid', 'residual sugar','chlorides',
'free sulfur dioxide', 'total sulfur dioxide',
'density','pH', 'sulphates', 'alcohol']
data = data[columns]
#建立灰色关联模型,标准化数据
model = GraModel(data,standard=True)
#模型计算结果
result = model.result
#平均关联程度
meanCors = result['meanCors']['value']
#可视化图表
#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示负号
plt.rcParams['axes.unicode_minus']=False
#可视化矩阵
plt.clf()
plt.figure(figsize=(8,12))
sns.heatmap(meanCors.reshape(1,-1), square=True, annot=True, cbar=False,
vmax=1.0,
linewidths=0.1,cmap='viridis')
plt.yticks([0,],['quality'])
plt.xticks(np.arange(0.5,12.5,1),columns,rotation=90)
plt.title('指标关联度矩阵')
plt.savefig(resultDir+'/指标关联度可视化矩阵.png',dpi=100,bbox_inches='tight')
图2,关联度矩阵热力图
python做灰色关联度分析_python实现灰色关联分析(GRA)——以红酒质量指标为例相关推荐
- python做一个考试系统_python考试系统 相关实例(示例源码)下载 - 好例子网
开发语言:Python | 大小:0.02M | 发布时间:2016-07-07 | 发布人:linq 相关标签: 立即下载 开发语言:Python | 大小:0.21M | 发布时间:2020-08 ...
- 基于灰色关联度的人均GDP影响因数分析
声明:本人是一名大二学生,这篇文章是我第一篇文章,这篇文章只是老师布置的小作业所以没有严格按照文章格式来写.可能描述有误,欢迎大家评论区指正. 基于灰色关联度的人均GDP影响因数分析 摘要 本文目的是 ...
- python做灰色关联度分析_python实现灰色关联
灰色关联分析(Grey Relational Analysis, GRA) 通常可以运用此方法来分析各个因素对于结果的影响程度,也可以运用此方法解决随时间变化的综合评价类问题,其核心是按照一定规则确立 ...
- 灰色关联度分析_数学建模|关联分析之术|灰度预测模型预备知识
关联分析 作者:PureFFFmennory 联系方式:ProdigyYanng@gmail.com 1. 目的 现实客观事物的每个现象非常复杂,影响因素繁多.对某一个系统而言,需要对该系统进行因素分 ...
- java爬取网页数据_利用Python做数据分析—对前程无忧数据类岗位进行分析
引言 随着时代的发展,我国在各行各业都需要大量的人才引进,处于近几年最热门的行业也称"最火行业":大数据.数据分析.数据挖掘.机器学习.人工智能,这五门行业各有不同又互有穿插.近几 ...
- python做什么生意好找_Python 的练手项目有哪些值得推荐?
注:下面分享的练习项目面向刚入门的Python学习者,项目的代码地址见结尾. Python 是一门虽然简单却很强大的编程语言.可能有些刚入门 Python 的朋友,虽然已经掌握了 Python 的基础 ...
- python做exe开发教程_python做exe开发教程
python做exe开发教程内容摘要 python做exe开发教程其他方法无效时可用免疫抑制剂,交通部监理员教程证,6.客户端的异常测试.6.机费用械性能(1)抗拉试验:酒店入职教程内容,6.9l-8 ...
- python 文本相似度现状_python文本相似度分析
如何用python计算文本的相似度 同学欢迎来到CSS布局HTML~文本的相似度计算是NLP(自然语言处理)方向的范畴,感兴趣可以找相关的书籍详细学习研究.同学问的这个问题,可以搜索:python文本 ...
- python 关联分析算法的包_Python 极简关联分析(购物篮分析)
关联分析,也称购物篮分析,本文目的: 基于订单表,用最少的python代码完成数据整合及关联分析 文中所用数据下载地址: 使用Python Anaconda集成数据分析环境,下载mlxtend机器学习 ...
最新文章
- nero linux iso,NeroLINUX下载_NeroLINUX官方下载_NeroLINUX4.0.0.0-华军软件园
- 批处理taskkill运行结束不掉程序以及停留问题
- MYSQL 常用SQL
- 自动化安装Cacti(1.0.1/2/3)脚本
- 数据结构-第九章 内部排序-知识点总结2
- Oracle性能调优方法
- Vue.set()实现数据动态响应
- jinja2 中的 Template 批量替换json字符串中的内容
- MySQL的InnoDB和MyISAM比较
- 经典手眼标定算法之Navy的OpenCV实现
- Element-ui中form组件的校验规则
- Python核心编程 课后习题 第一部分
- 遇到网站被黑,怎么解决?
- UE4 后处理材质 镜头光晕(Lensflare)效果
- 六年级小学生做的个人网站
- 应用程序错误电脑黑屏_Win10电脑老是遇到黑屏问题,学会这几招,彻底解决系统故障-win10开机黑屏...
- spring jsm(一)
- Google地图位置服务Latitude登录Orkut (查看朋友的地理位置)
- 网站建设(5)——博客程序的选择和部署
- 无向图求起点到终点所有路径
热门文章
- debian10RAID5和磁盘加密
- 使用分区助手3.0改变C盘容量图解
- 浙江大学校园网 Ubuntu有线网上网详解
- HTTP—TCP/IP—SOCKET理解及浅析
- python:实现带GUI界面的Youtube下载器(附完整源码)
- twitch.tv android apk,Tubio - Cast Web Videos to TV APK
- 超级电容作为备用电源使用及其注意点
- Jenkins安装配置及插件安装使用
- 计算机科学原理ap关于什么,3分钟读懂AP计算机科学原理和计算机科学A的区别!...
- Y6(YT699)加密狗软件锁开发工具