مجله خبری برنامه‌نویسی پایتون

مرکز آموزش و رقابت برنامه نویسی پایتون

مجله خبری برنامه‌نویسی پایتون

مرکز آموزش و رقابت برنامه نویسی پایتون

مجله خبری برنامه‌نویسی پایتون

زبان پایتون (Python) در سال ۱۹۹۱ توسط یک برنامه‌نویس هلندی به نام گیدو ون روسوم (Guido van Rossum) ابداع شد و از آن زمان تا کنون رشد قابل ملاحظه‌ای را شاهد بوده است.

اگر چه وی در آن زمان گفته بود: «من به هیچ وجه قصد ندارم زبانی بسازم که به طور گسترده مورد استفاده قرار بگیرد» ولی اکنون و با گذشت نزدیک به سه دهه از آن تاریخ، پایتون تقریباً تمام رقبای خود را کنار زده و به اندازه‌ای محبوبیت یافته که حتی افراد مبتدی نیز کدنویسی را با آن شروع می‌کنند.

در یک سال گذشته، «Python» یکی از کلماتی بود که شهروندان آمریکایی بسیار زیاد در گوگل جستجو کرده‌اند، حتی بیشتر از نام ستاره‌های تلویزیونی.

۱۸ مطلب در آبان ۱۳۹۷ ثبت شده است

نویسنده: Kimberly Cook

مترجم : آزاده رضازاده همدانی

لینک : منبع


امروزه یادگیری عمیق یکی از مطرح ترین و جذاب ترین زیر شاخه های یادگیری ماشین و هوش مصنوعی است که در زمینه هایی از جمله بینایی ماشین, پردازش صوت, اتومبیل های خودران و... کاربرد فراوانی دارد. در این مقاله مروری بر کتابخانه های پرکاربرد و محبوب پایتون در این حوزه خواهیم داشت که شامل معماری های متفاوت یادگیری عمیق از جمله شبکه های عصبی پیش رو, autoencoders, شبکه های عصبی بازگشتی RNNs و شبکه های عصبی کانولوشن CNNs  می باشند.

v     چرا تنها 5 کتابخانه؟

در پایتون کتابخانه های متعددی در زمینه یادگیری عمیق وجود دارد این در حالی است که شما برای یادگیری و کار در این زمینه تنها به تعداد انگشت شماری از این کتابخانه ها احتیاج دارید. پس بهتر است به جای خسته و اشباع کردن ذهن خود با انبوهی از اطلاعات , تنها با کتابخانه های مهم و پرکاربرد آشنا شوید.

v     آیا لزومی بر یادگیری کلیه کتابخانه های زیر است؟

مطمینا خیر! در واقع شما تنها با یادگیری یک یا دو کتابخانه از موارد ذکر شده قادر خواهید بود تا به هر آنچه مدنظر شما است در یادگیری عمیق دست یابید.

v     اسامی کتابخانه های مطرح پایتون در یادگیری عمیق به طور خلاصه به شرح زیر است:

1-     Theano : یک کتابخانه سطح پایین که تخصص اصلی آن انجام محاسبات بهینه و کارا می باشد و در صورتی که به انعطاف پذیری و سفارشی سازی جزیی تری نیاز داشته باشید, می توانید از این کتابخانه استفاده نمایید.

2-     TensorFlow  : یک کتابخانه سطح پایین دیگر که نسبت به Theano  از میزان اهمیت کمتری برخوردار می باشد. توسط شرکت google ارایه و پشتیبانی شده و از امکان پردازش توزیع شده برخوردار می باشد.

3-     Lasagne :  نسخه ای سبک از کتابخانه Theano است  که دشواری های آن را ندارد. به عبارتی گاهی انعطاف پذیری Theano برای شما مطلوب است اما لزومی به ایجاد لایه های شبکه عصبی از ابتدا نمیبینید, پس می توانید در چنین مواردی از این کتابخانه استفاده نمایید.

4-      Keras : نسخه کامل تری از دو کتابخانه Theano و Tensorflow  اما به صورت خلاصه تر, ماژولارتر و به شدت سریعتر ! این کتابخانه یکی از محبوب ترین کتابخانه های پایتون در یادگیری عمیق بوده و نقطه شروع مناسبی برای افراد تازه کار محسوب می شود.

5-     MXNet : کتابخانه سطح بالایی مشابه Keras است که کاربرد اصلی آن در الحاق زبان های متفاوت بود و همچنین از پردازش توزیع شده پشتیبانی می نماید.

در ادامه هر یک از کتابخانه ها بیشتر توضیح داده خواهند شد :

1-     Theano

این کتابخانه به دلیل میزان اهمیت و تاثیر بالا آن در ایجاد سایر کتابخانه های محبوب و موثر پایتون مثل Kerasو Lasagne در این مقاله لقب "مربی" را به خود اختصاص می دهد.  

هسته اصلی این کتابخانه از آرایه های چند بعدی تشکیل شده و کاربرد اصلی آن انجام عملیات ریاضی می باشد. از سرعت بالایی برخوردار بوده و با استفاده از GPU که 140 برابر سریعتر از CPU می باشد , بهینه شده است. به بیان دیگر این کتابخانه سنگ بنای شبکه عصبی بوده و اهمیت نقش آن مشابه کتابخانه Numpy در محاسبات علمی می باشد. اما از این کتابخانه به ندرت به طور مستقیم در کدنویسی استفاده می­شود بلکه معمولا از کتابخانه های سطح بالاتر بهره گرفته شده مگر در مواردی خاص که به تغییرات و سفارشی سازی های سطح پایین نیاز باشد. در لینک های زیر میتوانید اطلاعات بیشتری پیرامون این کتابخانه و مثال های متعددی از جمله تعریف تابع فعالسازی در Theano را کسب نمایید.

