成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文帶您了解偽對數(Pseudo-Log):可視化傾斜數據的黃金方法

大數據 數據分析
經典對數變換不能處理零和負數,而偽對數變換可以應對這一問題。偽對數在所有實數上都有定義,并能平滑過渡。本文通過比較偽對數和經典對數變換,展示了偽對數在處理和可視化偏斜數據中的優越性。通過實例數據,顯示偽對數變換能夠有效地改善數據分布和可視化效果,使得數據展示更加清晰。

偏斜數據是指分布高度不均勻的數據:當變量數據顯示為直方圖時,大部分數據點要么聚集在分布的左側,長尾向右延伸(右偏斜),要么反之(左偏斜),或呈現更復雜的偏斜模式。偏斜數據對可視化,特別是熱力圖的繪制,提出了很大的挑戰。通常情況下,人們會使用對數變換來處理這些數據。然而,經典對數變換無法處理零或負數,而偽對數變換則能夠更好地處理和可視化這些數據。

為什么使用偽對數?

經典對數對零和負值無定義,這限制了其在許多應用中的使用。相比之下,偽對數(Pseudo-Logarithm)修正了經典對數的這一限制:它對所有實數都有定義,對于大絕對值使用帶符號的對數,并在底數趨近于零時平滑過渡到零。

以10為底的偽對數(pseudo-log10)的定義是:

在下面的代碼和圖中,x軸上的值通過偽對數10變換映射到y軸上,用藍線表示。相比之下,經典的對數10變換則用黑線繪制。

import numpy as np
import matplotlib.pyplot as plt


# 偽對數10變換函數
def pseudo_log10(x):
    return np.log(x/2+np.sqrt(x*x/4+1))/np.log(10)


# 定義數據
x = np.linspace(-15, 15, 400)
y_pseudo_log10 = pseudo_log10(x)
y_log10 = np.log10(x[200:])  


# 創建圖形
plt.figure(figsize=(10, 6))


# 繪制偽對數10變換的曲線,繪制經典對數10變換的曲線
plt.plot(x, y_pseudo_log10, label='Pseudo-log10 Transformation', color='blue')
plt.plot(x[200:], y_log10, label='Classic log10 Transformation', color='black')


# 添加圖例
plt.legend()


# 添加標題和標簽
plt.title('Comparison of Pseudo-log10 and Classic log10 Transformations')
plt.xlabel('x')
plt.ylabel('Transformed value')


# 顯示圖形
plt.grid(True)
plt.show()

該圖展示了偽對數變換的一些良好特性:

  • 偽 log10(x) 在所有實數上都有定義。
  • 偽 log10(0) = 0
  • 如果 x ? 0,則偽 log10(x) ≈ log10(x)
  • 如果 x ? 0,則偽 log10(x) ≈ ?log10(|x|)

類似地,任何底數為b的偽對數(偽對數b)可定義如下:

偽對數b (x) 具有以下性質:

  • 偽對數b (0) = 0
  • 如果 x ? 0,則偽對數b (x) ≈ log b (x)
  • 如果 x ? 0,則偽對數b (x) ≈ ?log b (|x|)

數據可視化中的偽對數

對數變換是處理廣泛分布數據的常用方法。它將數據轉換為更規范的分布,從而更容易可視化。我們先看一下對數變換和偽對數變換對分布的影響(沒有找到合適的數據,下面數據是生成的):

import numpy as np
import matplotlib.pyplot as plt


# 生成1000個來自右偏分布的樣本
data = np.random.exponential(scale=2, size=1000)


# 定義偽對數變換函數
def pseudo_log(x):
    return np.log(x/2+np.sqrt(x*x/4+1))/np.log(10)


# 對數據應用變換
log_data = np.log(data)
pseudo_log_data = pseudo_log(data)


# 繪制原始數據、對數變換數據和偽對數變換數據
plt.figure(figsize=(12, 8))


# 繪制原始數據
plt.subplot(3, 1, 1)
plt.hist(data, bins=50, color='blue', alpha=0.7, label='Original Data')
plt.legend()
plt.title('Original Data')


# 繪制對數變換數據
plt.subplot(3, 1, 2)
plt.hist(log_data, bins=50, color='green', alpha=0.7, label='Log-Transformed Data')
plt.legend()
plt.title('Log-Transformed Data')


