亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python熱力圖實現(xiàn)的完整實例

 更新時間:2022年06月24日 11:45:58   作者:boy918.  
熱力圖的使用場景有描述數(shù)據(jù)在空間的密集程度,常見有城市熱力圖、區(qū)域熱力圖,描述多個變量之間相關性高低程度,這篇文章主要給大家介紹了關于python熱力圖實現(xiàn)的相關資料,需要的朋友可以參考下

一、數(shù)據(jù)無量綱化處理 (熱力圖)

1.數(shù)據(jù)無量綱化處理(僅介紹本文用到的方法):min-max歸一化

該方法是對原始數(shù)據(jù)進行線性變換,將其映射到[0,1]之間,該方法也被稱為離差標準化。

上式中,min是樣本的最小值,max是樣本的最大值。由于最大值與最小值可能是動態(tài)變化的,同時也非常容易受噪聲(異常點、離群點)影響,因此一般適合小數(shù)據(jù)的場景。此外,該方法還有兩點好處:

   1) 如果某屬性/特征的方差很小,如身高:np.array([[1.70],[1.71],[1.72],[1.70],[1.73]]),實際5條數(shù)據(jù)在身高這個特征上是有差異的,但是卻很微弱,這樣不利于模型的學習,進行min-max歸一化后為:array([[ 0. ], [ 0.33333333], [ 0.66666667], [ 0. ], [ 1. ]]),相當于放大了差異;

   2) 維持稀疏矩陣中為0的條目。

2.代碼展示

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_wine
 
wine = load_wine()
data = wine.data  # 數(shù)據(jù)
lables = wine.target  # 標簽
feaures = wine.feature_names
df = pd.DataFrame(data, columns=feaures)  # 原始數(shù)據(jù)
 
# 第一步:無量綱化
def standareData(df):
    """
    df : 原始數(shù)據(jù)
    return : data 標準化的數(shù)據(jù)
    """
    data = pd.DataFrame(index=df.index)  # 列名,一個新的dataframe
    columns = df.columns.tolist()  # 將列名提取出來
    for col in columns:
        d = df[col]
        max = d.max()
        min = d.min()
        mean = d.mean()
        data[col] = ((d - mean) / (max - min)).tolist()
    return data
 
#  某一列當做參照序列,其他為對比序列
def graOne(Data, m=0):
    """
    return:
    """
    columns = Data.columns.tolist()  # 將列名提取出來
    # 第一步:無量綱化
    data = standareData(Data)
    referenceSeq = data.iloc[:, m]  # 參考序列
    data.drop(columns[m], axis=1, inplace=True)  # 刪除參考列
    compareSeq = data.iloc[:, 0:]  # 對比序列
    row, col = compareSeq.shape
    # 第二步:參考序列 - 對比序列
    data_sub = np.zeros([row, col])
    for i in range(col):
        for j in range(row):
            data_sub[j, i] = abs(referenceSeq[j] - compareSeq.iloc[j, i])
    # 找出最大值和最小值
    maxVal = np.max(data_sub)
    minVal = np.min(data_sub)
    cisi = np.zeros([row, col])
    for i in range(row):
        for j in range(col):
            cisi[i, j] = (minVal + 0.5 * maxVal) / (data_sub[i, j] + 0.5 * maxVal)
    # 第三步:計算關聯(lián)度
    result = [np.mean(cisi[:, i]) for i in range(col)]
    result.insert(m, 1)  # 參照列為1
    return pd.DataFrame(result)
 
def GRA(Data):
    df = Data.copy()
    columns = [str(s) for s in df.columns if s not in [None]]  # [1 2 ,,,12]
    # print(columns)
    df_local = pd.DataFrame(columns=columns)
    df.columns = columns
    for i in range(len(df.columns)):  # 每一列都做參照序列,求關聯(lián)系數(shù)
        df_local.iloc[:, i] = graOne(df, m=i)[0]
    df_local.index = columns
    return df_local
 
# 熱力圖展示
def ShowGRAHeatMap(DataFrame):
    colormap = plt.cm.hsv
    ylabels = DataFrame.columns.values.tolist()
    f, ax = plt.subplots(figsize=(15, 15))
    ax.set_title('Wine GRA')
    # 設置展示一半,如果不需要注釋掉mask即可
    mask = np.zeros_like(DataFrame)
    mask[np.triu_indices_from(mask)] = True  # np.triu_indices 上三角矩陣
 
    with sns.axes_style("white"):
        sns.heatmap(DataFrame,
                    cmap="YlGnBu",
                    annot=True,
                    mask=mask,
                    )
    plt.show()
 