http://deeplearning.net/software/theano/index.html

http://www.marekrei.com/blog/theano-tutorial

2-     TensorFlow

اولین بار توسط تیم هوش مصنوعی Google ارایه شده و اخیرا به صورت متن باز در اختیار عموم قرار گرفته است. در این کتابخانه محاسبات عددی به کمک گرافهای جریان داده انجام می شود. اما لازم بذکر است کتابخانه Theano در مقایسه با این کتابخانه سریعتر بوده و از عملیات بیشتری پشتیبانی می نماید.

 از جمله مزایای این کتابخانه می توان : پشتیبانی شرکت قدرتمند گوگل و برخورداری از ویژگی محاسبات توزیع شده که امکان آموزش شبکه های عصبی را بر روی چندین GPU آسانتر می کند, نام برد. برای کسب اطلاعات بیشتر میتوانید به لینک های زیر مراجعه نمایید:

https://www.tensorflow.org

http://learningtensorflow.com

3-    Lasagne

این کتابخانه , نسخه سبک تری از کتابخانه Theano است که امکان ایجاد و آموزش شبکه های عصبی را با بهره گیری از امکانات Theano اما به طور آسانتر در اختیار میگذارد.هر چند که  دراینجا نیز هنوز شما باید لایه های شبکه عصبی را به طور دستی تعریف نمایید اما این کار, به مراتب آسانتر از کار با آرایه های چندبعدی محسوب می شود. پس میتوان گفت این کتابخانه , انعطاف پذیری Theano و سادگی Keras را دارا می باشد.

https://lasagne.readthedocs.io/en/latest

http://katbailey.github.io/post/neural-nets-in-python

 

4-     Keras

به 3 دلیل این کتابخانه یکی از کتابخانه های محبوب پایتون در یادگیری عمیق است :

·         این کتابخانه نسخه سبک تری از دو کتابخانه مطرح Theano و TensorFlow است که به راحتی و بر حسب نوع پروژه خود می توانید بین یکی از این دو سوییچ کنید.

·         خصوصیاتی از جمله : ماژولاریتی , خلاصه بودن, قابلیت توسعه , .. باعث شده است که کار با این کتابخانه آسان و لذت بخش باشد.

·         وجود شبکه های عصبی معمول و متعارف دراین کتابخانه که امکان اجرای آسان و سریع آنها  را فراهم آورده است. به طور مثال به آسانی می توان با استفاده از این کتابخانه, یک شبکه عصبی کانولوشن را ایجاد و اجرا نمود.

Keras کتابخانه ی سریع برای انجام آزمایشات می باشد اما در حال حاضر, این کتابخانه قادر به اجرا بر روی محیط­های دارای چندین GPU به منظور آموزش موازی شبکه نمی باشد, که این امر یک نقطه ضعف برای Keras محسوب می شود.

https://keras.io/

https://github.com/fastforwardlabs/keras-hello-world/blob/master/kerashelloworld.ipynb

 

5-     MXNet

این کتابخانه نیز مشابه keras یک کتابخانه سطح بالا محسوب شده و امکان الحاق 7 زبان متفاوت از جمله C++, ,R ,Python ,javascript Matlab  را فراهم می آورد و گزینه مناسبی برای کارهای گروهی محسوب میشود. هچنین مزیت مهم این کتابخانه , امکان آموزش شبکه به صورت توزیع شده و با استفاده از چندین GPU و CPU است.

اما لازم به ذکر است ایجاد شبکه عصبی در این کتابخانه در مقایسه با keras بدلیل کمبود منابع  آموزشی لازم , کاری بسیار دشوار و زمانبر است.

http://mxnet.io

https://indico.io/blog/getting-started-with-mxnet

✍️  به نکات زیر توجه کنید :


▪️دو بخشی که کادری به رنگ آبی دارد، باید آدرس ایمیل و رمز خودتان را وارد کنید. و در بخش To آدرس ایمیل گیرنده را وارد کنید.


▪️از طریق این لینک  وضعیت less secure apps را به ON تغییر دهید. تا گوگل به شما اجازه ورود به حسابتان را دهد.


برای مشاهده تصاویر در اندازه اصلی روی عکس کلیک کنید.

نویسنده : Robert Carver

مترجم : آزاده رضازاده همدانی

امروزه برنامه نویسی پایتون یکی از پرتقاضاترین شغل ها در صنعت بانکداری و بیمه محسوب می شود.خوشبختانه فراگیری زبان پایتون بسیار اسان بوده به گونه ای که در مدارس ابتدایی انگلستان برای آموزش مفاهیم پایه برنامه نویسی از این زبان استفاده می­شود. اگر هدف شما از یادگیری پایتون ورود به دنیای سرمایه گذاری و اقتصاد است , بهتر است قبل از شروع چندین نکته را بدانید:

1-    کدام نسخه پایتون مناسب شما است؟ پایتون 2  یا پایتون 3 ؟

