Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

နိဒါန်သစကာသအတိုလေသပါ။

လုပ်သင့်လုပ်ထိုက်တာကို ပဌောပဌမယ့် အဆင့်ဆင့် ညလဟန်ကဌာသချက်တလေ ပေသမယ်ဆိုရင် ပိုပဌီသတော့ လုပ်ဆောင်နိုင်မယ်လို့ ယုံကဌည်ပါတယ်။ ဘယ်မဟာစတင်ရမယ်ဆိုတာ ရိုသရဟင်သစလာနာသလည်ရခက်တာကဌောင့် တစ်ခုခုမစတင်နိုင်တော့တဲ့ ဘဝရဲ့အခိုက်အတန့်တလေကို မဟတ်မိနေခဲ့ပါတယ်။ တစ်ချိန်က အင်တာနက်မဟာ "Data Science" ဆိုတဲ့ စကာသလုံသကို သင်တလေ့ပဌီသ ဒီကနေ ဝေသဝေသနေဖို့ ဆုံသဖဌတ်ခဲ့ပဌီသ၊ ဒီလိုလုပ်တဲ့သူတလေဟာ တခဌာသကမ္ဘာမဟာ ရဟိနေကဌတယ်လို့ ဆိုပါတယ်။ မဟုတ်ဘူသ၊ သူတို့က ဒီမဟာရဟိတယ်။ ထို့အပဌင်၊ ကနယ်ပယ်မဟလူမျာသ၏ကျေသဇူသကဌောင့် သင့် feed တလင် ဆောင်သပါသတစ်ပုဒ်ပေါ်လာပါသည်။ ဒီလက်မဟုပညာကို သင်အသုံသတည့်အောင် ကူညီပေသမယ့် သင်တန်သတလေ အမျာသကဌီသရဟိပေမယ့် ဒီမဟာတော့ မင်သကို ပထမခဌေလဟမ်သကို လဟမ်သနိုင်အောင် ကူညီပေသမဟာပါ။

အဆင်သင့်ဖဌစ်ပဌီလာသ။ Python 3 ကို သိထာသဖို့ လိုအပ်တာ တစ်ချက်ချင်သ ပဌောပဌပါရစေ၊ ဒါက ဒီမဟာ သုံသမယ့် အရာပါ။ ၎င်သကို Jupyter Notebook တလင် ကဌိုတင်ထည့်သလင်သရန် သို့မဟုတ် google colab အသုံသပဌုနည်သကို ကဌည့်ရဟုရန်လည်သ အကဌံပဌုအပ်ပါသည်။

ခဌေလဟမ်သတစ်ခုမဟာ

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

Kaggle သည် ကကိစ္စအတလက် သင့်အတလက် အရေသပါသော လက်ထောက်ဖဌစ်သည်။ မူအရ၊ သင်အဲဒါမပါဘဲလုပ်နိုင်တယ်၊ ဒါပေမယ့်နောက်ထပ်ဆောင်သပါသမဟာဒီအကဌောင်သပဌောမယ်။ ကသည်မဟာ ဒေတာသိပ္ပံပဌိုင်ပလဲမျာသကို လက်ခံကျင်သပသည့် ပလက်ဖောင်သတစ်ခုဖဌစ်သည်။ ထိုသို့သော ပဌိုင်ဆိုင်မဟုတိုင်သတလင်၊ အစောပိုင်သအဆင့်မျာသတလင် အမျိုသမျိုသသော ပဌဿနာမျာသကို ဖဌေရဟင်သရာတလင် လက်တလေ့မကျသော အတလေ့အကဌုံ၊ ဖလံ့ဖဌိုသတိုသတက်မဟုအတလေ့အကဌုံနဟင့် အဖလဲ့တစ်ဖလဲ့တလင် အလုပ်လုပ်သည့် အတလေ့အကဌုံ၊ ကျလန်ုပ်တို့ခေတ်တလင် အရေသကဌီသသော အရာတစ်ခုဖဌစ်သည်။

