آموزش پایتون: رگرسیون - معرفی و داده ها :: بیسین - سایت تخصصی مهندسی آب

آموزش پایتون: رگرسیون - معرفی و داده ها


به یک دوره آموزشی فراگیر و عمیق خوش آمدید.

به مقدمه ای بر بخش رگرسیون یادگیری ماشین با مجموعه آموزشی Python خوش آمدید. با این حال، شما Scikit-Learn را از قبل نصب کرده اید. اگر نه، آن را دریافت کنید، همراه با پانداها و matplotlib!


اگر توزیع علمی پیمایشی قبل از کامپایل پایتون مانند ActivePython را داشته باشید، باید قبلا numpy، scipy، scikit-learn، matplotlib و pandas را نصب کرده باشید. اگر نه، دستورهای زیر را انجام دهید:


pip install numpy

pip install scipy

pip install scikit-learn

pip install matplotlib

pip install pandas


همراه با آن دسته از ورودی های عمده آموزش، ما همچنین از Quandl استفاده میکنیم که ممکن است نیاز باشد به طور جداگانه نصب کنید:


pip install quandl


من دوباره در بخش اول کد یادآوری میکنم، اما ماژول Quandl با Q-case بزرگ وارد شده است، اما اکنون با q-lower-cased وارد شده است. در کدهای ویدیو و نمونه، آن را به صورت بالایی پوشانده است.


برای شروع، رگرسیون از نظر ما و استفاده از آن با یادگیری ماشین چیست؟ هدف این است که داده های مداوم داده شود، یعنی با شکل پیوسته، معادله ای را که بهترین داده ها را متناسب با آن قرار می دهد پیدا کنید و بتوانید ارزش خاصی را پیش بینی کنید. با رگرسیون خطی ساده، شما فقط این کار را با ایجاد بهترین خط مناسب انجام می دهید:



از اینجا، می توانیم معادله آن خط را برای پیش بینی رقوم آتی استفاده کنیم، جایی که "تاریخ" محور x است، مقدار y ارزش مد نظر خواهد بود.


استفاده روزمره با رگرسیون، پیش بینی وقایع هیدرولوژیک است. این کار به این دلیل انجام می شود که ما در حال بررسی سیالیت ارقام مثلا سیل در طول زمان و تلاش برای پیش بینی مقدار متناظر سیال بعدی در آینده با استفاده از یک مجموعه داده مستمر هستیم.


رگرسیون یک شکل از یادگیری ماشین تحت نظارت است، که در آن کاربر با نشان دادن ویژگی های آن دستگاه را به سامانه می آموزد و سپس نشان می دهد که پاسخ صحیح، به طور مداوم برای آموزش دستگاه چیست. هنگامی که دستگاه تدریس می شود، کاربر معمولا "آزمایش" دستگاه را بر روی بعضی از داده های نامرئی انجام می دهد، جایی که کاربر هنوز هم می داند که پاسخ صحیح چیست، اما دستگاه از مقدار آن بی خبر است. پاسخ دستگاه با پاسخ های شناخته شده مقایسه می شود و دقت دستگاه می تواند اندازه گیری شود. اگر دقت به اندازه کافی بالا باشد، کابر می تواند در واقع از الگوریتم در دنیای واقعی استفاده کند.


از آنجایی که رگرسیون به شدت در وقایع هیدرلوژیک مورد استفاده قرار می گیرد، ما می توانیم با مثال دیگری شروع کنیم. برای شروع، ما به اطلاعات نیاز داریم گاهی اوقات داده ها به راحتی می توانند به دست آورده شوند، و گاهی اوقات شما باید آن را بیرون بکشید و آن را با هم ترکیب کنید، مانند آنچه که ما در یک سری آموزش های قدیمی تر با استفاده از یادگیری ماشین با مبانی علوم مهندسی آب برای ارقام هیدرولوژیک انجام دادیم.


اگرچه در وبسایت حاضر بکارگیری نمونه های هیدرولوژیک مناسب تر است. اما در اینجا از قیمت سهام استفاده میشود. در این مورد، ما توانستیم حداقل با قیمت سهام ساده و اطلاعات حجم از Quandl شروع کنیم. برای شروع، با داده هایی شروع می کنیم که قیمت سهام برای الفبا (قبلا گوگل) را با قیمت گوگل از دست می دهند:


import pandas as pd
import Quandl

df = Quandl.get("WIKI/GOOGL")

print(df.head())


توجه: ماژول Quandl با یک حرف بزرگ Q ارجاع شد، در حال حاضر این یک حرف کوچک است، بنابراین با ورود quandl

در این مرحله ما داریم:


              Open    High     Low   Close    Volume  Ex-Dividend  \
Date                                                                
2004-08-19  100.00  104.06   95.96  100.34  44659000            0   
2004-08-20  101.01  109.08  100.50  108.31  22834300            0   
2004-08-23  110.75  113.48  109.05  109.40  18256100            0   
2004-08-24  111.24  111.60  103.57  104.87  15247300            0   
2004-08-25  104.96  108.00  103.88  106.00   9188600            0   

            Split Ratio  Adj. Open  Adj. High  Adj. Low  Adj. Close  \
Date                                                                  
2004-08-19            1     50.000      52.03    47.980      50.170   
2004-08-20            1     50.505      54.54    50.250      54.155   
2004-08-23            1     55.375      56.74    54.525      54.700   
2004-08-24            1     55.620      55.80    51.785      52.435   
2004-08-25            1     52.480      54.00    51.940      53.000   

            Adj. Volume  