data_wine_gra = GRA(df)
ShowGRAHeatMap(data_wine_gra)

3.效果展示

二、皮爾斯系數(shù)相關(熱力圖)

1.數(shù)學知識

利用熱力圖可以看數(shù)據(jù)表里多個特征兩兩的相似度。

相似度由皮爾遜相關系數(shù)度量。

兩個變量之間的皮爾遜相關系數(shù)定義為兩個變量之間的協(xié)方差和標準差的商:

2.代碼展示

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
 
# ====熱力圖
from matplotlib.ticker import FormatStrFormatter
encoding="utf-8"
data = pd.read_csv("tu.csv", encoding="utf-8")     #讀取數(shù)據(jù)
data.drop_duplicates()
data.columns = [i for i in range(data.shape[1])]
 
# 計算兩兩屬性之間的皮爾森相關系數(shù)
corrmat = data.corr()
f, ax = plt.subplots(figsize=(12, 9))
 
# 返回按“列”降序排列的前n行
k = 30
cols = corrmat.nlargest(k, data.columns[0]).index
 
# 返回皮爾遜積矩相關系數(shù)
cm = np.corrcoef(data[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm,
                 cbar=True,
                 annot=True,
                 square=True,
                 fmt=".3f",
                 vmin=0,             #刻度閾值
                 vmax=1,
                 linewidths=.5,
                 cmap="RdPu",        #刻度顏色
                 annot_kws={"size": 10},
                 xticklabels=True,
                 yticklabels=True)             #seaborn.heatmap相關屬性
# 解決中文顯示問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# plt.ylabel(fontsize=15,)
# plt.xlabel(fontsize=15)
plt.title("主要變量之間的相關性強弱", fontsize=20)
plt.show()

3.seaborn.heatmap屬性介紹

1)Seaborn是基于matplotlib的Python可視化庫

seaborn.heatmap()熱力圖,用于展示一組變量的相關系數(shù)矩陣,列聯(lián)表的數(shù)據(jù)分布,通過熱力圖我們可以直觀地看到所給數(shù)值大小的差異狀況。

seaborn.heatmap(data, vmin=None, 
vmax=None, cmap=None, center=None, 
robust=False, annot=None, fmt='.2g', 
annot_kws=None, linewidths=0, linecolor='white',
 cbar=True, cbar_kws=None, cbar_ax=None, 
square=False, xticklabels='auto', yticklabels='auto',
 mask=None, ax=None, **kwargs)

2)參數(shù)輸出(均為默認值)

sns.heatmap(
      data,
      vmin=None,
      vmax=None,
      cmap=None,
      center=None,
      robust=False,
      annot=None,
      fmt='.2g',
      annot_kws=None,
      linewidths=0,
      linecolor=‘white',
      cbar=True,
      cbar_kws=None,
      cbar_ax=None,
      square=False,
      xticklabels=‘auto',
      yticklabels=‘auto',
      mask=None,
      ax=None,
)

3)具體介紹

(1)熱力圖輸入數(shù)據(jù)參數(shù)

data:矩陣數(shù)據(jù)集,可以是numpy的數(shù)組(array),也可以是pandas的DataFrame。如果是DataFrame,則df的index/column信息會分別對應到heatmap的columns和rows,即df.index是熱力圖的行標,df.columns是熱力圖的列標

(2)熱力圖矩陣塊顏色參數(shù)

vmax,vmin:分別是熱力圖的顏色取值最大和最小范圍,默認是根據(jù)data數(shù)據(jù)表里的取值確定
cmap:從數(shù)字到色彩空間的映射,取值是matplotlib包里的colormap名稱或顏色對象,或者表示顏色的列表;改參數(shù)默認值:根據(jù)center參數(shù)設定
center:數(shù)據(jù)表取值有差異時,設置熱力圖的色彩中心對齊值;通過設置center值,可以調整生成的圖像顏色的整體深淺;設置center數(shù)據(jù)時,如果有數(shù)據(jù)溢出,則手動設置的vmax、vmin會自動改變
robust:默認取值False;如果是False,且沒設定vmin和vmax的值,熱力圖的顏色映射范圍根據(jù)具有魯棒性的分位數(shù)設定,而不是用極值設定

(3)熱力圖矩陣塊注釋參數(shù)

