本文主要是介绍python box-cox变换 记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
from scipy import stats
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
import warningswarnings.filterwarnings('ignore')# 生成帕累托分布数据
data1 = stats.lomax(c=14).rvs(size=500)
print(data1)
fig = plt.figure(figsize=(10, 8))
plt.subplot(2, 2, 1)
sns.distplot(data1)
# 进行boxcox变换
conv_data1 = stats.boxcox(data1)[0]
plt.subplot(2, 2, 2)
sns.distplot(conv_data1)# QQ图对比
plt.subplot(2, 2, 3)
stats.probplot(data1, plot=plt)
plt.subplot(2, 2, 4)
stats.probplot(conv_data1, plot=plt)plt.close()
# 测试指数分布进行boxcox变换
state = np.random.RandomState(20)
data2 = state.exponential(size=500)
conv_data2 = stats.boxcox(data2)[0] # 数据是返回值的第一个分量
plt.figure(figsize=(10, 8))
plt.subplot(2, 2, 1)
stats.probplot(data2, dist='norm', plot=plt)
plt.subplot(2, 2, 2)
stats.probplot(conv_data2, dist='norm', plot=plt)
plt.subplot(2, 2, 3)
sns.distplot(data2)
plt.subplot(2, 2, 4)
sns.distplot(conv_data2)
plt.show()
这篇关于python box-cox变换 记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!