آموزش پایتون: رگرسیون - معرفی و داده ها
به یک دوره آموزشی فراگیر و عمیق خوش آمدید.
به مقدمه ای بر بخش رگرسیون یادگیری ماشین با مجموعه آموزشی 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']]
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
تهیه از: بهزاد سرهادی
کلیه سرفصل های برنامه نویسی: اینجا کلیک کنید.
شناسه تلگرام مدیر سایت: SubBasin@
نشانی ایمیل: behzadsarhadi@gmail.com
(سوالات تخصصی را در گروه تلگرام ارسال کنید)
_______________________________________________________
نظرات (۰)