日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python实现 灰色关联分析 与结果可视化

發布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python实现 灰色关联分析 与结果可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前在比賽的時候需要用Python實現灰色關聯分析,從網上搜了下只有實現兩個列之間的,于是我把它改寫成了直接像Pandas中的計算工具直接計算person系數那樣的形式,可以對整個矩陣進行運算,并給出了可視化效果,效果請見實現

作者提醒:部分讀者反應在某些情況下與MATLAB自帶灰色關聯分析結果有較大差距,目前作者尚未對此問題進行檢驗,請謹慎使用

灰色關聯分析法

對于兩個系統之間的因素,其隨時間或不同對象而變化的關聯性大小的量度,稱為關聯度。在系統發展過程中,若兩個因素變化的趨勢具有一致性,即同步變化程度較高,即可謂二者關聯程度較高;反之,則較低。因此,灰色關聯分析方法,是根據因素之間發展趨勢的相似或相異程度,亦即“灰色關聯度”,作為衡量因素間關聯程度的一種方法。

簡介

灰色系統理論提出了對各子系統進行灰色關聯度分析的概念,意圖透過一定的方法,去尋求系統中各子系統(或因素)之間的數值關系。因此,灰色關聯度分析對于一個系統發展變化態勢提供了量化的度量,非常適合動態歷程分析。

