ตัวอย่างของมาตรฐานที่แตกต่างในงูหลาม
สำหรับการอ้างอิงดูบทความวิกิพีเดียนี้:
https://en.wikipedia.org/wiki/Unbiased_estimation_of_standard_deviation
ตัวอย่างข้อมูล
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
การทำให้เป็นมาตรฐานโดยใช้นุ่น (ให้การประมาณแบบไม่เอนเอียง)
เมื่อ normalizing เราก็แค่ลบค่าเฉลี่ยและหารด้วยค่าเบี่ยงเบนมาตรฐาน
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 (ให้การประเมินแบบเอนเอียงต่างจากแพนด้า)
หากคุณทำสิ่งเดียวกันกับที่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
การประเมินความลำเอียงที่แคบทำให้การเรียนรู้ของเครื่องลดลงหรือไม่
NO
เอกสารอย่างเป็นทางการของsklearn.preprocessing.scaleระบุว่าการใช้ตัวประมาณค่าแบบเอนเอียงคือ UNLIKELY เพื่อส่งผลกระทบต่อประสิทธิภาพของอัลกอริทึมการเรียนรู้ของเครื่องและเราสามารถใช้งานได้อย่างปลอดภัย
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.
สิ่งที่เกี่ยวกับ MinMax Scaling?
ไม่มีการคำนวณค่าเบี่ยงเบนมาตรฐานในการปรับขนาด MinMax ดังนั้นผลลัพธ์จะเหมือนกันทั้งใน pandas และ scikit-learn
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