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 တွင်အစွန်းထွက်ကြောင်းကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။

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

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

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