معمولا نسخه های جدید یک زبان, علاوه بر دارا بودن امکاناتی جدید, از نسخه های قدیمی نیز پشتیبانی می کنند. این بدین معنی است که با ارتقاء نسخه, همچنان کدهای قبلی نوشته شده قابل اجرا هستند. اما این قانون در مورد پایتون 3 برقرار نیست. بعبارتی پایتون 3 هرگز قادر به پشتیبانی برنامه های نوشته شده با پایتون 2 نمی باشد.  به همین دلیل پس از حدود 10 سال که از ارایه نسخه 3 پایتون می گذرد, نسخه 2 همچنان پشتیبانی می شود. البته ارایه نسخه جدید برای پایتون 2 متوقف شده است. ولی همچنان بطور گسترده در صنعت تجارت و امور مالی و اقتصادی کاربرد دارد.

این امر واضح است که انتخاب نسخه های جدید پایتون 3 و بهره گیری از امکانات جدید آن,  به پیشبرد پروژه های جدید کمک بیشتر خواهد کرد اما گاهی ممکن است در شرایط کاری قرار بگیرید که مجبور به کار با پایتون 2 باشید.پس بهتر است خود را از هم اکنون برای کار با هر نسخه پایتون آماده کنید.

 

2-    کتابخانه های موردنیاز

هسته اصلی پایتون بسیار سبک است بنابراین برای هر هدف و منظوری که دارید باید ابتدا کتابخانه مربود به آن را به هسته اصلی اضافه نمایید. این کتابخانه ها , توابعی را برای اجرای عملیات محاسبات ریاضی, کار با تقویم, کار با داده ها و یا انجام کارهای سیستمی در اختیار شما قرار می دهند.

برای استفاده از پایتون در پروژه های مالی ,  شما به کتابخانه های : numpy (برای کار با آرایه های بزرگ و عملیات مربوط بر روی آنها) , Scipy ( عملیات آماری و توابع ریاضی پیشرفته) , matplotlib (نمایش داده)   نیاز دارید. همچنین به منظور کار های پیچیده تر به کتابخانه های tensorflow( برای بکارگیری الگوریتم های یادگیری ماشین) , pandas ( برای کار با داده ها) و کتابخانه pedigree که توسط شرکت بزرگ AQR پیاده سازی شده است نیاز خواهید داشت.

لازم بذکر است که میتوان از نرم افزار anaconda برای نصب پایتون و هر یک از کتابخانه های دلخواه بهره گرفت.

3-    چگونه میتوان مشکل سرعت را در پایتون حل کرد؟

ممکن است برنامه نویسانی که با زبان هایی مثل c,c++ , Java و ... کار کرده باشند , پایتون را کندتر بدانند هرچند که پایتون در مقایسه با سایر زبانهای محاسباتی مثل Matlab و R از سرعت بالاتری برخوردار می باشد. عموما برنامه نویسان از اغراق در مورد سرعت کدهای ود و کارایی آن لذت می برند اما در واقع بسیاری از کدها چندان ضرورتی برای اجرای سریع ندارند. پایتون در شرایطی که مجبور به اجرای عملیات تکراری بر روی مجموعه داده های بزرگ باشد , بسیار کند و آهسته عمل می کند.

خوشبختانه برای این مشکل یک راه خوب وجود دارد. شما به راحتی می توانید کدهای نوشته شده به زبان های c و c++ را در پایتون جایگذاری نموده و از سرعت و کارایی آنها بهره مند شوید. پس حتما نحوه انجام این کار را فرا بگیرید!

 

4-    پایتون قابلیت کار با داده های حجیم را دارد

شرکت های سرمایه گداری و مالی بزرگ, این روزها به دنبال استفاده از آخرین تکنولوژی های روز دنیا هستند که با منابع جدید داده در ارتباط می باشند. نکته مشترک کلیه منابع داده, حجیم و بزرگ بودن آنهاست. به طور مثال برای استفاده از داده های twitter برای پیش بینی تمایلات بازار , ایده بسیار خوبی است. اما روزانه حدود 500 میلیون توییت جدید تولید می شود که دخیره سازی , پردازش و تحلیل این حجم عظیم داده , فرایندی بسیار پیچیده می باشد.

خوشبختانه پایتون با استفاده از کتابخانه های spark و Hadoop با این قضیه کنار آمده است . واسط های کاربری نیز برای ارتباط پایتون با پایگاه داده هایی غیر از SQL مثل MongoDB و یا ارتباط با provider های فضای ابری پیاده سازی شده اند.

 

5-    از GIL نترسید!

GIL مخفف عبارت Global Interpreter Lock مکانیزمی است که مفسرهای زبان های برنامه نویسی از آن برای همگام سازی thread ها استفاده می کنند . به عبارتی مفسری  که از GIL استفاده می کند تنها در هر لحظه قادر به اجرای یک Thread بر روی پردازنده خواهد بود حتی اگر پردازنده دارای امکانات پردازش چند هسته ای باشد! این ویژگی از دید مخالفان پایتون بسیار مورد نقد واقع شده است. زیرا اجرای تنها یک Thread  در هر لحظه باعث کاهش سرعت اجرا و عدم بهره وری کامل از پردازنده های چندهسته ای می شود.  در واقعیت, چون برنامه ها زمان بسیاری را صرف اتلاف وقت برای وروودی و خروجی می کنند , استفاده از مکانیزم GIL به ندرت ایجاد مشکل می کند. هرچند که عملیات محاسباتی حساس و عظیم می تواند توسط این مکانیزم تحت تاثیر قرار بگیرد. اما باید در نظر گرفت که اجرای چنین عملیاتی بر روی سیستم های رومیزی و لپ تاپ منطقی نبوده و نوعی خودآزاری محسوب می شود! پس به عنوان راه حل می توان کدهای پیچیده خود را به طور موازی بر روی پردازنده های موجود در فضای ابری اجرا نمود.

 

