الدرس 7 من 8

الإحصاء الوصفي

إزاي توصف داتا كبيرة بكام رقم.

المتوسط والوسيط

المتوسط (Mean): اجمع كله واقسم على العدد. الوسيط (Median): رتّب الأرقام وخد اللي في النص. المنوال (Mode): الرقم الأكتر تكرار.

💼 ليه الفرق ده مهم؟شركة فيها ٥ موظفين مرتباتهم عادية، والمدير بياخد ربع مليون. الإعلان بيقول «متوسط المرتبات عندنا عالي جداً». صح؟ شوف:
salaries.py
import statistics as st

salaries = [7000, 8000, 8500, 9000, 9500, 250000]

print("Mean:  ", round(st.mean(salaries)))
print("Median:", st.median(salaries))

رقم واحد شاذ (اسمه outlier) رفع المتوسط لأكتر من ٥ أضعاف المرتب اللي أغلب الموظفين بياخدوه. الوسيط مااتأثرش. عشان كده الأخبار بتقول «متوسط الدخل» و «وسيط الدخل» وكل واحد بيحكي قصة مختلفة.

الانتشار: التباين والانحراف المعياري

فصلين متوسطهم ٧٠ من ١٠٠. في الأول الكل جايب بين ٦٥ و ٧٥. في التاني ناس جايبة ٢٠ وناس ١٠٠. نفس المتوسط وحكاية مختلفة خالص. الانحراف المعياري (Standard Deviation) بيقيس الأرقام متفرقة عن المتوسط قد إيه.

spread.py
import statistics as st

class_a = [65, 68, 70, 72, 75]
class_b = [20, 55, 75, 100, 100]

for name, scores in [("A", class_a), ("B", class_b)]:
    print(f"Class {name}: mean={st.mean(scores)}, std={st.pstdev(scores):.1f}")
variance متوسط مربع البعد عن المتوسط.
std الجذر التربيعي للـ variance، وبيبقى بنفس وحدة الداتا.
outlier قيمة شاذة بعيدة جداً عن الباقي.

التطبيع: كل الأرقام على نفس المقياس

فاكر مشكلة الشقق؟ المساحة بالمية والأوض بالواحد، فالمساحة كانت مغطية على كل حاجة. الحل اسمه Standardization (أو z-score): بنطرح المتوسط ونقسم على الانحراف المعياري، فكل عمود يبقى متوسطه صفر وانتشاره واحد.

z = (x − mean) / std
standardize.py
import statistics as st

areas = [75, 90, 120, 150]
rooms = [2, 2, 3, 4]

def standardize(values):
    m, s = st.mean(values), st.pstdev(values)
    return [round((v - m) / s, 2) for v in values]

print("areas:", standardize(areas))
print("rooms:", standardize(rooms))

دلوقتي الاتنين أرقامهم حوالين الصفر، ومحدش بيغطي على التاني.

💡 خطوة إجبارية تقريباًأغلب موديلات الـ ML بتشتغل أحسن بكتير (والـ gradient descent بيتعلم أسرع) لما الداتا تبقى متطبّعة. في المرحلة ٥ هتعملها بسطر واحد بـ StandardScaler من scikit-learn.
الدرس اللي فات