<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Fatemeh V.Younesi</title>
        <link>https://virgool.io/feed/@fvyounesi</link>
        <description>یک فارغ التحصیل MBA شریف! Data Scientist، ماجراجو و دنبال تغییراتی که جهان را جایی بهتر برای زندگی انسانها کند..</description>
        <language>fa</language>
        <pubDate>2026-06-16 16:25:46</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/180800/avatar/pMmdT3.jpg?height=120&amp;width=120</url>
            <title>Fatemeh V.Younesi</title>
            <link>https://virgool.io/@fvyounesi</link>
        </image>

                    <item>
                <title>استاندارد نوشتن یک فایل requirements.txt!</title>
                <link>https://virgool.io/@fvyounesi/%D8%A7%D8%B3%D8%AA%D8%A7%D9%86%D8%AF%D8%A7%D8%B1%D8%AF-%D9%86%D9%88%D8%B4%D8%AA%D9%86-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-requirementstxt-wztsq997kwe3</link>
                <description>بله! در دنیای دیتا، حتی یک فایل سادهء تکست هم برای نوشتنش استاندارد داره! :)اگر در حوزه هوش مصنوعی یا دیتاساینس کار کرده باشید میدونید که برای انتقال، بازتولید، استفاده و توسعه مدل ها، نیاز به داشتن یک فایل requirements دارید که در اون می بایستی تمامی پکیج های مورد نیاز جهت استفاده از کد یا مدل شما به همراه ورژن اونها ثبت شده باشه. یک نمونه از فایل requirements.txtاما به چه پکیج هایی لازمه در این فایل اشاره بشه؟ و چطور خیلی راحت این فایل رو بسازیم؟در پایتون3، میتونید با اجرای دستور زیر در ترمینال IDLE یا در Colab(همراه با !) لیستی از تمامی پکیج های نصب شده در محیط مجازی(Virtual Environment) خود را به یک باره داشته باشید. ممکن است برخی از این پکیج ها جهت اجرای کد شما ضروری نباشد و مثلا برای اجرای پروژه ای دیگر توسط شما در این محیط نصب شده باشد، بنابراین توصیه می شود قبل از اشتراک گذاری این فایل، حتما یک بار آن را مرور کنید و پکیج های اضافه را حذف نمایید.pip3 freeze &gt; requirements.txt  #In Python3یکبار این کد را اجرا کنید و فایل حاصل را مرور کنید. اگر دقت کنید در این فایل هیچ کدام از کتابخانه های os، io، sys، subprocess، shutil و غیره را نمی بینید. در واقع نیازی به وجود نام کتابخانه های استاندارد یا اصطلاحا پکیج های Built-in پایتون در این فایل وجود ندارد و حتی می تواند باعث ایجاد ارور در زمان نصب سایر پکیج ها شود. بنابراین اگر خودتان به شکل دستی اقدام به نوشتن این فایل می کنید، نام این پکیج ها را فاکتور بگیرید!لیستی از این گونه ماژول ها(Built-in) که نباید در فایل requirements.txt به آنها اشاره کنید را می توانید در لینک زیر پیدا کنید:https://docs.python.org/3/py-modindex.htmlامیدوارم خوندن این مطلب براتون مفید بوده باشه! :)برای دیدن نوشته های دیگر من در زمینه هوش مصنوعی و دیتاساینس، این اکانت را فالو کنید.</description>
                <category>Fatemeh V.Younesi</category>
                <author>Fatemeh V.Younesi</author>
                <pubDate>Wed, 31 Jul 2024 14:16:20 +0330</pubDate>
            </item>
                    <item>
                <title>چگونگی رفع مشکل save نشدن Notebook در Google Colab</title>
                <link>https://virgool.io/@fvyounesi/%DA%86%DA%AF%D9%88%D9%86%DA%AF%DB%8C-%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84-save-%D9%86%D8%B4%D8%AF%D9%86-notebook-%D8%AF%D8%B1-google-colab-rjc6zwpimfin</link>
                <description>حتما اگر به کار برنامه نویسی مشغول هستید یا در زمینه علم داده فعالیت میکنید، حتما اتفاق افتاده که با مشکل save نشدن notebook در google colab مواجه شده باشید و نگران از دست رفتن کدهای ارزشمندتون باشید:) موارد زیر، راه هایی هستن که طبق تجربه، راه گشا هستند. امیدوارم براتون مفید باشند:) Google Colab1- اتصال اینترنت خود را چک نمایید:) خیلی وقت ها اتصال ناپایدار اینترنت شما برای colab مسئله ساز شده است، یا اتصال اینترنت خود را تغییر دهید و یا پس از گذشت مدتی مجدد اقدام به ذخیره فایل نمایید.2- مطمئن شوید تنها یک notebook باز دارید!حتما تا الان متوجه شده اید که colab در ازای خدمات رایگان خود، به تعداد notebookهای باز و فعال شما حساس است! پس اگز چند notebook را به طور همزمان در browser خود باز دارید، آنها را ببندید و سپس برای ذخیرهء نوتبوک مدنظرتان اقدام نمایید.3- حجم خروجی کد شما بالاست!درصورتیکه خروجی کدهای شما دارای حجم بالایی است(مثلا چندین تصویر را توسط کتابخانه cv2 در notebookخود load و نمایش داده اید)، خروجی ها را حذف کرده و مجدد اقدام به ذخیرهء فایل نمایید.4- از طریق منو، اقدام به ذخیره نمایید شاید عجیب به نظر برسد اما در دنیای colab همه چیز شدنی است:) گاهی ذخیره از طریق ctrl+s متوقف می شود اما از طریق منوی file&gt;save نوتبوک به راحتی ذخیره می شود:) امتحان کنید. 5- صبور باشید، colab دچار اختلال شده:)گاهی اوقات مشکل نه از اینترنت شماست و نه از کدهای شما، بلکه colab موقتا دچار اختلال در ذخیرهء داده ها شده است. در این هنگام از راهنمایی های colab استفاده کنید. معمولا در چنین مواقعی colab یا از شما میخواهد که با کلیک کردن بر روی لینکی، به ذخیره و reload کردن صفحه بپردازید. یا می خواهد دقایقی دیگر، مجدد برای ذخیره فایل مدنظر اقدام کنید. در هر حال که در چنین شرایطی از راهنمایی های colab بی بهره نمونید:)6- استفاده از حالت ناشناس Browserگاهی اوقات افزونه ها و کوکی های موجود در browser شما عامل اختلال در ذخیره است. بنابراین درصورتیکه هیچ کدام از موارد بالا پاسخگو نبود از حالت Incognito/ناشناس browser خود استفاده نمایید. همچنین دقت کنید که حتما نسخه browser خود را به روز نگه دارید.در نهایت اگر هنوز colab اقدام به ذخیره نوتبوک شما نمیکند نگران نباشید! شما می توانید از طریق منو، file&gt; download اقدام به دانلود آخرین ورژن کد خود نمایید و آن را در سیستم خود ذخیره کنید.امیدوارم نکات بالا براتون مفید بوده باشه:)سعی میکنم تجربیاتم در زمینه data science رو اینجا منتقل کنم، درصورتیکه میخواید از آخرین نوشته ها باخبر بشید میتونید صفحه من رو دنبال کنید: virgool.io/@fvyounesiاگر سوالی هست بنویسید، پاسخگو هستم.</description>
                <category>Fatemeh V.Younesi</category>
                <author>Fatemeh V.Younesi</author>
                <pubDate>Tue, 14 Mar 2023 16:19:48 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای جامع تکنیک های مواجهه با  Null یا Missing Value ها</title>
                <link>https://virgool.io/@fvyounesi/dealing-with-null-boufspiyxx6a</link>
                <description>در این پست سعی میکنم به طور مختصر و مفید، بگم که اولا چطور &quot;تمامی&quot; داده های Null رو در دیتاست مون پیدا کنیم و ثانیا &quot;تکنیک&quot; های مواجهه باهاشون رو به طور عملیاتی معرفی می کنم.بدون شرح:))1- یافتن مقادیر Null:قبل از هر چیز بریم سراغ اینکه ببینیم آیا دیتاست ما دارای مقدار null هست یا خیر. و اگر بله در کدام ستون ها. برای اینکار از کد زیر استفاده می کنیم:dataframe_name.isnull().sum()مثلا با استفاده از این کد برای دیتاست Titanic داریم:داده های null در دیتاست Titanic 2- نحوه Dealکردن با داده های Null:خب تا به اینجا دیدیم که چطور &quot;تمامی&quot; داده های Null رو پیدا کنیم. در این مرحله میخوایم ببینیم چطور باید در Preprocess داده ها، با این مقادیر برخورد کنیم تا در مدلسازی به مشکل برنخوریم. &quot;شش&quot; راهکار کلی برای مواجهه با این نوع داده ها وجود دارد:1-حذف ردیف هایی دارای مقادیر Null: راحت ترین روش برای مواجهه با مقادیر null، حذف آنهاست. اما تنها زمانی استفاده از این روش پیشنهاد می شود که اولا با حذف ردیف های دارای مقدار null میزان دادهء باقی مانده برای مدلسازی و پیش بینی کافی باشد و ثانیا ردیف های دارای مقادیر null نماینده اعضای خاصی از دیتاست ما نباشند. یعنی چی؟مثلا فرض کنید میخواهید از یک دیتاست برای Classification استفاده کنید. متغیر وابسته یا کلاس های شما دارای دو حالتِ &quot;سالم&quot; و &quot;بیمار&quot; هستند. اگر تمامی ردیف هایی که نمایندهء کلاسِ بیمار هستند دارای مقدار null باشند، با حذف مقادیر null، کل داده های مربوط به یک کلاس مان را از دست می دهیم و بنابراین نخواهیم توانست به درستی داده ها را مدل نماییم. پس در استفاده از این روش باید حواسمان باشد که به کاهش شدید دیتا درمورد بخشی از جامعهء بررسی شده در دیتاست منجر نشود.در کل طبق تجربه یک قانون سرانگشتی(rule of thumb) برای اینکه ببینیم میتونیم از این روش استفاده کنیم یا نه این هست که ببینیم اولا تعداد ردیف های دارای داده های null کمتر از 10-20% کل ردیف ها در دیتاست باشد، ثانیا با حذف این ردیف ها، تعداد سمپل ها(ردیف) برای مدلسازی کافی باشد.خب حالا چطور این کار را انجام دهیم؟ شما می توانید از دستور زیر برای حذف ردیف هایی با مقدار null استفاده نمایید:dataframe_name= dataframe_name.dropna()نکته اینکه حتما حواستان باشد همانند بالا، خروجی dropna را مجدد به دیتافریم تون مقداردهی نمایید و الا مقادیر null از دیتافریم حذف نمی شوند.2-استفاده از ffill و bfill: با استنفاده از دستورات ffill و bfill می توان به ترتیب مقدار ردیف قبلی و ردیف بعدی در یک ستون را به سلولِ دارای مقدار null داد. مزیت این روش سرعت و سادگی آن است اما دقت را قربانی می کند، چرا که مقادیر دو ردیف متوالی می توانند بسیار متفاوت باشند. نتیجه اینکه اگر ساخت مدلی با دقت بالا برایتان در اولویت است، توصیه میکنم از این روش استفاده نکنید مگر اینکه از نزدیک بودن مقادیر یک فیچر(متغیر مستقل) برای تمامی سمپل ها اطلاع داشته باشید.برای استفاده از این روش می توانید از کد زیر برنامهء خود استفاده نمایید:dataframe_name[&#x27;column_name&#x27;].ffill()dataframe_name[&#x27;column_name&#x27;].bfill()در کد بالا، column_name نشان دهنده نام ستونی است که به دنبال حذف مقادیر null از آن هستیم.دقت کنید که &quot;ffill&quot; برای پر کردن سلول null با استفاده از مقدار سلول &quot;قبلی&quot;  و &quot;bfill&quot; برای پر کردن سلول null با استفاده از مقدار سلول &quot;بعدی&quot; استفاده می شود.3-استفاده از مقادیر عددی ثابت: درصورتیکه که یک insight ( بینش یا پیش بینی) دررابطه با مقادیر ممکن برای یک ستون داشته باشیم، می توانیم از این مقدار برای جایگزینی null استفاده کنیم. برای این کار می توانیم از کد زیر استفاده کنیم:dataframe_name[&#x27;column_name&#x27;].fillna(value)در کد بالا به جای مقدار value می توانیم از مقدار مدنظرمون استفاده کنیم.4- استفاده از میانگین ستون: این روش به نسبت روش دقیقتری از روش های قبلی است. در این روش از میانگین مقادیرِ موجود برای یک ستون برای جایگزینی مقادیر از دست رفته استفاده می کنیم. برای این کار از کد زیر استفاده می نماییم:dataframe_name[&#x27;column_name&#x27;].fillna( dataframe_name[&#x27;column_name&#x27;].mean() , inplace=True)درواقع به جای جایگذاری مقدار value، در راهکار قبلی، اینجا از مقدار میانگین(mean) داده ها استفاده می کنیم.5- استفاده از میانگین هم گروه در یک ستون: این روش دقیقتر از روش قبلی است. به این شکل است که ابتدا سمپل های مشابه در دیتاست را در یک گروه قرار می دهیم، سپس به جای استفاده از میانگین کل داده های یک ستون برای جایگزینی مقدار null، از میانگین داده های هم گروه(مشابه) یک سلول استفاده می کنیم. برای پیاده سازی این روش داریم:dataframe_name[&#x27;columnC&#x27;].fillna(  dataframe_name.groupby([columnA] , [columnB])[&quot;columnC&quot;].transform(&#x27;mean&#x27;) )به عنوان مثال برای دیتاست تایتانیک داریم:titanic[&#x27;age&#x27;].fillna(titanic.groupby([&#x27;pclass&#x27;, &#x27;alone&#x27;])[&#x27;age&#x27;].transform(&#x27;mean&#x27;))خب کد بالا دقیقا چی داره میگه؟ به مقادیر داخل پرانتزِ fillna نگاه کنید. اول میاد دیتاست رو بر اساس ستون های alone و pclass گروه بندی می کنه. اینجا از دو ستون استفاده شده، شما میتونید از هر چندتا ستون در این قسمت استفاده کنید. باید نام ستون هایی که میخواید گروه بندی بر اساس مقادیر اونها صورت بگیره رو در اینجا بنویسید. بعد از اینکه گروه بندی میکنه میگه حالا ستون age از این دیتاستِ گروه بندی شده رو پیدا کن، بعد مقدار میانگین گروهش رو بهش پس بده. اینطوری مقادیر null با مقادیرِ میانگین هم گروهی شون جایگزین میشن.اما تکنیک آخر که دقیقترین و بهترین روش هست:6- استفاده از Iterative Imputerها: حتما با رگرسیون آشنایی دارید. با استفاده از مدلهای رگرسیون ما میتونیم مقادیر متغیر وابسته رو در یک دیتاست بدست بیاریم. خب چرا از این روش برای پیدا کردن مقادیر null در دیتاست استفاده نکنیم؟ :) این روش میاد ردیف های دارای مقدار null رو به عنوان ورودی میگیره، بعد میاد بر اساس سایر سلول های ردیف که مقدارشون موجود هست و استفاده از اطلاعات ردیف هایی که کامل و بدون مقدار null هستند، یک رگرسیون run میکنه و مقدار null در یک ردیف رو پیش بینی میکنه. به همین خاطر دقیقترین روش در بین روش های مواجهه با null هست. چطور از این روش استفاده کنیم؟ شما میتونید از کد زیر استفاده کنید:from sklearn.experimental import enable_iterative_imputerfrom sklearn.impute import IterativeImputerfrom sklearn.ensemble import RandomForestRegressorbuild_imputer=IterativeImputer(estimator=RandomForestRegressor(n_estimators= 100))dataframe_name=build_imputer.fit_transform(dataframe_name)چند نکته رو به خاطر داشته باشید: من در اینجا از روش Random Forest برای رگرسیون و یافتن مقادیر null استفاده کردم. می توان از روش های دیگر رگرسیون استفاده کرد. اما طبق تجربه این روش بهترین جواب رو بهتون میده.پس از استفاده از imputer دیتاست تون به یک nparray تبدیل میشه. پس اگر میخواید یک Pandas dataframe داشته باشید باید اون رو از طریق کد زیر تبدیل کنید:dataframe_name=pd.DataFrame(dataframe_name , columns=[&#x27;A&#x27;, &#x27;B&#x27;, &#x27;C&#x27;])نتیجه گیری:در این مقاله با 6 تکنیک اصلی مواجهه با مقادیر null در دیتاست و نحوهء پیاده سازی آنها آشنا شدیم. شما می توانید تکنیک های متفاوتی را برای مواجهه با مقادیر null در ستون های جداگانه انتخاب کنید. بهترین و دقیقترین روش استفاده از Iterative Imputer هست که مقادیر null را با دقیقترین مقدار برای آنها جایگزین می کند.در این مقاله سعی کردم تکنیک های اصلی رو بدون شاخ و برگ دادن و به طور ساده و عملیاتی براتون بیان کنم. امیدوارم از این مقاله استفاده کرده باشید، اگر علاقه مند به مطالعه بیشتر در زمینه Data Science و AI هستید میتونید صفحه من رو فالو کنید: virgool.io/@fvyounesiاگر سوالی هست بنویسید، پاسخگو هستم.</description>
                <category>Fatemeh V.Younesi</category>
                <author>Fatemeh V.Younesi</author>
                <pubDate>Mon, 30 Jan 2023 10:54:01 +0330</pubDate>
            </item>
            </channel>
</rss>