پیش‌نیاز و هدف یادگیری

این بخش، گام 20 از مسیر «پایتون از صفر» است. هدف این درس مقایسهٔ mean و median روی دادهٔ دارای مقدار بزرگ است. پیش‌نیاز: تاریخ در پایتون؛ محاسبهٔ فاصلهٔ روزها. کتابخانهٔ خارجی لازم نیست؛ ماژول‌های استاندارد همراه Python 3 هستند. اگر مفهوم قبلی برایتان ناآشناست، ابتدا مقالهٔ پیش‌نیاز را بخوانید و مثالش را اجرا کنید؛ حفظ‌کردن کد جای فهم ورودی و خروجی را نمی‌گیرد.

مفهوم اصلی به زبان ساده

کتابخانهٔ استاندارد statistics برای محاسبات آماری ساده کافی است و نیازی به نصب NumPy ندارد. میانگین از همهٔ مقدارها تأثیر می‌گیرد، در حالی که میانه مقدار وسطِ دادهٔ مرتب‌شده است. در دادهٔ با تعداد زوج، میانه میانگین دو عضو وسط است. یک عدد بسیار بزرگ می‌تواند میانگین را به‌وضوح تغییر دهد ولی اثرش بر میانه کمتر باشد.

مسئلهٔ این درس

در پروژهٔ «گزارش مقاوم زمان مطالعه» باید یک تابع مستقل بنویسید. میزکار ورودی نمونه را در request.json قرار می‌دهد؛ تابع solve دیکشنری داده را می‌گیرد و نتیجهٔ خود را برمی‌گرداند. در این قرارداد input لازم نیست و خواندن تعاملی از ترمینال ممکن است اجرای ارزیابی را متوقف کند. از مثال زیر شروع کنید و پیش از اجرای آن، شکل نتیجه را حدس بزنید.

نمونه‌کد قابل اجرا

from statistics import mean, median

def solve(data):
    values = data['minutes']
    if not values:
        return {'error': 'empty_data'}
    return {'mean': mean(values), 'median': median(values), 'spread': max(values) - min(values)}

print(solve({'minutes': [10, 20, 300]}))

نتیجهٔ مورد انتظار

{
  "mean": 110,
  "median": 20,
  "spread": 290
}

توضیح مرحله‌به‌مرحله

در این پروژه زمان مطالعهٔ چند جلسه در minutes می‌آید. با mean میانگین و با median میانه را می‌گیریم و spread را از بیشینه منهای کمینه حساب می‌کنیم. دادهٔ خالی شاخص قابل محاسبه ندارد و error=empty_data برمی‌گرداند. در دادهٔ تک‌عضوی، هر دو شاخص همان مقدار و دامنه صفر است.

قرارداد ورودی و خروجی

مثال فقط یک ورودی است، نه همهٔ مسئله. مقدارها را از data بخوانید و جواب نمونه را ثابت در برنامه ننویسید. نام کلیدها، نوع عدد و رشته و ترتیب فهرست‌ها بخشی از قراردادند. در پروژه، بخش پایانی main.py نتیجهٔ تابع را در result.json ذخیره می‌کند؛ آن بخش را نگه دارید. موفقیت اجرای برنامه با درست‌بودن پاسخ و قبولی ارزیابی یکسان نیست.

خطای رایج و راه تشخیص

میانه به معنی عدد پرت‌نداشتن داده نیست و نباید بدون توضیح جای همهٔ شاخص‌ها بنشیند. همچنین میانگین گروه‌ها را نمی‌توان همیشه با میانگین سادهٔ میانگین‌هایشان ترکیب کرد؛ تعداد مشاهده‌های هر گروه مهم است. این تمرین روی دادهٔ خام همان فهرست محاسبه می‌کند.

تمرین مستقل و خودآزمایی

فهرست [۱۰، ۲۰، ۳۰] و سپس [۱۰، ۲۰، ۳۰۰] را مقایسه کنید. قبل از اجرا بنویسید کدام شاخص بیشتر تغییر می‌کند و چه چیزی دربارهٔ الگوی مطالعه می‌گوید.

برای هر آزمایش، ورودی، خروجی مورد انتظار و خروجی واقعی را جدا بنویسید. اگر تفاوتی دیدید، یک نمونهٔ کوچک‌تر بسازید و تغییر را دوباره امتحان کنید. به جای اجرای چند تغییر هم‌زمان، هر بار یک فرض را بررسی کنید. پس از فهم نمونه، پروژهٔ مرتبط را در میزکار حل کنید؛ ارزیابی با چند ورودی متفاوت انجام می‌شود و پاسخ ثابت نمونه پذیرفته نخواهد شد.

گام بعدی

موضوع‌های این درس: statistics · mean · median. اگر می‌توانید دلیل هر خط را توضیح دهید و ورودی تازه‌ای را بدون دست‌کاری منطق اصلی حل کنید، به مقالهٔ بعدی بروید. هدف مسیر مقدماتی، تسلط بر همین رفتارهای کوچک و قابل آزمایش است؛ برای شروع پروژه‌های یادگیری ماشین عجله نکنید.

منابع و مطالعهٔ بیشتر

برای بررسی جزئیات و ادامهٔ مطالعه؛ متن این راهنما مستقلاً برای نوونتیکس نوشته شده است.