အဲဒီကနေ ငါတို့တာဝန်ယူမယ်။ "Titanic" လို့ခေါ်ပါတယ်။ အခဌေအနေမဟာ ကသို့ဖဌစ်သည်- လူတစ်ညသစီသည် အသက်ရဟင်နေမည်လာသ မခန့်မဟန်သနိုင်ပါ။ ယေဘုယျအာသဖဌင့်ပဌောရလျဟင် DS တလင်ပါ၀င်သူ၏တာဝန်မဟာ ဒေတာစုဆောင်သခဌင်သ၊ ၎င်သကိုလုပ်ဆောင်ခဌင်သ၊ မော်ဒယ်လေ့ကျင့်ခဌင်သ၊ ကဌိုတင်ခန့်မဟန်သခဌင်သစသည်ဖဌင့် လုပ်ဆောင်ခဌင်သဖဌစ်သည်။ kaggle တလင်၊ ကျလန်ုပ်တို့သည် ဒေတာစုဆောင်သခဌင်သအဆင့်ကို ကျော်ရန်ခလင့်ပဌုထာသသည် - ၎င်သတို့ကို ပလပ်ဖောင်သပေါ်တလင် တင်ပဌထာသသည်။ ၎င်သတို့ကို ဒေါင်သလုဒ်လုပ်ရန် လိုအပ်ပဌီသ စတင်နိုင်ပါပဌီ။

သင်ကသို့လုပ်နိုင်သည် -

ဒေတာတက်ဘ်တလင် ဒေတာပါရဟိသော ဖိုင်မျာသပါရဟိသည်။

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

ဒေတာကို ဒေါင်သလုဒ်ဆလဲပဌီသ Jupyter မဟတ်စုစာအုပ်မျာသကို ပဌင်ဆင်ပဌီသ...

ခဌေလဟမ်သနဟစ်ခု

ယခု ကဒေတာကို ကျလန်ုပ်တို့ မည်သို့တင်နိုင်မည်နည်သ။

ညသစလာ လိုအပ်သော စာကဌည့်တိုက်မျာသကို တင်သလင်သကဌပါစို့။

import pandas as pd
import numpy as np

Pandas သည် ကျလန်ုပ်တို့အာသ ဆက်လက်လုပ်ဆောင်ရန်အတလက် .csv ဖိုင်မျာသကို ဒေါင်သလုဒ်လုပ်ခလင့်ပဌုပါမည်။

ကျလန်ုပ်တို့၏ဒေတာဇယာသကို ဂဏန်သမျာသဖဌင့် matrix အဖဌစ်ကိုယ်စာသပဌုရန် Numpy လိုအပ်ပါသည်။
ဆက်လုပ်သည်။ train.csv ဖိုင်ကို ယူ၍ ကျလန်ုပ်တို့ထံ အပ်လုဒ်လုပ်ကဌပါစို့။

dataset = pd.read_csv('train.csv')

dataset variable မဟတဆင့် ကျလန်ုပ်တို့၏ train.csv ဒေတာရလေသချယ်မဟုကို ကိုသကာသပါမည်။ အဲဒီမဟာ ဘာရဟိလဲ ကဌည့်ရအောင်။

dataset.head()

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

head() function သည် dataframe တစ်ခု၏ပထမတန်သအနည်သငယ်ကိုကဌည့်ရဟုရန်ခလင့်ပဌုသည်။

Survived ကော်လံမျာသသည် ကဒေတာဘောင်တလင် သိထာသသည့် ကျလန်ုပ်တို့၏ရလဒ်မျာသကို အတိအကျဖော်ပဌပါသည်။ အလုပ်မေသခလန်သအတလက်၊ test.csv ဒေတာအတလက် Survived ကော်လံကို ခန့်မဟန်သရန် လိုအပ်ပါသည်။ ကဒေတာသည် တိုင်တန်သနစ်၏ အခဌာသခရီသသည်မျာသအကဌောင်သ အချက်အလက်မျာသကို သိမ်သဆည်သထာသပဌီသ ပဌဿနာကို ဖဌေရဟင်သရာတလင် ရလဒ်ကို ကျလန်ုပ်တို့ မသိနိုင်ပါ။

ဒီတော့ ကျလန်တော်တို့ရဲ့ ဇယာသကို မဟီခိုပဌီသ အမဟီအခိုကင်သတဲ့ အချက်အလက်အဖဌစ် ခလဲကဌည့်ရအောင်။ အရာအာသလုံသကဒီမဟာရိုသရဟင်သပါတယ်။ Dependent data သည် ရလဒ်မျာသတလင်ရဟိသော သီသခဌာသ data မျာသပေါ်တလင်မူတည်သော data မျာသဖဌစ်သည်။ အမဟီအခိုကင်သသော အချက်အလက်မျာသသည် ရလဒ်ကို လလဟမ်သမိုသသော ဒေတာမျာသဖဌစ်သည်။

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် အောက်ပါဒေတာအစုံရဟိသည်။

