<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد فاتحی</title><link>https://virgool.ir/feed/@m.fatehi.p</link><description>علاقه مند به تحلیل داده و داده کاوی. لینکدین:https://www.linkedin.com/in/mohammad-fatehi-09654062/</description><language>fa</language><pubDate>2026-11-10 21:15:59</pubDate><image><url>https://files.virgool.ir/upload/users/7584/avatar/omM52d.png</url><title>محمد فاتحی</title><link>https://virgool.ir/@m.fatehi.p</link></image><item><title>دانلود پکیج های پایتونی از مخزن داخلی</title><link>https://virgool.ir/@m.fatehi.p/دانلود-پکیج-های-پایتونی-از-مخزن-داخلی-hpiyawzkqgjr</link><description>شاید برای شما هم پیش آمده که به هر دلیلی امکان دسترسی به pypi.org رو ندارید... برای ایجاد یک پروژه پایتونی جدید کافیه ابتدای فایل requirements.txt دو خط زیر را اضافه کنید:--index-url https://mirror-pypi.runflare.com/simple/--trusted-host mirror-pypi.runflare.comبا این دستورات کتابخانه های مورد نیاز از مخزن runflare.com نصب می شوند.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Wed, 21 Jan 2026 19:17:19 +0330</pubDate></item><item><title>تکنیک درخت فشرده (Condensed Tree)</title><link>https://virgool.ir/@m.fatehi.p/تکنیک-درخت-فشرده-condensed-tree-v15ghym789br</link><description>خوشه بندی در داده کاوی در اصل نوعی روش یادگیری بدون نظارت است. یک روش یادگیری بدون نظارت روشی است که در آن ما از مجموعه داده ­های متشکل از داده ­های ورودی بدون برچسب به عنوان فرآیندی برای یافتن ساختار معنی­ دار، ویژگی ­های تولیدی و گروه­ بندی­ های ذاتی مجموعه ­ای از مثال­ ها استفاده می­شود. خیلی ها معتقدند خوشه بندی همان group by در پایگاه داده هست... در واقع در group by دسته بندی براساس مقدار دقیق صورت می گیرد در حالی که در خوشه بندی و حالت خاص آن k-means دسته بندی براساس similarity و شباهت رخ می دهد. در group by با بالا رفتن ابعاد مساله دسته ها و گروه های کوچک و تک عضوی تشکیل می شود در حالی که در خوشه بندی توانایی استخراج و کشف الگوهای پنهان را دارد.یکی از روش های رایج در خوشه بندی، الگوریتم HDBSCAN است.خوشه بندی با الگوریتم HDBSCAN خیلی جاها از جمله تحلیل داده های جغرافیایی و تحلیل متن کاربرد داره... دو پارامتر مهم min_cluster_size و min_samples بر رفتار مدل HDBSCAN تأثیر داره توی این پست سعی کردم کمی در مورد آنها بنویسم:min_cluster_size چیست؟این پارامتر، حداقل تعداد نقاط داده برای تشکیل یک خوشه را تعیین می‌کند.اگر خوشه‌ای نتواند به این حداقل برسد، به‌عنوان نویز یا داده پرت در نظر گرفته می‌شود.اگر مقدار min_cluster_size را خیلی کم تنظیم کنید، ممکن است خوشه‌های کوچک و ناپایداری ایجاد شوند که اغلب نویز هستند.اگر مقدار آن را خیلی زیاد تنظیم کنید، ممکن است چند خوشه‌ی واقعی در یک خوشه ادغام شوند و ویژگی‌های متمایز خود را از دست بدهند.min_samples چیست؟این پارامتر فاصله بین یک نقطه و kاُمین نزدیک‌ترین همسایه‌اش را محاسبه می‌کند و مشخص می‌سازد که فرآیند خوشه‌بندی تا چه اندازه سخت‌گیرانه باشد.هرچه مقدار min_samples بیشتر باشد، خوشه‌بندی محافظه‌کارانه‌تر خواهد بود.در این حالت، فقط در نواحی متراکم خوشه تشکیل می‌شود و نقاط پراکنده به‌عنوان نویز طبقه‌بندی می‌شوند.استفاده از درخت فشرده (Condensed Tree)درخت فشرده تکنیکی مفید برای انتخاب مقادیر مناسب این دو پارامتر است.در این نمودار، خوشه‌هایی که در بازه‌ی بزرگی از مقدار λ (lambda) باقی می‌مانند (در محور عمودی چپ نمایش داده می‌شوند)، به‌عنوان خوشه‌های پایدار و معنادار در نظر گرفته می‌شوند.در حالت ایده‌آل، خوشه‌های انتخاب‌شده باید هم بلند (پایدار) و هم پهن (دارای اندازه مناسب) باشند.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Mon, 24 Nov 2025 11:42:45 +0330</pubDate></item><item><title>مثالی از Min Hash Signatures</title><link>https://virgool.ir/@m.fatehi.p/مثالی-از-min-hash-signatures-mulshyzu58er</link><description>فرض کنید تعدادی سند دارید که به صورت صفر و یک کد شده اند. مثال زیر را در نظر بگیرید:در ادامه برای دومین جایگشت داریم:در ادامه برای سومین جایگشت داریم:در پایان Signatures Matrix به صورت زیر محاسبه می شود:</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Thu, 15 Jun 2023 22:05:19 +0330</pubDate></item><item><title>معرفی کتابخانه schedule</title><link>https://virgool.ir/@m.fatehi.p/معرفی-کتابخانه-schedule-z6fwidzjgqnz</link><description>هنگام کار با داده ها و در مسیر جمع‌آوری، پردازش و تجزیه‌ و تحلیل آماری کشف روابط پنهان، نیاز است عملیات خاصی در زمان مشخصی روی داده ها اجرا شود. اگر با پایتون کد می زنید می توانید از کتابخانه schedule برای این کار استفاده کنید. با دستور pip install scheduleکتابخانه مذکور نصب می شود.قطعه کد زیر را در نظر بگیرد:import schedule&#xA;import time&#xA;&#xA;def job():&#xA;    print(&#34;I&#39;m working...&#34;)&#xA;&#xA;schedule.every(10).minutes.do(job)&#xA;schedule.every().hour.do(job)&#xA;schedule.every().day.at(&#34;10:30&#34;).do(job)&#xA;schedule.every().monday.do(job)&#xA;schedule.every().wednesday.at(&#34;13:15&#34;).do(job)&#xA;schedule.every().minute.at(&#34;:17&#34;).do(job)&#xA;&#xA;while True:&#xA;    schedule.run_pending()&#xA;    time.sleep(1)در این حالت تابع job در بازه های زمانی مختلف قابلیت اجرا دارد.چنانچه از فریمورک Flask استفاده می کنید می توانید از قطعه کد زیر استفاده نمایید:def run_schedule():&#xA;    while True:&#xA;        schedule.run_pending()&#xA;        time.sleep(1)&#xA;&#xA;if __name__ == &#39;__main__&#39;:&#xA;    schedule.every().day.at(&#39;14:00&#39;).do(job)&#xA;    t = threading.Thread(target = run_schedule )&#xA;    t.start()&#xA;    app.run(debug=True, use_reloader = False)</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Sat, 16 Apr 2022 22:19:01 +0430</pubDate></item><item><title>ایجاد چند نمودار در یک تصویر به کمک Plotly Dash</title><link>https://virgool.ir/@m.fatehi.p/ایجاد-چند-نمودار-در-یک-تصویر-به-کمک-plotly-dash-cs46yvxkwsri</link><description>خیلی از اوقات نیاز است برای مقایسه چند نمودار، آنها را در یک تصویر داشته باشیم. به کمک قطعه کد زیر در پایتون می توان این کار را انجام داد. لازم به ذکر است مجموعه داده از اینجا (https://vitrayco.com/pbichallenge/) تهیه شده است:import pandas as pd&#xA;import dash&#xA;import dash_core_components as dcc&#xA;import dash_html_components as html&#xA;from dash.dependencies import Input, Output&#xA;import plotly.graph_objects as go&#xA;# Load external stylesheets&#xA;external_stylesheets = [&#39;https://codepen.io/chriddyp/pen/bWLwgP.css&#39;]&#xA;app = dash.Dash(__name__, external_stylesheets=external_stylesheets)&#xA;# dir path to download and save the stock data&#xA;datadir = &#39;./data/&#39;&#xA;Passenger = pd.read_csv(&#39;./data/Passenger.csv&#39;)&#xA;AIR_TIME = pd.read_csv(&#39;./data/AIR_TIME.csv&#39;)&#xA;ARRIVAL_DELAY = pd.read_csv(&#39;./data/ARRIVAL_DELAY.csv&#39;)&#xA;# Define dropdown options&#xA;opts=[ {&#39;label&#39;: &#39;ایران ایر&#39;, &#39;value&#39;: &#39;IR&#39;}, {&#39;label&#39;: &#39;هواپیمایی ایران ایرتور &#39;, &#39;value&#39;: &#39;B9&#39;},{&#39;label&#39;: &#39;هواپیمایی آسمان&#39;, &#39;value&#39;: &#39;EP&#39;},{&#39;label&#39;: &#39;کیش ایر&#39;, &#39;value&#39;: &#39;Y9&#39;},{&#39;label&#39;: &#39;هواپیمایی ماهان &#39;, &#39;value&#39;: &#39;W5&#39;},{&#39;label&#39;: &#39;هواپیمایی کارون&#39;, &#39;value&#39;: &#39;NV&#39;},{&#39;label&#39;: &#39;هواپیمایی کاسپین &#39;, &#39;value&#39;: &#39;RV&#39;},{&#39;label&#39;: &#39;هواپیمایی قشم&#39;, &#39;value&#39;: &#39;QB&#39;},{&#39;label&#39;: &#39;هواپیمایی زاگرس &#39;, &#39;value&#39;: &#39;ZV&#39;},{&#39;label&#39;: &#39;هواپیمایی آتا &#39;, &#39;value&#39;: &#39;I3&#39;},{&#39;label&#39;: &#39;هواپیمایی وارش&#39;, &#39;value&#39;: &#39;VR&#39;},{&#39;label&#39;: &#39;هواپیمایی پارس &#39;, &#39;value&#39;: &#39;PR&#39;},{&#39;label&#39;: &#39;هواپیمایی تابان&#39;, &#39;value&#39;: &#39;HH&#39;},{&#39;label&#39;: &#39;هواپیمایی سپهران &#39;, &#39;value&#39;: &#39;IS&#39;}&#xA;]&#xA;opts_dict={ &#39;IR&#39;:&#39;ایران ایر&#39;, &#39;B9&#39; : &#39;هواپیمایی ایران ایرتور &#39; , &#39;EP&#39; : &#39;هواپیمایی آسمان&#39;,  &#39;Y9&#39;:&#39;کیش ایر&#39;, &#39;W5&#39;:&#39;هواپیمایی ماهان &#39; , &#39;NV&#39; : &#39;هواپیمایی کارون&#39;, &#39;RV&#39; : &#39;هواپیمایی کاسپین &#39; , &#39;QB&#39; : &#39;هواپیمایی قشم&#39; , &#39;ZV&#39; : &#39;هواپیمایی زاگرس &#39; , &#39;I3&#39; : &#39;هواپیمایی آتا &#39;, &#39;VR&#39; : &#39;هواپیمایی وارش&#39;, &#39;PR&#39; : &#39;هواپیمایی پارس &#39; , &#39;HH&#39; : &#39;هواپیمایی تابان&#39; , &#39;IS&#39; : &#39;هواپیمایی سپهران &#39;}&#xA;# Create a Dash layout&#xA;app.layout = html.Div(children=[&#xA;                                   html.H1(children=&#39;Testing dashboard v01&#39;),&#xA;                               html.Div(children=&#39;&#39;&#39;&#xA;Select variable to plot below.&#39;&#39;&#39;),&#xA;html.Div(children=&#39;&#39;&#39;&#xA;Select variables to add to plot below.&#xA;&#39;&#39;&#39;),&#xA;                   dcc.Dropdown(&#xA;                  id=&#39;multiVariableDropdown&#39;,&#xA;                  options=opts,&#xA;                   value=[&#39;HH&#39;],&#xA;                 multi=True&#xA;),&#xA;               dcc.Graph(&#xA;               id=&#39;plot2&#39;&#xA;)&#xA;])&#xA;# Add callback functions&#xA;## For plot 2&#xA;@app.callback(Output(&#39;plot2&#39;, &#39;figure&#39;),&#xA;[Input(&#39;multiVariableDropdown&#39;, &#39;value&#39;)])&#xA;def update_graph(selectedVariable2):&#xA;&#xA;        traces = []&#xA;        for var in selectedVariable2:&#xA;               traces.append(go.Scatter(x=Passenger[&#39;MONTH&#39;],&#xA;                                                              y=Passenger[var],&#xA;                                                              name = opts_dict[var]&#xA;                                         ))&#xA;         fig2 = go.Figure(data=traces)&#xA;         return fig2&#xA;&#xA;if __name__ == &#39;__main__&#39;:&#xA;       app.run_server(debug=True)خروجی عبارتست از:</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Sat, 12 Mar 2022 01:16:13 +0330</pubDate></item><item><title>رسم نمودار دایره ای در پایتون</title><link>https://virgool.ir/@m.fatehi.p/رسم-نمودار-دایره-ای-در-پایتون-bdr6319yehu0</link><description>مجموعه داده مربوط به بیماری کرونا را از اینجا در نظر بگیرید. این مجموعه داده مربوط به نتیجه آزمایش کرونا و تعداد مرگ و میر در چهار ایالت امریکا است.df=pd.read_csv(&#39;covid-19-states-daily.csv&#39;)&#xA;df.head()خروجی عبارتست از:نیاز است تا کمی دست به تمیزکار داده ها بزنیم:df[&#39;dateChecked&#39;] = pd.to_datetime(df[&#39;dateChecked&#39;])&#xA;df = df[df[&#39;dateChecked&#39;].dt.date.astype(str) == &#39;2020-03-17&#39;]&#xA;df = df[df[&#39;death&#39;]&gt;=5]همچنین دقت کنید:df[&#39;state&#39;].value_counts()تنها از چهار ایالت امریکا داده داریم:import plotly   &#xA;import plotly.express as px&#xA;import plotly.io as pio&#xA;pie_chart = px.pie(&#xA;    data_frame = df,&#xA;    values = &#39;death&#39;,&#xA;    names = &#39;state&#39;,&#xA;    color = &#39;state&#39;,&#xA;    color_discrete_sequence = [&#39;red&#39;,&#39;green&#39;,&#39;blue&#39;,&#39;orange&#39;],&#xA;    hover_name = &#39;negative&#39;,&#xA;   title=&#39;Coronavirus in the USA&#39;, &#xA;   width=500,&#xA;   height=400,  &#xA;    hole=0,  &#xA;)&#xA;pio.show(pie_chart)در دستور بالا ابتدا مجموعه داده را معرفی می کنیم. در ادامه مقادیری را که قرار است برحسب آن نمودار دایره ای رسم شود را مشخص می کنیم (death) این مقادیر برحسب ایالت (state) نمایش داده می شود. همچنین رنگ هر قطعه نیز برحسب ایالت (state) مشخص می شود. همچنین می توان ترتیب و نوع رنگ را نیز مشخص نمود. اندازه خروجی هم جز مواردی است که می توان تنظیم نمود. همچنین hole چنانچه برابر 0 باشد نمودار به صورت دایره و چنانچه برابر 0.5 باشد نمودار به صورت دایره توخالی نمایش داده می شود.خروجی عبارتست از:</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Tue, 30 Nov 2021 21:12:58 +0330</pubDate></item><item><title>معرفی تابع query در پایتون</title><link>https://virgool.ir/@m.fatehi.p/معرفی-تابع-query-در-پایتون-u3m6ojkwse5z</link><description>هنگام کار با داده ها و به خصوص قالب داده dataframe نیاز هست که شرط هایی را روی داده ها پیاده سازی کنیم. در مثال زیر با استفاده از تابع query به این کار پرداخته شده است:مجموعه داده زیر را در نظر بگیرید. این مجموعه داده مربوط به قیمت خانه های تهران است که در اینجا موجود است.import numpy as np&#xA;import pandas as pd&#xA;df = pd.read_csv(&#39;Data.csv&#39;, encoding=&#34;utf-8&#34;)&#xA;df.drop_duplicates(subset =None, keep = &#39;first&#39;, inplace = True)&#xA;df[&#39;neighborhood&#39;] = df[&#39;neighborhood&#39;].astype(pd.StringDtype())&#xA;df.shapeبه طور خلاصه در کدهای بالا ابتدا سطرهای تکرار حذف شد و در ادامه نوع داده neighborhood به صورت  رشته در نظر گرفته شد.ابعاد داده هم برابر (9 و 12383) است.df.head()خروجی عبارتست از:این مجموعه داده شامل ستون های ارزش ملک (total_value) (که برحسب اجاره ماهیانه (rent) و پیش پرداخت(deposit) محاسبه شده است)، محله (neighborhood)، متراژ (area)، سال ساخت (year) است. همچنین داشتن و یا نداشتن آسانسور (elavator)، پارکینگ (parking) و انباری (warehouse) در این مجموعه داده موجود است.df.query(&#34; rent &lt;30000000 &amp; warehouse !=0   &#34;)دستور بالا خانه هایی را که اجاره بهای ماهیانه آنها کمتر از 30000000 است و انباری دارد را نمایش می دهد:df.query(&#34; year &gt; 1395 or deposit &lt; 50000000   &#34;)دستور بالا خانه هایی را نمایش می دهد که سال ساخت آنها از 1396 است یا مبلغ پیش پرداخت آنها کمتر از 50000000 است:</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Tue, 30 Nov 2021 11:44:19 +0330</pubDate></item><item><title>ایجاد ابرکلمات (Word Cloud) در پایتون</title><link>https://virgool.ir/@m.fatehi.p/ایجاد-ابرکلمات-word-cloud-در-پایتون-qvxzpygqfgk4</link><description>قطعه کد زیر را در نظر بگیرید:from wordcloud_fa import WordCloudFa&#xA;import numpy as np&#xA;from PIL import Image&#xA;import matplotlib.pyplot as plt&#xA;mask_array = np.array(Image.open(r&#34;d:/word_cloud/h.jpg&#34;))&#xA;with open(r&#34;d:/word_cloud/persian0.txt&#34;, &#39;r&#39;,encoding=&#34;utf8&#34;) as file:&#xA;       text = file.read()&#xA;       text = text.strip() #Remove Spaces&#xA;wodcloud = WordCloudFa(mask=mask_array,background_color=&#34;white&#34;,width=1200, height=800, contour_width=3, contour_color=&#39;steelblue&#39; )&#xA;wc = wodcloud.generate(text)&#xA;image = wc.to_image()&#xA;image.show()&#xA;image.save(r&#34;d:/word_cloud/p7.png&#34;)&#xA;# show&#xA;plt.imshow(wc, interpolation=&#39;bilinear&#39;)&#xA;plt.axis(&#34;off&#34;)&#xA;plt.figure()&#xA;plt.imshow(mask_array, cmap=plt.cm.gray, interpolation=&#39;bilinear&#39;)&#xA;plt.axis(&#34;off&#34;)&#xA;plt.show()خروجی عبارتست از:</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Thu, 04 Nov 2021 21:03:54 +0330</pubDate></item><item><title>بررسی تاثیرگذاری هر کدام از ابعاد با استفاده از نظریه بازی ها</title><link>https://virgool.ir/@m.fatehi.p/بررسی-تاثیرگذاری-هر-کدام-از-ابعاد-با-استفاده-از-نظریه-بازی-ها-nxik5vz5cwqb</link><description>ماژول SHAP (SHapley Additive exPlanations) که به تازگی منتشر شده است با استفاده از نظریه بازی ها به بررسی میزان اثرگذاری هر یک از ابعاد مساله بر خروجی می پردازد. فرض کنید مساله شما پیش بینی قیمت خانه است. در شکل زیر اهمیت هر یک از ابعاد مساله آمده است:رنگ قرمز نمایش دهنده تاثیرگذاری مثبت بر خروجی و رنگ آبی نمایش دهنده تاثیرگذاری منفی بر خروجی است. این ماژول به گونه ای طراحی شده است که امکان تولید نمودارهای دیگری هم وجود دارد.منابعhttps://github.com/slundberg/shap</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Sat, 02 Oct 2021 11:01:57 +0330</pubDate></item><item><title>معماری پروژه های داده کاوی (با تاکید بر پایگاه داده اوراکل)</title><link>https://virgool.ir/@m.fatehi.p/معماری-پروژه-های-داده-کاوی-با-تاکید-بر-پایگاه-داده-اوراکل-rndinytlbkp0</link><description>مدت هاست با این سوال روبرو هستم که معماری نرم افزاری، ابزارها، زیرساخت های یک پروژه داده کاوی چی هست؟ این درخواست بیشتر از سوی کسانی مطرح می شد که با پایگاه داده اوراکل سر و کار داشتند. در این مقاله تلاش می کنم تا در مورد معماری های مرسوم کمی صحبت کنم:رویکرد اول: استفاده از Oracle R Enterpriseشرکت اوراکل یک نسخه از R Language را برای استفاده در پایگاه داده منتشر کرده است. استفاده از این ابزار به جهت تعبیه شدن در پایگاه داده می تواند به بهبود فرآیند پیاده سازی الگوریتم ها منجر شود. نکته مهم این است در فرآیند انتشار این نسخه الگوریتم های محدودی استفاده شده است و عملا راه برای توسعه مدل و بهبود دقت آن بسته است.رویکرد دوم: ساخت Machine Learning Based Web Applicationدر این رویکرد می توان با استفاده از فریمورک جنگو یا فلسک در پایتون نتایج حاصل از پیاده سازی مدل را در قالب یک وب اپلیکیشن پیاده سازی کرد.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Fri, 01 Oct 2021 00:20:27 +0330</pubDate></item><item><title>پایتون و اوراکل (insert)</title><link>https://virgool.ir/@m.fatehi.p/پایتون-و-اوراکل-insert-hfwsnuhocrsi</link><description>خیلی اوقات هست که محاسباتی در پایتون انجام شده است و باید وارد جداول پایگاه داده شود. قطعه کدهای زیر را در نظر بگیرید:import cx_Oracle&#xA;sql_1 = &#39;insert into hr.python_crud values(:id, :fname, :lname)&#39;&#xA;ins_values = [1,&#39;Ali&#39;,&#39;Karami&#39;]&#xA;try:&#xA;       with cx_Oracle.connect(user=&#39;username&#39;, &#xA;                     password = &#39;pass&#39;, dsn = &#39;localhost:1521/pdb&#39;, encoding = &#39;utf-8&#39;) as connection:&#xA;      with connection.cursor() as cursor:&#xA;              cursor.execute(sql_1,ins_values)&#xA;             connection.commit()&#xA;except cx_Oracle.Error as error:&#xA;          print(error)&#xA;چنانچه چند رکورد باید وارد شود می توان از قطعه کد زیر استفاده کرد:sql_2 = &#39;insert into hr.python_crud values(:id, :fname, :lname)&#39;&#xA;ins_values = [ (1,&#39;Ali&#39;,&#39;Karami&#39;), (2,&#39;Javad&#39;,&#39;Alavi&#39;)]&#xA;try:&#xA;      with cx_Oracle.connect(user=&#39;username&#39;, &#xA;                 password = &#39;pass&#39;,dsn = &#39;localhost:1521/pdb&#39;, encoding = &#39;utf-8&#39;) as connection:            &#xA;      with connection.cursor() as cursor:&#xA;                   for i in ins_values:&#xA;                       cursor.execute(sql_2,i)&#xA;               connection.commit()&#xA;except cx_Oracle.Error as error:&#xA;       print(error)</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Thu, 02 Sep 2021 10:58:13 +0430</pubDate></item><item><title>خواهرم، اسب بازی بادی و دیوار!</title><link>https://virgool.ir/@m.fatehi.p/خواهرم-اسب-بازی-بادی-و-دیوار-bo55i4ajqvzp</link><description>مادربزرگ به رسم همیشه وقتی از تهران می آمد خانه ما با خودش برای من و خواهرم سوغاتی می آورد... سوغاتی های رنکارنگ... از خوردنی تا پوشیدنی... این بار برای خواهر دوساله ام یک اسب بازی بادی سوغات گرفته بود... خنده های از ته دل خواهرم وقتی اسب بازی بادی را باد کردم و برای اولین بار سوارش شد هنوز در گوشم هست... اما دو سه روز بعد اسب بازی بادی سوراخ شد... خواهرم هر روز بهانه می گرفت... قرار شد به مغازه کفاشی ایی که در نزدیکی خانه مان بود بروم... کفاش محل آچار فرانسه شود... قرار شد با چسب و... سوراخ را بگیرد... متاسفانه خواب کفاش کمی سنگین بود هر روز که سراغ اسب بازی بادی را می گرفتم کفاش وعده فردا را می داد... انگار سوراخ بزرگتر از این حرف ها بود... توی اینترنت دنبال اسب بادی بازی خیلی گشتم هر بار که به صفحه خرید مراجعه می کردم ناموجود بود...قرار شد سری به مغازه های اسباب بازی فروشی بزنم... وقتی سراغ اسب بادی بازی را می گرفتم می گفتند دیگر از چین وارد نمی شود... مادربزرگ از تهران زنگ می زد و با شنیدن گریه های خواهرم برای اسب بازی بادی ناراحت می شد... یک روز خیلی اتفاقی توی اپلیکیشن دیوار چشمم به یک اسب بادی بازی افتاد... خدای من... درست مثل اسب بادی بازی خواهرم...  پیام دادم... جواب آمد: این اسب بادی بازی رو برای پسرم گرفتم... چند وقت بازی کرد الان بزرگ شده نیازی ندارم برای همین هم می خوام بفروشمش... آدرس رو گرفتم... بعد از ظهر خواهر سوار اسب بازی بادی بود...</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Wed, 11 Aug 2021 18:49:52 +0430</pubDate></item><item><title>ایجاد HR Schema  اوراکل در SQLite</title><link>https://virgool.ir/@m.fatehi.p/ایجاد-hr-schema-اوراکل-در-sqlite-wwwgi1rl3jtn</link><description>برای این کار گام های زیر را تکرار کنید:یک. ابتدا SQLite Browser را از اینجا دریافت و نصب کنید. این نرم افزار یک رابط گرافیکی برای کار با پایگاه داده است. این نرم افزار به صورت رایگان برای ویندوز موجود است. حجم آن حدود 15 Mb است. دو. ابتدا ساختار جداول را با استفاده از این فایل تکست برابر شکل زیر در SQLite Browser اجرا می کنیم.اگر از تب view گزینه DB Schema را انتخاب کنید می توانید نام جداول ایجاد شده را ببینید:سه. در ادامه داده های مربوط به هر یک از جداول را از طریق این فایل تکست می توانید وارد جداول نمایید.در این مقاله نحوه ایجاد فرایند بالا با استفاده از فایل دیتابیس oracle-sample.db توضیح داده شده است. از آنجایی که این فایل رو پیدا نکردم از روش بالا استفاده کردم.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Fri, 30 Jul 2021 16:16:10 +0430</pubDate></item><item><title>بصری سازی تورم در سطح جهان</title><link>https://virgool.ir/@m.fatehi.p/بصری-سازی-تورم-در-سطح-جهان-bsh8q4gnrie1</link><description>در یکی از پست های لینکدین با مساله جالبی روبرو شدم. تلاش کردم این پست را شرح و بسط بدهم. لازم به ذکر است که داده ها از yahoo finance جمع آوری شده است. کد و داده ها در مسیر زیر موجود است:https://github.com/EconMike/InflationReportAprilبا توجه به داده ها طی 12 ماه گذشته ، شاخص کل موارد 5.4 درصد قبل از تعدیل فصلی افزایش یافته است.این بزرگترین افزایش 12 ماهه از زمان افزایش 5.4 درصدی برای دوره منتهی به آگوست 2008 بود.شاخص CPI-U متوسط تغییر در طول زمان در قیمت پرداخت شده توسط خانوارهای شهری برای مجموعه کالاها و خدمات معمولی است که مردم خریداری و مصرف می کنند. همانطور که در شکل مشخص است این شاخص از فوریه 2021 رشد چشمگیری داشته است.شاخص اجاره اتومبیل و کامیون طی یک دوره 12 ماهه تا حد باورنکردنی 88 درصد افزایش یافت. خودروها و کامیون های دست دوم به رشد ناگهانی خود ادامه دادند و در مقایسه با ژوئن گذشته 45 درصد افزایش داشتند.کرایه های هواپیمایی نیز طی 12 ماه 25 درصد افزایش یافته است.کرونا باعث ایجاد برخی از تغییرات باورنکردنی قیمت شده است که اقتصاد را به لرزه در می آورد. برخی از افزایش قیمت ها محو می شوند. با این حال، برخی از این افزایش ها نگران کننده تر هستند.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Wed, 21 Jul 2021 13:57:17 +0430</pubDate></item><item><title>معیار ماژولاریتی در خوشه بندی گراف</title><link>https://virgool.ir/@m.fatehi.p/معیار-ماژولاریتی-در-خوشه-بندی-گراف-ilirhvrsoq6i</link><description>متد Louvain یک متد نسبتا سریع برای پیدا کردن گروه ها در شبکه های بزرگ است.در این متد با استفاده از روش های حریصانه بر روی ماژولاریتی آن را بهینه کرده و به خوشه بندی راس های گراف می پردازد.این بهینه سازی در دو مرحله انجام می شود:با بهینه سازی محلی متد به دنبال گروه های کوچک میگردد.سپس با ادغام گروه های کوچک که توانایی ایجاد گروه های بزرگتر را دارند خوشه بندی را ادامه می دهد.این مراحل را مرتبا تکرار می شود تا به مقدار ماکزیمم ماژولاریتی برسیم.در این پست قصد داریم یک مثال را پیاده سازی کنیم. معیار ماژولاریتی به صورت زیر محاسبه می شود:گراف زیر را در نظر بگیرید:ماتریس مجاورت گراف بالا به صورت زیر است:فرض کنید گره های 1 و 3 و 4 متعلق به بخش الف و 2 و 5 نیز متعلق به بخش ب باشد. مقدار m نیز برابر 5 و درجه همه گره ها برابر 2 است. همچنین اگر دو گره در یک بخش باشند مقدار تابع سیگما برابر یک و در غیر این صورت برابر صفر است.مقدار ماژولاریتی را برای گره یک محاسبه می کنیم:در ادامه این معیار برای همه گره ها برابر است بابه همین ترتیب محاسبه ماژولاریتی با تغییر بخش ها ادامه پیدا می کند.در نهایت گرافی که ایجاد می شود شامل دو بخش مجزا است. گره های 1و 2 و 5 در یک بخش و گره های 3 و 4 در بخش دیگر قرار می گیرند.منابعhttps://medium.com/walmartglobaltech/demystifying-louvains-algorithm-and-its-implementation-in-gpu-9a07cdd3b010</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Mon, 12 Jul 2021 13:27:58 +0430</pubDate></item><item><title>چگونه خروجی های کد پایتون رو تمیز ببینیم؟</title><link>https://virgool.ir/@m.fatehi.p/ذخیره-خروجی-کد-پایتون-در-فایل-m6vkvb6vlnx7</link><description>حتما برای شما هم پیش آمده که خروجی برنامه ها به صورت به هم ریخته است:ما تمایل داریم این خروجی رو تمیزتر ببینیم. راهکارش استفاده از پکیج pprint است. این پکیج به صورت پیش فرض در پایتون وجود دارده فقط کافیه import شود.گاهی نیاز است که برای نمایش خروجی فارسی قطعه کد زیر اضافه شود:sys.stdout.reconfigure(encoding=&#39;utf-8&#39;)</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Mon, 12 Jul 2021 11:08:35 +0430</pubDate></item><item><title>Object Relational Mapper چیست</title><link>https://virgool.ir/@m.fatehi.p/object-relational-mapper-yp633g4jimal</link><description>شما از کدامObject Relational Mapperدر برنامه نویسی استفاده می کنید؟What is an ORM, how does it work, and how should I use one?ORMکمک می کند به جای اینکه بخواهید مستقیما از کدهایsqlدر برنامه استفاده کنید نیاز خود را از طریق کلاس ها و مدل برطرف کنید. یکی از بهترین ORM ها SQLAlchemy است. اگر در Flask کد می زنید به صورت زیر می توانید استفاده کنید:from flask_sqlalchemy import SQLAlchemy</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Tue, 01 Jun 2021 13:22:50 +0430</pubDate></item><item><title>معرفی Panel</title><link>https://virgool.ir/@m.fatehi.p/معرفی-panel-mehfogvejuok</link><description>این ابزار متن باز امکان استفاده آسان ابزارک ها ، نمودارها ، جداول و سایر اشیا برای ایجاد و ساخت انواع داشبوردهای تحلیلی فراهم می کند. این ابزار با کتابخانه های بصری سازی پایتون مانند  Matplotlib ، HoloViews و Bokeh کار می کند و امکان ایجاد و ساخت داشبوردهای تعاملی را فراهم می کند.استفاده از این ابزار در Jupyter Notebooks ، باعث می شود که امکان بررسی داده ها و آزمون و خطا برای تحلیل گر داده راحت تر باشد.این ابزار کارهای زیر را به سادگی انجام می دهد:ایجاد نمودارهایی با محدودیت های تعریف شده توسط کاربرایجاد نمودارهای تحلیل اکتشافی داده ها (EDA)ساخت داشبوردهایی که شاخص های اصلی عملکرد (KPI) و روندها را گزارش می دهندقابلیت استفاده در فریمورک های پایتون مانند Djangoصفحه گیتهاب این پروژه رو می توانید اینجا ببینید. اینجا هم یک نمونه از کاربرد این ابزار را در فریمورک Django می توانید مشاهده کنید.نصب و راه اندازیاین ابزار با پایتون 3 در ویندوز، لینوکس و مک کار می کند. برای نصب آن با استفاده از conda در Anaconda می توانید از دستور زیر استفاده کنید:conda install -c pyviz panel همچنین با استفاده از PyPI می توانید این کار را انجام دهید:pip install panelاینجا هم می توانید نحوه تنظیم در فریمورک Django رو مشاهده نمایید.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Wed, 19 May 2021 11:30:06 +0430</pubDate></item><item><title>هم‌خطی چندگانه (Multicollinearity) در تحلیل رگرسیون</title><link>https://virgool.ir/@m.fatehi.p/هم-خطی-چندگانه-multicollinearity-در-تحلیل-رگرسیون-pkaz6niuenvb</link><description>یکی از مفاهیم آماری در تحلیل رگرسیون هم‌خطی چندگانه (Multicollinearity) است. هم‌خطی چندگانه یعنی بین چند متغیر مستقل رابطه خطی وجود دارد. به عبارت دیگر بین متغیرهای پیش گویی کننده هم پوشانی(overlap) در پیش بینی متغیر هدف وجود دارد. هر متغیر پیش گویی کننده به طور کامل اطلاعات جدیدی در مورد متغیر هدف نمی دهد.در ادامه به تشریح این مفهوم پرداخته شده است.بدون هم‌خطی چندگانهشکل زیر را در نظر بگیرید. سه متغیر پیش گویی کننده X1, X2, و X3 وجود دارد. متغیر هدف نیز  با Y نمایش داده شده است.قسمت های رنگی در واقع بخش هایی از متغیر هدف Y است که توسط X ها توضیح داده می شود. همانطور که مشخص است X ها هیچگونه همپوشانی با هم ندارند و به طور مستقل و جدا از هم اندازه گیری شده اند. هر کدام از X ها همبستگی کمی با متغیر هدف Y دارد و بین X ها هیچ همبستگی وجود ندارد. به عبارت دیگر هر کدام از  X ها بخش منحصر به فردی از متغیر هدف Y را اندازه گیری می کند و پیش گویی می کند. اطلاع از مقدار یکی از X ها، خبری از ارزش سایر X ها نمی دهد. در چنین شرایطی اندازه گیری میزان ارتباط بین X1 و Y بسیار آسان است. قسمت زردرنگ در شکل بالا این ارزش را نمایش می دهد. این مقدار در حقیقت برابر با ضرایب تخمین زده شده (Estimate Coefficient) در گزارش خروجی رگرسیون است. برای اطلاعات بیشتر اینجا را ببینید.مقدار محاسبه شده برای این ضریب در حالتی که تنها یک متغیر پیش گویی کننده X1 وجود داشته باشد با حالتی که سه متغیر پیش گویی کننده X1, X2, و X3 وجود داشته باشد، یکسان است. برخی از افراد به اشتباه استقلال بین متغیرهای پیش گویی کننده را از فرض های رگرسیون می دانند. در واقعیت کمتر پیش می آید که بین متغیرهای پیش گویی کننده هیچ گونه همبستگی وجود نداشته باشد.هم‌خطی چندگانه متوسط و شدید!در شکل سمت چپ همپوشانی خفیفی بین پیش بینی کنندگان (X ها) وجود دارد. در این حالت می توان اثر منحصر به فرد هر پیش بینی کننده (X) را روی متغیر هدف Y اندازه گرفت. (قسمت های زرد، قرمز و آبی)بخش های نارنجی و بنفش در ضرایب رگرسیون قرار نمی گیرند.  این بدان معناست که ضرایب خودشان تصویر کاملی از تأثیر هر پیش بینی کننده (X) روی متغیر هدف(Y) را ارائه نمی دهد. توجه داشته باشید تا زمانی که ضرایب را تفسیر می کنید، فرضیات را نقض نمی کنید و مدل شما قابل اعتماد است. در چنین شرایطی نمی توان تشخیص داد که بخش نارنجی به کدام یک از متغیرهای X1 یا X2 منتسب است یا اینکه این تمایز حتی معنایی هم دارد یا نه؟در شکل سمت راست، همپوشانی بین X1 و X2 به حدی شدید می شود که می تواند مدل را با مشکلات تخمینی مواجه کند. وقتی حرف از هم‌خطی چندگانه می زنیم معمولا چنین حالتی مدنظر است.این مدل در تلاش است تا اثر منحصر به فرد هر پیش بینی کننده (X) را بر روی متغیر هدف(Y) تخمین بزند، اما اطلاعات منحصر به فرد کافی در مورد X1 و X2 برای محاسبه آن وجود ندارد.در شرایطی که وقتی X1 بالا می رود، X2 هم افزایش پیدا می کند، چگونه می توان تأثیر یک واحد افزایش X1 بر Y و X2 بر Y را جداگانه تخمین زد؟تخمین های منطقی احتمالی بسیاری برای تأثیر منحصر به فرد X1 بر Y وجود دارد که حتی اگر ضریب بی طرفانه باشد، یک خطای استاندارد بزرگ خواهد داشت. این شرایط به عنوان تورم واریانس (variance inflation) شناخته می شود.در چنین شرایطی برآورد ضریب نادرست است و  به احتمال زیاد ضریب متفاوتی را در یک نمونه متفاوت خواهید گرفت. در شکل بالا و در حالتی که چند خطی بودن کامل است، دو پیش بینی کننده (X1 و X2) در حقیقت گیج شده اند.در این حالت به سادگی نمی توان واریانس موجود در یکی از پیش بینی کننده ها را از واریانس موجود در دیگری جدا کرد.برای حل مساله در چنین شرایطی استفاده از رگرسیون لاسو (Lasso) و یا elastic net پیشنهاد شده است.منابعاینجا</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Wed, 05 May 2021 11:14:15 +0430</pubDate></item><item><title>اتصال به پایگاه داده اوراکل در PySpark</title><link>https://virgool.ir/@m.fatehi.p/اتصال-به-پایگاه-داده-اوراکل-در-pyspark-p9vmrh3syn3h</link><description>گاهی از اوقات نیاز است تا در پایتون مستقیما به پایگاه داده وصل شوید و داده ها را بخوانید. برای راه اندازی PySpark  در ابتدا نیاز به یکسری تنظیمات است.ابتدا نیاز است تا اسپارک را از اینجا دریافت کنید.پیشنهاد می شود فایل spark-3.1.1-bin-hadoop2.7.tgz را در مسیری مثل مسیر C:\opt\spark\spark-2.1.0-bin-hadoop2.7اکسترکت کنید. در ادامه SPARK_HOME را در قسمت بخش مدیریت Environment Variables برابر C:\opt\spark\spark-2.1.0-bin-hadoop2.7همچنین HADOOP_HOME را نیز برابرC:\opt\spark\spark-2.1.0-bin-hadoop2.7قرار دهید. همچنین نیاز است تا JAVA_HOME را برابر مسیر مانند مسیر زیر قرار دهید:C:\Program Files\Java\jdk1.8.0_212همچنین C:\opt\spark\spark-2.1.0-bin-hadoop2.7\bin را به path در قسمت بخش مدیریت Environment Variables اضافه کنید.همچنین از اینجا فایل winutils.exe را دریافت کنید و در مسیر C:\opt\spark\spark-2.1.0-bin-hadoop2.7\binقرار دهید.در پایان نیز دستور زیر را اجرا کنید:pip install pyspark وقتی در پایتون از PySpark استفاده می کنید نیاز است مراحل زیر را دنبال کنید. ابتدا کتابخانه های لازم را فراخوانی کنید:from pyspark import SparkConf, SparkContext &#xA;from pyspark.sql import SQLContext, Row &#xA;import os  در ادامه SQLContext رو ایجاد کنید. spark_config = SparkConf().setMaster(&#34;local[2]&#34;).setAppName(&#34;MyProject&#34;)&#xA;sc = SparkContext(conf = spark_config)&#xA;sqlctx = SQLContext(sc)در خط اول loacl به این معنا است که قصد داریم اپلیکیشن MyProject را روی loacl machine ایی که از local Spark استفاده می کند و به صورت 2 نخی است (multithreading) اجرا کنیم.در ادامه متغیرهای مربوطه را تنظیم می کنیم:os.environ[&#39;ORACLE_DRIVER_PATH&#39;] = &#34;C:\Oracle\Product\11.2.0\client_1\jdbc\lib\ojdbc6.jar&#34;در این مرحله تنظیمات مربوط به پایگاه داده را وارد می کنیم:df = sqlctx.read.format(&#34;jdbc&#34;).options(url=&#34;jdbc:oracle:thin:@&lt;&gt;:&lt;&gt;:&lt;&gt;&#34;&#xA;                               ,driver = &#34;oracle.jdbc.driver.OracleDriver&#34;&#xA;                                ,dbtable = &#34;account&#34;&#xA;                                ,user=&#34;....&#34;&#xA;                                ,password=&#34;...&#34;).load()توجه داشته باشید که در پوشه jars واقع در مسیر spark-1..5.2-bin-hadoop2.6 فایل ojdbc6.jar را وارد کنید.</description><category>محمد فاتحی</category><author>محمد فاتحی</author><pubDate>Sun, 18 Apr 2021 20:28:23 +0430</pubDate></item></channel></rss>