Python ရှိ mahalanobis အကွာအဝေးကို တွက်နည်း
Mahalanobis အကွာအဝေး သည် အမျိုးမျိုးကွဲပြားသောနေရာတစ်ခုရှိ အမှတ်နှစ်ခုကြားအကွာအဝေးဖြစ်သည်။ ကိန်းရှင်များစွာပါ၀င်သော စာရင်းအင်းခွဲခြမ်းစိတ်ဖြာမှုတွင် အစွန်းထွက်များကို ရှာဖွေရန် ၎င်းကို မကြာခဏအသုံးပြုသည်။
ဤသင်ခန်းစာတွင် Python ရှိ Mahalanobis အကွာအဝေးကို တွက်ချက်နည်းကို ရှင်းပြထားသည်။
ဥပမာ- Python ရှိ Mahalanobis အကွာအဝေး
Python ရှိ ဒေတာအတွဲတစ်ခုတွင် ကြည့်ရှုမှုတစ်ခုစီအတွက် Mahalanobis အကွာအဝေးကို တွက်ချက်ရန် အောက်ပါအဆင့်များကို အသုံးပြုပါ။
အဆင့် 1: ဒေတာအတွဲကို ဖန်တီးပါ။
ပထမဦးစွာ၊ ကျောင်းသား 20 ၏ စာမေးပွဲရမှတ်များကို ဖော်ပြမည့် ဒေတာအတွဲတစ်ခု ဖန်တီးပြီး ၎င်းတို့သည် ၎င်းတို့လေ့လာခဲ့သည့် နာရီအရေအတွက်၊ ၎င်းတို့ဖြေဆိုခဲ့သည့် လက်တွေ့စာမေးပွဲအရေအတွက်နှင့် သင်တန်းတွင် ၎င်းတို့၏ လက်ရှိအတန်းများကို ဖော်ပြသည်-
import numpy as np import pandas as pd import scipy as stats data = {'score': [91, 93, 72, 87, 86, 73, 68, 87, 78, 99, 95, 76, 84, 96, 76, 80, 83, 84, 73, 74], 'hours': [16, 6, 3, 1, 2, 3, 2, 5, 2, 5, 2, 3, 4, 3, 3, 3, 4, 3, 4, 4], 'prep': [3, 4, 0, 3, 4, 0, 1, 2, 1, 2, 3, 3, 3, 2, 2, 2, 3, 3, 2, 2], 'grade': [70, 88, 80, 83, 88, 84, 78, 94, 90, 93, 89, 82, 95, 94, 81, 93, 93, 90, 89, 89] } df = pd.DataFrame(data,columns=['score', 'hours', 'prep','grade']) df.head() score hours prep grade 0 91 16 3 70 1 93 6 4 88 2 72 3 0 80 3 87 1 3 83 4 86 2 4 88
အဆင့် 2- စူးစမ်းမှုတစ်ခုစီအတွက် Mahalanobis အကွာအဝေးကို တွက်ချက်ပါ။
ထို့နောက် Mahalanobis အကွာအဝေးကို တွက်ချက်ရန် အတိုချုံးလုပ်ဆောင်ချက်ကို ရေးပါမည်။
#create function to calculate Mahalanobis distance def mahalanobis(x= None , data= None , cov= None ): x_mu = x - np.mean(data) if not cov: cov = np.cov(data.values.T) inv_covmat = np.linalg.inv(cov) left = np.dot(x_mu, inv_covmat) mahal = np.dot(left, x_mu.T) return mahal.diagonal() #create new column in dataframe that contains Mahalanobis distance for each row df['mahalanobis'] = mahalanobis(x=df, data=df[['score', 'hours', 'prep', 'grade']]) #display first five rows of dataframe df.head() score hours prep grade mahalanobis 0 91 16 3 70 16.501963 1 93 6 4 88 2.639286 2 72 3 0 80 4.850797 3 87 1 3 83 5.201261 4 86 2 4 88 3.828734
အဆင့် 3- Mahalanobis အကွာအဝေးတစ်ခုစီအတွက် p-တန်ဖိုးကို တွက်ချက်ပါ။
အချို့သော Mahalanobis အကွာအဝေးများသည် အခြားအရာများထက် များစွာကြီးမားသည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။ အကွာအဝေးများမှ ကိန်းဂဏန်းအရ သိသာထင်ရှားမှုရှိမရှိ ဆုံးဖြတ်ရန်၊ ၎င်းတို့၏ p-တန်ဖိုးများကို တွက်ချက်ရန် လိုအပ်သည်။
အကွာအဝေးတစ်ခုစီအတွက် p-တန်ဖိုးကို Mahalanobis အကွာအဝေး၏ Chi-square ကိန်းဂဏန်းနှင့် သက်ဆိုင်သည့် p-value အဖြစ် တွက်ချက်ထားပြီး၊ k = ကိန်းရှင်အရေအတွက်၊ ထို့ကြောင့် ဤကိစ္စတွင် ကျွန်ုပ်တို့သည် လွတ်လပ်မှုဒီဂရီ 4-1 = 3 ကိုသုံးပါမည်။
from scipy.stats import chi2 #calculate p-value for each mahalanobis distance df['p'] = 1 - chi2.cdf(df['mahalanobis'], 3) #display p-values for first five rows in dataframe df.head() score hours prep grade mahalanobis p 0 91 16 3 70 16.501963 0.000895 1 93 6 4 88 2.639286 0.450644 2 72 3 0 80 4.850797 0.183054 3 87 1 3 83 5.201261 0.157639 4 86 2 4 88 3.828734 0.280562
ယေဘူယျအားဖြင့်၊ 0.001 ထက်နည်းသော p-value ကို outlier အဖြစ်သတ်မှတ်သည်။ p-value သည် 0.001 ထက်နည်းသောကြောင့် ပထမအကြိမ်လေ့လာချက်သည် dataset တွင်အစွန်းထွက်ကြောင်းကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။
ပြဿနာ၏ ဆက်စပ်မှုအပေါ်မူတည်၍ ၎င်းသည် သာလွန်ပြီး ခွဲခြမ်းစိတ်ဖြာမှုရလဒ်များကို ထိခိုက်စေနိုင်သောကြောင့် ဤလေ့လာချက်ကို ဒေတာအတွဲမှ ဖယ်ရှားရန် သင်ဆုံးဖြတ်နိုင်ပါသည်။