Date                     
2004-08-19     44659000  
2004-08-20     22834300  
2004-08-23     18256100  
2004-08-24     15247300  
2004-08-25      9188600 


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

بنابراین، بیایید پیش برویم و یک فریم اطلاعاتی اصلی را به صورت زیر تقسیم کنیم:


df = df[['Adj. Open',  'Adj. High',  'Adj. Low',  'Adj. Close', 'Adj. Volume']]

حالا ما فقط ستون های تنظیم شده و ستون حجم را داریم. یک زوج نقاط مهم را در اینجا در اختیار خواهیم داشت. بسیاری از مردم در مورد یادگیری ماشین صحبت می کنند یا آن را می شنوند، به شرط اینکه این نوعی هنر تاریک است که به هیچ وجه ارزش را از هیچ چیز تولید نمی کند. یادگیری ماشین میتواند ارزش را برجسته کند، در صورتی که وجود دارد، اما باید در واقع وجود داشته باشد. شما نیاز به اطلاعات معنی دار دارید پس چگونه می دانید اگر داده های معنی دار داشته باشید؟ بهترین پیشنهاد من این است که فقط به سادگی از مغز خود استفاده کنید. در مورد آن فکر کنید آیا قیمت های تاریخی قیمت های آینده را نشان می دهد؟ بعضی ها چنین فکر می کنند، اما این امر به طور مداوم در طول زمان نادیده گرفته شده است. در مورد الگوهای تاریخی چه؟ این زمانی که به شدت رضایت داده می شود (که یادگیری ماشین می تواند کمک کند)، اما به طور کلی نسبتا ضعیف است. چه رابطه ای بین تغییرات قیمت و حجم در طول زمان، همراه با الگوهای تاریخی وجود دارد؟ احتمالا کمی بهتر است بنابراین، همانطور که می توانید ببینید، این مورد نیست که اطلاعات بیشتر مناسب تر باشد، بلکه ما می خواهیم از اطلاعات مفید استفاده کنیم. در عین حال، داده های خام گاهی باید تغییر داده شوند.

تغییرات روزانه را در نظر بگیرید، مثلا با تغییرات بالا و منفی کم؟ چگونه تغییر درصد روزانه خواهیم داشت؟ آیا داده ها را باید در نظر بگیرید که به سادگی Open، High، Low، Close می شوند یا داده هایی است که Close، Spread / Volatility، به صورت درصد، تغییر روزانه برای بهتر شدن است؟ انتظار می رود که دومی ایده آل باشد. سابقا همه داده های بسیار مشابه بود. دومی براساس اطلاعات یکسان از سابق ساخته شده است، اما اطلاعات به مراتب بیشتر ارزشمند را به جدول می دهد.

بنابراین، تمام داده های شما مفید نیست، و گاهی اوقات شما نیاز به دستکاری بیشتر بر روی داده های خود به منظور آنکه نسبت به حالت اولیه حتی بیشتر ارزشمند شود و تغذیه از طریق یک الگوریتم یادگیری ماشین صورت پذیرد. بیایید پیش برویم و داده هایمان را در ادامه تغییر دهیم:


df['HL_PCT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. Close'] * 100.0


این یک ستون جدید ایجاد می کند که درصد بر اساس قیمت بسته است که اندازه گیری خام ما از نوسان است. سپس، ما تغییر درصد روزانه را انجام می دهیم:


df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100.0

اکنون یک فریم داده جدید را به صورت زیر خواهیم داشت:


df = df[['Adj. Close', 'HL_PCT', 'PCT_change', 'Adj. Volume']]
print(df.head())


            Adj. Close    HL_PCT  PCT_change  Adj. Volume
Date                                                     
2004-08-19      50.170  8.072553    0.340000     44659000
2004-08-20      54.155  7.921706    7.227007     22834300
2004-08-23      54.700  4.049360   -1.218962     18256100
2004-08-24      52.435  7.657099   -5.726357     15247300
2004-08-25      53.000  3.886792    0.990854      9188600

تهیه از: بهزاد سرهادی

 کلیه سرفصل های برنامه نویسی: اینجا کلیک کنید.





نظرات (۰)

فرم ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی


درباره بهترين هاي بيسيـــن بدانيد...

Bird

يکي از مهمترين اهداف اين سايت تهيه آموزش هاي روان از ابزارهاي کاربردي علوم آب است.

اهميت مطالعات محيطي با ابزارهاي نوين در چيست؟

امروز با فارغ التحصيلي جمع کثير دانشجويان سالهاي گذشته و حال، با گذر از کمي گرايي ديگر صرف وجود مدارک دانشگاهي حرف اول را در بازار کار نمي زند؛ بلکه سنجش ديگري ملاک؛ و شايسته سالاري به ناچار! باب خواهد شد. يکي از مهم ترين لوازم توسعه علمي در هر کشور و ارائه موضوعات ابتکاري، بهره گيري از ابزار نوين است، بيسين با همکاري مخاطبان مي تواند در حيطه علوم آب به معرفي اين مهم بپردازد.

جستجو در بيسين


بیسین - سایت تخصصی مهندسی آب

سایت مهندسی آب بیسین با معرفی مهم ترین و کاربردی ترین نرم افزارها و مدل های شبیه سازی در حیطه مهندسی آب، تلاش به تهیه خدمات یکپارچه و محلی از محاسبات هیدرولوژیکی و هیدرولیکی می کند

W3Schools


اطلاعات سايت

  • behzadsarhadi@gmail.com
  • بهزاد سرهادي
  • شناسه تلگرام: SubBasin
  • شماره واتساپ: 09190622992-098
  • شماره تماس: 09190622992-098

W3Schools