首页 > 解决方案 > 将某种指数分布转换为正态分布

问题描述

我有以下指数分布,使用以下代码生成:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import random

np.random.seed(1)
tags_ratio = np.random.exponential(1/25, 1000)
plt.hist(tags_ratio, range=(0, 1), bins=100)
plt.show()

在此处输入图像描述

我正在尝试将我的数据转换tags_ratio为正态分布,但没有成功。

尝试使用 log 函数和 square 函数。它给出了不错的结果。但我对更多的想法很感兴趣。也许更复杂。

标签: pythonnumpyscipy

解决方案


您可以尝试看看这是否有帮助:

from scipy.stats import boxcox
tags_ratio = boxcox(tags_ratio, 0.3)
plt.hist(tags_ratio)
plt.show()

结果:

在此处输入图像描述

有关 Box-Cox 的更多解释和理论,请单击此处。


推荐阅读