Data များကို ကောင်းစွာ normalize မလုပ်ထားလျှင် neural network များသည် သတ်မှတ်ထားသည့် iteration ကျော်သွားသည့်တိုင် တစ်ခါတစ်ရံ converging မဖြစ်ခြင်းမျိုးနှင့် ကြုံတွေ့ရနိုင်သည်။ Multi-layer Perceptron များကို အသုံးပြုသည့်အခါ feature scaling လုပ်ပေးရန် မဖြစ်မနေလိုအပ်သည်။ Multi-layer Perceptron သည် feature တန်ဖိုးများ ကွာဟမှု အလွန်များခြင်းကို sensitive ဖြစ်သည်။ ထို့ကြောင့် data များ ကွာဟမှု နည်းသွားအောင် feature scaling သို့မဟုတ် normalization မဖြစ်မနေ လုပ်သင့်သည်။ train dataset နှင့် test dataset နှစ်ခုစလုံးကို တူညီသည့် feature scaling သို့မဟုတ် normalization လုပ်ရမည်။ သို့မှသာ meaningful result များ ရနိုင်လိမ့်မည်။ normalization လုပ်နိုင်သည့်နည်းများစွာရှိသည့်အနက် built-in StandardScaler ကို သုံးသည့်နည်းကို အောက်တွင် ဖော်ပြထားသည်။
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10, 6]
plt.rcParams['figure.dpi'] = 100
SciKit Learn မှ built in Breast Cancer Data Set ကို အသုံးပြုထားသည်။ ဒေတာထဲတါင် ကျူမာ(tumors) နှင့်သက်ဆိုင်သည့်အချက်များ(several features of tumors) ပါဝင်သည်။ ထို့အပြင် ကျူမာ(tumors)သည် Malignant ဖြစ်သည် သို့မဟုတ် Benign ဖြစ်သည်ကိုလည်း ဖော်ပြထားသည့် label များ ပါဝင်သည်။ ကျူမာ(tumors)၏ feature များကို အသုံးပြု၍ malignant ဖြစ်လိမ့်မည် သို့မဟုတ် Benign ဖြစ်လိမ့်မည်ကို ခန့်မှန်းပေးမည့် network model တည်ဆောက်မည်။
# cancer ဒေတာကို load လုပ်သည်။
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
# Print full description by running:
# print(cancer['DESCR'])
# 569 data points with 30 features
cancer['data'].shape
'data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename' စသည့် description များသည် dictionary ပုံစံ ဖြင့် ရှိနေသည်။
This object is like a dictionary, it contains a description of the data and the features and targets:
cancer.keys()
cancer ဒေတာထဲမှ 'data' ကို DataFrame တစ်ခု အဖြစ်ပြောင်းပြီး ပထမဆုံး(၅)ခုကို ကြည့်သည်။
df_data = pd.DataFrame(cancer['data'])
df_data.head()
cancer ဒေတာထဲမှ 'target_names' ကို DataFrame တစ်ခု အဖြစ်ပြောင်းပြီး ပထမဆုံး(၅)ခုကို ကြည့်သည်။
df_target_names = pd.DataFrame(cancer['target_names'])
df_target_names.head()
cancer ဒေတာထဲမှ 'feature_names'ကို DataFrame တစ်ခု အဖြစ်ပြောင်းပြီး ပထမဆုံး(၅)ခုကို ကြည့်သည်။
df_feature_names = pd.DataFrame(cancer['feature_names'])
df_feature_names.head()
cancer ဒေတာကို train ဒေတာ(X)နှင့် test ဒေတာ (y)အဖြစ် ခွဲသည်။
X = cancer['data']
y = cancer['target']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
plt.plot(X_train)
plt.grid()
plt.title('Original Data - X_train')
plt.plot(X_test)
plt.grid()
plt.title('Original Data - X_test')
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# Fit only to the training data
scaler.fit(X_train)
# Now apply the transformations to the data:
normalized_X_train = scaler.transform(X_train)
normalized_X_test = scaler.transform(X_test)
plt.plot(normalized_X_train)
plt.grid()
plt.title('Normalized X Train Data - normalized_X_train')
X_test.shape
import matplotlib.pyplot as plt
plt.plot(normalized_X_test)
plt.grid()
plt.title('Normalized X Test Data - normalized_X_train')
normalized_X_train နှင့် normalized_X_test တို့၏ ဂရပ်နှစ်ခုကို ကြည့်ရုံဖြင့် feature scaling သို့မဟုတ် normalization ၏ ထိရောက်မှုကို သိနိုင်သည်။
ကောင်းထက်ညွန့်