در انتها شاید جالب باشد بدانید که نویسنده مقاله فوق آقای Robert Carver مدیر سابق شرکت بیمه AHL  و نویسنده کتاب های Systematic Trading و Smart Portfolios از حدود 7 سالگی شروع به یادگیری زبان های برنامه نویسی کرده است و زبان های بسیاری را آموخته اما زبانی که هر روز با آن برنامه نویسی می کند , پایتون است!


منبع (+)

مترجم : آزاده رضازاده همدانی

ویدئوهای آموزش یادگیری ماشین یا پایتون [کلیک کنید]

در دنباله آموزش­های یادگیری ماشین, مثال رگرسیون بر روی داده­های ارزش سهام را ادامه می­دهیم: کدهایی که در مرحله قبل نوشتیم به صورت زیر است:

در ادامه باید تعدادی از کتابخانه­ها را import کنیم:

·         numpy: داده ها را به آرایه ( numpy Array ) تبدیل کرده تا بتوان آنها را در اختیار scikit-learn قرار داد.

·         ماژول پیش پردازش Preprocessing و اعتبارسنجی CrossValidation: که بیشتر در طول کدنویسی در مورد آنها توضیح خواهیم داد. اما به طور خلاصه کافی است بدانید که پیش پردازش, مرحله پاکسازی و مقیاس بندی داده­ها قبل از شروع عملیات یادگیری ماشین و اعتبار سنجی فاز آزمایش نتایج حاصل از اجرای الگوریتم یادگیری ماشین است.

·         الگوریتم linear Regression : همان الگوریتم رگرسیون خطی است.

·         Svm: الگوریتم یادگیری ماشین به کار رفته برای نمایش نتایج

تا این مرحله داده­های سودمند را دریافت کرده­ایم اما واقعا یادگیری ماشین چگونه کار میکند؟ در یادگیری بانظارت, مجموعه­ای از ویژگی­ها Features و برچسب­ها Labels را داریم. ویژگی­ها, خصوصیات توصیفی هر نمونه و برچسب, کلاسی است که در واقع نمونه به آن تعلق دارد و قرار است توسط یادگیری ماشین, پیش­بینی شود.  یکی از مثال­های رایج در رگرسیون, پیش­ بینی ارزش حق بیمه اشخاص است. شرکت بیمه اطلاعاتی از جمله سن, سوابق تخلفات رانندگی, سوابق سوء پیشینه و میزان اعتبار بانکی شخص را جمع آوری میکند. البته این داده­ها را از طریق اطلاعات مشتریان گذشته دریافت کرده تا حق بیمه مطلوب را پیش بینی نماید. در این مثال مشخصات هر مشتری به عنوان ویژگی­ها و حق بیمه به عنوان برچسب مرتبط با هر مشتری در نطر گرفته می­شود.

در مورد مثال بالا ویژگی­ها و برچسب چگونه تعیین می­شود؟ از آنجایی که هدف پیش بینی قیمت است آیا قیمت به عنوان برچسب در نطر گرفته می­شود؟ ویژگی­ها چطور؟ ویژگی­ها عبارتند از : قیمت فعلی, درصد high-low و درصد نوسانات تغییرات. قیمت آینده Future price به عنوان برچسب در این مثال در نظر گرفته می­شود.

حال کمی جلوتر برویم و خطوطی جدید را اضافه نماییم:

در اینجا ابتدا ستونی را به عنوان ستون پیش بینی(forecast_col) تعیین می­کنیم. سپس کلیه مقادیر نامعتبر NAN(not a number) را با مقدار99999-  جایگزین می­نماییم. از آنجایی که نمیتوان یک داده ناقص با مقادیر نامعتبر را به دسته­بند یادگیری ماشین ارسال کرد لذا راهکار­های متعددی برای حذف داده­های ناقص وجود دارد. از جمله: جایگزینی مقادیر نامعتبر با مقدار 99999-  که داده را به منزله یک داده پرت تلقی می­کند. و همچنین حذف کلیه داده­های ناقص. اما این کار احتمال از دست دادن حجم عطیمی از اطلاعات مفید را ایجاد می­کند.

بر خلاف مجموعه داده مربوط به ارزش و تعداد سهام که شامل داده­های کامل و بدون نقصی می­باشد, مجموعه داده­های دنیای واقعی بسیار ناقص و نامعتبر و یا به اصطلاح کثیف Messy می­باشند. اما شما لزوما نیازی به تضمین صحت همه داده­ها نخواهید داشت و حتی میتوانید شرط ببندید که داده­های واقعی مورد استفاده در الگوریتم یادگیری ماشین حتما دارای نقص­هایی می­باشند. بنابراین باید مراحل آموزش و آزمایش نتایج را به ظور زنده بر روی داده­های واقعی یکسان با تمام ویژگی­های آنها انجام داد.