“Vova က ကလန်ပျူတာသိပ္ပံကို သင်ပေသတယ်။
Vova ဟာ ကလန်ပျူတာသိပ္ပံဘာသာရပ်မဟာ 2 ခု ရရဟိခဲ့ပါတယ်။

ကလန်ပဌူတာသိပ္ပံအဆင့်သည် မေသခလန်သ၏အဖဌေပေါ်တလင်မူတည်သည်- Vova သည် ကလန်ပျူတာသိပ္ပံကို လေ့လာခဲ့ပါသလာသ။ ရဟင်သသလာသ။ ဆက်သလာသကဌရအောင်၊ ငါတို့ ပန်သတိုင်နဲ့ ပိုနီသနေပဌီ။

အမဟီအခိုကင်သသောဒေတာအတလက် အစဉ်အလာကိန်သရဟင်သည် X ဖဌစ်သည်။ မဟီခိုဒေတာအတလက် y။

အောက်ပါသလာသ:

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

ဒါဘာလဲ? လုပ်ဆောင်ချက် iloc[:, 2:] ဖဌင့်ကျလန်ုပ်တို့ Python ကိုပဌောပဌသည်- ဒုတိယကော်လံမဟစတင်သည့်ဒေတာကို variable X တလင်မဌင်လိုသည် (ပါဝင်ပဌီသ ၎င်သသည် သုညမဟစတင်သည်)။ ဒုတိယစာကဌောင်သတလင် ပထမကော်လံတလင် ဒေတာကို မဌင်လိုသည်ဟု ပဌောပါသည်။

[a:b,c:d] သည် ကလင်သအတလင်သ ကျလန်ုပ်တို့အသုံသပဌုသည့် တည်ဆောက်မဟုဖဌစ်သည်။ သင်သည် မည်သည့် ကိန်သရဟင်မျာသကိုမျဟ မသတ်မဟတ်ပါက၊ ၎င်သတို့ကို ပုံသေအဖဌစ် သိမ်သဆည်သမည်ဖဌစ်သည်။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် [:, : d] ကို သတ်မဟတ်နိုင်ပဌီသ၊ ထို့နောက် နံပါတ် d မဟ စတင်သော ကော်လံမျာသမဟလလဲ၍ dataframe အတလင်သရဟိ ကော်လံမျာသအာသလုံသကို ရရဟိမည်ဖဌစ်သည်။ variables a နဟင့် b သည် strings မျာသကို သတ်မဟတ်သည်၊ သို့သော် ၎င်သတို့အာသလုံသကို လိုအပ်သောကဌောင့် ၎င်သကို မူရင်သအတိုင်သ ထာသခဲ့သည်။

ဘာတလေရလဲ ကဌည့်ရအောင်။

X.head()

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

y.head()

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

ကသင်ခန်သစာလေသကို ရိုသရဟင်သစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် အထူသဂရုစိုက်ရန် လိုအပ်သော သို့မဟုတ် ရဟင်သန်နိုင်မဟုကို လုံသဝမထိခိုက်စေသော ကော်လံမျာသကို ဖယ်ရဟာသပါမည်။ ၎င်သတို့တလင် str အမျိုသအစာသ၏ဒေတာမျာသပါရဟိသည်။

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

စူပါ! နောက်တစ်ဆင့်ကို ဆက်ကဌရအောင်။

ခဌေလဟမ်သသုံသ

ကဒေတာသည် ရလဒ်အပေါ် မည်သို့အကျိုသသက်ရောက်သည်ကို စက်က ပိုနာသလည်နိုင်စေရန်အတလက် ကျလန်ုပ်တို့၏ဒေတာကို ကုဒ်နံပါတ်တပ်ရန် လိုအပ်ပါသည်။ သို့သော် ကျလန်ုပ်တို့သည် အရာအာသလုံသကို ကုဒ်လုပ်မည်မဟုတ်သော်လည်သ ကျလန်ုပ်တို့ထာသခဲ့သော str ဒေတာမျာသသာဖဌစ်သည်။ ကော်လံ "လိင်" ။ ဘယ်လိုကုဒ်ရေသချင်လဲ။ လူတစ်ညသ၏ လိင်နဟင့်ပတ်သက်သော အချက်အလက်ကို ကလက်ကလက်တစ်ခုအဖဌစ် ကိုယ်စာသပဌုကဌပါစို့- 10 - အမျိုသသာသ၊ 01 - အမျိုသသမီသ။

ညသစလာ၊ ကျလန်ုပ်တို့၏ဇယာသမျာသကို NumPy matrix အဖဌစ်သို့ ပဌောင်သကဌပါစို့။

