পাইথনে বিভিন্ন মানককরণের উদাহরণ।
এই উইকিপিডিয়া নিবন্ধটি রেফারেন্সের জন্য দেখুন:
https://en.wikedia.org/wiki/Unbiased_estiration_of_standard_deedia
উদাহরণ ডেটা
import pandas as pd
df = pd.DataFrame({
'A':[1,2,3],
'B':[100,300,500],
'C':list('abc')
})
print(df)
A B C
0 1 100 a
1 2 300 b
2 3 500 c
পান্ডা ব্যবহার করে সাধারণকরণ (নিরপেক্ষ অনুমান দেয়)
স্বাভাবিক করার সময় আমরা কেবলমাত্র গড়টি বিয়োগ করি এবং মান বিচ্যুতি দ্বারা ভাগ করি by
df.iloc[:,0:-1] = df.iloc[:,0:-1].apply(lambda x: (x-x.mean())/ x.std(), axis=0)
print(df)
A B C
0 -1.0 -1.0 a
1 0.0 0.0 b
2 1.0 1.0 c
স্কেলার্ন ব্যবহার করে সাধারণকরণ (পক্ষপাতদুষ্ট অনুমান দেয়, পান্ডার থেকে পৃথক)
আপনি যদি একই জিনিসটি দিয়ে থাকেন তবে ভিন্ন ভিন্ন sklearnআউটপুট পাবেন!
import pandas as pd
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df = pd.DataFrame({
'A':[1,2,3],
'B':[100,300,500],
'C':list('abc')
})
df.iloc[:,0:-1] = scaler.fit_transform(df.iloc[:,0:-1].to_numpy())
print(df)
A B C
0 -1.224745 -1.224745 a
1 0.000000 0.000000 b
2 1.224745 1.224745 c
স্কেলার্নের বায়াসড অনুমানগুলি কি মেশিন লার্নিংকে কম শক্তিশালী করে তোলে?
কোন।
Sklearn.preprocessing.scale এর অফিসিয়াল ডকুমেন্টেশন বলছে যে মেশিন লার্নিং অ্যালগরিদমের কার্যকারিতা প্রভাবিত করার জন্য পক্ষপাতদুষ্ট অনুমানকারীটি ব্যবহার করা অনন্য। এবং আমরা সেগুলি নিরাপদে ব্যবহার করতে পারি।
From official documentation:
We use a biased estimator for the standard deviation,
equivalent to numpy.std(x, ddof=0).
Note that the choice of ddof is unlikely to affect model performance.
মিনম্যাক্স স্কেলিংয়ের কী হবে?
মিনিম্যাক্স স্কেলিংয়ে কোনও স্ট্যান্ডার্ড বিচ্যুতি গণনা নেই। সুতরাং ফলাফল উভয় পান্ডা এবং সাইকিট-শিখায় সমান।
import pandas as pd
df = pd.DataFrame({
'A':[1,2,3],
'B':[100,300,500],
})
(df - df.min()) / (df.max() - df.min())
A B
0 0.0 0.0
1 0.5 0.5
2 1.0 1.0
# Using sklearn
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
arr_scaled = scaler.fit_transform(df)
print(arr_scaled)
[[0. 0. ]
[0.5 0.5]
[1. 1. ]]
df_scaled = pd.DataFrame(arr_scaled, columns=df.columns,index=df.index)
print(df_scaled)
A B
0 0.0 0.0
1 0.5 0.5
2 1.0 1.0