در نهایت تعداد مواردی که میخواهیم پیش­بینی کنیم تعیین می­شود (forecast_out) .در بسیاری موارد به طور مثال پیش بینی حق بیمه, "در همان لحظه", تنها به یک عدد نیاز داریم درحالی که اصولا بدنبال پیش­بینی تعداد مشخصی از داده­ها هستیم.  معمولا هدف, پیش بینی %1  تعداد کل رکورد­های موجود در دیتاست در آینده است. این بدین معنی است که مثلا با داشتن 100 روز ارزش سهام ,هدف, پیش بینی ارزش سهام در یک روز آینده است. پس آنچه ا که می­خواهید, مشخص کنید! اگر تمایل به پیش بینی قیمت فردا را دارید مقدار forecast-out=1 خواهد بود. و اگر مقدار forecast-out=10 باشد یعنی شما قابلیت پیش بینی قیمتها تا ده روزآینده (یک هفته و نیم آینده) را خواهید داشت.

در مثال اولیه مجموعه ای از مقادیر فعلی را به عنوان ویژگی و قیمت آینده (منظور از آینده %1  تعداد داده­های موجود در دیتاست می­باشد )را به عنوان برچسب در نظر گرفتیم. از آنجایی که همه ستون­های فعلی را به عنوان ویژگی در نظر گرفته ایم لذا با یک عملیات ساده موجود در کتابخانه pandas , ستونی جدید برای برچسب ایجاد می نماییم.

تا اینجا ویژگی­ها و برچسب همه نمونه ­ها  معین گردید. در مرحله بعد پس از انجام عملیات پیش پردازش , نمونه ­ها در اختیار الگوریتم رگرسیون قرار خواهند گرفت که در بخش های آینده پیرامون آن صحبت خواهد شد.


مترجم : آزاده رضازاده همدانی

ویدئوهای آموزش یادگیری ماشین یا پایتون [کلیک کنید]


پیشنیاز : Scikit-learnو Pandas, matplotlib

(اگر نسخه علمی  از پیش کامپایل شده پایتون مثل ACtivePython را ذز اختیار دارید پس نیازی به نصب کتابخانه­های numpy,Scipy,Scikit-learn,Matplotlib,pandas نیست در غیر این صورت آنها را به صورت جداگانه نصب نمایید)

همچنین علاوه بر نصب کتابخانه­های فوق , کتابخانه quandl  را نیز نصب نمایید. (به qو یا Q هنگام import کتابخانه quandl توجه نمایید!!)

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

با داشتن معادله خط میتوان داده­های جدیدی که درآینده دریافت می­شوند را تخمین و پیش بینی نمود. به طور مثال فرض کنید در شکل بالا محور افقی نشاندهنده زمان (تاریخ) و محور Y عمودی نشان دهنده قیمت باشد. بنابراین با داشتن معادله خط می­توان قیمتها را در اینده پیش بینی نمود.

یکی از کاربردهای مرسوم رگرسیون پیش بینی ارزش سهام است بدین صورت که بادرنظر گرفتن روندو جریان قیمت در طول زمان , و با داشتن مجموعه داده­های پیوسته, ارزش روند جدید سهام در آینده پیش بینی میشود.

رگرسیون نوعی یادگیری ماشین با ناظر است. در این حالت فرد خبره(محقق) بارها و بارها نمونه­ها و ویژگی­ها را در اختیار ماشین قرار داده سپس برچسب کلاس دسته بندی صحیح هریک, را نیز در اختیار آن قرار می­دهد تا بدین ترتیب ماشین پروسه دسته­بندی را فرابگیرد. پس از آن که ماشین آموزش داده شد, نوبت به مرحله آزمایش (تست) ماشین می­رسد. بدین صورت که نمونه­های دیده نشده ای که برچسب کلاس آن برای فرد خبره معلوم اما برای ماشین نامعلوم و نامشخص است در اختیار ماشین قرار داه می­شود.پاسخهای حاصل از تشخیص ماشین با پاسخ­های اصلی درست مقایسه شده و میزان صحت ماشین اندازه­گیری می­شود.اگر صحت به اندازه کافی بالا باشد محقق میتواند این الگوریتم را بر روی داده­های واقعی اعمال نماید.

از آنجایی که مثال پرکاربرد رگرسیون, پیش بینی ارزش سهام است پس می­توان با مثال زیر شروع کرد:

در ابتدا به داده احتیاج داریم. گاهی اوقات بدست آوردن این داده­ها کار آسانی است اما گاهی باید اطلاعات مدنظر خود را از بین داده­های موجود بیرون کشید مشابه کاری که در این مثال انجام شده است:  

در اینجا از اطلاعات ساده موجود پیرامون ارزش و تعداد سهام در کتابخانه Quandle استفاده خواهیم کرد که قبلا توسط google جمع آوری شده است.

در متن بالا Q در کلمهQuandle  باید با حروف کوچک نوشته شود.

در حال حاضر این اطلاعات در اختیار ماست: همانطور که مشاهده می­کنید حجم آنها برای شروع کمی زیاد است.

همانطور که قبلا در مقدمه هم توضیح داده شد, در یادگیری ماشین بخشی وجود دارد که هدف آن کاهش میزان داده­های ورودی است. در این مثال خاص چند ستون داریم که بسیاری ازآنها زاید و تکراری بوده و تنها یک زوج از آنها ثابت بوده و تغییر نمیکند. احتمالا همه با این موضوع موافقیم که داشتن همزمان داده های Regular و داده­های Adjusted امر مطلوبی نیست. ستون­­های Adjasted مطلوبترین اطلاعات را در اختیار ما قرار می­دهند در حالی که ستونهای regular حاوی اطلاعات روزانه بوده که شاید خیلی مفید نباشند. مثلا سهام دارای بخشی به نام stock splits(تقسیم سهام) میباشد که ممکن است یک سهم به 2 سهم تقسیم شود و ارزش سهام نصف شده در حالی که ارزش آن شرکت نصف نشود. ستون­های adjusted به مرور و در گذر زمان برای stock splits تنظیم می­شوند از اینرو به منظور تحلیل داده­ها بسیار قابل اعتمادتر هستند. حالا بهتر است کمی پیش برویم و نمونه کوچکی از داده ها را دقیق تر بررسی کنیم:

دراینجا فقط ستون­های adjusted و همچنین ستون volume (تعداد سهام )راداریم. لازم است پیرامون نکاتی مهم بحث شود:

·         آیا این که افراد تصور میکنند که یادگیری ماشین قادر به خلق اطلاعات از هیچ است صحیح می­باشد؟ خیر در واقع باید اطلاعاتی حتما موجود باشد تا یادگیری ماشین بتواند آن را برجسته و مشخص نماید.

·         شما به داده های با معنی احتیاج دارید. حال چگونه متوجه خواهید شد که این داده­ها با معنی هستند یا خیر؟ بهترین پاسخ برای این سوال این است که از فکر و مغز خود استفاده کنید و در مورد آن فکر کنید.

·         آیا قیمت­های گدشته نشان­دهنده قیمتهای آینده هستند؟ بعضی از افراد اینگونه فکر میکنند اما در گذر زمان  ثابت شده است که این تصور اشتباه است.

·         الگو­های گذشته چطور؟ آیا در پیش­بینی آینده موثر هستند؟ این نظریه تا حدودی می­تواند خوب باشد اما در کل هنوز ضعیف است.

·         در راستای بررسی الگوهای گدشته, آیا بررسی روابط بین تغییرات ارزش سهام و تعداد سهام (volume) در طول زمان به پیش­بینی ارزش سهام در آینده کمک خواهد کرد؟بله این دیدگاه تا حدودی نسبت به نظرات قبلی بهتر شده است.

پس همانطور که می­بینید داشتن داده بیشتر به منزله بهتر بودن داده نیست و هدف در یادگیری ماشین کسب مفیدترین داده­ها می­باشد. بدین منظور گاهی نیازاست تاتغییراتی بر روی اطلاعات خام اولیه صورت پذیرد.

میزان نوسانات روزانه مثلا کمترین تغییرات رادر نطر بگیرید. به نظر شما بهتر است داده ها به سادگی مطرح شده (Open, High, Low, Close)و یا به صورت نوسانات و درصد تغییرات( Close, Spread/Volatility, %change )؟ تصور من این است درصد تغییرات اطلاعات مفیدتری را به ما می­دهد.

بنابراین همانگونه که تاکنون مشاهده کردید همه داده­های موجود اطلاعات مفیذی را در اختیار شما قرار نمیدهند, بلکه باید قبل از در اختیار گذاشتن داده ها به صورت ورودی الگوریتم یادگیری ماشین, تغییراتی را بر روی آنها انجام دهید.

در این بخش مقدار (high-low)/low*100 محاسبه می­شودکه نشان­دهنده درصد انتشار بر اساس ارزش close  بوده و میزان نوسانات را اندازه­گیری می­کند:

در انتها درصد تغییرات روزانه محاسبه می­شود:

و چهار ستون زیر نمایش داده می­شود:

 


مترجم : آزاده رضازاده همدانی


مقدمه :

به فرایند استخراج دانش  و دریافت درک, از بین حجم عظیم و متنوعی از داده­ها با سازماندهی , پردازش وتحلیل داده­ها , علوم داده می­گویند. علوم داده شامل تخصص­های متنوعی از جمله مدل­سازی ریاضی و آماری, استخراج داده­ها از منبع و همچنین بهره­گیری از تکنیک­های نمایش و بصری سازی داده­ها و همچنین شامل روش­های مدیریت داده­های حجیم به منظور استخراج داده­ها ی ساخت­یافته و ساخت نیافته می­باشد. در ادامه چند نمونه از کاربردهای علوم داده را خواهیم دید:

سیستم­های پیشنهاددهنده :

از آنجایی که خرید و فروش اینترنتی امروزه بسیار رایج و همه­گیر شده است, سیستم­های تجارت الکترونیک قادر به دریافت سلایق و اولویت­های خرید کاربران و همچنین ارایه محصولات متنوع در بازار می­باشند.این امر منجر به ساخت سیستم­های پیشننهاددهنده ای می­شودکه قادر به ایجاد مدل­ها یپیش بینی نیاز خریداران و نمایش محصولاتی است که خریدار با احتمال بیشتری آنها را خریداری می نماید.

مدیریت ریسک مالی:

تحلیل بهتر ریسک مالی شامل وام­ها و اعتبارات توسط بررسی عادات پرداخی مشتریان در گدشته, پیش فرض های گدشته, تعهدات مالی و بسیاری از شاخص های اقتصادی اجتماعی انجام می­شود. داده­ها از منابع متنوع و به فرمت­های متفاوت گرداوری می­شوند. سازماندهی این اطلاعات در کنار هم و بدست آوردن درک و بینشی درست از مشخصات مشتری­ها تنها به کمک علوم داده قابل انجام است. هدف از مدیریت ریسک مالی, به حداقل رساندن ضرر وارده ناشی از بدهی های بد به سازمان می­باشد.

بهبود خدمات بهداشت و درمان