annot(annotate的縮寫):默認取值False;如果是True,在熱力圖每個方格寫入數(shù)據(jù);如果是矩陣,在熱力圖每個方格寫入該矩陣對應位置數(shù)據(jù)
fmt:字符串格式代碼,矩陣上標識數(shù)字的數(shù)據(jù)格式,比如保留小數(shù)點后幾位數(shù)字
annot_kws:默認取值False;如果是True,設置熱力圖矩陣上數(shù)字的大小顏色字體,matplotlib包text類下的字體設置;

(4)熱力圖矩陣塊之間間隔及間隔線參數(shù)

linewidths:定義熱力圖里“表示兩兩特征關系的矩陣小塊”之間的間隔大小
linecolor:切分熱力圖上每個矩陣小塊的線的顏色,默認值是’white’

(5)熱力圖顏色刻度條參數(shù)

cbar:是否在熱力圖側邊繪制顏色刻度條,默認值是True
cbar_kws:熱力圖側邊繪制顏色刻度條時,相關字體設置,默認值是None
cbar_ax:熱力圖側邊繪制顏色刻度條時,刻度條位置設置,默認值是None

(6)square:設置熱力圖矩陣小塊形狀,默認值是False

xticklabels, yticklabels:xticklabels控制每列標簽名的輸出;yticklabels控制每行標簽名的輸出。默認值是auto。如果是True,則以DataFrame的列名作為標簽名。如果是False,則不添加行標簽名。如果是列表,則標簽名改為列表中給的內容。如果是整數(shù)K,則在圖上每隔K個標簽進行一次標注。 如果是auto,則自動選擇標簽的標注間距,將標簽名不重疊的部分(或全部)輸出
mask:控制某個矩陣塊是否顯示出來。默認值是None。如果是布爾型的DataFrame,則將DataFrame里True的位置用白色覆蓋掉
ax:設置作圖的坐標軸,一般畫多個子圖時需要修改不同的子圖的該值
**kwargs:所有其他關鍵字參數(shù)都傳遞給 ax.pcolormesh。

4效果展示

總結

到此這篇關于python熱力圖實現(xiàn)的文章就介紹到這了,更多相關python熱力圖實現(xiàn)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python flask解析json數(shù)據(jù)不完整的解決方法

    python flask解析json數(shù)據(jù)不完整的解決方法

    這篇文章主要介紹了python flask解析json數(shù)據(jù)不完整的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Python實現(xiàn)進程同步和通信的方法

    Python實現(xiàn)進程同步和通信的方法

    本篇文章主要介紹了Python實現(xiàn)進程同步和通信的方法,詳細的介紹了Process、Queue、Pipe、Lock等組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 一步步教你用Python畫五彩氣球

    一步步教你用Python畫五彩氣球

    這篇文章主要給大家介紹了關于如何用Python畫五彩氣球的相關資料,主要是用turtle庫自帶的畫筆turtle.Turtle()來繪制氣球,文中給出了詳細的實例代碼,需要的朋友可以參考下
    2023-06-06
  • Python+Selenium定位不到元素常見原因及解決辦法(報:NoSuchElementException)

    Python+Selenium定位不到元素常見原因及解決辦法(報:NoSuchElementException)

    這篇文章主要介紹了Python+Selenium定位不到元素常見原因及解決辦法(報:NoSuchElementException),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!

    Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!

    看電影前很多人都喜歡去 『豆瓣』 看影評,所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關系,需要的朋友可以參考下
    2021-06-06
  • python 字典d[k]中key不存在的解決方案

    python 字典d[k]中key不存在的解決方案

    本文主要介紹了在Python中處理字典鍵不存在時獲取默認值的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • python os庫使用示例教程

    python os庫使用示例教程

    這篇文章主要介紹了python os庫使用示例教程,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Flask搭建api服務的實現(xiàn)步驟

    Flask搭建api服務的實現(xiàn)步驟

    本文主要介紹了Flask搭建api服務的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • python3使用matplotlib繪制條形圖

    python3使用matplotlib繪制條形圖

    這篇文章主要為大家詳細介紹了python3使用matplotlib繪制條形圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python matplotlib工具欄源碼探析三之添加、刪除自定義工具項的案例詳解

    python matplotlib工具欄源碼探析三之添加、刪除自定義工具項的案例詳解

    這篇文章主要介紹了python matplotlib工具欄源碼探析三之添加、刪除自定義工具項的案例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論