計算步驟

  • 確實參考數列與比較數列
  • 對參考數列與比較數列進行無量綱化處理
  • 計算關聯系數,求關聯度
  • 此處我給出的是第三步的實現方式,無量綱化請自己處理.數據使用UCI的紅酒質量數據集.

    代碼實現

    源代碼可以前往 github下載

    下載數據

    import pandas as p import numpy as np from numpy import * import matplotlib.pyplot as plt %matplotlib inline# 從硬盤讀取數據進入內存 wine = pd.read_csv("/home/fonttian/Data/dataset/wine/wine.csv") wine.head()

    實現灰色關聯分析

    灰色關聯分析一共分為了三個部分,這樣比較容易大家隨意摘取部分內容使用,
    第一個方法是無量綱化,我這里選擇的是(x-mean)/(max-min),你也可以替換成其他方法(據我個人了解,一般而言標準化不行)

    第二個部分是計算一個dataframe中單獨某一列灰色關聯分析度的方法,m代表參考列,可以任意選擇。2019-3-26在windows上,個人測試wine數據集上一次運算大概0.3s性能不高不低。不過由于部分代碼是numpy寫的性能確實也比純pandas快很多,我這篇文章下邊長期有一個灰色關聯分析Matlab與python灰色關聯分析,但是其為純pandas寫的,看起來很方便,不過運算時間約為本代碼的一倍,所以假如你想要單獨計算一列,個人還是更推薦我的代碼。但是如果你想要更快的性能,肯定還是自己寫numpy更好

    第三部分,是借助前兩個方法實現的計算矩陣,不過因為計算次數比較多,會比較慢,適合出圖。

    # 無量綱化 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_columnsfor i in range(len(df.columns)):df_local.iloc[:, i] = GRA_ONE(df, m=i)[0]return df_local

    結果可視化

    該部分添加了三角形顯示的功能,注意如果你出現了圖形顯示不全(最后一行顯示一半的問題,是Matplotlib 的一個版本的問題,升級一下即可)。如果你想要顯示全部注釋熱圖方法中的mask參數即可,不過由于本矩陣為全float計算,會帶有舍入誤差,數據量大的時候差異可能會比較大。所以兩中方法各有利弊,請自行選擇。

    # 灰色關聯結果矩陣可視化 # 灰色關聯結果矩陣可視化 import seaborn as snsdef ShowGRAHeatMap(DataFrame):colormap = plt.cm.RdBuylabels = 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)] = Truewith 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實現 灰色關聯分析 與結果可視化
  • 參考文章:百度百科 灰色關聯分析法
  • 參考文章:簡書 Python實現灰色關聯
  • 建議學習:Maximal Information Coefficient (MIC)最大互信息系數詳解與實現
  • 額外說明

    本博客一開始也是我緊急寫的,而第二部分是為了出圖,因此整體代碼采用了pandas為主,混了部分numpy,但是由于pandas本身有問題,很多情況下,直接用pandas的dataframe代替numpy矩陣進行矩陣性能會比循環低(測試版本ubuntu16.04,ubuntu18.04,測試數據0.5k-200k),而我當時也沒什么時間寫全numpy矢量運算,所以最后就成為了現在這種代碼情況。而且該代碼已經適合我個人目前的工作(大數據工程師)需要了,更大規模的數據我是用的spark或者pyspark,因此我短時間內沒有更新numpy版本的需要,不過如果我更新了,也會第一時間發出來,并給出鏈接,這點請放心。

    除此之外,感謝博友piaoyang_的指正

    總結

    以上是生活随笔為你收集整理的Python实现 灰色关联分析 与结果可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品中文字幕一区二区三区 | av合集 | 成人天堂 | 日韩三级在线免费观看 | 一道本一区二区 | 亚洲成年人在线 | 黄色动漫在线观看 | 国产精品入口夜色视频大尺度 | 久艹在线观看 | 日韩亚洲精品视频 | 美女脱光内衣内裤 | 国产91网址| www.欧美在线观看 | 欧美一级黄色录像 | 午夜激情视频在线 | 精品一区二区三区入口 | 国产色播 | 在线综合网| 人人看超碰 | 国产精品成人在线 | 一级做a爰片久久毛片 | 中文字幕电影一区二区 | 免费网站91 | 国产在线欧美日韩 | 极品毛片 | 久久奇米| 青青视频免费在线观看 | 最新中文字幕在线 | 午夜影音| 推特裸体gay猛交gay | 日本成人免费在线视频 | 无码人妻精品一区二区三区66 | 午夜插插 | 成人黄色三级 | 国产精品无码久久久久一区二区 | 中文字幕在线播放 | 极品三级 | 少妇毛片视频 | 超碰最新上传 | а√天堂8资源中文在线 | 美女被猛网站 | 在线看片你懂得 | 亚洲福利在线视频 | 99爱在线观看 | 欧美特黄一级视频 | 国产精品自拍片 | 亚洲精选在线观看 | 日韩福利视频在线观看 | 啪啪.com| 亚洲欧洲综合 | 日本少妇中出 | www日本www | 调教撅屁股啪调教打臀缝av | 农村妇女一区二区 | 在线观看视频99 | 日本中文字幕在线 | 海角社区在线视频播放观看 | 久久免费的精品国产v∧ | 一本色道久久综合亚洲精品 | 成人免费看片98 | 国产成人aaaa | av毛片在线免费看 | 国语精品久久 | 日本久久网 | 国产视频久久久 | 超碰女人| 日韩精品免费一区 | 国产av不卡一区二区 | 环太平洋3:泰坦崛起 | 黄色三级小说 | 中文字幕2018 | 91se在线 | 巨胸爆乳美女露双奶头挤奶 | 欧美影视一区二区 | 国产日韩欧美中文字幕 | 国产xxxxx | 天天综合网天天综合色 | 国产 日韩 欧美 在线 | 精品少妇人妻av一区二区三区 | 亚洲成人福利视频 | 国产精品久久影院 | 国产精品精品视频 | 日韩一级精品 | 91精品人妻一区二区三区四区 | 欧美88av| 亚洲区视频在线观看 | 涩涩资源网 | 韩国av在线免费观看 | 老版水浒传83版免费播放 | 综合激情视频 | 中文字幕日产乱码中 | 精品人妻伦一二三区免费 | 免费国产区| 日韩电影一区二区三区四区 | 欧美黑人性生活 | 好男人www日本 | 国产精品区一区二 | 国产第一页在线观看 | 久久精品亚洲精品国产欧美 |