صنعت بهداشت و درمان با طبف وسیعی از داده­ها که میتوانند به صورت داده­های تخصصی , داده­های مالی, اطلاعات بیمار, اطلاعات دارو و قواعد و مقررات سروکار دارد. تمامی این داده­ها میتوانند به صورتی هماهنگ برای تولید یک دیدگاه که بتواند هم در هزینه های خدمات دهنده و هم خدمات گیرنده صرقه­جویی نماید, تحلیل شوند.

بینایی ماشین

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

مدیریت بهینه انرژی

همانگونه که میزان تقاضا برای مصرف انرژی رو به افزایش است, شرکنت­های تولید کننده انرژی بیشتر نیاز خود را به روش­های مدیریت تولید و توزیع بهینه انرژی احساس می­کنند. بدین منظور از روش­های بهینه­سازی تولید, ذخیره و توزع انرژی در کنار مطالعه الگوهای مصرف مشترین بهره می­گیرند. برقراری ارتباط بین داده­های حاصل از این منابع و دریافت درک درستی از آنها شاید کاری بسیار دشوار باشد که البته به کمک ابزار­های علوم داده قابل انجام است.

مترجم : آزاده رضازاده همدانی

برنامه نویسی در حوزه علوم داده, به یک زبان منعطف اما همه جانبه نیاز دارد تا در حین کدنویسی آسان, قدرت پردازش محاسبات پیچیده ریاضی را داشته باشد. پایتون مناسب­ترین زبان برای برآورده کردن نیاز­های فوق الذکر می­باشد زیرا تا کنون توانایی­های خود را علاوه بر برنامه نویسی همگانی در برنامه نویسی علمی و تخصصی نیز به اثبات رسانیده است. علاوه بر آن به طور مداوم کتابخانه­های خود را به منظور برطرف کردن نیازهای برنامه نویسی ارتقا می­دهد. در ادامه پیرامون تعدادی از ویژگی­های پایتون که آن را به زبان محبوب در حوزه علوم داده تبدیل کرده است صحبت می­شود:

·        یک زبان برنامه نویسی ساده و در عین حال با امکان یادگیری راحت که درمقایسه با زبان­های مشابه مانند R به تولید خطوط کد کمتر برای تولید نتیجه نیازمند است. سادگی این زبان برنامه نویسی باعث می­شود تا قادر باشد مسایل پیچیده را با کمترین میزان کد و همچنین کمترین اشفتگی و بهم ریختگی در روند برنامه اجرا نماید.

·        یک کد یکسان در محیط های متنوع برنامه نویسی بدون هیچگونه تغییری قابل اجرا است.

·        در مقایسه با سایر زبان­های برنامه نویسی تحلیل داده ازجمله R و MAtlab از سرعت بالاتری برخوردار است.

·        توانایی بالای آن در مدیریت حافظه مخصوصا garbage collection این امکان را ایجاد نموده است که به ابزاری قدرتمند در زمینه تبدیل, قطعه بندی, بصری سازی,.. داده­های حجیم مبدل شود.

·        زبان پایتون شامل مجموعه عظیمی از کتابخانه های موردنیاز تحلیل داده را دارا می­باشد.به طور مثال آررایه موجود در کتابخانه  NUMPY در محاسبات علمی به حافظه کمتری نسبت به داده list که برای نگهداری دادهای عددی در پایتون تعریف شده است, نیازمند است.

·        در پایتون package هایی وجود دارد که امکان اجرای کدهایی به زبان C و یا Java را می­دهد. که این امر باعث کاراتر شدن کد و استفاده از سایر کدهای موجود در سایر زبانها می-باشد.

در بخش­های بعدی چگونگی استفاده از ویژگیهای پایتون را در حل مسایل متفاوت در حوزه علوم داده مشاهده خواهید نمود.


در یک دهه گذشته زبان برنامه‌نویسی پایتون به یکی از محبوب‌ترین زبان‌های کدنویسی تبدیل شده است. از توسعه‌دهندگان وب گرفته تا طراحان بازی‌های ویدئویی، از دانشمندان داده تا سازندگان ابزار خانگی بسیاری از برنامه‎‌نویسان عاشق پایتون شده‌اند. اما چرا؟ زیرا یادگیری پایتون ساده است، استفاده از آن ساده است و بسیار زبان قدرتمندی است. 

دوست دارید زبان برنامه نویسی پایتون یادبگیرید؟ در این مقاله ما چند سایت و منبع آنلاین خیلی خوب را برای آموزش پایتون به شما معرفی می‌کنیم که بیشتر آن‌ها رایگان است. 

 

1- How to Think Like a Computer Scientist

phython

 

یکی از بهترین سایت‌های آموزش پایتون How to Think Like a Computer Scientist است. این سایت نه تنها به شما آموزش می‌دهد چگونه از زبان برنامه نویسی پایتون استفاده کنید بلکه به شما یاد می‌دهد چگونه مانند یک برنامه‌نویس فکر کنید. اگر این اولین باری است که کدنویسی می‌کنید این سایت به درد شما نخواهد خورد. 

اما به یاد داشته باشید که این که بتوانید مانند یک دانشمند کامپیوتر فکر کنید نیازمند این است که طرز فکر خود را تغییر دهید. این کار برای بعضی‌ها ساده و برای بقیه دشوار است. اما اگر اراده داشته باشید می‌توانید این کار را انجام دهید. وقتی که یاد گرفتید که مثل یک دانشمند کامپیوتر فکر کنید می‌توانید به سادگی زبان‌های دیگر را به جز پایتون یاد بگیرید. 