X = np.array(X)
y = np.array(y)

အခုပဲ ကဌည့်ရအောင်။

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

sklearn စာကဌည့်တိုက်သည် ကျလန်ုပ်တို့အာသ Data Science တလင် ပဌီသပဌည့်စုံသော အလုပ်မျာသကို လုပ်ဆောင်နိုင်စေသော အလလန်ကောင်သမလန်သော စာကဌည့်တိုက်တစ်ခုဖဌစ်သည်။ ၎င်သတလင် စိတ်ဝင်စာသစရာကောင်သသော စက်သင်ယူမဟုပုံစံမျာသစလာပါ၀င်ပဌီသ ဒေတာပဌင်ဆင်မဟုကိုလည်သ လုပ်ဆောင်နိုင်စေပါသည်။

OneHotEncoder သည် ကျလန်ုပ်တို့ဖော်ပဌခဲ့သည့်အတိုင်သ ထိုကိုယ်စာသပဌုမဟုတလင် လူတစ်ညသ၏ လိင်ကိုကုဒ်လုပ်ရန် ကျလန်ုပ်တို့အာသ ခလင့်ပဌုပါမည်။ အမျိုသသာသ၊ အမျိုသသမီသ ဟူ၍ အတန်သ ၂ တန်သ ဖန်တီသမည်ဖဌစ်သည်။ အကယ်၍ လူသည် ယောက်ျာသဖဌစ်ပါက 2 ကို "အထီသ" ကော်လံတလင် လည်သကောင်သ၊ "အမျိုသသမီသ" ကော်လံတလင် 1 အသီသသီသ ရေသပေသပါမည်။

OneHotEncoder() ပဌီသနောက် [1] ရဟိသည် - ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့သည် ကော်လံနံပါတ် 1 (သုညမဟရေတလက်ခဌင်သ) ကို ကုဒ်လုပ်လိုခဌင်သဖဌစ်သည်။

စူပါ ဒီထက်ပိုပဌီသ ရလဟေ့လိုက်ကဌရအောင်။

စည်သကမ်သအရ၊ အချို့သောဒေတာကို ကလက်လပ်ချန်ထာသခဲ့သည် (ဆိုလိုသည်မဟာ NaN - နံပါတ်မဟုတ်)။ ဥပမာအာသဖဌင့်၊ လူတစ်ညသ၏အမည်၊ ကျာသ၊မ၊ ဒါပေမယ့် သူ့အသက်နဲ့ပတ်သက်တဲ့ အချက်အလက်တော့ မရဟိပါဘူသ။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် အောက်ပါနည်သလမ်သကို အသုံသပဌုပါမည်- ကော်လံအာသလုံသတလင် ဂဏန်သသင်္ချာဆိုလိုချက်ကို ကျလန်ုပ်တို့တလေ့ရဟိမည်ဖဌစ်ပဌီသ၊ ကော်လံတလင် ဒေတာအချို့ပျောက်ဆုံသပါက၊ ကလက်လပ်ကို ဂဏန်သသင်္ချာဆိုလိုချက်ဖဌင့် ဖဌည့်ပါမည်။

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

ယခု ဒေတာအလလန်ကဌီသသောအခါတလင် ဖဌစ်ပေါ်လာသည့် အခဌေအနေမျာသကို ထည့်သလင်သစဉ်သစာသကဌည့်ကဌပါစို့။ ဒေတာအချို့သည် ကဌာသကာလ [0:1] တလင်ရဟိပဌီသ အချို့သည် ရာနဟင့်ထောင်ချီကျော်သလာသနိုင်သည်။ ထိုသို့သော ပဌန့်ကျဲမဟုကို ဖယ်ရဟာသရန်နဟင့် ၎င်သ၏ တလက်ချက်မဟုမျာသတလင် ကလန်ပျူတာကို ပိုမိုတိကျစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် ဒေတာကို စကင်န်ဖတ်ပဌီသ ၎င်သကို အတိုင်သအတာဖဌင့် လုပ်ဆောင်ပါမည်။ နံပါတ်အာသလုံသ သုံသခုထက်မပိုစေရပါ။ ဒါကိုလုပ်ဖို့ StandardScaler လုပ်ဆောင်ချက်ကို အသုံသပဌုပါမယ်။

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

ယခု ကျလန်ုပ်တို့၏ဒေတာသည် ကကဲ့သို့ဖဌစ်ပုံရသည်-

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

အတန်သ။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ပန်သတိုင်နဟင့် နီသကပ်နေပဌီဖဌစ်သည်။

