Python တွင် box-cox အသွင်ပြောင်းနည်း


box-cox အသွင်ပြောင်းခြင်းသည် ပုံမှန်မဟုတ်သော ဖြန့်ဝေထားသောဒေတာအစုံကို ပိုမို သာမာန်ဖြန့်ဝေမှု အစုအဖြစ်သို့ ပြောင်းလဲရန်အတွက် အသုံးများသောနည်းလမ်းဖြစ်သည်။

ဤနည်းလမ်း၏နောက်ကွယ်တွင် အခြေခံအယူအဆမှာ အောက်ပါဖော်မြူလာကို အသုံးပြု၍ ပြောင်းလဲထားသောဒေတာသည် ပုံမှန်ဖြန့်ဝေမှုအတိုင်း ဖြစ်နိုင်ချေနီးစပ်သည့် λ တန်ဖိုးတစ်ခုကို ရှာဖွေရန်ဖြစ်သည်-

  • y(λ) = (y λ – 1) / λ ဆိုလျှင် y ≠ 0
  • y(λ) = log(y) ဆိုရင် y = 0

scipy.stats.boxcox() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ Python တွင် box-cox အသွင်ပြောင်းခြင်းကို လုပ်ဆောင်နိုင်သည်။

အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။

ဥပမာ- Python တွင် Box-Cox အသွင်ပြောင်းခြင်း။

ထပ်ကိန်းခွဲဝေမှု တစ်ခုမှ ကျွန်ုပ်တို့သည် ကျပန်းတန်ဖိုး 1000 ကို ထုတ်ပေးသည်ဆိုပါစို့။

 #load necessary packages
import numpy as np 
from scipy. stats import boxcox 
import seaborn as sns 

#make this example reproducible
n.p. random . seeds (0)

#generate dataset
data = np. random . exponential (size= 1000 )

#plot the distribution of data values
sns. distplot (data, hist= False , kde= True ) 

ဖြန့်ဖြူးမှုသည် ပုံမှန်မဟုတ်ကြောင်း ကျွန်ုပ်တို့ မြင်နိုင်သည်။

ပိုမိုသာမာန်ဖြန့်ဖြူးမှုကိုထုတ်ပေးသည့် lambda ၏အကောင်းဆုံးတန်ဖိုးကိုရှာဖွေရန် boxcox() လုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်-

 #perform Box-Cox transformation on original data
transformed_data, best_lambda = boxcox(data) 

#plot the distribution of the transformed data values
sns. distplot (transformed_data, hist= False , kde= True ) 

Python တွင် Box-Cox အသွင်ပြောင်းခြင်း။

အသွင်ပြောင်းဒေတာသည် သာမန်ထက်ပို၍ ဖြန့်ဝေမှုနောက်ဆက်တွဲဖြစ်ကြောင်း ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။

Box-Cox အသွင်ပြောင်းရာတွင် အသုံးပြုသည့် lambda တန်ဖိုး အတိအကျကိုလည်း ကျွန်ုပ်တို့ ရှာဖွေနိုင်သည်-

 #display optimal lambda value
print (best_lambda)

0.2420131978174143

အကောင်းဆုံး lambda ကို 0.242 ဝန်းကျင်တွင် တွေ့ရှိခဲ့သည်။

ထို့ကြောင့်၊ ဒေတာတန်ဖိုးတစ်ခုစီသည် အောက်ပါညီမျှခြင်းကို အသုံးပြု၍ ပြောင်းလဲခဲ့သည်-

အသစ် = (အဟောင်း 0.242 – 1) / 0.242

မူရင်းဒေတာ၏တန်ဖိုးများကို ကြည့်ခြင်းဖြင့် အသွင်ပြောင်းဒေတာကို ကျွန်ုပ်တို့အတည်ပြုနိုင်သည်-

 #view first five values of original dataset
data[0:5]

array([0.79587451, 1.25593076, 0.92322315, 0.78720115, 0.55104849])

#view first five values of transformed dataset
transformed_data[0:5]

array([-0.22212062, 0.23427768, -0.07911706, -0.23247555, -0.55495228])

မူရင်းဒေတာအတွဲတွင် ပထမဆုံးတန်ဖိုးမှာ 0.79587 ဖြစ်သည်။ ထို့ကြောင့်၊ ဤတန်ဖိုးကို ပြောင်းလဲရန် အောက်ပါဖော်မြူလာကို ကျွန်ုပ်တို့ အသုံးပြုခဲ့သည်-

အသစ် = (.79587 0.242 – 1) / 0.242 = -0.222

ပြောင်းလဲထားသောဒေတာအတွဲရှိ ပထမတန်ဖိုးသည် အမှန်ပင် -0.222 ဖြစ်ကြောင်း ကျွန်ုပ်တို့ အတည်ပြုနိုင်ပါသည်။

ထပ်လောင်းအရင်းအမြစ်များ

Python တွင် QQ Plot တစ်ခုကို ဖန်တီးပြီး အဓိပါယ်ဖွင့်နည်း
Python တွင် Shapiro-Wilk Normality Test ကို မည်သို့လုပ်ဆောင်ရမည်နည်း။

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်