2- سایت رسمی پایتون

python

 

چه روشی برای یادگیری پایتون بهتر از استفاده از سایت رسمی پایتون است؟ سازندگان این زبان خودشان یک راهنمای خیلی خوب ساخته‌اند که به هرکسی که بخواهد این زبان را از ابتدا یاد بگیرد کمک می‌کنند. 

بهترین قسمت این سایت آموزشی این است که بسیار آرام پیش می‌رود و مفاهیم خاص را طوری به شما آموزش می‌دهد تا پیش از رفتن به مبحث بعد کاملاً یاد بگیرید. فرمت این سایت بسیار ساده و دوست‌داشتنی است و روند کار را بسیار برای شما ساده‌تر خواهد کرد. 

اگر در زمینه برنامه نویسی پیش‌زمینه دارید شاید سایت آموزشی رسمی پایتون برایتان تا حدی خسته کننده باشد اما اگر خیلی تازه‌کار هستید این سایت تجربه بسیار خوبی برای شما خواهد بود. 

 

3- A Byte of Python

python

 

سایت آموزشی A Byte of Python برای کسانی مناسب است که دوست دارند پایتون یاد بگیرند و قبلاً تجربه برنامه نویسی دارند. در ابتدا چیزهایی درمورد مباحث لازم برای ایجاد یک اینترپرتر پایتون روی کامپیوتر را به شما یاد می‌دهد که ممکن است برای تازه‌کارها دشوار باشد. 

اما این سایت یک مشکل اساسی دارد: خیلی سریع پیش می‌رود که ممکن است برای تازه‌کارها بیش از حد سخت باشد. 

اما اگر بتوانید با آن پیش بروید  A Byte of Python منبع بسیار خوبی برای شما خواهد بود. اگر نتوانستید می‌توانید از منابع دیگر برای یادگیری پایتون استفاده کنید و وقتی که کمی حرفه‌ای شدید به این سایت بازگردید. 

 

4- LearnPython

 

python


برخلاف سایت‌های آموزشی که در بالا معرفی کردیم LearnPython یک سایت عالی است چرا که خودش یک اینترپرتر پایتون دارد. در نتیجه شما می‌توانید درون خود سایت از کدنویسی پایتون استفاده کنید و دیگر لازم نیست که یک اینترپرتر پایتون را روی سیستم خود نصب کنید. 

البته اگر قصد دارید جدی از این زبان استفاده کنید باید اینترپرتر را نصب کنید اما LearnPython به شما این امکان را می‌دهد تا پیش از این که به طور جدی روی پایتون سرمایه‌گذاری کنید فکر کنید و با آن آشنا شوید.  

با LearnPython می‌توانید با کدهای واقعی سروکله بزنید و آن را یاد بگیرید. درضمن پس از هر درس یک تمرین نیز به شما داده می‌شود. 

 

5- Learn X in Y Minutes: Python 3

python

 

اگر تجربه زیادی در برنامه نویسی دارید و می‌دانید چطور مثل یک برنامه نویس فکر کنید اما پایتون برای شما جدید است و دوست دارید سینتکس این زبان را یاد بگیرید Learn X in Y Minutes بهترین سایت برای شماست. 

این سایت طیف‌های نحوی یا سینتتیک پایتون را در فرمت کد به شما یاد می‌دهد در نتیجه شما می‌‎توانید زیر پانزده ثانیه همه‌ی چیزهای مهم را درمورد سینتکس پایتون بیاموزید. شما می‌توانید صفحه‌ای که در آن قرار دارید را بوکمارک کرده و هرگاه که چیزی را فراموش کردید به آن برگردید. 

 

6- CodeWars

python

 

CodeWars خیلی یک سایت آموزشی نیست بلکه یک روشی بازی و آزمایشی است تا میزان دانش برنامه‌نویسی خود را امتحان کنید. این سایت دارای صدها پازل کدنویسی مختلف است که شما را مجبور می‌کند تا دانش پایتون خود را آزمایش کرده و از آن‌ها در مشکلات واقعی استفاده کنید. 

پازل‌های CodeWars جنبه آموزشی نیز دارند و هرچه شما بیشتر پیش بروید چیزهای بیشتری یادخواهید گرفت. وقتی که شما یک پازل را کامل کنید به مرحله بالا رفته و به پازل‌های سخت‌تر دسترسی خواهید داشت. درضمن شما می‌توانید نتایج خود را با نتایج دیگران مقایسه کنید که در آموزش شما بسیار مفید خواهد بود. 

پایتون زبان برنامه نویسی بسیار قوی و ساده‌ای است که موارد استفاده بسیار زیادی دارد و در چند سال اخیر بیش از پیش محبوب شده‌ است و روزبه‌روز محبوب‌تر می‌شود. 

  

منبع: makeuseof



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

شرکت فناوران هوشمند شایا (فعال در زمینه هوش مصنوعی) دعوت به همکاری می نماید:


برنامه نویس python


ارسال رزومه به : jobs@ishaya.ir


متقاضیان واجد شرایط با رنج سنی ۲۵ الی ۳۷ سال می‌توانند رزومه خود را با درج عنوان شغلی در قسمت موضوع ایمیل به آدرس ایمیل زیر ارسال نمایند.


آدرس ایمیل: Cv@Sigma.ir