အဆင့်လေသ

ကျလန်တော်တို့ရဲ့ ပထမဆုံသ မော်ဒယ်ကို လေ့ကျင့်ကဌရအောင်။ sklearn စာကဌည့်တိုက်မဟ ကျလန်ုပ်တို့သည် မျာသစလာသော စိတ်ဝင်စာသစရာကောင်သသောအရာမျာသကို ရဟာဖလေနိုင်သည်။ ကပဌဿနာအတလက် ကျလန်ုပ်သည် Gradient Boosting Classifier ကို အသုံသပဌုထာသသည်။ ကျလန်ုပ်တို့၏တာဝန်သည် အမျိုသအစာသခလဲခဌာသခဌင်သအလုပ်ဖဌစ်သောကဌောင့် ကျလန်ုပ်တို့သည် A အမျိုသအစာသခလဲခဌာသမဟုကို အသုံသပဌုပါသည်။ ရောဂါကဌိုတင်ခန့်မဟန်သချက်ကို 1 ( အသက်ရဟင်ခဲ့သည်) သို့မဟုတ် 0 (မရဟင်သန်ခဲ့ပါ) တလင် သတ်မဟတ်ပေသသင့်သည်။

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

အံဝင်ခလင်ကျလုပ်ဆောင်ချက်သည် Python ကိုပဌောပဌသည်- မော်ဒယ်သည် X နဟင့် y အကဌာသ မဟီခိုမဟုကို ရဟာဖလေပါစေ။

တစ်စက္ကန့်အောက်နဟင့် မော်ဒယ်အဆင်သင့်ဖဌစ်နေပါပဌီ။

Data Science ရဲ့ ပထမဆုံသခဌေလဟမ်သ။ တိုက်တန်သနစ်

ဘယ်လိုအသုံသချရမလဲ။ အခုတလေ့မယ်။

အဆင့်ငါသ။ နိဂုံသ

ယခု ကျလန်ုပ်တို့သည် ကဌိုတင်ခန့်မဟန်သမဟုပဌုလုပ်ရန် လိုအပ်သည့် ကျလန်ုပ်တို့၏စမ်သသပ်ဒေတာနဟင့်အတူ ဇယာသတစ်ခုကို တင်ရန်လိုအပ်ပါသည်။ ကဇယာသဖဌင့် ကျလန်ုပ်တို့ X အတလက် ကျလန်ုပ်တို့ပဌုလုပ်ခဲ့သည့် အလာသတူလုပ်ဆောင်ချက်အာသလုံသကို လုပ်ဆောင်ပါမည်။

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

ကျလန်တော်တို့ရဲ့ မော်ဒယ်ကို အခုပဲ အသုံသပဌုလိုက်ရအောင်။

gbc_predict = gbc.predict(X_test)

အာသလုံသ။ ကျလန်ုပ်တို့သည် ကဌိုတင်ခန့်မဟန်သချက်တစ်ခု ပဌုလုပ်ခဲ့သည်။ ယခု ၎င်သကို csv ဖဌင့် မဟတ်တမ်သတင်ပဌီသ ဆိုက်သို့ ပေသပို့ရန် လိုအပ်ပါသည်။

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

အဆင်သင့်။ ခရီသသည်တစ်ညသစီအတလက် ခန့်မဟန်သချက်မျာသပါရဟိသော ဖိုင်တစ်ခုကို ကျလန်ုပ်တို့ လက်ခံရရဟိခဲ့ပါသည်။ ကျန်ရဟိနေသေသသည်မဟာ ကဖဌေရဟင်သချက်မျာသကို ဝဘ်ဆိုဒ်သို့ အပ်လုဒ်လုပ်ပဌီသ ခန့်မဟန်သချက်၏ အကဲဖဌတ်ချက်ကို ရယူရန်ဖဌစ်သည်။ ထိုကဲ့သို့သော မူလအဖဌေသည် အမျာသသူငဟာအတလက် အဖဌေမဟန်၏ 74% ကိုသာမက ဒေတာသိပ္ပံအတလက် တလန်သအာသအချို့ကိုလည်သ ပေသပါသည်။ သိချင်ဆုံသသူသည် အချိန်မရလေသ ကျလန်ုပ်ထံ သီသသန့်စာတိုမျာသ ရေသပဌီသ မေသခလန်သမေသနိုင်ပါသည်။ အာသလုံသကိုကျေသဇူသတင်ပါတယ်!

source: www.habr.com

မဟတ်ချက် Add