# 繪制偽對數變換數據
plt.subplot(3, 1, 3)
plt.hist(pseudo_log_data, bins=50, color='red', alpha=0.7, label='Pseudo-Log-Transformed Data')
plt.legend()
plt.title('Pseudo-Log-Transformed Data')


plt.tight_layout()
plt.show()

偽對數變換對熱力圖可視化的效果影響:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


# Simulate some population density data with a wider range
np.random.seed(42)
data = np.concatenate([np.random.lognormal(mean=0, sigma=2.0, size=(10, 20)), 
                       0-np.random.lognormal(mean=0, sigma=2.0, size=(10, 20))])


# Function to plot the heatmaps
def plot_heatmaps(data):
    fig, axes = plt.subplots(1, 3, figsize=(18, 6))
    
    # Linear color scale
    sns.heatmap(data, ax=axes[0], cmap='viridis', cbar_kws={'label': 'population density / km2'})
    axes[0].set_title('Linear color scale')


    # Log10 transformation
    log_data = np.log10(data + 1)
    sns.heatmap(log_data, ax=axes[1], cmap='viridis', cbar_kws={'label': 'log10(population density / km2)'})
    axes[1].set_title('log10 transformation')
    
    # Pseudo-log transformation (log + sqrt)
    pseudo_log_data = np.log(data + np.sqrt(data**2 + 1))
    sns.heatmap(pseudo_log_data, ax=axes[2], cmap='viridis', cbar_kws={'label': 'pseudo-log(population density / km2)'})
    axes[2].set_title('pseudo-log transformation')
    
    plt.tight_layout()
    plt.show()


plot_heatmaps(data)

下圖是https://www.databrewer.co/blog/pseudo-log-transformation 上面的R語言生成的示例圖:

偏斜數據是分布不均的數據,對可視化,特別是熱力圖繪制提出了挑戰。經典對數變換不能處理零和負數,而偽對數變換可以應對這一問題。偽對數在所有實數上都有定義,并能平滑過渡。本文通過比較偽對數和經典對數變換,展示了偽對數在處理和可視化偏斜數據中的優越性。通過實例數據,顯示偽對數變換能夠有效地改善數據分布和可視化效果,使得數據展示更加清晰。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2017-06-02 15:32:09

大數據數據可視化

2020-06-05 14:15:29

可視化數據集分析

2024-05-21 09:45:40

機器學習人工智能XAI

2025-04-30 10:36:17

2017-04-19 08:32:50

大數據數據可視化編程工具

2024-10-06 14:01:47

Python裝飾器對象編程

2025-01-06 07:54:13

SPC控制圖工具

2023-12-26 07:33:45

Redis持久化COW

2023-07-26 07:22:32

2023-07-31 07:25:27

2024-03-12 17:54:55

容器類型Init

2024-07-11 12:14:20

Pythonmapfilter

2024-07-31 15:11:57

SymPypython數學運算

2024-04-17 08:46:17

數據分析工具WoE

2024-08-19 00:01:00

2024-05-13 11:25:08

概念模型邏輯模型物理模型

2022-08-18 15:52:13

開發者阿里云

2020-08-27 07:34:50

Zookeeper數據結構

2021-10-20 15:56:44

深信服

2020-11-30 13:55:23

去中心化區塊鏈治理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天人人精品 | 亚洲欧洲中文日韩 | 国内久久精品 | 成人高清在线 | 亚洲一区视频在线播放 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 亚洲成人精品在线 | 中文字幕乱码视频32 | 欧美成人a | 欧美乱人伦视频 | 自拍第一页 | 国产精品www | 亚洲免费人成在线视频观看 | 免费看国产片在线观看 | 黄色大片免费播放 | 中文字幕久久精品 | 999精品视频在线观看 | 日韩一区二区三区四区五区 | 国产精品免费一区二区 | 亚洲自拍偷拍免费视频 | 羞羞视频网站免费观看 | www.天天干.com| 精品国产91久久久久久 | 亚洲精品久久久一区二区三区 | 国产精品日韩一区 | 中文亚洲视频 | 国产97在线视频 | 国产精品久久国产精品 | 精品一二区 | 日本a v在线播放 | 中文字幕一区二区三区四区五区 | 国产美女永久免费无遮挡 | 亚洲高清免费观看 | 国产91av视频在线观看 | 亚洲高清久久 | 欧美日一区二区 | 日本精品一区二区三区在线观看视频 | 91精品国产欧美一区二区 | 性一爱一乱一交一视频 | 午夜在线电影网 | 网黄在线 |