diff --git a/1-Introduction/1-intro-to-ML/translations/README.bn.md b/1-Introduction/1-intro-to-ML/translations/README.bn.md deleted file mode 100644 index 5d1ac4dc..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.bn.md +++ /dev/null @@ -1,151 +0,0 @@ -# মেশিন লার্নিং এর সূচনা - - -[![ML, AI, deep learning - What's the difference?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - What's the difference?") - -> 🎥 মেশিন লার্নিং, এআই(আর্টিফিশিয়াল ইন্টিলিজেন্স) এবং ডিপ লার্নিং এর মধ্যে পার্থক্য এর আলোচনা জানতে উপরের ছবিটিতে ক্লিক করে ভিডিওটি দেখুন। - -## [প্রি-লেকচার-কুইজ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/) - ---- -বিগিনারদের জন্য ক্লাসিক্যাল মেশিন লার্নিং কোর্স এ আপনাকে স্বাগতম!আপনি হয় এই বিষয়ে সম্পূর্ণ নতুন অথবা মেশিন লার্নিং এ নিজের অনুশীলনকে আরও উন্নত করতে চান, আপনি আমাদের সাথে যোগদান করতে পেরে আমরা খুশি! আমরা আপনার ML অধ্যয়নের জন্য একটি বন্ধুত্বপূর্ণ লঞ্চিং স্পট তৈরি করতে চাই এবং আপনার মূল্যায়ন, প্রতিক্রিয়া,[ফিডব্যাক](https://github.com/microsoft/ML-For-Beginners/discussions). জানাতে এবং অন্তর্ভুক্ত করতে পেরে খুশি হব । - - -[![Introduction to ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") - - -> 🎥 ভিডিওটি দেখার জন্য উপরের ছবিতে ক্লিক করুন -MIT এর জন গাটেং মেশিন লার্নিং এর পরিচিতি করাচ্ছেন। - ---- -## মেশিন লার্নিং এর শুরু - -এই ক্যারিকুলাম শুরুর করার পূর্বে, নোটবুক রান করার জন্য নোটবুক সেটআপ থাকতে হবে। - - -- **আপনার মেশিন কে কনফিগার করুন এই ভিডিও দেখে**. শিখার জন্য এই লিংকটি ব্যবহার করুন [কিভাবে পাইথন ইন্সটল করতে হয়](https://youtu.be/CXZYvNRIAKM) এবং [সেটআপ এ ইডিটর](https://youtu.be/EU8eayHWoZg) . -- **পাইথন শিখুন**. [পাইথন](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) এর ব্যাসিক নলেজ জানা থাকা জরুরী। এই কোর্সের প্রোগ্রামিং ল্যাঙ্গুয়েজ ডেটা সাইন্সটিস্ট এর জন্য খুবই গুরুত্বপূর্ণ। -- **Node.js এবং JavaScript শিখুন**.ওয়েব অ্যাপস তৈরির জন্য এই কোর্সে আমরা জাবাস্ক্রিপট ব্যাবহার করব। তাই, আপনার [নোড](https://nodejs.org) এবং [npm](https://www.npmjs.com/) ইন্সটল থাকতে হবে। অন্যদিকে, পাইথন এবং জাভাস্ক্রিপট ডেভেলাপমেন্টের জন্য [ভিজুয়াল স্টুডিও](https://code.visualstudio.com/) কোড এ দুটুই আছে। -- **একটি গিটহাব অ্যাকাউন্ট তৈরি করুন**. যেহেতু আপনি আমাদের কে [গিটহাব](https://github.com) এ পেয়েছেন, তারমানে আপনার ইতিমধ্যেই একাউন্ট আছে। তবে যদি না থাকে, একটি একাউন্ট তৈরি করুন এবং পরে ফর্ক করে আপনার বানিয়ে নিন। (স্টার দিতে ভুলে যাবেন না,😊 ) -- **ঘুরিয়ে আসেন Scikit-learn**. নিজেকে পরিচিত করুন [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) এর সাথে, মেশিন লার্নিং লাইব্রেরি সেট যা আমরা এই কোর্সে উল্লেখ করে থাকব - ---- -## মেশিন লার্নিং কি? -'মেশিন লার্নিং' শব্দটি বর্তমান সময়ের সবচেয়ে জনপ্রিয় এবং প্রায়ই ব্যবহৃত একটি শব্দ। আপনি যে ডোমেইনে কাজ করেন না কেন প্রযুক্তির সাথে আপনার পরিচিতি থাকলে অন্তত একবার এই শব্দটি শুনেছেন এমন একটি অপ্রয়োজনীয় সম্ভাবনা রয়েছে। মেশিন লার্নিং এর মেকানিক্স, যাইহোক, বেশিরভাগ মানুষের কাছে এটি একটি রহস্য। একজন মেশিন লার্নিং নতুনদের জন্য, বিষয়টি কখনও কখনও অপ্রতিরোধ্য মনে হতে পারে। অতএব, মেশিন লার্নিং আসলে কী তা বোঝা গুরুত্বপূর্ণ এবং বাস্তব উদাহরণের মাধ্যমে ধাপে ধাপে এটি সম্পর্কে শিখতে হবে। - ---- -## হাইফ কার্ভ - -![ml hype curve](../images/hype.png) - -> Google Trends এ 'মেশিন লার্নিং' শব্দটির সাম্প্রতিক 'হাইপ কার্ভ'। - ---- -## এক রহস্যময় মহাবিশ্ব - -আমরা রহস্যে ভরপুর একটি আকর্ষনীয় মহাবিশ্বে বাস করি। স্টিফেন হকিং, আলবার্ট আইনস্টাইন এবং আরও অনেকের মতো মহান বিজ্ঞানীরা আমাদের চারপাশের বিশ্বের রহস্য উন্মোচন করে এমন অর্থপূর্ণ তথ্য অনুসন্ধানে তাদের জীবন উৎসর্গ করেছেন।এটি মানুষের শেখার একটি অবস্থা: একটি মানব শিশু নতুন জিনিস শিখে এবং বছরের পর বছর তাদের বিশ্বের গঠন উন্মোচন করে যখন তারা প্রাপ্তবয়স্ক হয়ে ওঠে। - ---- - -## শিশুদের মস্তিষ্ক -একটি শিশুর মস্তিষ্ক এবং ইন্দ্রিয়গুলি তাদের আশেপাশের ঘটনাগুলি উপলব্ধি করে এবং ধীরে ধীরে জীবনের লুকানো নিদর্শনগুলি শিখে যা শিশুকে শেখা নিদর্শনগুলি সনাক্ত করার জন্য যৌক্তিক নিয়ম তৈরি করতে সহায়তা করে। এই প্রথিবীতে মানুষের মস্তিষ্কের শেখার প্রক্রিয়া অন্যান্য প্রাণি থেকে খুবই অত্যাধুনিক। ক্রমাগত শেখা এবং লুকানো প্যাটার্নগুলি আবিষ্কার করে এবং তারপর সেই প্যাটার্নগুলিতে উদ্ভাবন করে আমাদের সারা জীবন জুড়ে নিজেদের আরও ভালো এবং উন্নত করতে সক্ষম করে। এই শেখার ক্ষমতা ও বিকশিত হওয়ার সক্ষমতা কে বলে [ব্রেইন প্লাস্টিসিটি](https://www.simplypsychology.org/brain-plasticity.html)। বাহ্যিকভাবে, আমরা মানব মস্তিষ্কের শেখার প্রক্রিয়া এবং মেশিন লার্নিং ধারণার মধ্যে কিছু অনুপ্রেরণামূলক মিল আঁকতে পারি। - ---- -## মানুষের মস্তিষ্ক - -[মানুষের মস্তিষ্ক]((https://www.livescience.com/29365-human-brain.html)) বাস্তব জগত থেকে জিনিসগুলি উপলব্ধি করে, অনুভূত তথ্য প্রক্রিয়া করে, যৌক্তিক সিদ্ধান্ত নেয় এবং পরিস্থিতির উপর ভিত্তি করে কিছু ক্রিয়া সম্পাদন করে। এটাকেই আমরা বলি বুদ্ধিমত্তার সাথে আচরণ করা। যখন আমরা একটি মেশিনে বুদ্ধিমান আচরণগত প্রক্রিয়ার একটি প্রতিকৃতি প্রোগ্রাম করি, তখন এটিকে কৃত্রিম বুদ্ধিমত্তা (AI) বলা হয়। - ---- -## কিছু পরিভাষা - -যদিও এটা বিভ্রান্তকর হতে পারে, মেশিন লার্নিং (এম. এল) আর্টিফিশিয়াল ইন্টিলিজেন্স এর একটি অংশ। **ML অর্থপূর্ণ তথ্য উন্মোচন করার জন্য বিশেষ অ্যালগরিদম ব্যবহার করে এবং যুক্তিসঙ্গত সিদ্ধান্ত গ্রহণের প্রক্রিয়াটিকে সমর্থন করার জন্য অনুভূত ডেটা থেকে লুকানো নিদর্শনগুলি খুঁজে বের করার সাথে সম্পর্কিত।** - ---- -## এ আই, এম এল, মেশিন লার্নিং - -![এ আই, এম এল, মেশিন লার্নিং, ডেটা সাইন্স](../images/ai-ml-ds.png) - -> ডায়াগ্রামটি এআই,এমএল, ডিপ লার্নিং এবং ডেটা সাইন্স এর মধ্যে সম্পর্ক বুঝাচ্ছে। ইনফোগ্রাফিক করেছেন [জেন লুপার](https://twitter.com/jenlooper) এবং [এই গ্রাফিক](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) থেকে অনুপ্রাণিত হয়েছেন। - ---- -## কভার-ধারণা - -এই কারিকুলামে,আমরা শুধু মেশিন লার্নিং এর মুল ধারনা গুলো আলোচনা করব যা একজন নতুন শিক্ষার্থীর জানা প্রয়োজন। আমরা যাকে 'ক্লাসিক্যাল মেশিন লার্নিং' বলি তা আমরা প্রাথমিকভাবে Scikit-learn ব্যবহার করে কভার করি, একটি চমৎকার লাইব্রেরি যা অনেক শিক্ষার্থী মৌলিক বিষয়গুলি শিখতে ব্যবহার করে। কৃত্রিম বুদ্ধিমত্তা বা গভীর শিক্ষার বিস্তৃত ধারণা বোঝার জন্য, মেশিন লার্নিংয়ের একটি শক্তিশালী মৌলিক জ্ঞান অপরিহার্য, এবং তাই আমরা এটি এখানে অফার করতে চাই। - ---- -## এই কোর্স থেকে আপনি শিখবেন: - -- মেশিন লার্নিং এর মুল ধারণা -- মেশিন লার্নিং এর ইতিহাস -- মেশিন লার্নিং এবং ভয় -- রিগ্রেশন এম এল (মেশিন লার্নিং) টেকনিকস -- ক্লাসিফিকেশন এম এল (মেশিন লার্নিং) টেকনিকস -- ক্লাস্টারিং এম এল (মেশিন লার্নিং) টেকনিকস -- ন্যাচেরাল লেঙ্গুয়েজ প্রসেসিং এম এল (মেশিন লার্নিং) টেকনিকস -- টাইম সিরিজ ফরকাস্টিং এম এল (মেশিন লার্নিং) টেকনিকস -- রিএনফোর্সমেন্ট লার্নিং -- মেশিন লার্নিং এর জন্য বাস্তব জগতের অ্যাপলিকেশন। - ---- -## কি শিখানো হবে না: - -- ডিপ লার্নিং -- নিউরাল নেটওয়ার্কস -- এ আই (আর্টিফিশিয়াল ইন্টিলিজেন্স) - - -আরও ভালো শিখার অভিজ্ঞতা তৈরি করার জন্য, আমরা নিউরাল নেটওয়ার্ক এবং 'ডিপ লার্নিং'এর জটিলতাগুলি এড়াব - নিউরাল নেটওয়ার্ক ব্যবহার করে বহু-স্তর বিশিষ্ট মডেল-বিল্ডিং - এবং এআই, যা আমরা একটি ভিন্ন পাঠ্যক্রমে আলোচনা করব। আমরা এই বৃহত্তর প্লাটফর্মটির দিকের উপর ফোকাস করার জন্য একটি আসন্ন ডেটা সায়েন্স পাঠ্যক্রমও অফার করব। - ---- -## কেন মেশিন লার্নিং? - -মেশিন লার্নিং, একটি সিস্টেমের দৃষ্টিকোণ থেকে, স্বয়ংক্রিয় সিস্টেমের সৃষ্টি হিসাবে সংজ্ঞায়িত করা হয় যা বুদ্ধিমান সিদ্ধান্ত নিতে সহায়তা করার জন্য ডেটা থেকে লুকানো প্যাটার্নগুলি শিখতে পারে। - -এই অনুপ্রেরণাটি ঢিলেঢালাভাবে অনুপ্রাণিত হয় কিভাবে মানুষের মস্তিষ্ক বাইরের জগত থেকে প্রাপ্ত তথ্যের ভিত্তিতে কিছু জিনিস শিখে। - -✅ এক মিনিটের জন্য চিন্তা করুন কেন একটি ব্যবসা ’মেশিন লার্নিং’ কৌশল ব্যবহার করতে চায় যেখানে একটি হার্ড-কোডেড নিয়ম-ভিত্তিক ইঞ্জিন তৈরি করা যায় । - ---- -## মেশিন লার্নিং এর অ্যাপ্লিকেশন - -মেশিন লার্নিং এর অ্যাপ্লিকেশন এখন প্রায় সবখানে, এবং আমাদের সমাজের চারপাশে প্রচলিত ডেটার মতই সর্বব্যাপী, আমাদের স্মার্ট ফোন, সংযুক্ত ডিভাইস এবং অন্যান্য সিস্টেম দ্বারা উত্পন্ন। অত্যাধুনিক মেশিন লার্নিং অ্যালগরিদমের অপার সম্ভাবনার কথা বিবেচনা করে, গবেষকরা বহুমাত্রিক এবং বহু-বিষয়ক বাস্তব-জীবনের সমস্যার সমাধান করার জন্য তাদের সক্ষমতা অন্বেষণ করে চলেছেন যার মাধ্যমে বড় ইতিবাচক ফলাফল পাওয়া যাবে। - ---- -## ব্যবহৃত মেশিন লার্নিং এর উদাহরণ - -**আপনি মেশিন লার্নিং বিভিন্ন মাধ্যমে ব্যবহার করতে পারবেন**: - -- রোগীর চিকিৎসার রিপোর্ট থেকে রোগের সম্ভাবনা অনুমান করা। -- দিতে আবহাওয়ার ডেটা ব্যবহার করে আবহাওয়া এর পূর্বাভাস দেওয়া -- একটি পাঠ্যের অনুভূতি বোঝার জন্য। -- অপপ্রচার বন্ধ করতে ভুয়া খবর শনাক্ত করা। - -অর্থ, অর্থনীতি, আর্থ সায়েন্স, স্পেস এক্সপ্লোরেশন, বায়োমেডিকেল ইঞ্জিনিয়ারিং, জ্ঞানীয় বিজ্ঞান এবং এমনকি মানবিক ক্ষেত্রগুলি তাদের ডোমেনের কঠিন, ডেটা-প্রসেসিং ভারী সমস্যাগুলি সমাধান করার জন্য মেশিন লার্নিংকে ব্যবহার করেছে। - ---- -## উপসংহার - -মেশিন লার্নিং বাস্তব-বিশ্ব বা উৎপন্ন ডেটা থেকে অর্থপূর্ণ অন্তর্দৃষ্টি খোঁজার মাধ্যমে প্যাটার্ন-আবিষ্কারের প্রক্রিয়াটিকে স্বয়ংক্রিয় করে। এটি অন্যদের মধ্যে ব্যবসা, স্বাস্থ্য এবং আর্থিক অ্যাপ্লিকেশনগুলিতে অত্যন্ত মূল্যবান বলে প্রমাণিত হয়েছে। - -অদূর ভবিষ্যতে, মেশিন লার্নিংয়ের বুনিয়াদিগুলি বোঝা যে কোনও ডোমেনের লোকেদের জন্য এটির ব্যাপক গ্রহণের কারণে অপরিহার্য হতে চলেছে। - ---- -# 🚀 Challenge - -স্কেচ, কাগজে বা একটি অনলাইন অ্যাপ ব্যবহার করে [এক্সালিড্র](https://excalidraw.com/) AI, ML, ডিপ লার্নিং এবং ডেটা সায়েন্সের মধ্যে পার্থক্য সম্পর্কে। - -# [লেকচার-কুইজ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/) - ---- -# পর্যালোচনা ও সেল্ফ স্টাডি - -আপনি কিভাবে ক্লাউডে এমএল অ্যালগরিদম দিয়ে কাজ করতে পারেন সে সম্পর্কে আরও জানতে, এটি অনুসরণ করুন [লার্নিং পাথ](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott)। - -এম এল বেসিক জানুন [লার্নিং পাথ](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) - ---- -# এসাইন্টমেন্ট - -[চলুন শুরু করি](assignment.md) \ No newline at end of file diff --git a/1-Introduction/1-intro-to-ML/translations/README.es.md b/1-Introduction/1-intro-to-ML/translations/README.es.md deleted file mode 100644 index 024dc814..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.es.md +++ /dev/null @@ -1,113 +0,0 @@ -# Introducción al machine learning - -[![ML, IA, deep learning - ¿Cuál es la diferencia?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, IA, deep learning - ¿Cuál es la diferencia?") - -> 🎥 Haz clic en la imagen de arriba para ver un video donde se discuten las diferencias entre el machine learning, la inteligencia artificial, y el deep learning. - -## [Cuestionario previo a la conferencia](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1?loc=es) - -### Introducción - -¡Te damos la bienvenida a este curso acerca del machine learning (ML) clásico para principiantes! Así se trate de tu primer contacto con este tema, o cuentes con amplia experiencia en el ML y busques refrescar tus conocimientos en un área específica, ¡nos alegramos de que te nos unas! Queremos crear un punto de lanzamiento amigable para tus estudios de ML y nos encantaría evaluar, responder, e incorporar tu [retroalimentación](https://github.com/microsoft/ML-For-Beginners/discussions). - -[![Introducción al ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introducción al ML") - -> Haz clic en la imagen de arriba para ver el video: John Guttag del MIT presenta el machine learning - -### Empezando con el machine learning - -Antes de comenzar con este currículum, debes tener tu computadora configurada y lista para ejecutar los notebooks localmente. - -- **Configura tu equipo con estos videos**. Aprende más acerca de como configurar tu equipo con [estos videos](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6). -- **Aprende Python**. También se recomienda que tengas un entendimiento básico de [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), un lenguaje de programación útil para practicantes de la ciencia de datos, y que se utiliza en este curso. -- **Aprende Node.js y JavaScript**. También usamos JavaScript unas cuantas veces en este curso cuando creamos aplicaciones web, así que necesitarás tener [node](https://nodejs.org) y [npm](https://www.npmjs.com/) instalados, así como [Visual Studio Code](https://code.visualstudio.com/) listo para el desarrollo con Python y JavaScript. -- **Crea una cuenta de GitHub**. Como nos encontraste aquí en [GitHub](https://github.com), puede que ya tengas una cuenta, pero si no, créate una y después haz un fork de este curriculum para usarlo en tu computadora personal. (Siéntete libre de darnos una estrella 😊) -- **Explora Scikit-learn**. Familiarízate con [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), un conjunto de bibliotecas de ML que referenciamos en estas lecciones. - -### ¿Qué es el machine learning? - -El término "machine learning" es uno de los términos más frecuentemente usados y populares hoy en día. Es muy probable que hayas escuchado este término al menos una vez si tienes algún tipo de familiaridad con la tecnología, no importa el sector en que trabajes. Aún así, las mecánicas del machine learning son un misterio para la mayoría de la gente. Para un principiante en machine learning, el tema puede parecer intimidante. Es por esto que es importante entender lo que realmente es el machine learning y aprender sobre el tema poco a poco, a través de ejemplos prácticos. - -![curva de interés en ml](../images/hype.png) - -> Google Trends nos muestra la "curva de interés" más reciente para el término "machine learning" - -Vivimos en un universo lleno de misterios fascinantes. Grandes científicos como Stephen Hawking, Albert Einstein, y muchos más han dedicado sus vidas a la búsqueda de información significativa que revela los misterios del mundo a nuestro alrededor. Esta es la condición humana del aprendizaje: un niño humano aprende cosas nuevas y descubre la estructura de su mundo año tras año a medida que se convierten en adultos. - -El cerebro y los sentidos de un niño perciben sus alrededores y van aprendiendo gradualmente los patrones escondidos de la vida, lo que le ayuda al niño a crear reglas lógicas para identificar los patrones aprendidos. El proceso de aprendizaje del cerebro humano nos hace las criaturas más sofisticadas del planeta. Aprender de forma continua al descubrir patrones ocultos e innovar sobre esos patrones nos permite seguir mejorando a lo largo de nuestras vidas. Esta capacidad de aprendizaje y la capacidad de evolución están relacionadas a un concepto llamado [plasticidad cerebral o neuroplasticidad](https://www.simplypsychology.org/brain-plasticity.html). Podemos trazar algunas similitudes superficiales en cuanto a la motivación entre el proceso de aprendizaje del cerebro humano y los conceptos de machine learning. - -El [cerebro humano](https://www.livescience.com/29365-human-brain.html) percibe cosas del mundo real, procesa la información percibida, toma decisiones racionales, y realiza ciertas acciones basadas en las circunstancias. Esto es a lo que se le conoce como el comportamiento inteligente. Cuando programamos un facsímil (copia) del proceso del comportamiento inteligente, se le llama inteligencia artificial (IA). - -Aunque los términos se suelen confundir, machine learning (ML) es una parte importante de la inteligencia artificial. **El objetivo del ML es utilizar algoritmos especializados para descubrir información significativa y encontrar patrones ocultos de los datos percibidos para corroborar el proceso relacional de la toma de decisiones**. - -![IA, ML, deep learning, ciencia de los datos](../images/ai-ml-ds.png) - -> El diagrama muestra la relación entre IA, ML, deep learning y la ciencia de los datos. Infografía hecha por [Jen Looper](https://twitter.com/jenlooper) inspirada en [esta gráfica](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining). - -## Lo que aprenderás en el curso - -En este currículum, vamos a cubrir solo los conceptos clave de machine learning que un principiante debería conocer. Cubrimos algo a lo que le llamamos "machine learning clásico" usando principalmente Scikit-learn, una biblioteca excelente que muchos estudiantes utilizan para aprender las bases. Para entender conceptos más amplios de la inteligencia artificial o deep learning, es indispensable tener un fuerte conocimiento de los fundamentos, y eso es lo que nos gustaría ofrecerte aquí. - -En este curso aprenderás: - -- conceptos clave del machine learning -- la historia del ML -- la justicia y el ML -- técnicas de regresión en ML -- técnicas de clasificación en ML -- técnicas de agrupamiento en ML -- técnicas de procesamiento del lenguaje natural en ML -- técnicas de previsión de series temporales en ML -- reforzamiento del aprendizaje -- ML aplicada al mundo real - -## Lo que no cubriremos - -- deep learning -- redes neuronales -- inteligencia artificial (IA) - -Para tener una mejor experiencia de aprendizaje, vamos a evitar las complejidades de las redes neuronales, "deep learning" (construcción de modelos de muchas capas utilizando las redes neuronales) e inteligencia artificial, que se discutirá en un currículum diferente. En un futuro también ofreceremos un currículum acerca de la ciencia de datos para enfocarnos en ese aspecto de ese campo. - -## ¿Por qué estudiar machine learning? - -El Machine learning, desde una perspectiva de los sistemas, se define como la creación de sistemas automáticos que pueden aprender patrones ocultos a partir de datos para ayudar en tomar decisiones inteligentes. - -Esta motivación está algo inspirada por como el cerebro humano aprende ciertas cosas basadas en los datos que percibe en el mundo real. - -✅ Piensa por un minuto en porqué querría un negocio intentar implementar estrategias de machine learning en lugar de programar un motor basado en reglas programadas de forma rígida. - -### Aplicaciones del machine learning - -Las aplicaciones del machine learning hoy en día están casi en todas partes, y son tan ubicuas como los datos que fluyen alrededor de nuestras sociedades, generados por nuestros teléfonos inteligentes, dispositivos conectados a internet, y otros sistemas. Considerando el inmenso potencial de los algoritmos punteros de machine learning, los investigadores han estado explorando su capacidad de resolver problemas multidimensionales y multidisciplinarios de la vida real con resultados muy positivos. - -**Tú puedes utilizar machine learning de muchas formas**: - -- Para predecir la probabilidad de enfermedad a partir del historial médico o reportes de un paciente. -- Para aprovechar datos del clima y predecir eventos climatológicos. -- Para entender la intención de un texto. -- Para detectar noticias falsas y evitar la propagación de propaganda. - -Finanzas, economía, ciencias de la Tierra, exploración espacial, ingeniería biomédica, ciencia cognitiva, e incluso campos en las humanidades han adaptado machine learning para solucionar algunos de los problemas más arduos y pesados en cuanto al procesamiento de datos de cada una de estas ramas. - -Machine learning automatiza el proceso del descubrimiento de patrones al encontrar perspectivas significativas de datos provenientes del mundo real o generados. Machine learning ha demostrado ser muy valioso en las aplicaciones del sector de la salud, de negocios y finanzas, entre otros. - -En el futuro próximo, entender las bases de machine learning va a ser una necesidad para la gente en cualquier sector debido a su adopción tan extendida. - ---- - -## 🚀 Desafío - -Dibuja, en papel o usando una aplicación como [Excalidraw](https://excalidraw.com/), cómo entiendes las diferencias entre inteligencia artificial, ML, deep learning, y la ciencia de datos. Agrega algunas ideas de problemas que cada una de estas técnicas son buenas en resolver. - -## [Cuestionario después de la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2?loc=es) - -## Revisión y autoestudio - -Para aprender más sobre como puedes trabajar con algoritmos de ML en la nube, sigue esta [Ruta de Aprendizaje](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott). - -Toma esta [Ruta de Aprendizaje](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) sobre las bases de ML. - -## Tarea - -[Ponte en marcha](assignment.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.fr.md b/1-Introduction/1-intro-to-ML/translations/README.fr.md deleted file mode 100644 index 03159b10..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.fr.md +++ /dev/null @@ -1,109 +0,0 @@ -# Introduction au machine learning - -[![ML, AI, deep learning - Quelle est la différence ?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - What's the difference?") - -> 🎥 Cliquer sur l'image ci-dessus afin de regarder une vidéo expliquant la différence entre machine learning, AI et deep learning. - -## [Quiz préalable](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1?loc=fr) - -### Introduction - -Bienvenue à ce cours sur le machine learning classique pour débutant ! Que vous soyez complètement nouveau sur ce sujet ou que vous soyez un professionnel du ML expérimenté cherchant à peaufiner vos connaissances, nous sommes heureux de vous avoir avec nous ! Nous voulons créer un tremplin chaleureux pour vos études en ML et serions ravis d'évaluer, de répondre et d'apprendre de vos retours d'[expériences](https://github.com/microsoft/ML-For-Beginners/discussions). - -[![Introduction au ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") - -> 🎥 Cliquer sur l'image ci-dessus afin de regarder une vidéo: John Guttag du MIT introduit le machine learning -### Débuter avec le machine learning - -Avant de commencer avec ce cours, vous aurez besoin d'un ordinateur configuré et prêt à faire tourner des notebooks (jupyter) localement. - -- **Configurer votre ordinateur avec ces vidéos**. Apprendre comment configurer votre ordinateur avec cette [série de vidéos](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6). -- **Apprendre Python**. Il est aussi recommandé d'avoir une connaissance basique de [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), un langage de programmaton utile pour les data scientist que nous utilisons tout au long de ce cours. -- **Apprendre Node.js et Javascript**. Nous utilisons aussi Javascript par moment dans ce cours afin de construire des applications WEB, vous aurez donc besoin de [node](https://nodejs.org) et [npm](https://www.npmjs.com/) installé, ainsi que de [Visual Studio Code](https://code.visualstudio.com/) pour développer en Python et Javascript. -- **Créer un compte GitHub**. Comme vous nous avez trouvé sur [GitHub](https://github.com), vous y avez sûrement un compte, mais si non, créez en un et répliquez ce cours afin de l'utiliser à votre grés. (N'oublier pas de nous donner une étoile aussi 😊) -- **Explorer Scikit-learn**. Familiariser vous avec [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), un ensemble de librairies ML que nous mentionnons dans nos leçons. - -### Qu'est-ce que le machine learning - -Le terme `machine learning` est un des mots les plus populaire et le plus utilisé ces derniers temps. Il y a une probabilité accrue que vous l'ayez entendu au moins une fois si vous avez une appétence pour la technologie indépendamment du domaine dans lequel vous travaillez. Le fonctionnement du machine learning, cependant, reste un mystère pour la plupart des personnes. Pour un débutant en machine learning, le sujet peut nous submerger. Ainsi, il est important de comprendre ce qu'est le machine learning et de l'apprendre petit à petit au travers d'exemples pratiques. - -![ml hype curve](../images/hype.png) - -> Google Trends montre la récente 'courbe de popularité' pour le mot 'machine learning' - -Nous vivons dans un univers rempli de mystères fascinants. De grands scientifiques comme Stephen Hawking, Albert Einstein et pleins d'autres ont dévoués leur vie à la recherche d'informations utiles afin de dévoiler les mystères qui nous entourent. C'est la condition humaine pour apprendre : un enfant apprend de nouvelles choses et découvre la structure du monde année après année jusqu'à qu'ils deviennent adultes. - -Le cerveau d'un enfant et ses sens perçoivent l'environnement qui les entourent et apprennent graduellement des schémas non observés de la vie qui vont l'aider à fabriquer des règles logiques afin d'identifier les schémas appris. Le processus d'apprentissage du cerveau humain est ce que rend les hommes comme la créature la plus sophistiquée du monde vivant. Apprendre continuellement par la découverte de schémas non observés et ensuite innover sur ces schémas nous permet de nous améliorer tout au long de notre vie. Cette capacité d'apprendre et d'évoluer est liée au concept de [plasticité neuronale](https://www.simplypsychology.org/brain-plasticity.html), nous pouvons tirer quelques motivations similaires entre le processus d'apprentissage du cerveau humain et le concept de machine learning. - -Le [cerveau humain](https://www.livescience.com/29365-human-brain.html) perçoit des choses du monde réel, assimile les informations perçues, fait des décisions rationnelles et entreprend certaines actions selon le contexte. C'est ce que l'on appelle se comporter intelligemment. Lorsque nous programmons une reproduction du processus de ce comportement à une machine, c'est ce que l'on appelle intelligence artificielle (IA). - -Bien que le terme puisse être confus, le machine learning (ML) est un important sous-ensemble de l'intelligence artificielle. **Le ML consiste à utiliser des algorithmes spécialisés afin de découvrir des informations utiles et de trouver des schémas non observés depuis des données perçues pour corroborer un processus de décision rationnel**. - -![AI, ML, deep learning, data science](../images/ai-ml-ds.png) - -> Un diagramme montrant les relations entre AI, ML, deep learning et data science. Infographie par [Jen Looper](https://twitter.com/jenlooper) et inspiré par [ce graphique](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) - -## Ce que vous allez apprendre dans ce cours - -Dans ce cours, nous allons nous concentrer sur les concepts clés du machine learning qu'un débutant se doit de connaître. Nous parlerons de ce que l'on appelle le 'machine learning classique' en utilisant principalement Scikit-learn, une excellente librairie que beaucoup d'étudiants utilisent afin d'apprendre les bases. Afin de comprendre les concepts plus larges de l'intelligence artificielle ou du deep learning, une profonde connaissance en machine learning est indispensable, et c'est ce que nous aimerions fournir ici. - -Dans ce cours, vous allez apprendre : - -- Les concepts clés du machine learning -- L'histoire du ML -- ML et équité (fairness) -- Les techniques de régression ML -- Les techniques de classification ML -- Les techniques de regroupement (clustering) ML -- Les techniques du traitement automatique des langues (NLP) ML -- Les techniques de prédictions à partir de séries chronologiques ML -- Apprentissage renforcé -- D'applications réels du ML - -## Ce que nous ne couvrirons pas - -- Deep learning -- Neural networks -- IA - -Afin d'avoir la meilleure expérience d'apprentissage, nous éviterons les complexités des réseaux neuronaux, du 'deep learning' (construire un modèle utilisant plusieurs couches de réseaux neuronaux) et IA, dont nous parlerons dans un cours différent. Nous offirons aussi un cours à venir sur la data science pour nous concentrer sur cet aspect de champs très large. - -## Pourquoi étudier le machine learning ? - -Le machine learning, depuis une perspective systémique, est défini comme la création de systèmes automatiques pouvant apprendre des schémas non observés depuis des données afin d'aider à prendre des décisions intelligentes. - -Ce but est faiblement inspiré de la manière dont le cerveau humain apprend certaines choses depuis les données qu'il perçoit du monde extérieur. - -✅ Pensez une minute aux raisons qu'une entreprise aurait d'essayer d'utiliser des stratégies de machine learning au lieu de créer des règles codés en dur. - -### Les applications du machine learning - -Les applications du machine learning sont maintenant pratiquement partout, et sont aussi omniprésentes que les données qui circulent autour de notre société (générées par nos smartphones, appareils connectés ou autres systèmes). En prenant en considération l'immense potentiel des algorithmes dernier cri de machine learning, les chercheurs ont pu exploiter leurs capacités afin de résoudre des problèmes multidimensionnels et interdisciplinaires de la vie avec d'important retours positifs. - -**Vous pouvez utiliser le machine learning de plusieurs manières** : - -- Afin de prédire la possibilité d'avoir une maladie à partir des données médicales d'un patient. -- Pour tirer parti des données météorologiques afin de prédire les événements météorologiques. -- Afin de comprendre le sentiment d'un texte. -- Afin de détecter les fake news pour stopper la propagation de la propagande. - -La finance, l'économie, les sciences de la terre, l'exploration spatiale, le génie biomédical, les sciences cognitives et même les domaines des sciences humaines ont adapté le machine learning pour résoudre les problèmes ardus et lourds de traitement des données dans leur domaine respectif. - -Le machine learning automatise le processus de découverte de modèles en trouvant des informations significatives à partir de données réelles ou générées. Il s'est avéré très utile dans les applications commerciales, de santé et financières, entre autres. - -Dans un avenir proche, comprendre les bases du machine learning sera indispensable pour les personnes de tous les domaines en raison de son adoption généralisée. - ---- -## 🚀 Challenge - -Esquisser, sur papier ou à l'aide d'une application en ligne comme [Excalidraw](https://excalidraw.com/), votre compréhension des différences entre l'IA, le ML, le deep learning et la data science. Ajouter quelques idées de problèmes que chacune de ces techniques est bonne à résoudre. - -## [Quiz de validation des connaissances](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2?loc=fr) - -## Révision et auto-apprentissage - -Pour en savoir plus sur la façon dont vous pouvez utiliser les algorithmes de ML dans le cloud, suivez ce [Parcours d'apprentissage](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott). - -## Devoir - -[Être opérationnel](assignment.fr.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.id.md b/1-Introduction/1-intro-to-ML/translations/README.id.md deleted file mode 100644 index 230bddfb..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.id.md +++ /dev/null @@ -1,107 +0,0 @@ -# Pengantar Machine Learning - -[![ML, AI, deep learning - Apa perbedaannya?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - Apa perbedaannya?") - -> 🎥 Klik gambar diatas untuk menonton video yang mendiskusikan perbedaan antara Machine Learning, AI, dan Deep Learning. - -## [Quiz Pra-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/) - -### Pengantar - -Selamat datang di pelajaran Machine Learning klasik untuk pemula! Baik kamu yang masih benar-benar baru, atau seorang praktisi ML berpengalaman yang ingin meningkatkan kemampuan kamu, kami senang kamu ikut bersama kami! Kami ingin membuat sebuah titik mulai yang ramah untuk pembelajaran ML kamu dan akan sangat senang untuk mengevaluasi, merespon, dan memasukkan [umpan balik](https://github.com/microsoft/ML-For-Beginners/discussions) kamu. - -[![Pengantar Machine Learning](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Pengantar Machine Learning") - -> 🎥 Klik gambar diatas untuk menonton video: John Guttag dari MIT yang memberikan pengantar Machine Learning. -### Memulai Machine Learning - -Sebelum memulai kurikulum ini, kamu perlu memastikan komputer kamu sudah dipersiapkan untuk menjalankan *notebook* secara lokal. - -- **Konfigurasi komputer kamu dengan video ini**. Pelajari bagaimana menyiapkan komputer kamu dalam [video-video](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) ini. -- **Belajar Python**. Disarankan juga untuk memiliki pemahaman dasar dari [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), sebuah bahasa pemrograman yang digunakan oleh data scientist yang juga akan kita gunakan dalam pelajaran ini. -- **Belajar Node.js dan JavaScript**. Kita juga menggunakan JavaScript beberapa kali dalam pelajaran ini ketika membangun aplikasi web, jadi kamu perlu menginstal [node](https://nodejs.org) dan [npm](https://www.npmjs.com/), serta [Visual Studio Code](https://code.visualstudio.com/) yang tersedia untuk pengembangan Python dan JavaScript. -- **Buat akun GitHub**. Karena kamu menemukan kami di [GitHub](https://github.com), kamu mungkin sudah punya akun, tapi jika belum, silakan buat akun baru kemudian *fork* kurikulum ini untuk kamu pergunakan sendiri. (Jangan ragu untuk memberikan kami bintang juga 😊) -- **Jelajahi Scikit-learn**. Buat diri kamu familiar dengan [Scikit-learn]([https://scikit-learn.org/stable/user_guide.html), seperangkat *library* ML yang kita acu dalam pelajaran-pelajaran ini. - -### Apa itu Machine Learning? - -Istilah 'Machine Learning' merupakan salah satu istilah yang paling populer dan paling sering digunakan saat ini. Ada kemungkinan kamu pernah mendengar istilah ini paling tidak sekali jika kamu familiar dengan teknologi. Tetapi untuk mekanisme Machine Learning sendiri, merupakan sebuah misteri bagi sebagian besar orang. Karena itu, penting untuk memahami sebenarnya apa itu Machine Learning, dan mempelajarinya langkah demi langkah melalui contoh praktis. - -![kurva tren ml](../images/hype.png) - -> Google Trends memperlihatkan 'kurva tren' dari istilah 'Machine Learning' belakangan ini. - -Kita hidup di sebuah alam semesta yang penuh dengan misteri yang menarik. Ilmuwan-ilmuwan besar seperti Stephen Hawking, Albert Einstein, dan banyak lagi telah mengabdikan hidup mereka untuk mencari informasi yang berarti yang mengungkap misteri dari dunia disekitar kita. Ini adalah kondisi belajar manusia: seorang anak manusia belajar hal-hal baru dan mengungkap struktur dari dunianya tahun demi tahun saat mereka tumbuh dewasa. - -Otak dan indera seorang anak memahami fakta-fakta di sekitarnya dan secara bertahap mempelajari pola-pola kehidupan yang tersembunyi yang membantu anak untuk menyusun aturan-aturan logis untuk mengidentifikasi pola-pola yang dipelajari. Proses pembelajaran otak manusia ini menjadikan manusia sebagai makhluk hidup paling canggih di dunia ini. Belajar terus menerus dengan menemukan pola-pola tersembunyi dan kemudian berinovasi pada pola-pola itu memungkinkan kita untuk terus menjadikan diri kita lebih baik sepanjang hidup. Kapasitas belajar dan kemampuan berkembang ini terkait dengan konsep yang disebut dengan *[brain plasticity](https://www.simplypsychology.org/brain-plasticity.html)*. Secara sempit, kita dapat menarik beberapa kesamaan motivasi antara proses pembelajaran otak manusia dan konsep Machine Learning. - -[Otak manusia](https://www.livescience.com/29365-human-brain.html) menerima banyak hal dari dunia nyata, memproses informasi yang diterima, membuat keputusan rasional, dan melakukan aksi-aksi tertentu berdasarkan keadaan. Inilah yang kita sebut dengan berperilaku cerdas. Ketika kita memprogram sebuah salinan dari proses perilaku cerdas ke sebuah mesin, ini dinamakan kecerdasan buatan atau Artificial Intelligence (AI). - -Meskipun istilah-stilahnya bisa membingungkan, Machine Learning (ML) adalah bagian penting dari Artificial Intelligence. **ML berkaitan dengan menggunakan algoritma-algoritma terspesialisasi untuk mengungkap informasi yang berarti dan mencari pola-pola tersembunyi dari data yang diterima untuk mendukung proses pembuatan keputusan rasional**. - -![AI, ML, deep learning, data science](../images/ai-ml-ds.png) - -> Sebuah diagram yang memperlihatkan hubungan antara AI, ML, Deep Learning, dan Data Science. Infografis oleh [Jen Looper](https://twitter.com/jenlooper) terinspirasi dari [infografis ini](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) - -## Apa yang akan kamu pelajari - -Dalam kurikulum ini, kita hanya akan membahas konsep inti dari Machine Learning yang harus diketahui oleh seorang pemula. Kita membahas apa yang kami sebut sebagai 'Machine Learning klasik' utamanya menggunakan Scikit-learn, sebuah *library* luar biasa yang banyak digunakan para siswa untuk belajar dasarnya. Untuk memahami konsep Artificial Intelligence atau Deep Learning yang lebih luas, pengetahuan dasar yang kuat tentang Machine Learning sangat diperlukan, itulah yang ingin kami tawarkan di sini. - -Kamu akan belajar: - -- Konsep inti ML -- Sejarah dari ML -- Keadilan dan ML -- Teknik regresi ML -- Teknik klasifikasi ML -- Teknik *clustering* ML -- Teknik *natural language processing* ML -- Teknik *time series forecasting* ML -- *Reinforcement learning* -- Penerapan nyata dari ML -## Yang tidak akan kita bahas - -- *deep learning* -- *neural networks* -- AI - -Untuk membuat pengalaman belajar yang lebih baik, kita akan menghindari kerumitan dari *neural network*, *deep learning* - membangun *many-layered model* menggunakan *neural network* - dan AI, yang mana akan kita bahas dalam kurikulum yang berbeda. Kami juga akan menawarkan kurikulum *data science* yang berfokus pada aspek bidang tersebut. -## Kenapa belajar Machine Learning? - -Machine Learning, dari perspektif sistem, didefinisikan sebagai pembuatan sistem otomatis yang dapat mempelajari pola-pola tersembunyi dari data untuk membantu membuat keputusan cerdas. - -Motivasi ini secara bebas terinspirasi dari bagaimana otak manusia mempelajari hal-hal tertentu berdasarkan data yang diterimanya dari dunia luar. - -✅ Pikirkan sejenak mengapa sebuah bisnis ingin mencoba menggunakan strategi Machine Learning dibandingkan membuat sebuah mesin berbasis aturan yang tertanam (*hard-coded*). - -### Penerapan Machine Learning - -Penerapan Machine Learning saat ini hampir ada di mana-mana, seperti data yang mengalir di sekitar kita, yang dihasilkan oleh ponsel pintar, perangkat yang terhubung, dan sistem lainnya. Mempertimbangkan potensi besar dari algoritma Machine Learning terkini, para peneliti telah mengeksplorasi kemampuan Machine Learning untuk memecahkan masalah kehidupan nyata multi-dimensi dan multi-disiplin dengan hasil positif yang luar biasa. - -**Kamu bisa menggunakan Machine Learning dalam banyak hal**: - -- Untuk memprediksi kemungkinan penyakit berdasarkan riwayat atau laporan medis pasien. -- Untuk memanfaatkan data cuaca untuk memprediksi peristiwa cuaca. -- Untuk memahami sentimen sebuah teks. -- Untuk mendeteksi berita palsu untuk menghentikan penyebaran propaganda. - -Keuangan, ekonomi, geosains, eksplorasi ruang angkasa, teknik biomedis, ilmu kognitif, dan bahkan bidang humaniora telah mengadaptasi Machine Learning untuk memecahkan masalah sulit pemrosesan data di bidang mereka. - -Machine Learning mengotomatiskan proses penemuan pola dengan menemukan wawasan yang berarti dari dunia nyata atau dari data yang dihasilkan. Machine Learning terbukti sangat berharga dalam penerapannya di berbagai bidang, diantaranya adalah bidang bisnis, kesehatan, dan keuangan. - -Dalam waktu dekat, memahami dasar-dasar Machine Learning akan menjadi suatu keharusan bagi orang-orang dari bidang apa pun karena adopsinya yang luas. - ---- -## 🚀 Tantangan - -Buat sketsa di atas kertas atau menggunakan aplikasi seperti [Excalidraw](https://excalidraw.com/), mengenai pemahaman kamu tentang perbedaan antara AI, ML, Deep Learning, dan Data Science. Tambahkan beberapa ide masalah yang cocok diselesaikan masing-masing teknik. - -## [Quiz Pasca-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/) - -## Ulasan & Belajar Mandiri - -Untuk mempelajari lebih lanjut tentang bagaimana kamu dapat menggunakan algoritma ML di cloud, ikuti [Jalur Belajar](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) ini. - -## Tugas - -[Persiapan](assignment.id.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.it.md b/1-Introduction/1-intro-to-ML/translations/README.it.md deleted file mode 100644 index 37b23a0a..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.it.md +++ /dev/null @@ -1,108 +0,0 @@ -# Introduzione a machine learning - -[![ML, AI, deep learning: qual è la differenza?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning: qual è la differenza?") - -> 🎥 Fare clic sull'immagine sopra per un video che illustra la differenza tra machine learning, intelligenza artificiale (AI) e deep learning. - -## [Quiz pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/?loc=it) - -### Introduzione - -Benvenuti in questo corso su machine learning classico per principianti! Che si sia completamente nuovo su questo argomento, o un professionista esperto di ML che cerca di rispolverare un'area, è un piacere avervi con noi! Si vuole creare un punto di partenza amichevole per lo studio di ML e saremo lieti di valutare, rispondere e incorporare il vostro [feedback](https://github.com/microsoft/ML-For-Beginners/discussions). - -[![Introduzione a ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 " Introduzione a ML") - -> 🎥 Fare clic sull'immagine sopra per un video: John Guttag del MIT introduce machine learning - -### Iniziare con machine learning - -Prima di iniziare con questo programma di studi, è necessario che il computer sia configurato e pronto per eseguire i notebook in locale. - -- **Si configuri la propria macchina con l'aiuto di questi video**. Si scopra di più su come configurare la propria macchina in questa [serie di video](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6). -- **Imparare Python**. Si consiglia inoltre di avere una conoscenza di base di [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), un linguaggio di programmazione utile per i data scientist che si utilizzerà in questo corso. -- **Imparare Node.js e JavaScript**. Talvolta in questo corso si usa anche JavaScript durante la creazione di app web, quindi sarà necessario disporre di [node](https://nodejs.org) e [npm](https://www.npmjs.com/) installati, oltre a [Visual Studio Code](https://code.visualstudio.com/) disponibile sia per lo sviluppo Python che JavaScript. -- **Creare un account GitHub**. E' probabile che si [](https://github.com)disponga già di un account GitHub, ma in caso contrario occorre crearne uno e poi eseguire il fork di questo programma di studi per utilizzarlo autonomamente. (Sentitevi liberi di darci anche una stella 😊) -- **Esplorare Scikit-learn**. Familiarizzare con Scikit-learn,[]([https://scikit-learn.org/stable/user_guide.html) un insieme di librerie ML a cui si farà riferimento in queste lezioni. - -### Che cos'è machine learning? - -Il termine "machine learning" è uno dei termini più popolari e usati di oggi. C'è una buona possibilità che si abbia sentito questo termine almeno una volta se si ha una sorta di familiarità con la tecnologia, indipendentemente dal campo in cui si lavora. I meccanismi di machine learning, tuttavia, sono un mistero per la maggior parte delle persone. Per un principiante di machine learning l'argomento a volte può sembrare soffocante. Pertanto, è importante capire cos'è effettivamente machine learning e impararlo passo dopo passo, attraverso esempi pratici. - -![ml curva di hype](../images/hype.png) - -> Google Trends mostra la recente "curva di hype" del termine "machine learning" - -Si vive in un universo pieno di misteri affascinanti. Grandi scienziati come Stephen Hawking, Albert Einstein e molti altri hanno dedicato la loro vita alla ricerca di informazioni significative che svelino i misteri del mondo circostante. Questa è la condizione umana dell'apprendimento: un bambino impara cose nuove e scopre la struttura del suo mondo anno dopo anno mentre cresce fino all'età adulta. - -Il cervello e i sensi di un bambino percepiscono i fatti dell'ambiente circostante e apprendono gradualmente i modelli di vita nascosti che aiutano il bambino a creare regole logiche per identificare i modelli appresi. Il processo di apprendimento del cervello umano rende l'essere umano la creatura vivente più sofisticata di questo mondo. Imparare continuamente scoprendo schemi nascosti e poi innovare su questi schemi ci consente di migliorarsi sempre di più per tutta la vita. Questa capacità di apprendimento e capacità di evoluzione è correlata a un concetto chiamato [plasticità cerebrale](https://www.simplypsychology.org/brain-plasticity.html). Superficialmente, si possono tracciare alcune somiglianze motivazionali tra il processo di apprendimento del cervello umano e i concetti di machine learning. - -Il [cervello umano](https://www.livescience.com/29365-human-brain.html) percepisce le cose dal mondo reale, elabora le informazioni percepite, prende decisioni razionali ed esegue determinate azioni in base alle circostanze. Questo è ciò che viene chiamato comportarsi in modo intelligente. Quando si programma un facsimile del processo comportamentale intelligente su una macchina, si parla di intelligenza artificiale (AI). - -Sebbene i termini possano essere confusi, machine learning (ML) è un importante sottoinsieme dell'intelligenza artificiale. **Machine learning si occupa di utilizzare algoritmi specializzati per scoprire informazioni significative e trovare modelli nascosti dai dati percepiti per corroborare il processo decisionale razionale**. - -![AI, machine learning, deep learning, data science](../images/ai-ml-ds.png) - -> Un diagramma che mostra le relazioni tra intelligenza artificiale (AI), machine learning, deep learning e data science. Infografica di [Jen Looper](https://twitter.com/jenlooper) ispirata a [questa grafica](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) - -## Ecco cosa si imparerà in questo corso - -In questo programma di studi, saranno tratteti solo i concetti fondamentali di machine learning che un principiante deve conoscere. Si tratterà di ciò che viene chiamato "machine learning classico" principalmente utilizzando Scikit-learn, una eccellente libreria che molti studenti usano per apprendere le basi. Per comprendere concetti più ampi di intelligenza artificiale o deep learning, è indispensabile una forte conoscenza fondamentale di machine learning, e quindi la si vorrebbe offrire qui. - -In questo corso si imparerà: - -- concetti fondamentali di machine learning -- la storia di ML -- ML e correttezza -- tecniche di regressione ML -- tecniche di classificazione ML -- tecniche di clustering ML -- tecniche di elaborazione del linguaggio naturale ML -- tecniche ML di previsione delle serie temporali -- reinforcement learning -- applicazioni del mondo reale per ML -## Cosa non verrà trattato - -- deep learning -- reti neurali -- AI (intelligenza artificiale) - -Per rendere l'esperienza di apprendimento migliore, si eviteranno le complessità delle reti neurali, del "deep learning" (costruzione di modelli a più livelli utilizzando le reti neurali) e dell'AI, di cui si tratterà in un altro programma di studi. Si offrirà anche un prossimo programma di studi di data science per concentrarsi su quell'aspetto di questo campo più ampio. -## Perché studiare machine learning? - -Machine learning, dal punto di vista dei sistemi, è definito come la creazione di sistemi automatizzati in grado di apprendere modelli nascosti dai dati per aiutare a prendere decisioni intelligenti. - -Questa motivazione è vagamente ispirata dal modo in cui il cervello umano apprende determinate cose in base ai dati che percepisce dal mondo esterno. - -✅ Si pensi per un minuto al motivo per cui un'azienda dovrebbe provare a utilizzare strategie di machine learning rispetto alla creazione di un motore cablato a codice basato su regole codificate. - -### Applicazioni di machine learning - -Le applicazioni di machine learning sono ormai quasi ovunque e sono onnipresenti come i dati che circolano nelle società, generati dagli smartphone, dispositivi connessi e altri sistemi. Considerando l'immenso potenziale degli algoritmi di machine learning all'avanguardia, i ricercatori hanno esplorato la loro capacità di risolvere problemi multidimensionali e multidisciplinari della vita reale con grandi risultati positivi. - -**Si può utilizzare machine learning in molti modi**: - -- Per prevedere la probabilità di malattia dall'anamnesi o dai rapporti di un paziente. -- Per sfruttare i dati meteorologici per prevedere gli eventi meteorologici. -- Per comprendere il sentimento di un testo. -- Per rilevare notizie false per fermare la diffusione della propaganda. - -La finanza, l'economia, le scienze della terra, l'esplorazione spaziale, l'ingegneria biomedica, le scienze cognitive e persino i campi delle scienze umanistiche hanno adattato machine learning per risolvere gli ardui problemi di elaborazione dati del proprio campo. - -Machine learning automatizza il processo di individuazione dei modelli trovando approfondimenti significativi dal mondo reale o dai dati generati. Si è dimostrato di grande valore in applicazioni aziendali, sanitarie e finanziarie, tra le altre. - -Nel prossimo futuro, comprendere le basi di machine learning sarà un must per le persone in qualsiasi campo a causa della sua adozione diffusa. - ---- -## 🚀 Sfida - -Disegnare, su carta o utilizzando un'app online come [Excalidraw](https://excalidraw.com/), la propria comprensione delle differenze tra AI, ML, deep learning e data science. Aggiungere alcune idee sui problemi che ciascuna di queste tecniche è in grado di risolvere. - -## [Quiz post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/?loc=it) - -## Revisione e Auto Apprendimento - -Per saperne di più su come si può lavorare con gli algoritmi ML nel cloud, si segua questo [percorso di apprendimento](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott). - -## Compito - -[Tempi di apprendimento brevi](assignment.it.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.ja.md b/1-Introduction/1-intro-to-ML/translations/README.ja.md deleted file mode 100644 index db0ed50d..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.ja.md +++ /dev/null @@ -1,105 +0,0 @@ -# 機械学習への導入 - -[![ML, AI, deep learning - 違いは何か?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - 違いは何か?") - -> 🎥 上の画像をクリックすると、機械学習、AI、深層学習の違いについて説明した動画が表示されます。 - -## [Pre-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1?loc=ja) - -### イントロダクション - -初心者のための古典的な機械学習のコースへようこそ! このテーマに全く触れたことのない方も、この分野をブラッシュアップしたい経験豊富な方も、ぜひご参加ください。私たちは、あなたのMLの学習についての親しみやすいスタート地点を作りたいと考えています。あなたの[フィードバック](https://github.com/microsoft/ML-For-Beginners/discussions)を評価し、対応し、取り入れることができれば幸いです。 -[![機械学習への導入](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "機械学習への導入") - -> 🎥 上の画像をクリックすると、MITのJohn Guttagが機械学習を紹介する動画が表示されます。 -### 機械学習を始めるにあたって - -このカリキュラムを始める前に、コンピュータを設定し、ノートブックをローカルで実行できるようにする必要があります。 - -- **こちらのビデオでマシンの設定を行ってください。** マシンの設定方法については、[これらのビデオ](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)をご覧ください。 -- **Pythonを学習する。** 本講座で使用する、データサイエンティストに有用なプログラミング言語である[Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott)の基本的な理解があることが望ましいです。 -- **Node.jsとJavaScriptを学習する。** このコースではウェブアプリを構築する際にJavaScriptも何度か使用しますので、[node](https://nodejs.org)と[npm](https://www.npmjs.com/)がインストールされていること、PythonとJavaScriptの両方の開発に必要な[Visual Studio Code](https://code.visualstudio.com/)が利用可能であることが必要です。 -- **GitHubのアカウントを作成する。** [GitHub](https://github.com)で私たちを見つけたのですから、すでにアカウントをお持ちかもしれませんが、もしお持ちでなければ、アカウントを作成して、このカリキュラムをフォークしてご自分でお使いください。(スターをつけることもお忘れなく😊) -- **Scikit-learnを探索する。** このレッスンで参照するMLライブラリのセットである[Scikit-learn]([https://scikit-learn.org/stable/user_guide.html)に慣れ親しんでください。 - -### 機械学習とは何か? - -"機械学習(Machine Learning)"という言葉は、現在最も人気があり、頻繁に使用されている言葉の一つです。どんな分野の技術者であっても、多少なりとも技術に精通していれば、一度はこの言葉を耳にしたことがある可能性は少なくありません。しかし、機械学習の仕組みは、ほとんどの人にとって謎に包まれており、機械学習の初心者にとって、このテーマは時に圧倒されるように感じられます。そのため、機械学習とは何かを実際に理解し、実践的な例を通して段階的に学んでいくことが重要です。 - -![機械学習の人気を示すグラフ](../images/hype.png) - -> Google Trendsによる、「機械学習」という言葉の最近の盛り上がりを示すグラフ。 - -私たちは、魅力的な謎に満ちた宇宙に住んでいます。ホーキング博士やアインシュタイン博士をはじめとする偉大な科学者たちは、私たちを取り巻く世界の謎を解き明かす意味のある情報を探すことに人生を捧げてきました。人間の子供は、大人になるまでの間に、年々新しいことを学び、自分の世界の構造を明らかにしていきます。 - -子供の脳と感覚は、周囲の事実を認識し、徐々に人生の隠れたパターンを学び、学習したパターンを識別するための論理的なルールを作るのに役立ちます。こういった学習プロセスは、人間をこの世で最も洗練された生物にしています。隠れたパターンを発見することで継続的に学習し、そのパターンに基づいて革新を行うことで、私たちは生涯を通じて自分自身をより良くしていくことができます。この学習能力と進化能力は、[「脳の可塑性」](https://www.simplypsychology.org/brain-plasticity.html)と呼ばれる概念に関連しています。表面的には、人間の脳の学習プロセスと機械学習のコンセプトには、モチベーションの面でいくつかの共通点があります。 - -[人間の脳](https://www.livescience.com/29365-human-brain.html)は、現実世界の物事を知覚し、知覚した情報を処理し、合理的な判断を下し、状況に応じてある行動をします。これは知的行動と呼ばれます。この知的行動のプロセスを機械にプログラムすることを人工知能(AI)といいます。 - -この言葉は混同されることがありますが、機械学習(ML)は人工知能の重要なサブセットです。**MLは、特殊なアルゴリズムを使用して、意味のある情報を発見し、知覚されたデータから隠れたパターンを見つけて、合理的な意思決定プロセスを裏付けることに関係しています。** - -![AI, ML, ディープラーニング、データサイエンス](../images/ai-ml-ds.png) - - ->[このグラフ](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)に触発された[Jen Looper](https://twitter.com/jenlooper)氏によるインフォグラフィック - -## このコースで学ぶこと - -このカリキュラムでは、初心者が知っておかなければならない機械学習のコアな概念のみを取り上げます。私たちが「古典的な機械学習」と呼ぶものを、多くの学生が基礎を学ぶために使用する優れたライブラリであるScikit-learnを主に使ってカバーします。人工知能や深層学習などのより広い概念を理解するためには、機械学習の強力な基礎知識が不可欠ですので、ここで提供します。 - -- 機械学習の核となるコンセプト -- MLの歴史 -- MLと公平性 -- MLによる回帰の手法 -- MLによる分類技術 -- MLによるクラスタリング -- MLによる自然言語処理の技術 -- MLによる時系列予測の技術 -- 強化学習 -- MLの現実世界への応用 -## このコースで扱わないこと - -- ディープラーニング -- ニューラルネットワーク -- AI - -ニューラルネットワークやディープラーニング(ニューラルネットワークを用いた多層的なモデル構築)、AIなどの複雑な分野は、より良い学習環境を提供するために避けていますが、これらは別のカリキュラムで取り上げます。また、それらの大きな分野の中でも特にデータサイエンスに焦点を当てたカリキュラムを提供する予定です。 -## なぜ機械学習を学ぶのか - -機械学習とは、システムの観点から、データから隠れたパターンを学習し、知的な意思決定を支援する自動化されたシステムを構築することと定義されます。 - -この動機は、人間の脳が外界から認識したデータに基づいて特定の事柄を学習する仕組みに、ゆるやかにインスパイアされています。 - -✅ なぜビジネスでは、ハードコードされたルールベースのエンジンを作るのではなく、機械学習戦略を使ってみようと思うのか、ちょっと考えてみてください。 - - -### 機械学習の応用 - -機械学習のアプリケーションは、今やほとんどどこにでもあり、スマートフォンやコネクテッドデバイス、その他のシステムから生成され、私たちの社会に流れているデータと同様にありふれたものとなっています。最先端の機械学習アルゴリズムの計り知れない可能性を考慮して、研究者たちは、多次元的・多分野的な現実の問題を解決するためにその能力を探求し、非常に良い結果を得ています。 - -**機械学習は様々な形で利用できます**: - -- 患者の病歴や報告書から病気の可能性を予測する。 -- 気象データを活用して気象現象を予測する。 -- 文章の感情を理解する。 -- プロパガンダの拡散を防ぐためにフェイクニュースを検出する。 - -金融、経済、地球科学、宇宙開発、生物医学工学、認知科学、さらには文科系の分野でも、それぞれの分野のデータ処理に伴う困難な問題を解決するために、機械学習が採用されています。 - -機械学習は、実世界のデータや生成されたデータから意味のある洞察を見出し、パターンを発見するプロセスを自動化します。機械学習は、ビジネス、健康、金融などの分野で非常に有用であることが証明されています。 - -近い将来、機械学習の基礎を理解することは、機械学習の普及に伴い、あらゆる分野の人々にとって必須のものとなるでしょう。 - ---- -## 🚀 Challenge -AI、ML、深層学習、データサイエンスの違いについて理解していることを、紙や[Excalidraw](https://excalidraw.com/)などのオンラインアプリを使ってスケッチしてください。また、それぞれの技術が得意とする問題のアイデアを加えてみてください。 - -## [Post-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2?loc=ja) - -## 振り返りと自習 - -クラウド上でMLアルゴリズムをどのように扱うことができるかについては、この[ラーニングパス](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott)に従ってください。 - -## 課題 - -[稼働させる](assignment.ja.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.ko.md b/1-Introduction/1-intro-to-ML/translations/README.ko.md deleted file mode 100644 index eb9757d3..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.ko.md +++ /dev/null @@ -1,113 +0,0 @@ -# 머신러닝 소개 - -[![ML, AI, deep learning - What's the difference?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - What's the difference?") - -> 🎥 머신러닝, AI 그리고 딥러닝의 차이를 설명하는 영상을 보려면 위 이미지를 클릭합니다. - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/) - -### 소개 - -입문자를 위한 classical 머신러닝 코스에 오신 것을 환영합니다! 이 토픽에 완벽하게 새로 접해보거나, 한 분야에 완벽해지고 싶어하는 ML 실무자도 저희와 함께하게 되면 좋습니다! ML 연구를 위한 친숙한 시작점을 만들고 싶고, 당신의 [feedback](https://github.com/microsoft/ML-For-Beginners/discussions)을 평가, 응답하고 반영하겠습니다. - -[![Introduction to ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") - -> 🎥 동영상을 보려면 위 이미지 클릭: MIT의 John Guttag가 머신러닝을 소개합니다. -### 머신러닝 시작하기 - -이 커리큘럼을 시작하기 전, 컴퓨터를 세팅하고 노트북을 로컬에서 실행할 수 있게 준비해야 합니다. - -- **이 영상으로 컴퓨터 세팅하기**. [영상 플레이리스트](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)에서 컴퓨터를 세팅하는 방법에 대하여 자세히 알아봅니다. -- **Python 배우기**. 이 코스에서 사용할 데이터 사이언티스트에게 유용한 프로그래밍 언어인 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott)에 대한 기본적인 이해를 해야 좋습니다. -- **Node.js 와 JavaScript 배우기**. 이 코스에서 웹앱을 빌드할 때 JavaScript를 사용하므로, [node](https://nodejs.org) 와 [npm](https://www.npmjs.com/)을 설치해야 합니다. Python 과 JavaScript의 개발환경 모두 쓸 수 있는 [Visual Studio Code](https://code.visualstudio.com/)도 있습니다. -- **GitHub 계정 만들기**. [GitHub](https://github.com) 계정이 혹시 없다면, 계정을 만든 뒤에 이 커리큘럼을 포크해서 개인에 맞게 쓸 수 있습니다. (star 하셔도 됩니다 😊) -- **Scikit-learn 찾아보기**. 이 강의에서 참조하고 있는 ML 라이브러리 셋인 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)을 숙지합니다. - -### 머신러닝은 무엇인가요? - -'머신러닝'은 최근 가장 인기있고 자주 언급되는 용어입니다. 어떤 분야든 기술에 어느 정도 익숙해지면 이러한 용어를 한 번즈음 들어본 적이 있었을 것입니다. 그러나, 머신러닝의 구조는 대부분의 사람들에겐 미스테리입니다. 머신러닝 입문자에겐 주제가 때때로 숨막힐 수 있습니다. 때문에 머신러닝이 실제로 어떤지 이해하고 실제 적용된 예시로 단계별 학습을 진행하는 것이 중요합니다. - -![ml hype curve](../images/hype.png) - -> Google Trends의 '머신러닝' 용어의 최근 'hype curve' 입니다. - -우리는 매우 신비한 우주에 살고 있습니다. Stephen Hawking, Albert Einstein과 같은 위대한 과학자들은 주변 세계의 신비를 밝혀낼 의미있는 정보를 찾는 데 일생을 바쳤습니다. 이건 사람의 학습 조건이죠. 아이는 성인이 되면서 해마다 새로운 것을 배우고 세계의 구조들을 발견합니다. - -아이의 뇌와 감각은 주변 환경의 사실들을 인지하고 학습된 패턴을 식별하기 위한 논리적인 규칙을 만드는 패턴을 점차적으로 배웁니다. 인간의 두뇌의 학습 과정은 인간을 세상에서 가장 정교한 생명체로 만듭니다. 숨겨진 패턴을 발견하고 그 패턴을 혁신함으로써 지속적으로 학습하는 것은 우리가 일생 동안 점점 더 나은 자신을 만들 수 있게 해줍니다. 이러한 학습 능력과 발전하는 능력은 [brain plasticity 뇌의 가소성](https://www.simplypsychology.org/brain-plasticity.html)이라고 불리는 개념과 관련이 있습니다. 피상적으로, 우리는 인간의 두뇌의 학습 과정과 기계 학습의 개념 사이에 동기부여의 유사성을 끌어낼 수 있습니다. - -[인간의 뇌](https://www.livescience.com/29365-human-brain.html)는 현실 세계의 것들을 인식하고, 인식된 정보를 처리하고, 합리적인 결정을 내리고, 상황에 따라 특정한 행동을 합니다. 이것이 우리가 지적 행동이라고 부르는 것입니다. 우리가 지능적인 행동 과정의 팩시밀리를 기계에 프로그래밍 할 때, 그것은 인공지능(AI)이라고 불립니다. - -용어가 헷갈릴 수 있지만, 머신러닝(ML)은 중요한 인공 지능의 한 부분입니다. **ML은 특수한 알고리즘을 써서 의미있는 정보를 찾고 인식한 데이터에서 숨겨진 패턴을 찾아 합리적으로 판단할 프로세스를 확실하게 수행하는 것에 집중하고 있다고 할 수 있습니다**. - -![AI, ML, deep learning, data science](../images/ai-ml-ds.png) - -> AI, ML, 딥러닝, 그리고 데이터 사이언티스 간의 관계를 보여주는 다이어그램. [이곳](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)에서 영감을 받은 [Jen Looper](https://twitter.com/jenlooper)의 인포그래픽 - -## 이 코스에서 배울 컨셉들 - -이 커리큘럼에서는 입문자가 반드시 알아야 할 머신러닝의 핵심적인 개념만 다룰 것입니다. 많은 학생들이 기초를 배우기 위해 사용하는 훌륭한 라이브러리인, Scikit-learn으로 'classical machine learning'이라고 부르는 것을 다룹니다. 인공 지능 또는 딥러닝의 대략적인 개념을 이해하려면 머신러닝에 대한 강력한 기초 지식이 꼭 필요하므로, 해당 내용을 본 강의에서 제공하고자 합니다. - -## 이 코스에서 다루는 것: - -- 머신러닝의 핵심 컨셉 -- ML 의 역사 -- ML 과 공정성 -- regression ML 기술 -- classification ML 기술 -- clustering ML 기술 -- natural language processing ML 기술 -- time series forecasting ML 기술 -- 강화 학습 -- real-world 애플리케이션 for ML - -## 다루지 않는 것: - -- 딥러닝 -- 신경망 -- AI - -우리는 더 나은 학습 경험을 만들기 위해 본 코스에서는 신경망, 신경망을 이용한 다층 모델 구축인 '딥러닝', 그리고 AI는 논의하지 않을 것입니다. 또한, 더 큰 필드에 초점을 맞추기 위하여 향후 데이터 사이언스 커리큘럼을 제공할 예정입니다. - -## 왜 머신러닝을 배우나요? - -시스템 관점에서 머신러닝은 데이터의 숨겨진 패턴을 학습하여 현명한 의사결정을 지원하는 자동화된 시스템을 만드는 것으로 정의됩니다. - -이것은 인간의 두뇌가 외부로부터 인지하는 데이터를 바탕으로 어떻게 특정한 것들을 배우는지에 의해 어느 정도 영감을 받았습니다. - -✅ 하드 코딩된 규칙 기반 엔진을 만드는 것보다 기계 학습 전략을 사용하는 이유를 잠시 생각해 봅시다. - -### 머신러닝의 애플리케이션 - -머신러닝의 응용은 이제 거의 모든 곳에 있으며, 우리의 스마트폰, 연결된 기기, 그리고 다른 시스템들에 의해 생성된 우리 사회의 방대한 데이터만큼 어디에나 존재합니다. 최첨단 머신러닝 알고리즘의 엄청난 잠재력을 고려하여 연구원들은 다차원적이고 다분야적인 실제 문제를 큰 긍정적인 결과로 해결할 수 있는 능력을 탐구하고 있습니다. - -**다양한 방식으로 머신러닝을 사용할 수 있습니다**: - -- 환자의 병력이나 보고서를 기반으로 질병 가능성을 예측합니다. -- 날씨 데이터로 계절 이벤트를 예측합니다. -- 문장의 감정을 이해합니다. -- 가짜 뉴스를 감지하고 선동을 막습니다. - -금융, 경제학, 지구 과학, 우주 탐험, 생물 공학, 인지 과학, 그리고 인문학까지 머신러닝을 적용하여 어렵고, 데이터 처리가 버거운 이슈를 해결했습니다. - -**결론**: - -머신러닝은 실제 또는 생성된 데이터에서 의미 있는 패턴을 찾는 프로세스를 자동화합니다. 무엇보다도 비즈니스, 건강 및 재무 애플리케이션에서 높은 가치를 지닌다는 것이 입증되었습니다. - -가까운 미래에, 머신러닝의 광범위한 채택으로 모든 분야의 사람들이 머신러닝의 기본을 이해하는 것이 필수적이 될 것입니다. - ---- -## 🚀 도전 - -종이에 그리거나, [Excalidraw](https://excalidraw.com/)처럼 온라인 앱을 이용하여 AI, ML, 딥러닝, 그리고 데이터 사이언스의 차이를 이해합시다. 각 기술들이 잘 해결할 수 있는 문제에 대해 아이디어를 합쳐보세요. - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/) - -## 리뷰 & 자기주도 학습 - -클라우드에서 ML 알고리즘을 어떻게 사용하는 지 자세히 알아보려면, [학습 경로](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott)를 따릅니다. - -ML의 기초에 대한 [학습 경로](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott)를 봅니다. - -## 과제 - -[Get up and running](../assignment.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.pt-br.md b/1-Introduction/1-intro-to-ML/translations/README.pt-br.md deleted file mode 100644 index 9b5f94c0..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.pt-br.md +++ /dev/null @@ -1,113 +0,0 @@ -# Introdução ao machine learning - -[![ML, AI, deep learning - Qual é a diferença?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning - Qual é a diferença?") - -> 🎥 Clique na imagem acima para assistir um vídeo que ilustra a diferença entre machine learning, AI, e deep learning. - -## [Questionário inicial](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1?loc=ptbr) - -### Introdução - -Nossas boas vindas a este curso de machine learning clássico para iniciantes! Quer você seja completamente novo neste tópico, ou um praticante de ML experiente que esteja procurando se atualizar em uma área, estamos felizes por você se juntar a nós! Queremos criar um ponto de lançamento amigável para seu estudo de ML e ficaríamos felizes em avaliar, responder e incorporar o seu [feedback](https://github.com/microsoft/ML-For-Beginners/discussions). - -[![Introdução ao ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introdução ao ML") - -> 🎥 Clique na imagem acima para assistir: John Guttag, do MIT, apresenta o machine learning. - -### Primeiros passos com machine learning - -Antes de iniciar este curso, você precisa ter seu computador configurado e pronto para executar notebooks localmente. - -- **Configure sua máquina com estes vídeos**. Use os links a seguir para aprender [como instalar o Python](https://youtu.be/CXZYvNRIAKM) em seu sistema e [configurar um editor de texto](https://youtu.be/EU8eayHWoZg) para desenvolvimento. -- **Aprenda Python**. Também é recomendável ter um conhecimento básico de [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), uma linguagem de programação útil para cientistas de dados (data scientists) que usamos neste curso. -- **Aprenda Node.js e JavaScript**. Também usamos JavaScript algumas vezes neste curso para criar aplicativos web, então você precisará ter [node](https://nodejs.org) e [npm](https://www.npmjs.com/) instalado, assim como o [Visual Studio Code](https://code.visualstudio.com/) disponível para desenvolvimento em Python e JavaScript. -- **Crie uma conta no GitHub**. Como você nos encontrou aqui no [GitHub](https://github.com),talvez você já tenha uma conta, mas se não, crie uma e faça um fork deste curso para usar por conta própria. (Sinta-se à vontade para nos dar uma estrela também 😊). -- **Explore o Scikit-learn**. Familiarize-se com o [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), um conjunto de bibliotecas de ML referenciadas nestas lições. - -### O que é machine learning? - -O termo 'machine learning' é um dos termos mais populares e usados ​​atualmente. Há uma boa chance de você já ter ouvido esse termo pelo menos uma vez se estiver familiarizado com tecnologia, independentemente do campo em que trabalha. A mecânica do aprendizado de máquina (machine learning), entretanto, é um mistério para a maioria das pessoas. Para um iniciante em machine learning, o assunto às vezes pode parecer opressor. Portanto, é importante entender o que realmente é o machine learning e aprender sobre isso passo a passo, por meio de exemplos práticos. - -![curva de hype de ml](../images/hype.png) - -> Google Trends mostra a recente 'curva de hype' do termo 'machine learning'. - -Vivemos em um universo cheio de mistérios fascinantes. Grandes cientistas como Stephen Hawking, Albert Einstein e muitos outros dedicaram suas vidas à busca de informações significativas que desvendam os mistérios do mundo ao nosso redor. Esta é a condição humana de aprendizagem: uma criança humana aprende coisas novas e descobre a estrutura de seu mundo ano a ano à medida que chega à idade adulta. - -O cérebro e os sentidos de uma criança percebem os fatos ao seu redor e gradualmente aprendem os padrões ocultos de vida que ajudam a criança a criar regras lógicas para identificar os padrões aprendidos. O processo de aprendizagem do cérebro humano torna os humanos a criatura viva mais sofisticada deste mundo. Aprender continuamente, descobrindo padrões ocultos e, em seguida, inovar nesses padrões permite que nos tornemos cada vez melhores ao longo de nossa vida. Esta capacidade de aprendizagem e capacidade de evolução está relacionada a um conceito chamado [plasticidade cerebral](https://www.simplypsychology.org/brain-plasticity.html). Superficialmente, podemos traçar algumas semelhanças motivacionais entre o processo de aprendizado do cérebro humano e os conceitos de aprendizado de máquina. - -O [cérebro humano](https://www.livescience.com/29365-human-brain.html) percebe coisas do mundo real, processa as informações percebidas, toma decisões racionais e executa certas ações com base nas circunstâncias. Isso é o que chamamos de comportamento inteligente. Quando programamos um fac-símile do processo comportamental inteligente para uma máquina, isso é chamado de inteligência artificial (AI). - -Embora os termos possam ser confundidos, o machine learning (ML) é um subconjunto importante da inteligência artificial. **ML se preocupa em usar algoritmos especializados para descobrir informações significativas e encontrar padrões ocultos de dados percebidos para corroborar o processo de tomada de decisão racional**. - -![AI, ML, deep learning, data science](../images/ai-ml-ds.png) - -> Um diagrama que mostra as relações entre AI, ML, deep learning, and data science. Infográfico de [Jen Looper](https://twitter.com/jenlooper) inspirado [neste gráfico](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) - -## O que você aprenderá neste curso - -Nesta seção, vamos cobrir apenas os conceitos básicos de machine learning que um iniciante deve conhecer. Abordamos o que chamamos de 'machine learning clássico' principalmente usando o Scikit-learn, uma excelente biblioteca que muitos alunos usam para aprender o básico. Para compreender conceitos mais amplos de inteligência artificial ou deep learning, é indispensável um forte conhecimento fundamental de machine learning e, por isso, gostaríamos de oferecê-lo aqui. - -Neste curso você aprenderá: - -- conceitos fundamentais de machine learning -- a história do ML -- ML e justiça -- técnicas de regressão de ML -- técnicas de classificação com ML -- técnicas de agrupamento de ML -- técnicas de processamento de linguagem natural de ML -- técnicas de ML de previsão de séries temporais -- aprendizagem por reforço -- aplicativos do mundo real para ML - -## O que não cobriremos - -- deep learning -- redes neurais (neural networks) -- AI - -Para tornar essa experiência de aprendizado melhor, evitaremos as complexidades das redes neurais, 'deep learning' - construção de modelos em várias camadas usando redes neurais - e AI, que discutiremos em um currículo diferente. Também ofereceremos um futuro currículo de ciência de dados para consolidar esse aspecto desse campo mais amplo. - -## Por que estudar machine learning? - -O machine learning, de uma perspectiva de sistemas, é definido como a criação de sistemas automatizados que podem aprender padrões ocultos de dados para ajudar na tomada de decisões inteligentes. - -Essa motivação é vagamente inspirada em como o cérebro humano aprende certas coisas com base nos dados que percebe do mundo exterior. - -✅ Pense por um minuto por que uma empresa iria querer tentar usar estratégias de machine learning em vez de criar um mecanismo baseado em regras embutido. - -### Aplicações do machine learning - -Os aplicativos de machine learning agora estão em quase todos os lugares e são tão onipresentes quanto os dados que fluem em nossas sociedades, gerados por nossos smartphones, dispositivos conectados e outros sistemas. Considerando o imenso potencial dos algoritmos de aprendizado de máquina (machine learning) de última geração, os pesquisadores têm explorado sua capacidade de resolver problemas multidimensionais e multidisciplinares da vida real com excelentes resultados positivos. - -**Você pode usar o machine learning de várias maneiras**: - -- Para prever a probabilidade de doença a partir do histórico médico ou relatórios de um paciente. -- Para aproveitar os dados meteorológicos para prever eventos meteorológicos. -- Para entender o sentimento de um texto. -- Para detectar notícias falsas (fake news) e impedir a propagação de propaganda. - -Finanças, economia, ciências da terra, exploração espacial, engenharia biomédica, ciências cognitivas e até mesmo campos das humanidades adaptaram o machine learning para resolver os árduos e pesados problemas de processamento de dados de seu domínio. - -O machine learning automatiza o processo de descoberta de padrões, encontrando insights significativos do mundo real ou dados gerados. Ele provou ser altamente valioso em aplicações comerciais, de saúde e financeiras, entre outras. - -Em um futuro próximo, compreender os fundamentos do machine learning será uma obrigação para pessoas de qualquer domínio devido à sua ampla adoção. - ---- - -## 🚀 Desafio - -Esboce, no papel ou usando um aplicativo online como [Excalidraw](https://excalidraw.com/), sua compreensão das diferenças entre AI, ML, deep learning e data science. Adicione algumas idéias de problemas que cada uma dessas técnicas é boa para resolver. - -## [Questionário pós-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2?loc=ptbr) - -## Revisão e autoestudo - -Para saber mais sobre como você pode trabalhar com algoritmos de ML na nuvem, siga este [Caminho de aprendizagem](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott). - -Faça o [Caminho de aprendizagem](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) sobre os fundamentos do ML. - -## Tarefa - -[Comece a trabalhar](assignment.pt-br.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.ru.md b/1-Introduction/1-intro-to-ML/translations/README.ru.md deleted file mode 100644 index e7a19915..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.ru.md +++ /dev/null @@ -1,149 +0,0 @@ -# Введение в машинное обучение - - - -[![ML, AI, глубокое обучение - в чем разница?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, глубокое обучение - в чем разница?") - -> 🎥 Нажмите на изображение выше, чтобы просмотреть видео, в котором обсуждается разница между машинным обучением, искусственным интеллектом и глубоким обучением. - -## [Тест перед лекцией](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/) - ---- - -Добро пожаловать на курс классического машинного обучения для начинающих! Если вы новичок в этой теме или опытный специалист по машинному обучению, желающий освежить свои знания в какой-либо области, мы рады, что вы присоединились к нам! Мы хотим создать удобную стартовую площадку для вашего изучения машинного обучения и будем рады ответить и учесть ваши [отзывы](https://github.com/microsoft/ML-For-Beginners/discussions). - -[![Введение в ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Введение в ML") - -> 🎥 Нажмите на изображение выше, чтобы просмотреть видео: Джон Гуттаг из Массачусетского технологического института представляет машинное обучение - ---- -## Начало работы с машинным обучением - -Перед тем, как приступить к изучению этой учебной программы, вам необходимо настроить компьютер и подготовить его для работы с ноутбуками локально. - -- **Настройте свою машину с помощью этих видео**. Воспользуйтесь следующими ссылками, чтобы узнать [как установить Python](https://youtu.be/CXZYvNRIAKM) в вашей системе и [настроить текстовый редактор](https://youtu.be/EU8eayHWoZg) для разработки. -- **Изучите Python**. Также рекомендуется иметь базовые знания о [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), языке программирования, полезном для специалистов по данным, который мы используем в этом курсе. -- **Изучите Node.js и JavaScript**. Мы также несколько раз используем JavaScript в этом курсе при создании веб-приложений, поэтому вам потребуется установить [node](https://nodejs.org) и [npm](https://www.npmjs.com/), а также [Visual Studio Code](https://code.visualstudio.com/), доступный для разработки как на Python, так и на JavaScript. -- **Создайте учетную запись GitHub**. Поскольку вы нашли нас на [GitHub](https://github.com), возможно, у вас уже есть учетная запись, но если нет, создайте ее, а затем создайте форк этой учебной программы, чтобы использовать ее самостоятельно. (Не стесняйтесь поставить звезду этому репозиторию 😊) -- **Ознакомьтесь со Scikit-learn**. Ознакомьтесь со [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), набором библиотек для машинного обучения, на которые мы ссылаемся в этих уроках. - ---- -## Что такое машинное обучение? - -Термин "машинное обучение" - один из самых популярных и часто используемых сегодня терминов. Очень вероятно, что вы слышали этот термин хотя бы раз, если вы хоть немного знакомы с технологиями, независимо от того, в какой области вы работаете. Однако механика машинного обучения остается загадкой для большинства людей. Для новичка в машинном обучении эта тема иногда может показаться сложной. Поэтому важно понимать, что такое машинное обучение на самом деле, и изучать его шаг за шагом на практических примерах. - ---- -## Кривая хайпа - -![кривая хайпа ML](../images/hype.png) - -> Google Trends показывает недавнюю "кривую хайпа" термина "машинное обучение". - ---- -## Загадочная вселенная - -Мы живем во вселенной, полной завораживающих загадок. Великие ученые, такие как Стивен Хокинг, Альберт Эйнштейн и многие другие, посвятили свою жизнь поиску значимой информации, раскрывающей тайны окружающего нас мира. Это условие обучения: ребенок из года в год узнает новое и раскрывает структуру окружающего мира по мере взросления. - ---- -## Мозг ребенка - -Мозг и органы чувств ребенка воспринимают факты из своего окружения и постепенно изучают скрытые закономерности жизни, которые помогают ребенку выработать логические правила для определения усвоенных закономерностей. Процесс обучения человеческого мозга делает людей самыми изощренными живыми существами в этом мире. Постоянное обучение, обнаружение скрытых закономерностей и последующее внедрение инноваций, позволяет нам становиться лучше и лучше на протяжении всей жизни. Эта способность к обучению и способность к развитию связаны с концепцией, называемой [пластичность мозга](https://www.simplypsychology.org/brain-plasticity.html). На первый взгляд, мы можем выявить некоторые мотивационные сходства между процессом обучения человеческого мозга и концепциями машинного обучения. - ---- -## Человеческий мозг - -[Человеческий мозг](https://www.livescience.com/29365-human-brain.html) воспринимает вещи из реального мира, обрабатывает воспринимаемую информацию, принимает рациональные решения и выполняет определенные действия в зависимости от обстоятельств. Это то, что мы называем разумным поведением. Когда мы программируем копию интеллектуального поведенческого процесса на компьютере, это называется искусственным интеллектом (ИИ). - ---- -## Немного терминологии - -Хотя термины могут запутать, машинное обучение (ML) является важным подмножеством искусственного интеллекта. **Машинное обучение занимается использованием специализированных алгоритмов для раскрытия значимой информации и поиска скрытых закономерностей из воспринимаемых данных для подтверждения рационального процесса принятия решений**. - ---- -## AI, ML, глубокое обучение - -![AI, ML, глубокое обучение, наука о данных](../images/ai-ml-ds.png) - -> Диаграмма, показывающая взаимосвязь между ИИ, машинным обучением, глубоким обучением и наукой о данных. Инфографика [Jen Looper](https://twitter.com/jenlooper), вдохновленная [этим рисунком](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) - ---- -## Концепции, которые охватывает этот курс - -В этой учебной программе мы собираемся охватить только основные концепции машинного обучения, которые должен знать новичок. Мы рассматриваем то, что мы называем «классическим машинным обучением», в первую очередь с использованием Scikit-learn, отличной библиотеки, которую многие студенты используют для изучения основ. Чтобы понять более широкие концепции искусственного интеллекта или глубокого обучения, необходимы сильные фундаментальные знания о машинном обучении, и поэтому мы хотели бы предложить их здесь. - ---- -## В этом курсе вы узнаете: - -- основные концепции машинного обучения -- история ML -- ML и равнодоступность -- методы регрессионного машинного обучения -- классификация методов машинного обучения -- методы кластеризации машинного обучения -- методы машинного обучения обработки естественного языка -- методы машинного обучения прогнозирования временных рядов -- обучение с подкреплением -- реальные приложения для машинного обучения - ---- -## Что мы не будем рассказывать - -- глубокое обучение -- нейронные сети -- AI - -Чтобы улучшить процесс изучения, мы будем избегать сложностей нейронных сетей, «глубокого обучения» - многоуровневого построения моделей с использованием нейронных сетей - и искусственного интеллекта, которые мы обсудим в другой учебной программе. Мы также представим учебную программу по науке о данных, чтобы сосредоточиться на этом аспекте этой более широкой области. - ---- -## Зачем изучать машинное обучение? - -Машинное обучение с системной точки зрения определяется как создание автоматизированных систем, которые могут изучать скрытые закономерности из данных, чтобы помочь в принятии разумных решений. - -Эта мотивация во многом основана на том, как человеческий мозг учится определенным вещам на основе данных, которые он воспринимает из внешнего мира. - -✅ Задумайтесь на минутку, почему компания может попытаться использовать стратегии машинного обучения вместо создания жестко запрограммированного механизма на основе правил. - ---- -## Приложения машинного обучения - -Приложения машинного обучения сейчас есть почти повсюду, и они столь же повсеместны, как и данные, которые присутствующие в нашем обществе, генерируемые нашими смартфонами, подключенными к сети устройствами и другими системами. Учитывая огромный потенциал современных алгоритмов машинного обучения, исследователи изучали их способность решать многомерные и междисциплинарные проблемы реальной жизни с отличными положительными результатами. - ---- -## Примеры применяемого ML - -**Машинное обучение можно использовать разными способами**: - -- Предсказать вероятность заболевания на основании истории болезни пациента или отчетов. -- Использование данных о погоде для прогнозирования погодных явлений. -- Чтобы понять тональность текста. -- Для обнаружения фейковых новостей, чтобы остановить распространение пропаганды. - -Финансы, экономика, науки о Земле, освоение космоса, биомедицинская инженерия, когнитивистика и даже области гуманитарных наук адаптировали машинное обучение для решения сложных задач обработки данных в своей области. - ---- -## Заключение - -Машинное обучение автоматизирует процесс обнаружения шаблонов, находя важные закономерности из реальных или сгенерированных данных. Оно зарекомендовало себя, среди прочего, как очень ценный инструмент для бизнеса, здравоохранения и финансов. - -В ближайшем будущем понимание основ машинного обучения станет обязательным для людей из любой области из-за его широкого распространения. - ---- -# 🚀 Вызов - -Набросайте на бумаге или с помощью онлайн-приложения, такого как [Excalidraw](https://excalidraw.com/), ваше понимание различий между AI, ML, глубоким обучением и наукой о данных. Добавьте несколько идей о проблемах, которые может решить каждый из этих методов. - -# [Тест после лекции](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/) - ---- -# Обзор и самообучение - -Чтобы узнать больше о том, как вы можете работать с алгоритмами машинного обучения в облаке, следуйте курсу [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott). - -Пройдите курс [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) по основам машинного обучения. - ---- -# Задание - -[Подготовьте среду разработки](assignment.ru.md) diff --git a/1-Introduction/1-intro-to-ML/translations/README.tr.md b/1-Introduction/1-intro-to-ML/translations/README.tr.md deleted file mode 100644 index 79744c52..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.tr.md +++ /dev/null @@ -1,114 +0,0 @@ -# Makine Öğrenimine Giriş - -[![ML, AI, Derin öğrenme - Farkları nelerdir?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, Derin öğrenme - Farkları nelerdir?") - -> 🎥 Makine öğrenimi, yapay zeka ve derin öğrenme arasındaki farkı tartışan bir video için yukarıdaki resme tıklayın. - -## [Ders öncesi sınav](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1?loc=tr) - -### Introduction - -Yeni başlayanlar için klasik makine öğrenimi üzerine olan bu kursa hoş geldiniz! İster bu konuda tamamen yeni olun, ister belli bir alandaki bilgilerini tazelemek isteyen deneyimli bir makine öğrenimi uygulayıcısı olun, aramıza katılmanızdan mutluluk duyarız! Makine öğrenimi çalışmanız için samimi bir başlangıç ​​noktası oluşturmak istiyoruz ve [geri bildiriminizi](https://github.com/microsoft/ML-For-Beginners/discussions) değerlendirmekten, yanıtlamaktan ve hayata geçirmekten memnuniyet duyarız. - -[![Makine Öğrenimine Giriş](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Makine Öğrenimine Giriş") - -> 🎥 Video için yukarıdaki resme tıklayın: MIT'den John Guttag, makine öğrenimini tanıtıyor -### Makine Öğrenimine Başlamak - -Bu müfredata başlamadan önce, bilgisayarınızın yerel olarak (Jupyter) not defterlerini çalıştırmak için hazır olması gerekir. - -- **Makinenizi bu videolar rehberliğinde yapılandırın**. Bu [video setinde](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) makinenizi nasıl kuracağınız hakkında daha fazla bilgi edinin. -- **Python öğrenin**. Ayrıca, veri bilimciler için faydalı bir programlama dili olan ve bu derslerde kullandığımız [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) programlama dili hakkında temel bilgilere sahip olmanız da önerilir. -- **Node.js ve JavaScript'i öğrenin**. Web uygulamaları oluştururken de bu kursta JavaScript'i birkaç kez kullanıyoruz, bu nedenle [node](https://nodejs.org), [npm](https://www.npmjs.com/) ve ayrıca hem Python hem de JavaScript geliştirme için kullanılabilen [Visual Studio Code](https://code.visualstudio.com/) yüklü olmalıdır. -- **GitHub hesabı oluşturun**. Bizi burada [GitHub](https://github.com) üzerinde bulduğunuza göre, zaten bir hesabınız olabilir, ancak mevcut değilse, bir tane hesap oluşturun ve ardından bu müfredatı kendi başınıza kullanmak için çatallayın (fork). (Bize de yıldız vermekten çekinmeyin 😊) -- **Scikit-learn'ü keşfedin**. Bu derslerde referans verdiğimiz, bir dizi ML kütüphanesinden oluşan [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) hakkında bilgi edinin. - -### Makine öğrenimi nedir? - -'Makine öğrenimi' terimi, günümüzün en popüler ve sık kullanılan terimlerinden biridir. Hangi alanda çalışırsanız çalışın, teknolojiyle ilgili bir tür aşinalığınız varsa, bu terimi en az bir kez duymuş olma ihtimaliniz yüksektir. Bununla birlikte, makine öğreniminin mekanikleri, yani çalışma prensipleri, çoğu insan için bir gizemdir. Makine öğrenimine yeni başlayan biri için konu bazen bunaltıcı gelebilir. Bu nedenle, makine öğreniminin gerçekte ne olduğunu anlamak ve pratik örnekler üzerinden adım adım öğrenmek önemlidir. - -![ML heyecan eğrisi](../images/hype.png) - -> Google Trendler, 'makine öğrenimi' teriminin son 'heyecan eğrisini' gösteriyor - -Büyüleyici gizemlerle dolu bir evrende yaşıyoruz. Stephen Hawking, Albert Einstein ve daha pek çoğu gibi büyük bilim adamları, hayatlarını çevremizdeki dünyanın gizemlerini ortaya çıkaran anlamlı bilgiler aramaya adadılar. Öğrenmenin insani yönü de budur: insan evladı yeni şeyler öğrenir ve yetişkinliğe doğru büyüdükçe her yıl kendi dünyasının yapısını ortaya çıkarır. - -Bir çocuğun beyni ve duyuları, çevrelerindeki gerçekleri algılar ve çocuğun, öğrenilen kalıpları tanımlamak için mantıksal kurallar oluşturmasına yardımcı olan gizli yaşam kalıplarını yavaş yavaş öğrenir. İnsan beyninin öğrenme süreci, insanı bu dünyanın en gelişmiş canlısı yapar. Gizli kalıpları keşfederek sürekli öğrenmek ve sonra bu kalıplar üzerinde yenilik yapmak, yaşamımız boyunca kendimizi giderek daha iyi hale getirmemizi sağlar. Bu öğrenme kapasitesi ve gelişen kabiliyet, [beyin plastisitesi](https://www.simplypsychology.org/brain-plasticity.html) adı verilen bir kavramla ilgilidir. Yüzeysel olarak, insan beyninin öğrenme süreci ile makine öğrenimi kavramları arasında bazı motivasyonel benzerlikler çizebiliriz. - -[İnsan beyni](https://www.livescience.com/29365-human-brain.html) gerçek dünyadaki şeyleri algılar, algılanan bilgileri işler, mantıksal kararlar verir ve koşullara göre belirli eylemler gerçekleştirir. Akıllıca davranmak dediğimiz şey buydu işte. Bir makineye akıllı davranış sürecinin bir kopyasını programladığımızda buna yapay zeka (İngilizce haliyle artificial intelligence, kısaca **AI**) denir. - -Terimler karıştırılabilse de, makine öğrenimi (İngilizce haliyle machine learning, kısaca **ML**), yapay zekanın önemli bir alt kümesidir. **ML, mantıklı karar verme sürecini desteklemek için anlamlı bilgileri ortaya çıkarmak ve algılanan verilerden gizli kalıpları bulmak için özel algoritmalar kullanmakla ilgilenir**. - -![AI, ML, derin öğrenme, veri bilimi](../images/ai-ml-ds.png) - -> Yapay zeka, makine öğrenimi, derin öğrenme ve veri bilimi arasındaki ilişkileri gösteren bir diyagram. Bu infografik, [şu grafikten](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-) ilham alan [Jen Looper](https://twitter.com/jenlooper) tarafından hazırlanmıştır. - -> AI (Artificial Intelligence): Yapay zekâ -> ML(Machine Learning): Makine öğrenimi -> Deep Learning: Derin Öğrenme -> Data Science: Veri bilimi - -## Bu kursta neler öğreneceksiniz - -Bu müfredatta, yalnızca yeni başlayanların bilmesi gereken makine öğreniminin temel kavramlarını ele alacağız. 'Klasik makine öğrenimi' dediğimiz şeyi, öncelikle birçok öğrencinin temel bilgileri öğrenmek için kullandığı mükemmel bir kütüphane olan Scikit-learn'ü kullanarak ele alıyoruz. Daha geniş yapay zeka veya derin öğrenme kavramlarını anlamak için, güçlü bir temel makine öğrenimi bilgisi vazgeçilmezdir ve bu yüzden onu burada sunmak istiyoruz. - -Bu kursta şunları öğreneceksiniz: - -- makine öğreniminin temel kavramları -- ML'nin tarihi -- ML ve adillik -- regresyon ML teknikleri -- sınıflandırma ML teknikleri -- kümeleme ML teknikleri -- doğal dil işleme ML teknikleri -- zaman serisi tahmini ML teknikleri -- pekiştirmeli öğrenme -- ML için gerçek-dünya uygulamaları - -## Neyi kapsamayacağız - -- derin öğrenme -- sinir ağları -- yapay zeka - -Daha iyi bir öğrenme deneyimi sağlamak için, farklı bir müfredatta tartışacağımız sinir ağları, 'derin öğrenme' (sinir ağlarını kullanarak çok katmanlı modeller oluşturma) ve yapay zekânın karmaşıklıklarından kaçınacağız. Ayrıca, bu daha geniş alanın bu yönüne odaklanmak için yakında çıkacak bir veri bilimi müfredatı sunacağız. - -## Neden makine öğrenimi üzerinde çalışmalısınız? - -Sistemler perspektifinden makine öğrenimi, akıllı kararlar almaya yardımcı olmak için verilerden gizli kalıpları öğrenebilen otomatik sistemlerin oluşturulması olarak tanımlanır. - -Bu motivasyon, insan beyninin dış dünyadan algıladığı verilere dayanarak belirli şeyleri nasıl öğrendiğinden bir miktar esinlenmiştir. - -✅ Bir işletmenin, sabit kurallara dayalı bir karar aracı oluşturmak yerine neden makine öğrenimi stratejilerini kullanmayı denemek isteyebileceklerini bir an için düşünün. - -### Makine öğrenimi uygulamaları - -Makine öğrenimi uygulamaları artık neredeyse her yerde ve akıllı telefonlarımız, internete bağlı cihazlarımız ve diğer sistemlerimiz tarafından üretilen, toplumlarımızda akan veriler kadar yaygın hale gelmiş durumda. Son teknoloji makine öğrenimi algoritmalarının muazzam potansiyelini göz önünde bulunduran araştırmacılar, bu algoritmaların çok boyutlu ve çok disiplinli gerçek hayat problemlerini çözme yeteneklerini araştırıyorlar ve oldukça olumlu sonuçlar alıyorlar. - -**Makine öğrenimini birçok şekilde kullanabilirsiniz**: - -- Bir hastanın tıbbi geçmişinden veya raporlarından hastalık olasılığını tahmin etmek -- Hava olaylarını tahmin etmek için hava durumu verilerini kullanmak -- Bir metnin duygu durumunu anlamak -- Propagandanın yayılmasını durdurmak için sahte haberleri tespit etmek - -Finans, ekonomi, yer bilimi, uzay araştırmaları, biyomedikal mühendislik, bilişsel bilim ve hatta beşeri bilimlerdeki alanlar, kendi alanlarının zorlu ve ağır veri işleme sorunlarını çözmek için makine öğrenimini tekniklerini kullanmaya başladılar. - -Makine öğrenimi, gerçek dünyadan veya oluşturulan verilerden anlamlı içgörüler bularak örüntü bulma sürecini otomatikleştirir. Diğerlerinin yanı sıra iş, sağlık ve finansal uygulamalarda son derece değerli olduğunu kanıtlamıştır. - -Yakın gelecekte, yaygın olarak benimsenmesi nedeniyle makine öğreniminin temellerini anlamak, tüm alanlardan insanlar için bir zorunluluk olacak. - ---- -## 🚀 Meydan Okuma - -Kağıt üzerinde veya [Excalidraw](https://excalidraw.com/) gibi çevrimiçi bir uygulama kullanarak AI, makine öğrenimi, derin öğrenme ve veri bilimi arasındaki farkları anladığınızdan emin olun. Bu tekniklerin her birinin çözmede iyi olduğu bazı problem fikirleri ekleyin. - -## [Ders sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2?loc=tr) - -## İnceleme ve Bireysel Çalışma - -Bulutta makine öğrenimi algoritmalarıyla nasıl çalışabileceğiniz hakkında daha fazla bilgi edinmek için bu [Eğitim Patikasını](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) izleyin. - -## Ödev - -[Haydi başlayalım!](assignment.tr.md) \ No newline at end of file diff --git a/1-Introduction/1-intro-to-ML/translations/README.zh-tw.md b/1-Introduction/1-intro-to-ML/translations/README.zh-tw.md deleted file mode 100644 index bac84df3..00000000 --- a/1-Introduction/1-intro-to-ML/translations/README.zh-tw.md +++ /dev/null @@ -1,103 +0,0 @@ -# 機器學習介紹 - -[![機器學習,人工智能,深度學習-有什麽區別?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "機器學習,人工智能,深度學習-有什麽區別?") - -> 🎥 點擊上面的圖片觀看討論機器學習、人工智能和深度學習之間區別的視頻。 -## [課前測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/) - -### 介紹 - -歡迎來到這個經典機器學習的初學者課程!無論你是這個主題的新手,還是一個有經驗的 ML 從業者,我們都很高興你能加入我們!我們希望為你的 ML 研究創建一個好的開始,並很樂意評估、回應和接受你的[反饋](https://github.com/microsoft/ML-For-Beginners/discussions)。 - -[![機器學習簡介](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") - -> 🎥 單擊上圖觀看視頻:麻省理工學院的 John Guttag 介紹機器學習 -### 機器學習入門 -在開始本課程之前,你需要設置計算機能在本地運行 Jupyter Notebooks。 - -- **按照這些視頻裏的講解配置你的計算機**。了解有關如何在此[視頻集](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)中設置計算機的更多信息。 -- **學習 Python**。 還建議你對 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) 有一個基本的了解。這是我們在本課程中使用的一種對數據科學家有用的編程語言。 -- **學習 Node.js 和 JavaScript**。在本課程中,我們在構建 web 應用程序時也使用過幾次 JavaScript,因此你需要有 [Node.js](https://nodejs.org) 和 [npm](https://www.npmjs.com/) 以及 [Visual Studio Code](https://code.visualstudio.com/) 用於 Python 和 JavaScript 開發。 -- **創建 GitHub 帳戶**。既然你在 [GitHub](https://github.com) 上找到我們,你可能已經有了一個帳戶,但如果沒有,請創建一個帳戶,然後 fork 此課程自己使用(也給我們一顆星星吧😊) -- **探索 Scikit-learn**. 熟悉 [Scikit-learn]([https://scikit-learn.org/stable/user_guide.html),我們在這些課程中引用的一組 ML 庫。 - -### 什麽是機器學習? - -術語「機器學習」是當今最流行和最常用的術語之一。 如果你對科技有某種程度的熟悉,那麽很可能你至少聽說過這個術語一次,無論你在哪個領域工作。然而,機器學習的機製對大多數人來說是一個謎。 對於機器學習初學者來說,這個主題有時會讓人感到不知所措。 因此,了解機器學習的實質是什麽,並通過實例一步一步地了解機器學習是很重要的。 - -![機器學習趨勢曲線](../images/hype.png) - -> 谷歌趨勢顯示了「機器學習」一詞最近的「趨勢曲線」 -我們生活在一個充滿迷人奧秘的宇宙中。像史蒂芬·霍金、阿爾伯特·愛因斯坦等偉大的科學家,以及更多的人,都致力於尋找有意義的信息,揭示我們周圍世界的奧秘。這就是人類學習的條件:一個人類的孩子在長大成人的過程中,一年又一年地學習新事物並揭示世界的結構。 - -孩子的大腦和感官感知到周圍的事實,並逐漸學習隱藏的生活模式,這有助於孩子製定邏輯規則來識別學習模式。人類大腦的學習過程使人類成為世界上最復雜的生物。不斷地學習,通過發現隱藏的模式,然後對這些模式進行創新,使我們能夠使自己在一生中變得越來越好。這種學習能力和進化能力與一個叫做[大腦可塑性](https://www.simplypsychology.org/brain-plasticity.html)的概念有關。從表面上看,我們可以在人腦的學習過程和機器學習的概念之間找到一些動機上的相似之處。 - -[人腦](https://www.livescience.com/29365-human-brain.html) 從現實世界中感知事物,處理感知到的信息,做出理性的決定,並根據環境執行某些行動。這就是我們所說的智能行為。當我們將智能行為過程的復製品編程到計算機上時,它被稱為人工智能 (AI)。 - -盡管這些術語可能會混淆,但機器學習 (ML) 是人工智能的一個重要子集。 **機器學習關註使用專門的算法來發現有意義的信息,並從感知數據中找到隱藏的模式,以證實理性的決策過程**。 - -![人工智能、機器學習、深度學習、數據科學](../images/ai-ml-ds.png) - -> 顯示 AI、ML、深度學習和數據科學之間關系的圖表。圖片作者 [Jen Looper](https://twitter.com/jenlooper),靈感來自[這張圖](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) -## 你將在本課程中學到什麽 - -在本課程中,我們將僅涵蓋初學者必須了解的機器學習的核心概念。 我們主要使用 Scikit-learn 來介紹我們所謂的「經典機器學習」,這是一個許多學生用來學習基礎知識的優秀庫。要理解更廣泛的人工智能或深度學習的概念,機器學習的基礎知識是必不可少的,所以我們想在這裏提供它。 - -在本課程中,你將學習: - -- 機器學習的核心概念 -- 機器學習的歷史 -- 機器學習和公平性 -- 回歸 -- 分類 -- 聚類 -- 自然語言處理 -- 時序預測 -- 強化學習 -- 機器學習的實際應用 -## 我們不會涵蓋的內容 - -- 深度學習 -- 神經網絡 -- AI - -為了獲得更好的學習體驗,我們將避免神經網絡、「深度學習」(使用神經網絡的多層模型構建)和人工智能的復雜性,我們將在不同的課程中討論這些問題。 我們還將提供即將推出的數據科學課程,以專註於這個更大領域的這一方面。 -## 為什麽要學習機器學習? - -從系統的角度來看,機器學習被定義為創建可以從數據中學習隱藏模式以幫助做出智能決策的自動化系統。 - -這種動機大致是受人腦如何根據它從外部世界感知到的數據來學習某些東西的啟發。 - -✅ 想一想為什麽企業想要嘗試使用機器學習策略而不是創建基於硬編碼的規則引擎。 - -### 機器學習的應用 - -機器學習的應用現在幾乎無處不在,就像我們的智能手機、互聯設備和其他系統產生的數據一樣無處不在。考慮到最先進的機器學習算法的巨大潛力,研究人員一直在探索其解決多維多學科現實問題的能力,並取得了巨大的積極成果。 - -**你可以在很多方面使用機器學習**: - -- 根據病人的病史或報告來預測患病的可能性。 -- 利用天氣數據預測天氣。 -- 理解文本的情感。 -- 檢測假新聞以阻止其傳播。 - -金融、經濟學、地球科學、太空探索、生物醫學工程、認知科學,甚至人文學科領域都采用機器學習來解決其領域中艱巨的、數據處理繁重的問題。 - -機器學習通過從真實世界或生成的數據中發現有意義的見解,自動化了模式發現的過程。事實證明,它在商業、健康和金融應用等方面具有很高的價值。 - -在不久的將來,由於機器學習的廣泛應用,了解機器學習的基礎知識將成為任何領域的人們的必修課。 - ---- -## 🚀 挑戰 - -在紙上或使用 [Excalidraw](https://excalidraw.com/) 等在線應用程序繪製草圖,了解你對 AI、ML、深度學習和數據科學之間差異的理解。添加一些關於這些技術擅長解決的問題的想法。 - -## [閱讀後測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/) - -## 復習與自學 - -要了解有關如何在雲中使用 ML 算法的更多信息,請遵循以下[學習路徑](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott)。 - -## 任務 - -[啟動並運行](assignment.zh-tw.md) \ No newline at end of file diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.es.md b/1-Introduction/1-intro-to-ML/translations/assignment.es.md deleted file mode 100644 index 5b428135..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.es.md +++ /dev/null @@ -1,9 +0,0 @@ -# Lévantate y corre - -## Instrucciones - -En esta tarea no calificada, debe repasar Python y hacer que su entorno esté en funcionamiento y sea capaz de ejecutar cuadernos. - -Tome esta [Ruta de aprendizaje de Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), y luego configure sus sistemas con estos videos introductorios: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.fr.md b/1-Introduction/1-intro-to-ML/translations/assignment.fr.md deleted file mode 100644 index b8513048..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.fr.md +++ /dev/null @@ -1,10 +0,0 @@ -# Être opérationnel - - -## Instructions - -Dans ce devoir non noté, vous devez vous familiariser avec Python et rendre votre environnement opérationnel et capable d'exécuter des notebook. - -Suivez ce [parcours d'apprentissage Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), puis configurez votre système en parcourant ces vidéos introductives : - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.id.md b/1-Introduction/1-intro-to-ML/translations/assignment.id.md deleted file mode 100644 index a22848f4..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.id.md +++ /dev/null @@ -1,9 +0,0 @@ -# Persiapan - -## Instruksi - -Dalam tugas yang tidak dinilai ini, kamu akan mempelajari Python dan mempersiapkan *environment* kamu sehingga dapat digunakan untuk menjalankan *notebook*. - -Ambil [Jalur Belajar Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) ini, kemudian persiapkan sistem kamu dengan menonton video-video pengantar ini: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.it.md b/1-Introduction/1-intro-to-ML/translations/assignment.it.md deleted file mode 100644 index 15c41f29..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.it.md +++ /dev/null @@ -1,9 +0,0 @@ -# Tempi di apprendimento brevi - -## Istruzioni - -In questo compito senza valutazione, si dovrebbe rispolverare Python e rendere il proprio ambiente attivo e funzionante, in grado di eseguire notebook. - -Si segua questo [percorso di apprendimento di Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) e quindi si configurino i propri sistemi seguendo questi video introduttivi: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.ja.md b/1-Introduction/1-intro-to-ML/translations/assignment.ja.md deleted file mode 100644 index 4c427561..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.ja.md +++ /dev/null @@ -1,9 +0,0 @@ -# 稼働させる - -## 指示 - -この評価のない課題では、Pythonについて復習し、環境を稼働させてノートブックを実行できるようにする必要があります。 - -この[Pythonラーニングパス](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott)を受講し、次の入門用ビデオに従ってシステムをセットアップしてください。 - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.ko.md b/1-Introduction/1-intro-to-ML/translations/assignment.ko.md deleted file mode 100644 index 2b8e72a8..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.ko.md +++ /dev/null @@ -1,9 +0,0 @@ -# 시작해 봅시다 - -## 설명 - -이 미채점 과제에서는 파이썬(Python)을 복습하고 Python 실행 환경 설정 및 노트북(Jupyter Notebook) 실행 방법까지 숙지해 보시길 바랍니다. - -다음 [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott)를 이수하시고, 아래 Python 입문 강좌를 통해 Python 설치 및 실행 환경을 설정해 보세요: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.pt-br.md b/1-Introduction/1-intro-to-ML/translations/assignment.pt-br.md deleted file mode 100644 index 983d930f..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.pt-br.md +++ /dev/null @@ -1,9 +0,0 @@ -# Comece a Trabalhar - -## Instruções - -Nesta tarefa não corrigida, você deve se aprimorar em Python e colocar seu ambiente em funcionamento e capaz de executar notebooks. - -Faça o [Caminho de aprendizagem do Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), e, em seguida, faça a configuração de seus sistemas analisando estes vídeos introdutórios: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.ru.md b/1-Introduction/1-intro-to-ML/translations/assignment.ru.md deleted file mode 100644 index 8a06eedb..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.ru.md +++ /dev/null @@ -1,9 +0,0 @@ -# Настройте среду разработки - -## Инструкции - -Это задание не оценивается. Вы должны освежить в памяти Python и настроить свою среду, чтобы она могла запускать ноутбуки. - -Воспользуйтесь этим курсом [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott), а затем настройте свою систему, просмотрев эти вводные видео: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.tr.md b/1-Introduction/1-intro-to-ML/translations/assignment.tr.md deleted file mode 100644 index ed70c424..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.tr.md +++ /dev/null @@ -1,9 +0,0 @@ -# Haydi Başlayalım - -## Talimatlar - -Bu not-verilmeyen ödevde, Python bilgilerinizi tazelemeli, geliştirme ortamınızı çalışır duruma getirmeli ve not defterlerini çalıştırabilmelisiniz. - -Bu [Python Eğitim Patikasını](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) bitirin ve ardından bu tanıtım videolarını izleyerek sistem kurulumunuzu yapın : - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 \ No newline at end of file diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.zh-tw.md b/1-Introduction/1-intro-to-ML/translations/assignment.zh-tw.md deleted file mode 100644 index fa913b28..00000000 --- a/1-Introduction/1-intro-to-ML/translations/assignment.zh-tw.md +++ /dev/null @@ -1,9 +0,0 @@ -# 啟動和運行 - -## 說明 - -在這個不評分的作業中,你應該溫習一下 Python,將 Python 環境能夠運行起來,並且可以運行 notebooks。 - -學習這個 [Python 學習路徑](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott),然後通過這些介紹性的視頻將你的系統環境設置好: - -https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/2-history-of-ML/translations/README.es.md b/1-Introduction/2-history-of-ML/translations/README.es.md deleted file mode 100755 index 116cc7e4..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.es.md +++ /dev/null @@ -1,117 +0,0 @@ -# Historia del machine learning - -![Resumen de la historia del machine learning en un boceto](../../sketchnotes/ml-history.png) -> Boceto por [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Cuestionario previo a la conferencia](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3?loc=es) - -En esta lección, analizaremos los principales hitos en la historia del machine learning y la inteligencia artificial. - -La historia de la inteligencia artificial (AI) como campo está entrelazada con la historia del machine learning, ya que los algoritmos y avances computacionales que sustentan el ML ayudaron al desarrollo de la inteligencia artificial. Es útil recordar que, si bien estos campos comenzaron a cristalizar en la década de 1950 como áreas distintas de investigación, importantes [descubrimientos algorítmicos, estadísticos, matemáticos, computacionales y técnicos](https://wikipedia.org/wiki/Timeline_of_machine_learning) fueron predecesores y contemporáneos a esta era. De hecho, las personas han estado pensando en estas preguntas durante [cientos de años](https://wikipedia.org/wiki/History_of_artificial_intelligence): este artículo analiza los fundamentos intelectuales históricos de la idea de una 'máquina pensante.' - -## Descubrimientos notables - -- 1763, 1812 [Teorema de Bayes](https://es.wikipedia.org/wiki/Teorema_de_Bayes) y sus predecesores. Este teorema y sus aplicaciones son la base de la inferencia, describiendo la probabilidad de que ocurra un evento basado en el conocimiento previo. -- 1805 [Teoría de mínimos cuadrados](https://es.wikipedia.org/wiki/M%C3%ADnimos_cuadrados) por el matemático francés Adrien-Marie Legendre. Esta teoría, sobre la que aprenderemos en nuestra unidad de Regresión, ayuda al ajustar los modelos a los datos. -- 1913 [Cadenas de Markov](https://es.wikipedia.org/wiki/Cadena_de_M%C3%A1rkov) el nombre del matemático ruso Andrey Markov es utilizado para describir una secuencia de posibles eventos basados en su estado anterior. -- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) es un tipo de clasificador lineal inventado por el psicólogo Frank Rosenblatt que subyace a los avances en el deep learning. -- 1967 [Nearest Neighbor (Vecino más cercano)](https://es.wikipedia.org/wiki/K_vecinos_m%C3%A1s_pr%C3%B3ximos) es un algoritmo diseñado originalmente para trazar rutas. En un contexto de ML, se utiliza para detectar patrones. -- 1970 [Retropropagación](https://es.wikipedia.org/wiki/Propagaci%C3%B3n_hacia_atr%C3%A1s): es usada para entrenar [redes neuronales prealimentadas](https://es.wikipedia.org/wiki/Red_neuronal_prealimentada). -- 1982 [Redes neuronales recurrentes](https://es.wikipedia.org/wiki/Red_neuronal_recurrente) son redes neuronales artificiales derivadas de redes neuronales prealimentadas que crean grafos temporales. - -✅ Investigue un poco. ¿Qué otras fechas se destacan como fundamentales en la historia del machine learning (ML) y la inteligencia artificial (AI)? -## 1950: Máquinas que piensan - -Alan Turing, una persona verdaderamente notable que fue votada [por el público en 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) como el científico más grande del siglo XX, a quien se le atribuye haber ayudado a sentar las bases del concepto de una 'máquina que puede pensar.' Lidió con los detractores y con su propia necesidad de evidencia empírica de este concepto en parte mediante la creación de la [prueba de Turing](https://www.bbc.com/news/technology-18475646), que explorarás en nuestras lecciones de procesamiento de lenguaje natural (NLP, por sus siglas en inglés). - -## 1956: Dartmouth Summer Research Project - -"The Dartmouth Summer Research Project sobre inteligencia artificial fue un evento fundamental para la inteligencia artificial como campo" y fue aquí donde se acuñó el término 'inteligencia artificial' ([fuente](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - - -> Todos los aspectos del aprendizaje y cualquier otra característica de la inteligencia pueden, en principio, describirse con tanta precisión que se puede hacer una máquina para simularlos. - -El investigador principal, el profesor de matemáticas John McCarthy, esperaba "proceder sobre las bases de la conjetura de que cada aspecto del aprendizaje o cualquier otra característica de la inteligencia pueden, en principio, describirse con tanta precisión que se puede hacer una máquina para simularlos." Los participantes, incluyeron otro gran experto en el campo, Marvin Minsky. - -El taller tiene el mérito de haber iniciado y alentado varias discusiones que incluyen "el surgimiento de métodos simbólicos, sistemas en dominios limitados (primeros sistemas expertos), y sistemas deductivos contra sistemas inductivos." ([fuente](https://es.wikipedia.org/wiki/Conferencia_de_Dartmouth)). - -## 1956 - 1974: "Los años dorados" - -Desde la década de 1950, hasta mediados de la de 1970, el optimismo se elevó con la esperanza de que la AI pudiera resolver muchos problemas. En 1967, Marvin Minsky declaró con seguridad que "dentro de una generación ... el problema de crear 'inteligencia artificial' estará resuelto en gran medida." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -La investigación del procesamiento del lenguaje natural floreció, la búsqueda se refinó y se hizo más poderosa, y el concepto de 'micro-mundos' fue creado, donde se completaban tareas simples utilizando instrucciones en lenguaje sencillo. - -La investigación estuvo bien financiada por agencias gubernamentales, se realizaron avances en computación y algoritmos, y se construyeron prototipos de máquinas inteligentes. Algunas de esta máquinas incluyen: - -* [Shakey la robot](https://wikipedia.org/wiki/Shakey_the_robot), que podría maniobrar y decidir cómo realizar las tareas de forma 'inteligente'. - - ![Shakey, un robot inteligente](images/shakey.jpg) - > Shakey en 1972 - -* Eliza, unas de las primeras 'chatterbot', podía conversar con las personas y actuar como un 'terapeuta' primitivo. Aprenderá más sobre Eliza en las lecciones de NLP. - - ![Eliza, un bot](images/eliza.png) - > Una versión de Eliza, un chatbot - -* "Blocks world" era un ejemplo de micro-world donde los bloques se podían apilar y ordenar, y se podían probar experimentos en máquinas de enseñanza para tomar decisiones. Los avances creados con librerías como [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ayudaron a inpulsar el procesamiento del lenguaje natural. - - [![blocks world con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world con SHRDLU") - - > 🎥 Haga clic en la imagen de arriba para ver un video: Blocks world con SHRDLU - -## 1974 - 1980: "Invierno de la AI" - -A mediados de la década de 1970, se hizo evidente que la complejidad de la fabricación de 'máquinas inteligentes' se había subestimado y que su promesa, dado la potencia computacional disponible, había sido exagerada. La financiación se agotó y la confianza en el campo se ralentizó. Algunos problemas que impactaron la confianza incluyeron: - -- **Limitaciones**. La potencia computacional era demasiado limitada. -- **Explosión combinatoria**. La cantidad de parámetros necesitados para entrenar creció exponencialmente a medida que se pedía más a las computadoras sin una evolución paralela de la potencia y la capacidad de cómputo. -- **Escasez de datos**. Hubo una escasez de datos que obstaculizó el proceso de pruebas, desarrollo y refinamiento de algoritmos. -- **¿Estamos haciendo las preguntas correctas?**. Las mismas preguntas que se estaban formulando comenzaron a cuestionarse. Los investigadores comenzaron a criticar sus métodos: - - Las pruebas de Turing se cuestionaron por medio, entre otras ideas, de la 'teoría de la habitación china' que postulaba que "programar una computadora digital puede hacerse que parezca que entiende el lenguaje, pero no puede producir una comprensión real" ([fuente](https://plato.stanford.edu/entries/chinese-room/)) - - Se cuestionó la ética de introducir inteligencias artificiales como la "terapeuta" Eliza en la sociedad. - -Al mismo tiempo, comenzaron a formarse varias escuelas de pensamiento de AI. Se estableció una dicotomía entre las prácticas ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). _Scruffy_ labs modificó los programas durante horas hasta que obtuvieron los objetivos deseados. _Neat_ labs "centrados en la lógica y la resolución de problemas formales". ELIZA y SHRDLU eran sistemas _scruffy_ muy conocidos. En la década de 1980, cuando surgió la demanda para hacer que los sistemas de aprendizaje fueran reproducibles, el enfoque _neat_ gradualmente tomó la vanguardia a medida que sus resultados eran más explicables. - -## Systemas expertos de la década de 1980 - -A medida que el campo creció, su beneficio para las empresas se hizo más claro, y en la década de 1980 también lo hizo la proliferación de 'sistemas expertos'. "Los sistemas expertos estuvieron entre las primeras formas verdaderamente exitosas de software de inteligencia artificial (IA)." ([fuente](https://wikipedia.org/wiki/Expert_system)). - -Este tipo de sistemas es en realidad _híbrido_, que consta parcialmente de un motor de reglas que define los requisitos comerciales, y un motor de inferencia que aprovechó el sistema de reglas para deducir nuevos hechos. - -En esta era también se prestó mayor atención a las redes neuronales. - -## 1987 - 1993: AI 'Chill' - -La proliferación de hardware de sistemas expertos especializados tuvo el desafortunado efecto de volverse demasiado especializado. El auge de las computadoras personales también compitió con estos grandes sistemas centralizados especializados. La democratización de la informática había comenzado, y finalmente, allanó el camino para la explosión moderna del big data. - -## 1993 - 2011 - -Esta época vió una nueva era para el ML y la IA para poder resolver problemas que anteriormente provenían de la falta de datos y de poder de cómputo. La cantidad de datos comenzó a aumentar rápidamente y a estar más disponible, para bien o para mal, especialmente con la llegada del smartphone alrededor del 2007. El poder computacional se expandió exponencialmente y los algoritmos evolucionaron al mismo tiempo. El campo comenzó a ganar madurez a medida que los días libres del pasado comenzaron a cristalizar en una verdadera disciplina. - -## Ahora - -Hoy en día, machine learning y la inteligencia artificial tocan casi todos los aspectos de nuestras vidas. Esta era requiere de una comprensión cuidadosa de los riesgos y los efectos potenciales de estos algoritmos en las vidas humanas. Como ha dicho Brad Smith de Microsoft, "La tecnología de la información plantea problemas que van al corazón de las protecciones fundamentales de los derechos humanos, como la privacidad y la libertad de expresión. Esos problemas aumentan las responsabilidades de las empresas de tecnología que crean estos productos. En nuestra opinión, también exige regulación gubernamental reflexiva y el desarrollo de normas sobre usos aceptables" ([fuente](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Queda por ver qué depara el futuro, pero es importante entender estos sistemas informáticos y el software y los algoritmos que ejecutan. Esperamos que este plan de estudios le ayude a comprender mejor para que pueda decidir por si mismo. - -[![La historia del deep learning](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "The history of deep learning") -> 🎥 Haga clic en la imagen de arriba para ver un video: Yann LeCun analiza la historia del deep learning en esta conferencia - ---- -## 🚀Desafío - -Sumérjase dentro de unos de estos momentos históricos y aprenda más sobre las personas detrás de ellos. Hay personajes fascinantes y nunca ocurrió ningún descubrimiento científico en un vacío cultural. ¿Qué descubres? - -## [Cuestionario posterior a la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4?loc=es) - -## Revisión y autoestudio - -Aquí hay elementos para ver y escuchar: - -[Este podcast donde Amy Boyd habla sobre la evolución de la IA](http://runasradio.com/Shows/Show/739) - -[![La historia de la IA por Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La historia de la IA por Amy Boyd") - -## Tarea - -[Crea un timeline](assignment.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.fr.md b/1-Introduction/2-history-of-ML/translations/README.fr.md deleted file mode 100644 index d9ecad4f..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -# Histoire du Machine Learning (apprentissage automatique) - -![Résumé de l'histoire du machine learning dans un sketchnote](../../../sketchnotes/ml-history.png) -> Sketchnote de [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Quizz préalable](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3?loc=fr) - -Dans cette leçon, nous allons parcourir les principales étapes de l'histoire du machine learning et de l'intelligence artificielle. - -L'histoire de l'intelligence artificielle, l'IA, en tant que domaine est étroitement liée à l'histoire du machine learning, car les algorithmes et les avancées informatiques qui sous-tendent le ML alimentent le développement de l'IA. Bien que ces domaines en tant que domaines de recherches distincts ont commencé à se cristalliser dans les années 1950, il est important de rappeler que les [découvertes algorithmiques, statistiques, mathématiques, informatiques et techniques](https://wikipedia.org/wiki/Timeline_of_machine_learning) ont précédé et chevauchait cette époque. En fait, le monde réfléchit à ces questions depuis [des centaines d'années](https://fr.wikipedia.org/wiki/Histoire_de_l%27intelligence_artificielle) : cet article traite des fondements intellectuels historiques de l'idée d'une « machine qui pense ». - -## Découvertes notables - -- 1763, 1812 [théorème de Bayes](https://wikipedia.org/wiki/Bayes%27_theorem) et ses prédécesseurs. Ce théorème et ses applications sous-tendent l'inférence, décrivant la probabilité qu'un événement se produise sur la base de connaissances antérieures. -- 1805 [Théorie des moindres carrés](https://wikipedia.org/wiki/Least_squares) par le mathématicien français Adrien-Marie Legendre. Cette théorie, que vous découvrirez dans notre unité Régression, aide à l'ajustement des données. -- 1913 [Chaînes de Markov](https://wikipedia.org/wiki/Markov_chain) du nom du mathématicien russe Andrey Markov sont utilisées pour décrire une séquence d'événements possibles basée sur un état antérieur. -- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) est un type de classificateur linéaire inventé par le psychologue américain Frank Rosenblatt qui sous-tend les progrès de l'apprentissage en profondeur. -- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) est un algorithme conçu à l'origine pour cartographier les itinéraires. Dans un contexte ML, il est utilisé pour détecter des modèles. -- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) est utilisé pour former des [réseaux de neurones feedforward (propagation avant)](https://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones_%C3%A0_propagation_avant). -- 1982 [Réseaux de neurones récurrents](https://wikipedia.org/wiki/Recurrent_neural_network) sont des réseaux de neurones artificiels dérivés de réseaux de neurones à réaction qui créent des graphes temporels. - -✅ Faites une petite recherche. Quelles autres dates sont marquantes dans l'histoire du ML et de l'IA ? - -## 1950 : Des machines qui pensent - -Alan Turing, une personne vraiment remarquable qui a été élue [par le public en 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) comme le plus grand scientifique du 20e siècle, est reconnu pour avoir aidé à jeter les bases du concept d'une "machine qui peut penser". Il a lutté avec ses opposants et son propre besoin de preuves empiriques de sa théorie en créant le [Test de Turing] (https://www.bbc.com/news/technology-18475646), que vous explorerez dans nos leçons de NLP (TALN en français). - -## 1956 : Projet de recherche d'été à Dartmouth - -« Le projet de recherche d'été de Dartmouth sur l'intelligence artificielle a été un événement fondateur pour l'intelligence artificielle en tant que domaine », et c'est ici que le terme « intelligence artificielle » a été inventé ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> Chaque aspect de l'apprentissage ou toute autre caractéristique de l'intelligence peut en principe être décrit si précisément qu'une machine peut être conçue pour les simuler. - -Le chercheur en tête, le professeur de mathématiques John McCarthy, espérait « procéder sur la base de la conjecture selon laquelle chaque aspect de l'apprentissage ou toute autre caractéristique de l'intelligence peut en principe être décrit avec une telle précision qu'une machine peut être conçue pour les simuler ». Les participants comprenaient une autre sommité dans le domaine, Marvin Minsky. - -L'atelier est crédité d'avoir initié et encouragé plusieurs discussions, notamment « l'essor des méthodes symboliques, des systèmes spécialisés sur des domaines limités (premiers systèmes experts) et des systèmes déductifs par rapport aux systèmes inductifs ». ([source](https://fr.wikipedia.org/wiki/Conf%C3%A9rence_de_Dartmouth)). - -## 1956 - 1974 : "Les années d'or" - -Des années 50 au milieu des années 70, l'optimisme était au rendez-vous en espérant que l'IA puisse résoudre de nombreux problèmes. En 1967, Marvin Minsky a déclaré avec assurance que « Dans une génération... le problème de la création d'"intelligence artificielle" sera substantiellement résolu. » (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -La recherche sur le Natural Language Processing (traitement du langage naturel en français) a prospéré, la recherche a été affinée et rendue plus puissante, et le concept de « micro-mondes » a été créé, où des tâches simples ont été effectuées en utilisant des instructions en langue naturelle. - -La recherche a été bien financée par les agences gouvernementales, des progrès ont été réalisés dans le calcul et les algorithmes, et des prototypes de machines intelligentes ont été construits. Certaines de ces machines incluent : - -* [Shakey le robot](https://fr.wikipedia.org/wiki/Shakey_le_robot), qui pouvait manœuvrer et décider comment effectuer des tâches « intelligemment ». - - ![Shakey, un robot intelligent](../images/shakey.jpg) - > Shaky en 1972 - -* Eliza, une des premières « chatbot », pouvait converser avec les gens et agir comme une « thérapeute » primitive. Vous en apprendrez plus sur Eliza dans les leçons de NLP. - - ![Eliza, un bot](../images/eliza.png) - > Une version d'Eliza, un chatbot - -* Le « monde des blocs » était un exemple de micro-monde où les blocs pouvaient être empilés et triés, et où des expériences d'apprentissages sur des machines, dans le but qu'elles prennent des décisions, pouvaient être testées. Les avancées réalisées avec des bibliothèques telles que [SHRDLU](https://fr.wikipedia.org/wiki/SHRDLU) ont contribué à faire avancer le natural language processing. - - [![Monde de blocs avec SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Monde de blocs avec SHRDLU" ) - - > 🎥 Cliquez sur l'image ci-dessus pour une vidéo : Blocks world with SHRDLU - -## 1974 - 1980 : « l'hiver de l'IA » - -Au milieu des années 1970, il était devenu évident que la complexité de la fabrication de « machines intelligentes » avait été sous-estimée et que sa promesse, compte tenu de la puissance de calcul disponible, avait été exagérée. Les financements se sont taris et la confiance dans le domaine s'est ralentie. Parmi les problèmes qui ont eu un impact sur la confiance, citons : - -- **Restrictions**. La puissance de calcul était trop limitée. -- **Explosion combinatoire**. Le nombre de paramètres à former augmentait de façon exponentielle à mesure que l'on en demandait davantage aux ordinateurs, sans évolution parallèle de la puissance et de la capacité de calcul. -- **Pénurie de données**. Il y avait un manque de données qui a entravé le processus de test, de développement et de raffinement des algorithmes. -- **Posions-nous les bonnes questions ?**. Les questions mêmes, qui étaient posées, ont commencé à être remises en question. Les chercheurs ont commencé à émettre des critiques sur leurs approches : - - Les tests de Turing ont été remis en question au moyen, entre autres, de la « théorie de la chambre chinoise » qui postulait que « la programmation d'un ordinateur numérique peut faire croire qu'il comprend le langage mais ne peut pas produire une compréhension réelle ». ([source](https://plato.stanford.edu/entries/chinese-room/)) - - L'éthique de l'introduction d'intelligences artificielles telles que la "thérapeute" ELIZA dans la société a été remise en cause. - -Dans le même temps, diverses écoles de pensée sur l'IA ont commencé à se former. Une dichotomie a été établie entre les pratiques IA ["scruffy" et "neat"](https://wikipedia.org/wiki/Neats_and_scruffies). Les laboratoires _Scruffy_ peaufinaient leurs programmes pendant des heures jusqu'à ce qu'ils obtiennent les résultats souhaités. Les laboratoires _Neat_ "se concentraient sur la logique et la résolution formelle de problèmes". ELIZA et SHRDLU étaient des systèmes _scruffy_ bien connus. Dans les années 1980, alors qu'émergeait la demande de rendre les systèmes ML reproductibles, l'approche _neat_ a progressivement pris le devant de la scène car ses résultats sont plus explicables. - -## 1980 : Systèmes experts - -Au fur et à mesure que le domaine s'est développé, ses avantages pour les entreprises sont devenus plus clairs, particulièrement via les « systèmes experts » dans les années 1980. "Les systèmes experts ont été parmi les premières formes vraiment réussies de logiciels d'intelligence artificielle (IA)." ([source](https://fr.wikipedia.org/wiki/Syst%C3%A8me_expert)). - -Ce type de système est en fait _hybride_, composé en partie d'un moteur de règles définissant les exigences métier et d'un moteur d'inférence qui exploite le système de règles pour déduire de nouveaux faits. - -Cette époque a également vu une attention croissante accordée aux réseaux de neurones. - -## 1987 - 1993 : IA « Chill » - -La prolifération du matériel spécialisé des systèmes experts a eu pour effet malheureux de devenir trop spécialisée. L'essor des ordinateurs personnels a également concurrencé ces grands systèmes spécialisés et centralisés. La démocratisation de l'informatique a commencé et a finalement ouvert la voie à l'explosion des mégadonnées. - -## 1993 - 2011 - -Cette époque a vu naître une nouvelle ère pour le ML et l'IA afin de résoudre certains des problèmes qui n'avaient pu l'être plus tôt par le manque de données et de puissance de calcul. La quantité de données a commencé à augmenter rapidement et à devenir plus largement disponibles, pour le meilleur et pour le pire, en particulier avec l'avènement du smartphone vers 2007. La puissance de calcul a augmenté de façon exponentielle et les algorithmes ont évolué parallèlement. Le domaine a commencé à gagner en maturité alors que l'ingéniosité a commencé à se cristalliser en une véritable discipline. - -## À présent - -Aujourd'hui, le machine learning et l'IA touchent presque tous les aspects de notre vie. Cette ère nécessite une compréhension approfondie des risques et des effets potentiels de ces algorithmes sur les vies humaines. Comme l'a déclaré Brad Smith de Microsoft, « les technologies de l'information soulèvent des problèmes qui vont au cœur des protections fondamentales des droits de l'homme comme la vie privée et la liberté d'expression. Ces problèmes accroissent la responsabilité des entreprises technologiques qui créent ces produits. À notre avis, ils appellent également à une réglementation gouvernementale réfléchie et au développement de normes autour des utilisations acceptables" ([source](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Reste à savoir ce que l'avenir nous réserve, mais il est important de comprendre ces systèmes informatiques ainsi que les logiciels et algorithmes qu'ils exécutent. Nous espérons que ce programme vous aidera à mieux les comprendre afin que vous puissiez décider par vous-même. - -[![L'histoire du Deep Learning](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "L'histoire du Deep Learning") -> 🎥 Cliquez sur l'image ci-dessus pour une vidéo : Yann LeCun discute de l'histoire du deep learning dans cette conférence - ---- -## 🚀Challenge - -Plongez dans l'un de ces moments historiques et apprenez-en plus sur les personnes derrière ceux-ci. Il y a des personnalités fascinantes, et aucune découverte scientifique n'a jamais été créée avec un vide culturel. Que découvrez-vous ? - -## [Quiz de validation des connaissances](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4?loc=fr) - -## Révision et auto-apprentissage - -Voici quelques articles à regarder et à écouter : - -[Ce podcast où Amy Boyd discute de l'évolution de l'IA](http://runasradio.com/Shows/Show/739) - -[![L'histoire de l'IA par Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "L'histoire de l'IA par Amy Boyd") - -## Devoir - -[Créer une frise chronologique](assignment.fr.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.id.md b/1-Introduction/2-history-of-ML/translations/README.id.md deleted file mode 100644 index 351dd17d..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.id.md +++ /dev/null @@ -1,116 +0,0 @@ -# Sejarah Machine Learning - -![Ringkasan dari Sejarah Machine Learning dalam sebuah catatan sketsa](../../../sketchnotes/ml-history.png) -> Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Quiz Pra-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/) - -Dalam pelajaran ini, kita akan membahas tonggak utama dalam sejarah Machine Learning dan Artificial Intelligence. - -Sejarah Artifical Intelligence, AI, sebagai bidang terkait dengan sejarah Machine Learning, karena algoritma dan kemajuan komputasi yang mendukung ML dimasukkan ke dalam pengembangan AI. Penting untuk diingat bahwa, meski bidang-bidang ini sebagai bidang-bidang penelitian yang berbeda mulai terbentuk pada 1950-an, [algoritmik, statistik, matematik, komputasi dan penemuan teknis](https://wikipedia.org/wiki/Timeline_of_machine_learning) penting sudah ada sebelumnya, dan saling tumpang tindih di era ini. Faktanya, orang-orang telah memikirkan pertanyaan-pertanyaan ini selama [ratusan tahun](https://wikipedia.org/wiki/History_of_artificial_intelligence): artikel ini membahas dasar-dasar intelektual historis dari gagasan 'mesin yang berpikir'. - -## Penemuan penting - -- 1763, 1812 [Bayes Theorem](https://wikipedia.org/wiki/Bayes%27_theorem) dan para pendahulu. Teorema ini dan penerapannya mendasari inferensi, mendeskripsikan kemungkinan suatu peristiwa terjadi berdasarkan pengetahuan sebelumnya. -- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) oleh matematikawan Perancis Adrien-Marie Legendre. Teori ini yang akan kamu pelajari di unit Regresi, ini membantu dalam *data fitting*. -- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain) dinamai dengan nama matematikawan Rusia, Andrey Markov, digunakan untuk mendeskripsikan sebuah urutan dari kejadian-kejadian yang mungkin terjadi berdasarkan kondisi sebelumnya. -- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) adalah sebuah tipe dari *linear classifier* yang ditemukan oleh psikolog Amerika, Frank Rosenblatt, yang mendasari kemajuan dalam *Deep Learning*. -- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) adalah sebuah algoritma yang pada awalnya didesain untuk memetakan rute. Dalam konteks ML, ini digunakan untuk mendeteksi berbagai pola. -- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) digunakan untuk melatih [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network). -- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) adalah *artificial neural networks* yang berasal dari *feedforward neural networks* yang membuat grafik sementara. - -✅ Lakukan sebuah riset kecil. Tanggal berapa lagi yang merupakan tanggal penting dalam sejarah ML dan AI? -## 1950: Mesin yang berpikir - -Alan Turing, merupakan orang luar biasa yang terpilih oleh [publik di tahun 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) sebagai ilmuwan terhebat di abad 20, diberikan penghargaan karena membantu membuat fondasi dari sebuah konsep 'mesin yang bisa berpikir', Dia berjuang menghadapi orang-orang yang menentangnya dan keperluannya sendiri untuk bukti empiris dari konsep ini dengan membuat [Turing Test](https://www.bbc.com/news/technology-18475646), yang mana akan kamu jelajahi di pelajaran NLP kami. - -## 1956: Proyek Riset Musim Panas Dartmouth - -"Proyek Riset Musim Panas Dartmouth pada *artificial intelligence* merupakan sebuah acara penemuan untuk *artificial intelligence* sebagai sebuah bidang," dan dari sinilah istilah '*artificial intelligence*' diciptakan ([sumber](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> Setiap aspek pembelajaran atau fitur kecerdasan lainnya pada prinsipnya dapat dideskripsikan dengan sangat tepat sehingga sebuah mesin dapat dibuat untuk mensimulasikannya. - -Ketua peneliti, profesor matematika John McCarthy, berharap "untuk meneruskan dasar dari dugaan bahwa setiap aspek pembelajaran atau fitur kecerdasan lainnya pada prinsipnya dapat dideskripsikan dengan sangat tepat sehingga mesin dapat dibuat untuk mensimulasikannya." Marvin Minsky, seorang tokoh terkenal di bidang ini juga termasuk sebagai peserta penelitian. - -Workshop ini dipuji karena telah memprakarsai dan mendorong beberapa diskusi termasuk "munculnya metode simbolik, sistem yang berfokus pada domain terbatas (sistem pakar awal), dan sistem deduktif versus sistem induktif." ([sumber](https://wikipedia.org/wiki/Dartmouth_workshop)). - -## 1956 - 1974: "Tahun-tahun Emas" - -Dari tahun 1950-an hingga pertengahan 70-an, optimisme memuncak dengan harapan bahwa AI dapat memecahkan banyak masalah. Pada tahun 1967, Marvin Minsky dengan yakin menyatakan bahwa "Dalam satu generasi ... masalah menciptakan '*artificial intelligence*' akan terpecahkan secara substansial." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -Penelitian *natural language processing* berkembang, pencarian disempurnakan dan dibuat lebih *powerful*, dan konsep '*micro-worlds*' diciptakan, di mana tugas-tugas sederhana diselesaikan menggunakan instruksi bahasa sederhana. - -Penelitian didanai dengan baik oleh lembaga pemerintah, banyak kemajuan dibuat dalam komputasi dan algoritma, dan prototipe mesin cerdas dibangun. Beberapa mesin tersebut antara lain: - -* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot), yang bisa bermanuver dan memutuskan bagaimana melakukan tugas-tugas secara 'cerdas'. - - ![Shakey, an intelligent robot](../images/shakey.jpg) - > Shakey pada 1972 - -* Eliza, sebuah 'chatterbot' awal, dapat mengobrol dengan orang-orang dan bertindak sebagai 'terapis' primitif. Kamu akan belajar lebih banyak tentang Eliza dalam pelajaran NLP. - - ![Eliza, a bot](../images/eliza.png) - > Sebuah versi dari Eliza, sebuah *chatbot* - -* "Blocks world" adalah contoh sebuah *micro-world* dimana balok dapat ditumpuk dan diurutkan, dan pengujian eksperimen mesin pengajaran untuk membuat keputusan dapat dilakukan. Kemajuan yang dibuat dengan *library-library* seperti [SHRDLU](https://wikipedia.org/wiki/SHRDLU) membantu mendorong kemajuan pemrosesan bahasa. - - [![blocks world dengan SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world dengan SHRDLU") - - > 🎥 Klik gambar diatas untuk menonton video: Blocks world with SHRDLU - -## 1974 - 1980: "Musim Dingin AI" - -Pada pertengahan 1970-an, semakin jelas bahwa kompleksitas pembuatan 'mesin cerdas' telah diremehkan dan janjinya, mengingat kekuatan komputasi yang tersedia, telah dilebih-lebihkan. Pendanaan telah habis dan kepercayaan dalam bidang ini menurun. Beberapa masalah yang memengaruhi kepercayaan diri termasuk: - -- **Keterbatasan**. Kekuatan komputasi terlalu terbatas. -- **Ledakan kombinatorial**. Jumlah parameter yang perlu dilatih bertambah secara eksponensial karena lebih banyak hal yang diminta dari komputer, tanpa evolusi paralel dari kekuatan dan kemampuan komputasi. -- **Kekurangan data**. Adanya kekurangan data yang menghalangi proses pengujian, pengembangan, dan penyempurnaan algoritma. -- **Apakah kita menanyakan pertanyaan yang tepat?**. Pertanyaan-pertanyaan yang diajukan pun mulai dipertanyakan kembali. Para peneliti mulai melontarkan kritik tentang pendekatan mereka - - Tes Turing mulai dipertanyakan, di antara ide-ide lain, dari 'teori ruang Cina' yang mengemukakan bahwa, "memprogram komputer digital mungkin membuatnya tampak memahami bahasa tetapi tidak dapat menghasilkan pemahaman yang sebenarnya." ([sumber](https://plato.stanford.edu/entries/chinese-room/)) - - Tantangan etika ketika memperkenalkan kecerdasan buatan seperti si "terapis" ELIZA ke dalam masyarakat. - -Pada saat yang sama, berbagai aliran pemikiran AI mulai terbentuk. Sebuah dikotomi didirikan antara praktik ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). Lab _Scruffy_ mengubah program selama berjam-jam sampai mendapat hasil yang diinginkan. Lab _Neat_ "berfokus pada logika dan penyelesaian masalah formal". ELIZA dan SHRDLU adalah sistem _scruffy_ yang terkenal. Pada tahun 1980-an, karena perkembangan permintaan untuk membuat sistem ML yang dapat direproduksi, pendekatan _neat_ secara bertahap menjadi yang terdepan karena hasilnya lebih dapat dijelaskan. - -## 1980s Sistem Pakar - -Seiring berkembangnya bidang ini, manfaatnya bagi bisnis menjadi lebih jelas, dan begitu pula dengan menjamurnya 'sistem pakar' pada tahun 1980-an. "Sistem pakar adalah salah satu bentuk perangkat lunak artificial intelligence (AI) pertama yang benar-benar sukses." ([sumber](https://wikipedia.org/wiki/Expert_system)). - -Tipe sistem ini sebenarnya adalah _hybrid_, sebagian terdiri dari mesin aturan yang mendefinisikan kebutuhan bisnis, dan mesin inferensi yang memanfaatkan sistem aturan untuk menyimpulkan fakta baru. - -Pada era ini juga terlihat adanya peningkatan perhatian pada jaringan saraf. - -## 1987 - 1993: AI 'Chill' - -Perkembangan perangkat keras sistem pakar terspesialisasi memiliki efek yang tidak menguntungkan karena menjadi terlalu terspesialiasasi. Munculnya komputer pribadi juga bersaing dengan sistem yang besar, terspesialisasi, dan terpusat ini. Demokratisasi komputasi telah dimulai, dan pada akhirnya membuka jalan untuk ledakan modern dari *big data*. - -## 1993 - 2011 - -Pada zaman ini memperlihatkan era baru bagi ML dan AI untuk dapat menyelesaikan beberapa masalah yang sebelumnya disebabkan oleh kurangnya data dan daya komputasi. Jumlah data mulai meningkat dengan cepat dan tersedia secara luas, terlepas dari baik dan buruknya, terutama dengan munculnya *smartphone* sekitar tahun 2007. Daya komputasi berkembang secara eksponensial, dan algoritma juga berkembang saat itu. Bidang ini mulai mengalami kedewasaan karena hari-hari yang tidak beraturan di masa lalu mulai terbentuk menjadi disiplin yang sebenarnya. - -## Sekarang - -Saat ini, *machine learning* dan AI hampir ada di setiap bagian dari kehidupan kita. Era ini menuntut pemahaman yang cermat tentang risiko dan efek potensi dari berbagai algoritma yang ada pada kehidupan manusia. Seperti yang telah dinyatakan oleh Brad Smith dari Microsoft, "Teknologi informasi mengangkat isu-isu yang menjadi inti dari perlindungan hak asasi manusia yang mendasar seperti privasi dan kebebasan berekspresi. Masalah-masalah ini meningkatkan tanggung jawab bagi perusahaan teknologi yang menciptakan produk-produk ini. Dalam pandangan kami, mereka juga menyerukan peraturan pemerintah yang bijaksana dan untuk pengembangan norma-norma seputar penggunaan yang wajar" ([sumber](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Kita masih belum tahu apa yang akan terjadi di masa depan, tetapi penting untuk memahami sistem komputer dan perangkat lunak serta algoritma yang dijalankannya. Kami berharap kurikulum ini akan membantu kamu untuk mendapatkan pemahaman yang lebih baik sehingga kamu dapat memutuskan sendiri. - -[![Sejarah Deep Learning](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "Sejarah Deep Learning") -> 🎥 Klik gambar diatas untuk menonton video: Yann LeCun mendiskusikan sejarah dari Deep Learning dalam pelajaran ini - ---- -## 🚀Tantangan - -Gali salah satu momen bersejarah ini dan pelajari lebih lanjut tentang orang-orang di baliknya. Ada karakter yang menarik, dan tidak ada penemuan ilmiah yang pernah dibuat dalam kekosongan budaya. Apa yang kamu temukan? - -## [Quiz Pasca-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/) - -## Ulasan & Belajar Mandiri - -Berikut adalah item untuk ditonton dan didengarkan: - -[Podcast dimana Amy Boyd mendiskusikan evolusi dari AI](http://runasradio.com/Shows/Show/739) - -[![Sejarah AI oleh Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Sejarah AI oleh Amy Boyd") - -## Tugas - -[Membuat sebuah *timeline*](assignment.id.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.it.md b/1-Introduction/2-history-of-ML/translations/README.it.md deleted file mode 100644 index f95b542c..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.it.md +++ /dev/null @@ -1,118 +0,0 @@ -# Storia di machine learning - -![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png) -> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Quiz pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/?loc=it) - -In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale. - -La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence); questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante". - -## Scoperte rilevanti - -- 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente. -- 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati. -- 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente. -- 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning. -- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli. -- 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward). -- Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali. - -✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale? -## 1950: Macchine che pensano - -Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale). - -## 1956: Progetto di Ricerca Estivo Dartmouth - -"Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo. - -Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky. - -Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). - -## 1956 - 1974: "Gli anni d'oro" - -Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice. - -La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono: - -* [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente". - - ![Shakey, un robot intelligente](../images/shakey.jpg) - > Shakey nel 1972 - -* Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP. - - ![Eliza, un bot](../images/eliza.png) - > Una versione di Eliza, un chatbot - -* Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio. - - [![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU") - - > 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU - -## 1974 - 1980: "L'inverno dell'AI" - -Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono: - -- **Limitazioni**. La potenza di calcolo era troppo limitata. -- **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo. -- **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi. -- **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci: - - I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) - - L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione. - -Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili. - -## Sistemi esperti degli anni '80 - -Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)). - -Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti. - -Questa era ha visto anche una crescente attenzione rivolta alle reti neurali. - -## 1987 - 1993: AI 'Chill' - -La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data. - -## 1993 - 2011 - -Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina. - -## Adesso - -Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia. - -[![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning") -> 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione - ---- - -## 🚀 Sfida - -Approfondire uno di questi momenti storici e scoprire - di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto? - -## [Quiz post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/?loc=it) - -## Revisione e Auto Apprendimento - -Ecco gli elementi da guardare e ascoltare: - -[Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739) - -[![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd") - -## Compito - -[Creare una sequenza temporale](assignment.it.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.ja.md b/1-Introduction/2-history-of-ML/translations/README.ja.md deleted file mode 100644 index 780b1f85..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.ja.md +++ /dev/null @@ -1,114 +0,0 @@ -# 機械学習の歴史 - -![機械学習の歴史をまとめたスケッチ](../../../sketchnotes/ml-history.png) -> [Tomomi Imura](https://www.twitter.com/girlie_mac)によるスケッチ - -## [Pre-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3?loc=ja) - -この授業では、機械学習と人工知能の歴史における主要な出来事を紹介します。 - -人工知能(AI)の歴史は、機械学習の歴史と密接に関係しています。なぜならば、機械学習を支えるアルゴリズムと計算の進歩が、AIの発展につながったからです。これらの分野は、1950年代に明確になり始めましたが、重要な[アルゴリズム、統計、数学、計算、技術的な発見](https://wikipedia.org/wiki/Timeline_of_machine_learning)は、この時代よりも前に、そして同時に行われていたことを覚えておくとよいでしょう。実際、人々は[何百年も](https://wikipedia.org/wiki/History_of_artificial_intelligence)この問題について考えてきました。(この記事では、「考える機械」というアイデアの歴史的な知的基盤について説明されています。) - - -## 注目すべき発見 -- 1763年、1812年 [ベイズの定理](https://wikipedia.org/wiki/Bayes%27_theorem)とその前身の発見。ある事象が起こる確率を、事前の知識に基づいて記述する推論の基礎となる定理とその応用。 -- 1805年 フランスの数学者アドリアン=マリー・レジェンドルによる[最小二乗理論](https://wikipedia.org/wiki/Least_squares)。この理論は、データのフィッティングに役立つ。 -- 1913年 ロシアの数学者アンドレイ・マルコフにちなんで名付けられた[マルコフ連鎖](https://wikipedia.org/wiki/Markov_chain)は、以前の状態に基づいて起こりうる一連の事象を記述するために使用される。 -- 1957年 [パーセプトロン](https://wikipedia.org/wiki/Perceptron)は、アメリカの心理学者フランク・ローゼンブラットが発明した線形分類器の一種であり、深層学習の基盤となっている。 -- 1967 [最小近傍法](https://wikipedia.org/wiki/Nearest_neighbor)は、元々は経路探索のために考案されたアルゴリズム。MLではパターンの検出に用いられる。 -- 1970年 [バックプロパゲーション](https://wikipedia.org/wiki/Backpropagation)を用いて[フィードフォワード・ニューラルネットワーク(順伝播型ニューラルネットワーク)](https://wikipedia.org/wiki/Feedforward_neural_network)を学習する。 -- 1982年 [回帰型ニューラルネットワーク](https://wikipedia.org/wiki/Recurrent_neural_network) は、フィードフォワード・ニューラルネットワークから派生した人工的なニューラルネットワークで、時間的なグラフを作成します。 - -✅ 少し調べてみてください。MLとAIの歴史の中で重要な日付は他にありますか? - -## 1950: 思考する機械 -アラン・チューリングは、[2019年に世間から](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century)20世紀最大の科学者として投票された、真に優れた人物で、「考えることができる機械」という概念の基礎を築くのに貢献したとされています。彼は、否定的な意見や、この概念の実証的な証拠を必要とする自分自身と、この先自然言語処理の授業で触れることとなる[チューリング・テスト](https://www.bbc.com/news/technology-18475646)を作成することで戦いました。 - -## 1956: ダートマス・サマー・リサーチ・プロジェクト -ダートマス・サマー・リサーチ・プロジェクトは、分野としての人工知能にとって重要な出来事であり、ここで「人工知能」という言葉が作られました([出典](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)) - -> 学習やその他の知能のあらゆる側面は、原理的に非常に正確に記述することができるので、それをシミュレートする機械を作ることができる。 - -主任研究者である数学のジョン・マッカーシー教授は、「学習のあらゆる側面や知能のその他の特徴は、原理的に非常に正確に記述することができるので、それをシミュレートする機械を作ることができるという推測に基づいて進めていきたい」と考えていました。参加者の中には、この分野の著名人であるマービン・ミンスキーもいました。 - -このワークショップでは、「記号的手法の台頭、限定された領域に焦点を当てたシステム(初期のエキスパートシステム)、演繹的システムと帰納的システムの比較」などの議論が開始され、促進されたと評価されています。([出典](https://wikipedia.org/wiki/Dartmouth_workshop)) - -## 1956 - 1974: 黄金期 - -1950年代から70年代半ばまでは、AIがさまざまな問題を解決してくれるのではないかという楽観的な見方が広がっていました。1967年、マービン・ミンスキーは「一世代のうちに...『人工知能』を作るという問題は実質的に解決されるだろう」と自信を持って述べている。(Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -自然言語処理の研究が盛んになり、検索が洗練されてより強力になり、平易な言語による指示で簡単な作業をこなす「マイクロワールド」という概念が生まれた。 - -研究は政府機関から潤沢な資金が提供され、計算とアルゴリズムが進歩し、知的機械のプロトタイプが作られた。その中には次のようなものがある。 - -* 移動したり、タスクを実行する方法を「知的に」決定することができるロボット[「Shakey」](https://wikipedia.org/wiki/Shakey_the_robot) - - ![知的なロボットであるShakey](../images/shakey.jpg) - > 1972のShakey - -* 初期の「おしゃべりロボット」であるElizaは、人と会話することができ、原始的な「セラピスト」の役割を果たした。エリザについては、NLPのレッスンで詳しく説明します。 - - ![BotであるEliza](../images/eliza.png) - > チャットボットEliza - -* 「Blocks world」は、ブロックを積み上げたり並べ替えたりするマイクロワールドの一例で、機械に判断力を身につけさせる実験を行った。[SHRDLU](https://wikipedia.org/wiki/SHRDLU)をはじめとするライブラリの進歩は、言語処理の発展に大きく貢献した。 - - [![SHRDLUを用いたblocks world](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLUを用いたblocks world") - - > 🎥 上の画像をクリックすると動画が見られます:"SHRDLUを用いたblocks world" - -## 1974 - 1980: AIの冬 - -1970年代半ばになると、「知的な機械」を作ることの複雑さが過小評価されていたことや、利用可能な計算能力を考慮すると、その将来性が過大評価されていたことが明らかになりました。資金が枯渇し、この分野への信頼が低下した。信頼性に影響を与えた問題には以下のようなものがある。: - -- **限界**. 計算能力の限界 -- **組み合わせの爆発**. 学習に必要なパラメータの量は、コンピュータに要求されることが多くなるにつれて指数関数的に増加しましたが、コンピュータの性能や能力は並行して進化しませんでした。 -- **データの少なさ**. データが不足していたため、アルゴリズムのテスト、開発、改良のプロセスが妨げられた。 -- **正しい質問をしているのかどうか**. 問いかけていた質問そのものが疑問視され始めた。研究者たちは、自分たちのアプローチに批判的な意見を持つようになった。 - - チューリングテストは、「コンピュータをプログラミングすることで、言語を理解しているように見せかけることはできるが、本当の意味での理解はできない」とする「チャイニーズルーム理論」などによって、疑問視されるようになった。([出典](https://plato.stanford.edu/entries/chinese-room/)) - - セラピストとしてELIZAのような人工知能を社会に導入することの倫理性が問われた。 -それと同時に、さまざまなAIの流派が形成され始めました。一つは、["Scruffy"と "Neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies)という二分法である。Scruffyな研究室では、目的の結果が得られるまで何時間もプログラムをいじっていた一方、neatな研究室では、論理と形式的な問題解決を重視する。ELIZAやSHRDLUなどが有名なScruffyであるシステムである。1980年代に入って、MLシステムの再現性が求められるようになると、結果が説明可能であることから、次第にneatなアプローチが主流になっていきました。 - -## 1980s エキスパートシステム - -分野が発展するにつれ、ビジネスへの貢献が明確になり、1980年代には「エキスパートシステム」が普及しました。「エキスパートシステムは、人工知能(AI)ソフトウェアの中で最初に真に成功した形態の一つである。」と言われています。([出典](https://wikipedia.org/wiki/Expert_system)) - -このタイプのシステムは、ビジネス要件を定義するルールエンジンと、ルールシステムを活用して新たな事実を推論する推論エンジンで構成されるハイブリッド型です。 - -また、この時代はニューラルネットワークにも注目が集まった。 - -## 1987 - 1993: AIの冷え込み - -専門分野に特化したエキスパートシステムのハードウェアが普及したことで、専門性が高くなりすぎてしまうという残念な結果になりました。また、パーソナルコンピュータの台頭は、これらの大規模で専門的な中央集権的システムと競合した。コンピューティングの民主化が始まり、最終的には現代の爆発的なビッグデータへの道が開かれました。 - -## 1993 - 2011 - -この期間では、それ以前にデータと計算能力の不足によって引き起こされていた問題を、MLやAIが解決できるようになっていた。特に2007年頃にスマートフォンが登場したことで、良くも悪くもデータ量が急速に増加し、広く利用されるようになりました。計算機の性能も飛躍的に向上し、アルゴリズムもそれに合わせて進化していきました。過去の自由奔放な時代から、真の学問としての結晶化が始まり、この分野は成熟していきました。 - -## 現在 - -現在、機械学習やAIは、私たちの生活のほぼすべての部分に関わっています。このような時代には、これらのアルゴリズムが人間の生活に及ぼすリスクや潜在的な影響を注意深く理解することが求められます。マイクロソフトのブラッド・スミスは、「情報技術は、プライバシーや表現の自由といった基本的な人権保護の核心に迫る問題を提起します。情報技術は、プライバシーや表現の自由といった基本的な人権保護の根幹に関わる問題を提起します。我々の見解では、これらの問題は、政府による思慮深い規制と、許容される使用方法に関する規範の策定を必要としています。」と述べています。([出典](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)) - -未来がどうなるかはまだわかりませんが、これらのコンピュータシステムと、それを動かすソフトウェアやアルゴリズムを理解することは重要です。このカリキュラムが自身で判断するにあたり、より良い理解を助けるものになると幸いです。 - -[![ディープラーニングの歴史](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "ディープラーニングの歴史") -> 🎥 上の画像をクリックすると動画が見られます:このレクチャーではYann LeCunがディープラーニングの歴史について議論しています。 - ---- -## 🚀Challenge - -これらの歴史的瞬間の1つを掘り下げて、その背後にいる人々について学びましょう。魅力的な人々がいますし、文化的に空白の状態で科学的発見がなされたことはありません。どういったことが見つかるでしょうか? - -## [Post-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4?loc=ja) - -## 振り返りと自習 - -視聴するべき教材は以下になります: - -[Amy BoydがAIの進化について述べているポッドキャスト](http://runasradio.com/Shows/Show/739) - -[![Amy BoydによるAIの歴史](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy BoydによるAIの歴史") - -## 課題 - -[年表を作成する](./assignment.ja.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.ko.md b/1-Introduction/2-history-of-ML/translations/README.ko.md deleted file mode 100644 index cf0a1dae..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.ko.md +++ /dev/null @@ -1,118 +0,0 @@ -# 머신러닝의 역사 - -![Summary of History of machine learning in a sketchnote](../../../sketchnotes/ml-history.png) -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/) - -이 강의에서, 머신러닝과 인공 지능의 역사에서 주요 마일스톤을 살펴보려 합니다. - -인공 지능, AI의 역사는 머신러닝의 역사와 서로 엮여 있으며, ML을 받쳐주는 알고리즘과 계산 기술이 AI의 개발에 기여했습니다. 독특한 탐구 영역으로 이런 분야는 1950년에 구체적으로 시작했지만, 중요한 [algorithmical, statistical, mathematical, computational and technical discoveries](https://wikipedia.org/wiki/Timeline_of_machine_learning)로 이 시대를 오버랩했다고 생각하는 게 유용합니다. 실제로, 사람들은 [hundreds of years](https://wikipedia.org/wiki/History_of_artificial_intelligence)동안 이 질문을 생각해왔습니다: 이 아티클은 'thinking machine'라는 개념의 역사적 지적 토대에 대하여 이야기 합니다. - -## 주목할 발견 - -- 1763, 1812 [Bayes Theorem](https://wikipedia.org/wiki/Bayes%27_theorem)과 전임자. 이 정리와 적용은 사전지식 기반으로 이벤트가 발생할 확률을 설명할 추론의 기초가 됩니다. -- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) by 프랑스 수학자 Adrien-Marie Legendre. Regression 단위에서 배울 이 이론은, 데이터 피팅에 도움이 됩니다. -- 1913 러시아 수학자 Andrey Markov의 이름에서 유래된 [Markov Chains](https://wikipedia.org/wiki/Markov_chain)는 이전 상태를 기반으로 가능한 이벤트의 시퀀스를 설명하는 데 사용됩니다. -- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron)은 미국 심리학자 Frank Rosenblatt이 개발한 linear classifier의 한 타입으로 딥러닝 발전을 뒷받칩니다. -- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor)는 원래 경로를 맵핑하기 위한 알고리즘입니다. ML context에서 패턴을 감지할 때 사용합니다. -- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation)은 [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network)를 학습할 때 사용합니다. -- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network)는 시간 그래프를 생성하는 feedforward neural networks에서 파생한 인공 신경망입니다. - -✅ 조금 조사해보세요. ML과 AI의 역사에서 중요한 다른 날짜는 언제인가요? - -## 1950: 생각하는 기계 - -20세기의 최고 과학자로 [by the public in 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century)에 선택된, Alan Turing은, 'machine that can think.'라는 개념의 기반을 구축하는 데에 기여한 것으로 평가되고 있습니다. -NLP 강의에서 살필 [Turing Test](https://www.bbc.com/news/technology-18475646)를 만들어서 부분적으로 이 개념에 대한 경험적인 반대하는 사람들과 대립했습니다. - -## 1956: Dartmouth 여름 연구 프로젝트 - -"The Dartmouth Summer Research Project on artificial intelligence was a seminal event for artificial intelligence as a field," ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))에서 "인공 지능"이라는 용어가 만들어졌습니다. - -> 학습의 모든 측면이나 지능의 다른 기능은 원칙적으로 정확하게 서술할 수 있어서 이를 따라 할 기계를 만들 수 있습니다. - -수석 연구원인, 수학 교수 John McCarthy는, "to proceed on the basis of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it."이라고 희망했습니다. 참가한 사람들 중에서는 Marvin Minsky도 있었습니다. - -이 워크숍은 "the rise of symbolic methods, systems focussed on limited domains (early expert systems), and deductive systems versus inductive systems." ([source](https://wikipedia.org/wiki/Dartmouth_workshop))을 포함해서 여러 토론을 시작하고 장려한 것으로 평가됩니다. - -## 1956 - 1974: "The golden years" - -1950년대부터 70년대 중순까지 AI로 많은 문제를 해결할 수 있다고 믿은 낙관주의가 커졌습니다. 1967년 Marvin Minsky는 "Within a generation ... the problem of creating 'artificial intelligence' will substantially be solved." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)이라고 자신있게 말했습니다. - -natural language processing 연구가 발전하고, 검색이 개선되어 더 강력해졌으며, 단순한 언어 지침으로 간단한 작업을 완료하는 'micro-worlds'라는 개념이 생겼습니다. - -정부 지원을 받으며 연구했으며, 계산과 알고리즘이 발전하면서, 지능적 기계의 프로토 타입이 만들어졌습니다. 이런 기계 중에 일부는 아래와 같습니다: - -* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot), '지능적'으로 작업하는 방법을 조종하고 결정할 수 있습니다. - - ![Shakey, an intelligent robot](../images/shakey.jpg) - > Shakey in 1972 - -* 초기 'chatterbot'인, Eliza는, 사람들과 이야기하고 원시적 '치료사' 역할을 할 수 있었습니다. NLP 강의에서 Eliza에 대하여 자세히 알아봅시다. - - ![Eliza, a bot](../images/eliza.png) - > A version of Eliza, a chatbot - -* "Blocks world"는 블록을 쌓고 분류할 수 있는 마이크로-월드의 예시이며, 결정하는 기계를 가르칠 실험을 테스트할 수 있었습니다. [SHRDLU](https://wikipedia.org/wiki/SHRDLU)와 같은 라이브러리로 만들어진 발명은 language processing를 발전시키는 데 도움이 되었습니다. - - [![blocks world with SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU") - - > 🎥 영상을 보려면 이미지 클릭: Blocks world with SHRDLU - -## 1974 - 1980: "AI Winter" - -1970년 중순에, '인공 기계'를 만드는 복잡도가 과소 평가되면서, 주어진 컴퓨터 파워를 고려해보니, 그 약속은 과장된 것이 분명해졌습니다. 자금이 고갈되고 현장에 대한 자신감도 느려졌습니다. 신뢰에 영향을 준 이슈는 아래에 있습니다: - -- **제한**. 컴퓨터 성능이 너무 제한되었습니다. -- **결합 파열**. 훈련에 필요한 파라미터의 양이 컴퓨터 성능, 기능과 별개로 컴퓨터의 요청에 따라 늘어났습니다. -- **데이터 부족**. 알고리즘을 테스트, 개발, 그리고 개선할 수 없게 데이터가 부족했습니다. -- **올바른 질문인가요?**. 질문받은 그 질문에 바로 물었습니다. 연구원들은 그 접근 방식에 비판했습니다: - - 튜링 테스트는 "programming a digital computer may make it appear to understand language but could not produce real understanding." ([source](https://plato.stanford.edu/entries/chinese-room/))하다고 가정한, 'chinese room theory'의 다른 아이디어에 의해 의문이 생겼습니다. - - "치료사" ELIZA와 같은 인공 지능을 사회에 도입하며 윤리에 도전했습니다. - -동 시간대에, 다양한 AI 학교가 형성되기 시작했습니다. ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) 사이에 이분법이 확립되었습니다. _Scruffy_ 연구실은 원하는 결과를 얻을 때까지 몇 시간 동안 프로그램을 트윅했습니다. _Neat_ 연구실은 논리와 공식적 문제를 해결하는 데에 초점을 맞추었습니다. ELIZA와 SHRDLU는 잘 알려진 _scruffy_ 시스템입니다. 1980년대에, ML 시스템을 재현할 수 있어야 된다는 요구사항이 생겼고, _neat_ 방식이 더 결과를 설명할 수 있어서 점차 선두를 차지했습니다. - -## 1980s 전문가 시스템 - -이 분야가 성장하며, 비즈니스에 대한 이점이 명확해졌고, 1980년대에 '전문가 시스템'이 확산되었습니다. "Expert systems were among the first truly successful forms of artificial intelligence (AI) software." ([source](https://wikipedia.org/wiki/Expert_system)). - -이 시스템의 타입은, 실제로 비즈니스 요구사항을 정의하는 룰 엔진과 새로운 사실 추론하는 룰 시스템을 활용한 추론 엔진으로 부분적 구성된 _hybrid_ 입니다. - -이런 시대에도 neural networks에 대한 관심이 늘어났습니다. - -## 1987 - 1993: AI 'Chill' - -전문화된 전문가 시스템 하드웨어의 확산은 너무나도 고차원되는 불운한 결과를 가져왔습니다. 개인용 컴퓨터의 부상은 크고, 전문화된, 중앙화 시스템과 경쟁했습니다. 컴퓨팅의 민주화가 시작되었고, 결국 현대의 빅 데이터 폭발을 위한 길을 열었습니다. - -## 1993 - 2011 - -이 시대에는 ML과 AI가 과거 데이터와 컴퓨터 파워 부족으로 인해 발생했던 문제 중 일부 해결할 수 있는 새로운 시대가 열렸습니다. 데이터의 양은 급격히 늘어나기 시작했고, 2007년에 스마트폰이 나오면서 좋든 나쁘든 더 넓게 사용할 수 있게 되었습니다. 컴퓨터 파워는 크게 확장되었고, 알고리즘도 함께 발전했습니다. 과거 자유롭던 시대에서 진정한 규율로 이 분야는 성숙해지기 시작했습니다. - -## 현재 - -오늘 날, 머신러닝과 AI는 인생의 대부분에 영향을 미칩니다. 이 시대에는 이러한 알고리즘이 인간의 인생에 미치는 위험과 잠재적인 영향에 대한 주의깊은 이해도가 요구됩니다. Microsoft의 Brad Smith가 언급합니다 "Information technology raises issues that go to the heart of fundamental human-rights protections like privacy and freedom of expression. These issues heighten responsibility for tech companies that create these products. In our view, they also call for thoughtful government regulation and for the development of norms around acceptable uses" ([source](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -미래가 어떻게 변할지 알 수 없지만, 컴퓨터 시스템과 이를 실행하는 소프트웨어와 알고리즘을 이해하는 것은 중요합니다. 이 커리큘럼으로 더 잘 이해하고 스스로 결정할 수 있게 되기를 바랍니다. - -[![The history of deep learning](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "The history of deep learning") -> 🎥 영상 보려면 위 이미지 클릭: Yann LeCun이 강의에서 딥러닝의 역사를 이야기 합니다. - ---- -## 🚀 도전 - -역사적인 순간에 사람들 뒤에서 한 가지를 집중적으로 파고 있는 자를 자세히 알아보세요. 매력있는 캐릭터가 있으며, 문화가 사라진 곳에서는 과학적인 발견을 하지 못합니다. 당신은 어떤 발견을 해보았나요? - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/) - -## 검토 & 자기주도 학습 - -보고 들을 수 있는 항목은 아래와 같습니다: - -[This podcast where Amy Boyd discusses the evolution of AI](http://runasradio.com/Shows/Show/739) - -[![The history of AI by Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "The history of AI by Amy Boyd") - -## 과제 - -[Create a timeline](../assignment.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.pt-br.md b/1-Introduction/2-history-of-ML/translations/README.pt-br.md deleted file mode 100644 index 815c8722..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.pt-br.md +++ /dev/null @@ -1,118 +0,0 @@ -# História do machine learning - -![Resumo da história do machine learning no sketchnote](../../../sketchnotes/ml-history.png) -> Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Teste pré-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3?loc=ptbr) - -Nesta lição, veremos os principais marcos da história do machine learning e da artificial intelligence. - -A história da inteligência artificial, IA, como um campo está entrelaçada com a história do machine learning, pois os algoritmos e os avanços computacionais por trás do machine learning contribuíram para o desenvolvimento da inteligência artificial. É útil lembrar que, embora esses campos como áreas distintas de investigação tenham começado a se cristalizar na década de 1950, importantes [descobertas algorítmicas, estatísticas, matemáticas, computacionais e técnicas](https://wikipedia.org/wiki/Timeline_of_machine_learning) -precederam e se sobrepuseram com esta época. Na verdade, as pessoas têm refletido sobre essas questões por [centenas de anos](https://wikipedia.org/wiki/History_of_artificial_intelligence): este artigo discute a base intelectual histórica da ideia de uma 'máquina pensante'. - -## Descobertas notáveis - -- 1763, 1812 [Teorema de Bayes](https://wikipedia.org/wiki/Bayes%27_theorem) e seus predecessores. Este teorema e suas aplicações fundamentam a inferência, descrevendo a probabilidade de um evento ocorrer com base em conhecimento prévio. -- 1805 [Teoria dos Mínimos Quadrados](https://wikipedia.org/wiki/Least_squares) pelo matemático francês Adrien-Marie Legendre. Esta teoria, que você aprenderá em nossa unidade de regressão, ajuda no ajuste de dados. -- 1913 [Cadeias de Markov](https://wikipedia.org/wiki/Markov_chain) com o nome do matemático russo Andrey Markov é usado para descrever uma sequência de eventos possíveis com base em um estado anterior. -- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) é um tipo de classificador linear inventado pelo psicólogo americano Frank Rosenblatt que fundamenta os avanços no aprendizado profundo. -- 1967 [Vizinho mais próximo](https://wikipedia.org/wiki/Nearest_neighbor) é um algoritmo originalmente projetado para mapear rotas. Em um contexto de ML, ele é usado para detectar padrões. -- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) é usado para treinar [redes neurais feedforward](https://wikipedia.org/wiki/Feedforward_neural_network). -- 1982 [Redes Neurais Recorrentes](https://wikipedia.org/wiki/Recurrent_neural_network) são redes neurais artificiais derivadas de redes neurais feedforward que criam gráficos temporais. - -✅ Faça uma pequena pesquisa. Que outras datas se destacam como fundamentais na história do ML e da AI? - -## 1950: Máquinas que pensam - -Alan Turing, uma pessoa verdadeiramente notável que foi eleita [pelo público em 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) como o maior cientista do século 20, é creditado por ajudar a lançar as bases para o conceito de uma 'máquina que pode pensar'. Ele lutou contra os pessimistas e sua própria necessidade de evidências empíricas desse conceito, em parte criando o [Teste de Turing](https://www.bbc.com/news/technology-18475646), que você explorará em nossas lições de NPL. - -## 1956: Projeto de Pesquisa de Verão de Dartmouth - -"O Projeto de Pesquisa de Verão de Dartmouth sobre inteligência artificial foi um evento seminal para a inteligência artificial como um campo", e foi aqui que o termo 'inteligência artificial (AI)' foi cunhado ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> Cada aspecto da aprendizagem ou qualquer outra característica da inteligência pode, em princípio, ser descrito com tanta precisão que uma máquina pode ser feita para simulá-lo. - -O pesquisador principal, professor de matemática John McCarthy, esperava "proceder com base na conjectura de que cada aspecto do aprendizado ou qualquer outra característica da inteligência pode, em princípio, ser descrito de forma tão precisa que uma máquina pode ser feita para simulá-lo". Os participantes incluíram outro luminar da área, Marvin Minsky. - -O workshop é creditado por ter iniciado e encorajado várias discussões, incluindo "o surgimento de métodos simbólicos, sistemas focados em domínios limitados (primeiros sistemas especialistas) e sistemas dedutivos versus sistemas indutivos." ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). - -## 1956 - 1974: "Os anos dourados" - -Dos anos 1950 até meados dos anos 1970, o otimismo era alto na esperança de que a IA pudesse resolver muitos problemas. Em 1967, Marvin Minsky afirmou com segurança que "dentro de uma geração ... o problema de criar 'inteligência artificial' será substancialmente resolvido." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -A pesquisa em processamento de linguagem natural floresceu, a pesquisa foi refinada e tornada mais poderosa, e o conceito de "micro-mundos" foi criado, no qual tarefas simples são concluídas usando instruções de linguagem simples. - -A pesquisa foi bem financiada por agências governamentais, avanços foram feitos em computação e algoritmos e protótipos de máquinas inteligentes foram construídos. Algumas dessas máquinas incluem: - -* [Shakey o robô](https://wikipedia.org/wiki/Shakey_the_robot), quem poderia manobrar e decidir como realizar as tarefas de forma 'inteligente'. - - ![Shakey, o robô inteligente](../images/shakey.jpg) - > Shakey em 1972 - -* Eliza, um dos primeiros 'chatterbot', podia conversar com as pessoas e agir como uma 'terapeuta' primitiva. Você aprenderá mais sobre Eliza nas lições de NPL. - - ![Eliza, a bot](../images/eliza.png) - > Uma versão de Eliza, um chatbot - -* O "mundo dos blocos" era um exemplo de micro-mundo onde os blocos podiam ser empilhados e classificados, e experimentos em máquinas de ensino para tomar decisões podiam ser testados. Avanços construídos com bibliotecas como [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ajudaram a impulsionar o processamento de linguagem. - - [![mundo dos blocos com SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "mundo dos blocos com SHRDLU") - - > 🎥 Clique na imagem acima para ver um vídeo: Mundo dos blocos com SHRDLU - -## 1974 - 1980: "O inverno da AI" - -Em meados da década de 1970, ficou claro que a complexidade de criar 'máquinas inteligentes' havia sido subestimada e que sua promessa, dado o poder de computação disponível, havia sido exagerada. O financiamento secou e a confiança no setor desacelerou. Alguns problemas que afetaram a confiança incluem: - -- **Limitações**. O poder de computação era muito limitado. -- **Explosão combinatória**. A quantidade de parâmetros que precisavam ser treinados cresceu exponencialmente à medida que mais computadores eram exigidos, sem uma evolução paralela no poder e nas capacidades de computação. -- **Falta de dados**. Havia uma escassez de dados que dificultou o processo de teste, desenvolvimento e refinamento dos algoritmos. -- **Estamos fazendo as perguntas certas?**. As próprias perguntas que estavam sendo feitas começaram a ser questionadas. Os pesquisadores começaram a criticar suas abordagens: - - Os testes de Turing foram desafiados através, entre outras ideias, da 'teoria da sala chinesa' que postulava que "programar um computador digital pode fazer com que pareça compreender a linguagem, mas não pode produzir uma compreensão verdadeira". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) - - A ética da introdução de inteligências artificiais como o "terapeuta" de ELIZA na sociedade tem sido questionada. - -Ao mesmo tempo, várias escolas de pensamento de IA começaram a se formar. Uma dicotomia foi estabelecida entre as práticas ["scruffy" versus "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). O laboratório do _Scruffy_ otimizou os programas por horas até obter os resultados desejados. O laboratório do _Neat_ "focava na solução de problemas lógicos e formais". ELIZA e SHRDLU eram sistemas desalinhados bem conhecidos. Na década de 1980, quando surgiu a demanda para tornar os sistemas de ML reproduzíveis, a abordagem _neat_ gradualmente assumiu o controle, à medida que seus resultados eram mais explicáveis. - -## Sistemas especialistas de 1980 - -À medida que o campo cresceu, seus benefícios para os negócios tornaram-se mais claros e, na década de 1980, o mesmo aconteceu com a proliferação de 'sistemas especialistas'. "Os sistemas especialistas estavam entre as primeiras formas verdadeiramente bem-sucedidas de software de inteligência artificial (AI)." ([fonte](https://wikipedia.org/wiki/Expert_system)). - -Na verdade, esse tipo de sistema é _híbrido_, consistindo parcialmente em um mecanismo de regras que define os requisitos de negócios e um mecanismo de inferência que potencializa o sistema de regras para deduzir novos fatos. - -Essa era também viu uma crescente atenção dada às redes neurais. - -## 1987 - 1993: AI 'Chill' - -A proliferação de hardware de sistemas especialistas especializados teve o infeliz efeito de se tornar muito especializado. A ascensão dos computadores pessoais também competiu com esses sistemas grandes, especializados e centralizados. A democratização da computação havia começado e, por fim, pavimentou o caminho para a explosão moderna de big data. - -## 1993 - 2011 - -Essa época viu uma nova era para o ML e a AI serem capazes de resolver alguns dos problemas que eram causados anteriormente pela falta de dados e capacidade de computação. A quantidade de dados começou a aumentar rapidamente e se tornar mais amplamente disponível, para melhor e para pior, especialmente com o advento do smartphone por volta de 2007. O poder de computação se expandiu exponencialmente e os algoritmos evoluíram junto. O campo começou a ganhar maturidade à medida que os dias livres do passado começaram a se cristalizar em uma verdadeira disciplina. - -## Agora - -Hoje, o machine learning e a inteligência artificial afetam quase todas as partes de nossa vida. Esta era requer uma compreensão cuidadosa dos riscos e efeitos potenciais desses algoritmos em vidas humanas. Como disse Brad Smith, da Microsoft, "a tecnologia da informação levanta questões que vão ao cerne das proteções fundamentais dos direitos humanos, como privacidade e liberdade de expressão. Essas questões aumentam a responsabilidade das empresas de tecnologia que criam esses produtos. Observe, elas também exigem um governo cuidadoso regulamentação e o desenvolvimento de padrões sobre usos aceitáveis​​" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Resta saber o que o futuro reserva, mas é importante entender esses sistemas de computador e o software e algoritmos que eles executam. Esperamos que este curso lhe ajude a obter um melhor entendimento para que você possa decidir por si mesmo. - -[![A história do deep learning](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "A história do deep learning") -> 🎥 Clique na imagem acima para ver um vídeo: Yann LeCun discute a história do deep learning nesta palestra - ---- -## 🚀Desafio - -Explore um desses momentos históricos e aprenda mais sobre as pessoas por trás deles. Existem personagens fascinantes e nenhuma descoberta científica foi criada em um vácuo cultural. O que você descobriu? - -## [Questionário pós-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4?loc=ptbr) - -## Revisão e Autoestudo - -Aqui estão os itens para assistir e ouvir: - -[Este podcast em que Amy Boyd discute a evolução da AI](http://runasradio.com/Shows/Show/739) - -[![A história da AI ​​por Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "A história da AI ​​por Amy Boyd") - -## Tarefa - -[Crie uma linha do tempo](assignment.pt-br.md) diff --git a/1-Introduction/2-history-of-ML/translations/README.ru.md b/1-Introduction/2-history-of-ML/translations/README.ru.md deleted file mode 100644 index 013cf9cb..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.ru.md +++ /dev/null @@ -1,146 +0,0 @@ -# История машинного обучения - -![Краткое изложение истории машинного обучения в заметке](../../../sketchnotes/ml-history.png) -> Заметка [Томоми Имура](https://www.twitter.com/girlie_mac) - -## [Тест перед лекцией](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/) - ---- - -На этом уроке мы рассмотрим основные вехи в истории машинного обучения и искусственного интеллекта. - -История искусственного интеллекта (ИИ) как области переплетается с историей машинного обучения (machine learning, ML), поскольку алгоритмы и вычислительные достижения, лежащие в основе ML, способствовали развитию ИИ. Полезно помнить, что, хотя эти области как начали выделяться в отдельные в 1950-х годах, важные [алгоритмические, статистические, математические, вычислительные и технические открытия](https://wikipedia.org/wiki/Timeline_of_machine_learning) предшествовали и происходили в эту эпоху. На самом деле, люди думали об этих вопросах в течение [сотен лет](https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%B8%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82%D0%B0): в этой статье рассматриваются исторические интеллектуальные основы идеи "мыслящей машины". - ---- -## Заметные открытия - -- 1763, 1812 [Теорема Байеса](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%B0) и ее предшественники. Эта теорема и ее приложения лежат в основе вывода, описывающего вероятность события, происходящего на основе предварительных знаний. -- 1805 [Теория наименьших квадратов](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BD%D0%B0%D0%B8%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B8%D1%85_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BE%D0%B2) французского математика Адриена-Мари Лежандра. Эта теория, о которой вы узнаете в нашем блоке регрессии, помогает в аппроксимации данных. -- 1913 [Цепи Маркова](https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BF%D1%8C_%D0%9C%D0%B0%D1%80%D0%BA%D0%BE%D0%B2%D0%B0), названный в честь русского математика Андрея Маркова, используется для описания последовательности возможных событий на основе предыдущего состояния. -- 1957 [Персептрон](https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD) - это тип линейного классификатора, изобретенный американским психологом Фрэнком Розенблаттом, который лежит в основе достижений в области глубокого обучения. - ---- - -- 1967 [Метод ближайшего соседа](https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%B8%D0%B6%D0%B0%D0%B9%D1%88%D0%B8%D0%B9_%D1%81%D0%BE%D1%81%D0%B5%D0%B4) - это алгоритм, изначально разработанный для отображения маршрутов. В контексте ML он используется для обнаружения закономерностей. -- 1970 [Обратное распространение ошибки](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8) используется для обучения [нейронных сетей с прямой связью](https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%D1%81_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C%D1%8E). -- 1982 [Рекуррентные нейронные сети](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C) являются искусственными нейронными сетями, полученными из нейронных сетей прямой связи, которые создают временные графики. - -✅ Проведите небольшое исследование. Какие еще даты являются ключевыми в истории ML и ИИ? - ---- -## 1950: Машины, которые думают - -Алан Тьюринг, поистине великий человек, который был выбран [общественностью в 2019 году](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) величайшим ученым 20-го века. Считается, что он помог заложить основу концепции "машины, которая может мыслить". Он боролся со скептиками и своей собственной потребностью в эмпирических доказательствах этой концепции, частично создав [Тест Тьюринга](https://www.bbc.com/news/technology-18475646), которые вы изучите на наших уроках NLP. - ---- -## 1956: Летний исследовательский проект в Дартмуте - -"Летний исследовательский проект Дартмута по искусственному интеллекту был основополагающим событием для искусственного интеллекта как области", и именно здесь был придуман термин "искусственный интеллект" ([источник](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> Всякий аспект обучения или любое другое свойство интеллекта может в принципе быть столь точно описано, что машина сможет его симулировать. - ---- - -Ведущий исследователь, профессор математики Джон Маккарти, надеялся "действовать, основываясь на предположении, что всякий аспект обучения или любое другое свойство интеллекта может в принципе быть столь точно описано, что машина сможет его симулировать". Среди участников был еще один выдающийся ученый в этой области - Марвин Мински. - -Семинару приписывают инициирование и поощрение нескольких дискуссий, в том числе "развитие символических методов, систем, ориентированных на ограниченные области (ранние экспертные системы), и дедуктивных систем по сравнению с индуктивными системами". ([источник](https://ru.wikipedia.org/wiki/%D0%94%D0%B0%D1%80%D1%82%D0%BC%D1%83%D1%82%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%B5%D0%BC%D0%B8%D0%BD%D0%B0%D1%80)). - ---- -## 1956 - 1974: "Золотые годы" - -С 1950-х до середины 70-х годов оптимизм рос в надежде, что ИИ сможет решить многие проблемы. В 1967 году Марвин Мински уверенно заявил, что "В течение одного поколения... проблема создания "искусственного интеллекта" будет в значительной степени решена". (Мински, Марвин (1967), Вычисления: Конечные и бесконечные машины, Энглвуд-Клиффс, Нью-Джерси: Прентис-Холл) - -Исследования в области обработки естественного языка процветали, поиск был усовершенствован и стал более мощным, и была создана концепция "микромиров", где простые задачи выполнялись с использованием простых языковых инструкций. - ---- - -Исследования хорошо финансировались правительственными учреждениями, были достигнуты успехи в вычислениях и алгоритмах, были созданы прототипы интеллектуальных машин. Некоторые из этих машин включают: - -* [Робот Shakey](https://ru.wikipedia.org/wiki/Shakey), который мог маневрировать и решать, как "разумно" выполнять задачи. - - ![Shakey, умный робот](../images/shakey.jpg) - > Shakey в 1972 году - ---- - -* Элиза, ранний "чат-бот", могла общаться с людьми и действовать как примитивный "терапевт". Вы узнаете больше об Элизе на уроках NLP. - - ![Элиза, бот](../images/eliza.png) - > Версия Элизы, чат-бота - ---- - -* "Мир блоков" был примером микромира, в котором блоки можно было складывать и сортировать, а также проводить эксперименты по обучению машин принятию решений. Достижения, созданные с помощью библиотек, таких как [SHRDLU](https://ru.wikipedia.org/wiki/SHRDLU) помогло продвинуть обработку языка вперед. - - [![мир блоков SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "мир блоков SHRDLU") - - > 🎥 Нажмите на изображение выше для просмотра видео: Мир блоков SHRDLU - ---- -## 1974-1980: "Зима искусственного интеллекта" - -К середине 1970-х годов стало очевидно, что сложность создания "интеллектуальных машин" была занижена и что ее перспективы, учитывая доступные вычислительные мощности, были преувеличены. Финансирование иссякло, и доверие к этой области снизилось. Некоторые проблемы, повлиявшие на доверие, включали: ---- -- **Ограничения**. Вычислительная мощность была слишком ограничена. -- **Комбинаторный взрыв**. Количество параметров, необходимых для обучения, росло экспоненциально по мере того, как усложнялись задачи для компьютеров, без параллельной эволюции вычислительной мощности и возможностей. -- **Нехватка данных**. Нехватка данных затрудняла процесс тестирования, разработки и совершенствования алгоритмов. -- **Задаем ли мы правильные вопросы?**. Сами вопросы, которые задавались, начали подвергаться сомнению. Исследователи начали подвергать критике свои подходы: - - Тесты Тьюринга были поставлены под сомнение, среди прочего, с помощью "теории китайской комнаты", которая утверждала, что "программирование цифрового компьютера может создать впечатление, что он понимает язык, но не может обеспечить реальное понимание". ([источник](https://plato.stanford.edu/entries/chinese-room/)) - - Этика внедрения в общество искусственного интеллекта, такого как "терапевт" ЭЛИЗА, была поставлена под сомнение. - ---- - -В то же время начали формироваться различные школы ИИ. Произошло разделение на подходы ["неряшливого" и "чистого" ИИ](https://wikipedia.org/wiki/Neats_and_scruffies). Приверженцы _неряшливого ИИ_ часами корректировали программы, пока не получали желаемых результатов. Приверженцы _Чистого ИИ_ были "сосредоточены на логике и решении формальных задач". ЭЛИЗА и SHRDLU были хорошо известными _неряшливыми_ системами. В 1980-х годах, когда возник спрос на то, чтобы сделать системы машинного обучения воспроизводимыми, _Чистый_ подход постепенно вышел на передний план, поскольку его результаты более объяснимы. - ---- -## Экспертные системы 1980-х годов - -По мере роста отрасли ее преимущества для бизнеса становились все более очевидными, а в 1980-х годах - и распространение "экспертных систем". "Экспертные системы были одними из первых по-настоящему успешных форм программного обеспечения искусственного интеллекта (ИИ)". ([источник](https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0)). - -Этот тип системы на самом деле был _гибридным_, частично состоящим из механизма правил, определяющего бизнес-требования, и механизма вывода, который использует систему правил для вывода новых фактов. - -В эту эпоху также все большее внимания уделялось нейронным сетям. - ---- -## 1987 - 1993: 'Охлаждение' к ИИ - -Распространение специализированного оборудования экспертных систем привело к печальному результату - оно стало слишком специализированным. Появление персональных компьютеров конкурировало с этими крупными специализированными централизованными системами. Началась демократизация вычислительной техники, и в конечном итоге она проложила путь к современному взрыву больших данных. - ---- -## 1993 - 2011 - -Эта эпоха ознаменовала новую эру для ML и ИИ, которые смогли решить некоторые проблемы, возникавшие ранее из-за нехватки данных и вычислительных мощностей. Объем данных начал быстро увеличиваться и становиться все более доступным, и к лучшему и к худшему, особенно с появлением смартфона примерно в 2007 году. Вычислительная мощность росла экспоненциально, и вместе с ней развивались алгоритмы. Эта область начала набирать зрелость по мере того, как свободные дни прошлого начали превращаться в настоящую дисциплину. - ---- -## Сейчас - -Сегодня машинное обучение и искусственный интеллект затрагивают практически все сферы нашей жизни. Текущая эпоха требует тщательного понимания рисков и потенциальных последствий этих алгоритмов для человеческих жизней. Как заявил Брэд Смит из Microsoft, "Информационные технологии поднимают проблемы, которые лежат в основе защиты основных прав человека, таких как конфиденциальность и свобода выражения мнений. Эти проблемы повышают ответственность технологических компаний, которые создают эти продукты. На наш взгляд, они также требуют продуманного государственного регулирования и разработки норм, касающихся приемлемых видов использования" ([источник](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - ---- - -Еще предстоит увидеть, что ждет нас в будущем, но важно понимать эти системы, а также программное обеспечение и алгоритмы, которыми они управляют. Мы надеемся, что эта учебная программа поможет вам лучше понять, чтобы вы могли принять решение самостоятельно. - -[![История глубокого обучения](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "История глубокого обучения") -> 🎥 Нажмите на изображение выше, чтобы посмотреть видео: Yann LeCun обсуждает историю глубокого обучения в этой лекции - ---- -## 🚀Вызов - -Погрузитесь в один из этих исторических моментов и узнайте больше о людях, стоящих за ними. Есть увлекательные персонажи, и ни одно научное открытие никогда не создавалось в культурном вакууме. Что вы обнаружите? - -## [Тест после лекции](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/) - ---- -## Обзор и самообучение - -Вот что можно посмотреть и послушать: - -[Этот подкаст, в котором Эми Бойд обсуждает эволюцию ИИ](http://runasradio.com/Shows/Show/739) - -[![История искусственного интеллекта от Эми Бойд](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "История искусственного интеллекта от Эми Бойд") - ---- - -## Задание - -[Создайте временную шкалу](assignment.ru.md) \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/README.tr.md b/1-Introduction/2-history-of-ML/translations/README.tr.md deleted file mode 100644 index 4145f666..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.tr.md +++ /dev/null @@ -1,117 +0,0 @@ -# Makine öğreniminin tarihi - -![Bir taslak-notta makine öğrenimi geçmişinin özeti](../../../sketchnotes/ml-history.png) -> [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından hazırlanan taslak-not - -## [Ders öncesi test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3?loc=tr) - -Bu derste, makine öğrenimi ve yapay zeka tarihindeki önemli kilometre taşlarını inceleyeceğiz. - -Bir alan olarak yapay zekanın (AI) tarihi, makine öğreniminin tarihi ile iç içedir, çünkü makine öğrenimini destekleyen algoritmalar ve bilgi-işlem kapasitesindeki ilerlemeler, yapay zekanın gelişimini beslemektedir. Ayrı bilim alanlanları olarak bu alanlar 1950'lerde belirginleşmeye başlarken, önemli [algoritmik, istatistiksel, matematiksel, hesaplamalı ve teknik keşiflerin](https://wikipedia.org/wiki/Timeline_of_machine_learning) bir kısmı bu dönemden önce gelmiş ve bir kısmı da bu dönem ile örtüşmüştür. Aslında, insanlar [yüzlerce yıldır](https://wikipedia.org/wiki/History_of_artificial_intelligence) bu soruları düşünüyorlar: bu makale bir 'düşünen makine' fikrinin tarihsel entelektüel temellerini tartışıyor. - -## Önemli keşifler - -- 1763, 1812 - [Bayes Teoremi](https://tr.wikipedia.org/wiki/Bayes_teoremi) ve öncülleri. Bu teorem ve uygulamaları, önceki bilgilere dayalı olarak meydana gelen bir olayın olasılığını tanımlayan çıkarımın temelini oluşturur. -- 1805 - [En Küçük Kareler Teorisi](https://tr.wikipedia.org/wiki/En_k%C3%BC%C3%A7%C3%BCk_kareler_y%C3%B6ntemi), Fransız matematikçi Adrien-Marie Legendre tarafından bulunmuştur. Regresyon ünitemizde öğreneceğiniz bu teori, makine öğrenimi modelini veriye uydurmada yardımcı olur. -- 1913 - Rus matematikçi Andrey Markov'un adını taşıyan [Markov Zincirleri](https://tr.wikipedia.org/wiki/Markov_zinciri), önceki bir duruma dayalı olası olaylar dizisini tanımlamak için kullanılır. -- 1957 - [Algılayıcı (Perceptron)](https://tr.wikipedia.org/wiki/Perceptron), derin öğrenmedeki ilerlemelerin temelini oluşturan Amerikalı psikolog Frank Rosenblatt tarafından icat edilen bir tür doğrusal sınıflandırıcıdır. -- 1967 - [En Yakın Komşu](https://wikipedia.org/wiki/Nearest_neighbor), orijinal olarak rotaları haritalamak için tasarlanmış bir algoritmadır. Bir ML bağlamında kalıpları tespit etmek için kullanılır. -- 1970 - [Geri Yayılım](https://wikipedia.org/wiki/Backpropagation), [ileri beslemeli sinir ağlarını](https://wikipedia.org/wiki/Feedforward_neural_network) eğitmek için kullanılır. -- 1982 - [Tekrarlayan Sinir Ağları](https://wikipedia.org/wiki/Recurrent_neural_network), zamansal grafikler oluşturan ileri beslemeli sinir ağlarından türetilen yapay sinir ağlarıdır. - -✅ Biraz araştırma yapın. Makine öğrenimi ve yapay zeka tarihinde önemli olan başka hangi tarihler öne çıkıyor? - -## 1950: Düşünen makineler - -[2019'da halk tarafından](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20. yüzyılın en büyük bilim adamı seçilen gerçekten dikkate değer bir kişi olan Alan Turing'in, 'düşünebilen makine' kavramının temellerini attığı kabul edilir. Kendisine karşı çıkanlara yanıt olması için ve bu kavramın deneysel kanıtlarını bulma ihtiyacı sebebiyle, NLP derslerimizde keşfedeceğiniz [Turing Testi'ni](https://www.bbc.com/news/technology-18475646) oluşturdu. - -## 1956: Dartmouth Yaz Araştırma Projesi - -"Yapay zeka üzerine Dartmouth Yaz Araştırma Projesi", bir alan olarak yapay zeka için çığır açan bir olaydı ve burada 'yapay zeka' terimi ortaya çıktı ([kaynak](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> Öğrenmenin her yönü veya zekanın diğer herhangi bir özelliği, prensipte o kadar kesin bir şekilde tanımlanabilir ki, onu simüle etmek için bir makine yapılabilir. - -Baş araştırmacı, matematik profesörü John McCarthy, "öğrenmenin her yönünün veya zekanın diğer herhangi bir özelliğinin prensipte oldukça kesin bir şekilde tanımlanabileceği varsayımına dayanarak, onu simüle etmek için bir makine yapılabileceği" varsayımının doğru olmasını umarak ilerliyordu. Katılımcılar arasında bu alanın bir diğer önderi olan Marvin Minsky de vardı. - -Çalıştay, "sembolik yöntemlerin yükselişi, sınırlı alanlara odaklanan sistemler (ilk uzman sistemler) ve tümdengelimli sistemlere karşı tümevarımlı sistemler" dahil olmak üzere çeşitli tartışmaları başlatmış ve teşvik etmiştir. ([kaynak](https://tr.wikipedia.org/wiki/Dartmouth_Konferans%C4%B1)). - -## 1956 - 1974: "Altın yıllar" - -1950'lerden 70'lerin ortalarına kadar, yapay zekanın birçok sorunu çözebileceği umuduyla iyimserlik arttı. 1967'de Marvin Minsky kendinden emin bir şekilde "Bir nesil içinde... 'yapay zeka' yaratma sorunu büyük ölçüde çözülecek" dedi. (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -Doğal dil işleme araştırmaları gelişti, aramalar iyileştirildi ve daha güçlü hale getirildi, ve basit görevlerin sade dil talimatları kullanılarak tamamlandığı 'mikro dünyalar' kavramı yaratıldı. - -Araştırmalar, devlet kurumları tarafından iyi finanse edildi, hesaplamalar ve algoritmalarda ilerlemeler kaydedildi ve akıllı makinelerin prototipleri yapıldı. Bu makinelerden bazıları şunlardır: - -* [Robot Shakey](https://wikipedia.org/wiki/Shakey_the_robot), manevra yapabilir ve görevleri 'akıllıca' nasıl yerine getireceğine karar verebilir. - - ![Shakey, akıllı bir robot](../images/shakey.jpg) - > 1972'de Shakey - -* Erken bir 'sohbet botu' olan Eliza, insanlarla sohbet edebilir ve ilkel bir 'terapist' gibi davranabilirdi. NLP derslerinde Eliza hakkında daha fazla bilgi edineceksiniz. - - ![Eliza, bir bot](../images/eliza.png) - > Bir sohbet robotu olan Eliza'nın bir versiyonu - -* "Dünya Blokları", blokların üst üste koyulabilecekleri, sıralanabilecekleri ve karar vermeyi öğreten makinelerdeki deneylerin test edilebileceği bir mikro dünyaya örnekti. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) gibi kütüphanelerle oluşturulan gelişmeler, dil işlemeyi ilerletmeye yardımcı oldu. - - [![SHRDLU ile Dünya Blokları](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ile Dünya Blokları" ) - - > 🎥 Video için yukarıdaki resme tıklayın: SHRDLU ile Dünya Blokları - -## 1974 - 1980: "Yapay Zekâ Kışı" - -1970'lerin ortalarına gelindiğinde, 'akıllı makineler' yapmanın karmaşıklığının hafife alındığı ve mevcut hesaplama gücü göz önüne alındığında, verilen vaatlerin abartıldığı ortaya çıktı. Finansman kurudu ve alana olan güven azaldı. Güveni etkileyen bazı sorunlar şunlardı: - -- **Kısıtlıklar**. Hesaplama gücü çok sınırlıydı. -- **Kombinasyonel patlama**. Hesaplama gücü ve yeteneğinde paralel bir evrim olmaksızın, bilgisayarlardan daha fazla soru istendikçe, eğitilmesi gereken parametre miktarı katlanarak arttı. -- **Veri eksikliği**. Algoritmaları test etme, geliştirme ve iyileştirme sürecini engelleyen bir veri kıtlığı vardı. -- **Doğru soruları mı soruyoruz?**. Sorulan sorular sorgulanmaya başlandı. Araştırmacılar mevcut yaklaşımları eleştirmeye başladı: - - Turing testleri, diğer fikirlerin yanı sıra, "Çin odası teorisi" aracılığıyla sorgulanmaya başlandı. Bu teori, "dijital bir bilgisayar, programlanarak dili anlıyormuş gibi gösterilebilir fakat gerçek bir dil anlayışı elde edilemez" savını öne sürmektedir. ([kaynak](https://plato.stanford.edu/entries/chinese-room/) - - "Terapist" ELIZA gibi yapay zekaların topluma tanıtılmasının etiğine meydan okundu. - -Aynı zamanda, çeşitli yapay zekâ düşünce okulları oluşmaya başladı. ["dağınık" ile "düzenli AI"](https://wikipedia.org/wiki/Neats_and_scruffies) uygulamaları arasında bir ikilem kuruldu. _Dağınık_ laboratuvarlar, istenen sonuçları elde edene kadar programlar üzerinde saatlerce ince ayar yaptı. _Düzenli_ laboratuvarlar "mantık ve biçimsel problem çözmeye odaklandı". ELIZA ve SHRDLU, iyi bilinen _dağınık_ sistemlerdi. 1980'lerde, ML sistemlerinin sonuçlarını tekrarlanabilir hale getirmek için talep ortaya çıktıkça, sonuçları daha açıklanabilir olduğu için _düzenli_ yaklaşım yavaş yavaş ön plana çıktı. - -## 1980'ler: Uzman sistemler - -Alan büyüdükçe, şirketlere olan faydası daha net hale geldi ve 1980'lerde 'uzman sistemlerin' yaygınlaşması da bu şekilde meydana geldi. "Uzman sistemler, yapay zeka (AI) yazılımlarının gerçek anlamda başarılı olan ilk formları arasındaydı." ([kaynak](https://tr.wikipedia.org/wiki/Uzman_sistemler)). - -Bu sistem türü aslında kısmen iş gereksinimlerini tanımlayan bir kural aracından ve yeni gerçekleri çıkarmak için kurallar sisteminden yararlanan bir çıkarım aracından oluşan bir _melezdir_. - -Bu çağda aynı zamanda sinir ağlarına artan ilgi de görülmüştür. - -## 1987 - 1993: Yapay Zeka 'Soğuması' - -Özelleşmiş uzman sistem donanımının yaygınlaşması, talihsiz bir şekilde bunları aşırı özelleşmiş hale getirdi. Kişisel bilgisayarların yükselişi de bu büyük, özelleşmiş, merkezi sistemlerle rekabet etti. Bilgisayarın demokratikleşmesi başlamıştı ve sonunda modern büyük veri patlamasının yolunu açtı. - -## 1993 - 2011 - -Bu çağ, daha önce veri ve hesaplama gücü eksikliğinden kaynaklanan bazı sorunları çözebilmek için ML ve AI için yeni bir dönemi getirdi. Veri miktarı hızla artmaya başladı ve özellikle 2007'de akıllı telefonun ortaya çıkmasıyla birlikte iyisiyle kötüsüyle daha yaygın bir şekilde ulaşılabilir hale geldi. Hesaplama gücü katlanarak arttı ve algoritmalar da onunla birlikte gelişti. Geçmişin başıboş günleri gitmiş, yerine giderek olgunlaşan gerçek bir disipline dönüşüm başlamıştı. - -## Şimdi - -Günümüzde makine öğrenimi ve yapay zeka hayatımızın neredeyse her alanına dokunuyor. Bu çağ, bu algoritmaların insan yaşamı üzerindeki risklerinin ve potansiyel etkilerinin dikkatli bir şekilde anlaşılmasını gerektirmektedir. Microsoft'tan Brad Smith'in belirttiği gibi, "Bilgi teknolojisi, gizlilik ve ifade özgürlüğü gibi temel insan hakları korumalarının kalbine giden sorunları gündeme getiriyor. Bu sorunlar, bu ürünleri yaratan teknoloji şirketlerinin sorumluluğunu artırıyor. Bizim açımızdan bakıldığında, düşünceli hükümet düzenlemeleri ve kabul edilebilir kullanımlar etrafında normların geliştirilmesi için de bir çağrı niteliği taşıyor." ([kaynak](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/) )). - -Geleceğin neler getireceğini birlikte göreceğiz, ancak bu bilgisayar sistemlerini ve çalıştırdıkları yazılım ve algoritmaları anlamak önemlidir. Bu müfredatın, kendi kararlarınızı verebilmeniz için daha iyi bir anlayış kazanmanıza yardımcı olacağını umuyoruz. - -[![Derin öğrenmenin tarihi](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "Derin öğrenmenin tarihi") -> 🎥 Video için yukarıdaki resme tıklayın: Yann LeCun bu derste derin öğrenmenin tarihini tartışıyor - ---- -## 🚀Meydan okuma - -Bu tarihi anlardan birine girin ve arkasındaki insanlar hakkında daha fazla bilgi edinin. Büyüleyici karakterler var ve kültürel bir boşlukta hiçbir bilimsel keşif yaratılmadı. Ne keşfedersiniz? - -## [Ders sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4?loc=tr) - -## İnceleme ve Bireysel Çalışma - -İşte izlenmesi ve dinlenmesi gerekenler: - -[Amy Boyd'un yapay zekanın evrimini tartıştığı bu podcast](http://runasradio.com/Shows/Show/739) - -[![Amy Boyd ile Yapay Zekâ'nın tarihi](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd ile Yapay Zekâ'nın tarihi") - -## Ödev - -[Bir zaman çizelgesi oluşturun](assignment.tr.md) \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/README.zh-tw.md b/1-Introduction/2-history-of-ML/translations/README.zh-tw.md deleted file mode 100644 index 7c88c2ee..00000000 --- a/1-Introduction/2-history-of-ML/translations/README.zh-tw.md +++ /dev/null @@ -1,110 +0,0 @@ -# 機器學習的歷史 - -![機器學習歷史概述](../../../sketchnotes/ml-history.png) -> 作者 [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [課前測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/) - -在本課中,我們將走過機器學習和人工智能歷史上的主要裏程碑。 - -人工智能(AI)作為一個領域的歷史與機器學習的歷史交織在一起,因為支持機器學習的算法和計算能力的進步推動了AI的發展。記住,雖然這些領域作為不同研究領域在 20 世紀 50 年代才開始具體化,但重要的[算法、統計、數學、計算和技術發現](https://wikipedia.org/wiki/Timeline_of_machine_learning) 要早於和重疊了這個時代。 事實上,[數百年來](https://wikipedia.org/wiki/History_of_artificial_intelligence)人們一直在思考這些問題:本文討論了「思維機器」這一概念的歷史知識基礎。 - -## 主要發現 - -- 1763, 1812 [貝葉斯定理](https://wikipedia.org/wiki/Bayes%27_theorem) 及其前身。該定理及其應用是推理的基礎,描述了基於先驗知識的事件發生的概率。 -- 1805 [最小二乘理論](https://wikipedia.org/wiki/Least_squares)由法國數學家 Adrien-Marie Legendre 提出。 你將在我們的回歸單元中了解這一理論,它有助於數據擬合。 -- 1913 [馬爾可夫鏈](https://wikipedia.org/wiki/Markov_chain)以俄羅斯數學家 Andrey Markov 的名字命名,用於描述基於先前狀態的一系列可能事件。 -- 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美國心理學家 Frank Rosenblatt 發明的一種線性分類器,是深度學習發展的基礎。 -- 1967 [最近鄰](https://wikipedia.org/wiki/Nearest_neighbor)是一種最初設計用於映射路線的算法。 在 ML 中,它用於檢測模式。 -- 1970 [反向傳播](https://wikipedia.org/wiki/Backpropagation)用於訓練[前饋神經網絡](https://wikipedia.org/wiki/Feedforward_neural_network)。 -- 1982 [循環神經網絡](https://wikipedia.org/wiki/Recurrent_neural_network) 是源自產生時間圖的前饋神經網絡的人工神經網絡。 - -✅ 做點調查。在 ML 和 AI 的歷史上,還有哪些日期是重要的? -## 1950: 會思考的機器 - -Alan Turing,一個真正傑出的人,[在 2019 年被公眾投票選出](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 作為 20 世紀最偉大的科學家,他認為有助於為「會思考的機器」的概念打下基礎。他通過創建 [圖靈測試](https://www.bbc.com/news/technology-18475646)來解決反對者和他自己對這一概念的經驗證據的需求,你將在我們的 NLP 課程中進行探索。 - -## 1956: 達特茅斯夏季研究項目 - -「達特茅斯夏季人工智能研究項目是人工智能領域的一個開創性事件,」正是在這裏,人們創造了「人工智能」一詞([來源](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))。 - -> 原則上,學習的每個方面或智能的任何其他特征都可以被精確地描述,以至於可以用機器來模擬它。 -首席研究員、數學教授 John McCarthy 希望「基於這樣一種猜想,即學習的每個方面或智能的任何其他特征原則上都可以如此精確地描述,以至於可以製造出一臺機器來模擬它。」 參與者包括該領域的另一位傑出人物 Marvin Minsky。 - -研討會被認為發起並鼓勵了一些討論,包括「符號方法的興起、專註於有限領域的系統(早期專家系統),以及演繹系統與歸納系統的對比。」([來源](https://wikipedia.org/wiki/Dartmouth_workshop))。 - -## 1956 - 1974: 「黃金歲月」 - -從 20 世紀 50 年代到 70 年代中期,樂觀情緒高漲,希望人工智能能夠解決許多問題。1967 年,Marvin Minsky 自信地說,「一代人之內...創造『人工智能』的問題將得到實質性的解決。」(Minsky,Marvin(1967),《計算:有限和無限機器》,新澤西州恩格伍德克利夫斯:Prentice Hall) - -自然語言處理研究蓬勃發展,搜索被提煉並變得更加強大,創造了「微觀世界」的概念,在這個概念中,簡單的任務是用簡單的語言指令完成的。 - -這項研究得到了政府機構的充分資助,在計算和算法方面取得了進展,並建造了智能機器的原型。其中一些機器包括: - -* [機器人 Shakey](https://wikipedia.org/wiki/Shakey_the_robot),他們可以「聰明地」操縱和決定如何執行任務。 - - ![Shakey, 智能機器人](../images/shakey.jpg) - > 1972 年的 Shakey -* Eliza,一個早期的「聊天機器人」,可以與人交談並充當原始的「治療師」。 你將在 NLP 課程中了解有關 Eliza 的更多信息。 - - ![Eliza, 機器人](../images/eliza.png) - > Eliza 的一個版本,一個聊天機器人 -* 「積木世界」是一個微觀世界的例子,在那裏積木可以堆疊和分類,並且可以測試教機器做出決策的實驗。 使用 [SHRDLU](https://wikipedia.org/wiki/SHRDLU) 等庫構建的高級功能有助於推動語言處理向前發展。 - - [![積木世界與 SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "積木世界與SHRDLU") - - > 🎥 點擊上圖觀看視頻: 積木世界與 SHRDLU -## 1974 - 1980: AI 的寒冬 - -到了 20 世紀 70 年代中期,很明顯製造「智能機器」的復雜性被低估了,而且考慮到可用的計算能力,它的前景被誇大了。資金枯竭,市場信心放緩。影響信心的一些問題包括: - -- **限製**。計算能力太有限了 -- **組合爆炸**。隨著對計算機的要求越來越高,需要訓練的參數數量呈指數級增長,而計算能力卻沒有平行發展。 -- **缺乏數據**。 缺乏數據阻礙了測試、開發和改進算法的過程。 -- **我們是否在問正確的問題?**。 被問到的問題也開始受到質疑。 研究人員開始對他們的方法提出批評: - - 圖靈測試受到質疑的方法之一是「中國房間理論」,該理論認為,「對數字計算機進行編程可能使其看起來能理解語言,但不能產生真正的理解。」 ([來源](https://plato.stanford.edu/entries/chinese-room/)) - - 將「治療師」ELIZA 這樣的人工智能引入社會的倫理受到了挑戰。 - -與此同時,各種人工智能學派開始形成。 在 [「scruffy」 與 「neat AI」](https://wikipedia.org/wiki/Neats_and_scruffies) 之間建立了二分法。 _Scruffy_ 實驗室對程序進行了數小時的調整,直到獲得所需的結果。 _Neat_ 實驗室「專註於邏輯和形式問題的解決」。 ELIZA 和 SHRDLU 是眾所周知的 _scruffy_ 系統。 在 1980 年代,隨著使 ML 系統可重現的需求出現,_neat_ 方法逐漸走上前沿,因為其結果更易於解釋。 - -## 1980s 專家系統 - -隨著這個領域的發展,它對商業的好處變得越來越明顯,在 20 世紀 80 年代,『專家系統』也開始廣泛流行起來。「專家系統是首批真正成功的人工智能 (AI) 軟件形式之一。」 ([來源](https://wikipedia.org/wiki/Expert_system))。 - -這種類型的系統實際上是混合系統,部分由定義業務需求的規則引擎和利用規則系統推斷新事實的推理引擎組成。 - -在這個時代,神經網絡也越來越受到重視。 - -## 1987 - 1993: AI 的冷靜期 - -專業的專家系統硬件的激增造成了過於專業化的不幸後果。個人電腦的興起也與這些大型、專業化、集中化系統展開了競爭。計算機的平民化已經開始,它最終為大數據的現代爆炸鋪平了道路。 - -## 1993 - 2011 - -這個時代見證了一個新的時代,ML 和 AI 能夠解決早期由於缺乏數據和計算能力而導致的一些問題。數據量開始迅速增加,變得越來越廣泛,無論好壞,尤其是 2007 年左右智能手機的出現,計算能力呈指數級增長,算法也隨之發展。這個領域開始變得成熟,因為過去那些隨心所欲的日子開始具體化為一種真正的紀律。 - -## 現在 - -今天,機器學習和人工智能幾乎觸及我們生活的每一個部分。這個時代要求仔細了解這些算法對人類生活的風險和潛在影響。正如微軟的 Brad Smith 所言,「信息技術引發的問題觸及隱私和言論自由等基本人權保護的核心。這些問題加重了製造這些產品的科技公司的責任。在我們看來,它們還呼籲政府進行深思熟慮的監管,並圍繞可接受的用途製定規範」([來源](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))。 - -未來的情況還有待觀察,但了解這些計算機系統以及它們運行的軟件和算法是很重要的。我們希望這門課程能幫助你更好的理解,以便你自己決定。 - -[![深度學習的歷史](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "深度學習的歷史") -> 🎥 點擊上圖觀看視頻:Yann LeCun 在本次講座中討論深度學習的歷史 ---- -## 🚀挑戰 - -深入了解這些歷史時刻之一,並更多地了解它們背後的人。這裏有許多引人入勝的人物,沒有一項科學發現是在文化真空中創造出來的。你發現了什麽? - -## [課後測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/) - -## 復習與自學 - -以下是要觀看和收聽的節目: - -[這是 Amy Boyd 討論人工智能進化的播客](http://runasradio.com/Shows/Show/739) - -[![Amy Boyd的《人工智能史》](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd的《人工智能史》") - -## 任務 - -[創建時間線](assignment.zh-tw.md) \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.es.md b/1-Introduction/2-history-of-ML/translations/assignment.es.md deleted file mode 100644 index 504796e7..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.es.md +++ /dev/null @@ -1,11 +0,0 @@ -# Crea una línea de tiempo - -## Instrucciones - -Usando [este repositorio](https://github.com/Digital-Humanities-Toolkit/timeline-builder), crea una línea temporal de algunos aspectos de la historia de los algoritmos, matemáticas, estadística, Inteligencia Artificial (AI), Aprendizaje Automático (ML), o una combinación de todos estos. Te puedes enfocar en una persona, una idea o período largo de tiempo de pensamiento. Asegúrate de agregar elementos multimedia. - -## Rúbrica - -| Criterio | Ejemplar | Adecuado | Necesita mejorar | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| | Una línea de tiempo desplegada es representada como una página de Github | El código está incompleto y no fue desplegado | La línea del tiempo está incompleta, sin buena investigación y sin desplegar | diff --git a/1-Introduction/2-history-of-ML/translations/assignment.fr.md b/1-Introduction/2-history-of-ML/translations/assignment.fr.md deleted file mode 100644 index c562516e..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.fr.md +++ /dev/null @@ -1,11 +0,0 @@ -# Créer une frise chronologique - -## Instructions - -Utiliser [ce repo](https://github.com/Digital-Humanities-Toolkit/timeline-builder), créer une frise chronologique de certains aspects de l'histoire des algorithmes, des mathématiques, des statistiques, de l'IA ou du machine learning, ou une combinaison de ceux-ci. Vous pouvez vous concentrer sur une personne, une idée ou une longue période d'innovations. Assurez-vous d'ajouter des éléments multimédias. - -## Rubrique - -| Critères | Exemplaire | Adéquate | A améliorer | -| -------- | ---------------------------------------------------------------- | ------------------------------------ | ------------------------------------------------------------------ | -| | Une chronologie déployée est présentée sous forme de page GitHub | Le code est incomplet et non déployé | La chronologie est incomplète, pas bien recherchée et pas déployée | diff --git a/1-Introduction/2-history-of-ML/translations/assignment.id.md b/1-Introduction/2-history-of-ML/translations/assignment.id.md deleted file mode 100644 index 0ee7c009..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.id.md +++ /dev/null @@ -1,11 +0,0 @@ -# Membuat sebuah *timeline* - -## Instruksi - -Menggunakan [repo ini](https://github.com/Digital-Humanities-Toolkit/timeline-builder), buatlah sebuah *timeline* dari beberapa aspek sejarah algoritma, matematika, statistik, AI, atau ML, atau kombinasi dari semuanya. Kamu dapat fokus pada satu orang, satu ide, atau rentang waktu pemikiran yang panjang. Pastikan untuk menambahkan elemen multimedia. - -## Rubrik - -| Kriteria | Sangat Bagus | Cukup | Perlu Peningkatan | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| | *Timeline* yang dideploy disajikan sebagai halaman GitHub | Kode belum lengkap dan belum dideploy | *Timeline* belum lengkap, belum diriset dengan baik dan belum dideploy | \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.it.md b/1-Introduction/2-history-of-ML/translations/assignment.it.md deleted file mode 100644 index 4de7ed14..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.it.md +++ /dev/null @@ -1,11 +0,0 @@ -# Creare una sequenza temporale - -## Istruzioni - -Usando [questo repository](https://github.com/Digital-Humanities-Toolkit/timeline-builder), si crei una sequenza temporale di alcuni aspetti della storia di algoritmi, matematica, statistica, AI o ML, o una combinazione di questi. Ci si può concentrare su una persona, un'idea o un lungo lasso di tempo di pensiero. Ci si assicuri di aggiungere elementi multimediali. - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| | Una sequenza temporale distribuita viene presentata come una pagina GitHub | Il codice è incompleto e non è stato distribuito | La sequenza temporale è incompleta, non ben studiata e non implementata | diff --git a/1-Introduction/2-history-of-ML/translations/assignment.ja.md b/1-Introduction/2-history-of-ML/translations/assignment.ja.md deleted file mode 100644 index f5f78799..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.ja.md +++ /dev/null @@ -1,11 +0,0 @@ -# 年表を作成する - -## 指示 - -[このリポジトリ](https://github.com/Digital-Humanities-Toolkit/timeline-builder) を使って、アルゴリズム・数学・統計学・人工知能・機械学習、またはこれらの組み合わせに対して、歴史のひとつの側面に関する年表を作成してください。焦点を当てるのは、ひとりの人物・ひとつのアイディア・長期間にわたる思想のいずれのものでも構いません。マルチメディアの要素を必ず加えるようにしてください。 - -## 評価基準 - -| 基準 | 模範的 | 十分 | 要改善 | -| ---- | -------------------------------------- | ------------------------------------ | ------------------------------------------------------------ | -| | GitHub page に年表がデプロイされている | コードが未完成でデプロイされていない | 年表が未完成で、十分に調査されておらず、デプロイされていない | diff --git a/1-Introduction/2-history-of-ML/translations/assignment.ko.md b/1-Introduction/2-history-of-ML/translations/assignment.ko.md deleted file mode 100644 index 7d3d2fa7..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.ko.md +++ /dev/null @@ -1,11 +0,0 @@ -# 타임라인을 만들어 봅시다 - -## 설명 - -이 [저장소(repository)](https://github.com/Digital-Humanities-Toolkit/timeline-builder)를 사용해 알고리즘, 수학, 통계, 인공지능 또는 머신러닝 중 한 가지 이상의 연혁사를 조합하여 타임라인을 만들어 보세요. 한 명의 인물 또는 한 가지 아이디어를 집중적으로 다루셔도 되고, 여러 세기에 걸친 긴 연혁사를 다루시는 것도 좋습니다. 각 사건과 관련된 멀티미디어도 타임라인에 추가해 보시기 바랍니다. - -## 평가기준표 - -| 평가기준 | 모범 | 적절 | 향상 필요 | -| -------- | ----------------------------------------- | -------------------- | --------------------------------- | -| | 깃허브(GitHub) 페이지에 완성된 타임라인 공개 | 코드 미완성 및 미배포 | 타임라인 조사 미흡, 미완성 및 미배포 | diff --git a/1-Introduction/2-history-of-ML/translations/assignment.pt-br.md b/1-Introduction/2-history-of-ML/translations/assignment.pt-br.md deleted file mode 100644 index 9e1e6ce1..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.pt-br.md +++ /dev/null @@ -1,11 +0,0 @@ -# Crie uma linha do tempo - -## Instruções - -Usando [este repositório](https://github.com/Digital-Humanities-Toolkit/timeline-builder), crie uma linha do tempo de algum aspecto da história de algoritmos, matemática, estatística, AI ou ML, ou uma combinação de esses. Você pode se concentrar em uma pessoa, uma ideia ou um longo período de pensamento. Certifique-se de adicionar elementos de multimídia. - -## Rubrica - -| Critérios | Exemplar | Adequado | Precisa Melhorar | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| | Um cronograma implantado é apresentado como uma página do GitHub (GitHub Page) | O código está incompleto e não implementado | O cronograma está incompleto, não foi bem pesquisado e não implantado | \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.ru.md b/1-Introduction/2-history-of-ML/translations/assignment.ru.md deleted file mode 100644 index 7ee1b620..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.ru.md +++ /dev/null @@ -1,11 +0,0 @@ -# Создайте временную шкалу - -## Инструкции - -Используя [этот репозиторий](https://github.com/Digital-Humanities-Toolkit/timeline-builder), создайте временную шкалу какого-либо аспекта истории алгоритмов, математики, статистики, искусственного интеллекта или ML или их комбинации. Вы можете сосредоточиться на одном человеке, одной идее или на длительном промежутке времени. Обязательно добавьте мультимедийные элементы. - -## Рубрика - -| Критерии | Образцовый | Адекватный | Нуждается в улучшении | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| | Развернутая временная шкала представлена в виде страницы GitHub | Код неполон и не развернут | Временная шкала неполная, недостаточно изучена и не развернута | \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.tr.md b/1-Introduction/2-history-of-ML/translations/assignment.tr.md deleted file mode 100644 index f0e87763..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.tr.md +++ /dev/null @@ -1,11 +0,0 @@ -# Bir zaman çizelgesi oluşturun - -## Talimatlar - -[Bu repoyu](https://github.com/Digital-Humanities-Toolkit/timeline-builder) kullanarak; algoritmaların, matematiğin, istatistiğin, AI veya ML'in veya bunların bir kombinasyonunun tarihinin bazı yönlerinin bir zaman çizelgesini oluşturun. Bir kişiye, bir fikre veya bir düşüncenin uzun bir zamanına odaklanabilirsiniz. Multimedya öğeleri eklediğinizden emin olun. - -## Değerlendirme Listesi - -| | Takdir edilesi | Yeterli | İyileştirilmesi Lazım | -| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | -| Kriterler | Zaman çizelgesi bir GitHub sayfası olarak yayınlanmış | Kod eksik ve henüz yayınlanmamış | Zaman çizelgesi eksik, iyi araştırılmamış ve yayınlanmamış | \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.zh-tw.md b/1-Introduction/2-history-of-ML/translations/assignment.zh-tw.md deleted file mode 100644 index f372e6ae..00000000 --- a/1-Introduction/2-history-of-ML/translations/assignment.zh-tw.md +++ /dev/null @@ -1,12 +0,0 @@ - -# 建立一個時間軸 - -## 說明 - -使用這個 [倉庫](https://github.com/Digital-Humanities-Toolkit/timeline-builder),創建一個關於算法、數學、統計學、人工智能、機器學習的某個方面或者可以綜合多個以上學科來講。你可以著重介紹某個人,某個想法,或者一個經久不衰的思想。請確保添加了多媒體元素在你的時間線中。 - -## 評判標準 - -| 標準 | 優秀 | 中規中矩 | 仍需努力 | -| ------------ | ---------------------------------- | ---------------------- | ------------------------------------------ | -| | 有一個用 GitHub page 展示的 timeline | 代碼還不完整並且沒有部署 | 時間線不完整,沒有經過充分的研究,並且沒有部署 | \ No newline at end of file diff --git a/1-Introduction/3-fairness/translations/README.es.md b/1-Introduction/3-fairness/translations/README.es.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.fr.md b/1-Introduction/3-fairness/translations/README.fr.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.id.md b/1-Introduction/3-fairness/translations/README.id.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.it.md b/1-Introduction/3-fairness/translations/README.it.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.ja.md b/1-Introduction/3-fairness/translations/README.ja.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.ko.md b/1-Introduction/3-fairness/translations/README.ko.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.pt-br.md b/1-Introduction/3-fairness/translations/README.pt-br.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.zh-cn.md b/1-Introduction/3-fairness/translations/README.zh-cn.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/README.zh-tw.md b/1-Introduction/3-fairness/translations/README.zh-tw.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.es.md b/1-Introduction/3-fairness/translations/assignment.es.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.fr.md b/1-Introduction/3-fairness/translations/assignment.fr.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.id.md b/1-Introduction/3-fairness/translations/assignment.id.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.it.md b/1-Introduction/3-fairness/translations/assignment.it.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.ja.md b/1-Introduction/3-fairness/translations/assignment.ja.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.ko.md b/1-Introduction/3-fairness/translations/assignment.ko.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.pt-br.md b/1-Introduction/3-fairness/translations/assignment.pt-br.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.zh-cn.md b/1-Introduction/3-fairness/translations/assignment.zh-cn.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/3-fairness/translations/assignment.zh-tw.md b/1-Introduction/3-fairness/translations/assignment.zh-tw.md deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Introduction/4-techniques-of-ML/translations/README.es.md b/1-Introduction/4-techniques-of-ML/translations/README.es.md deleted file mode 100755 index 75828793..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.es.md +++ /dev/null @@ -1,112 +0,0 @@ -# Técnicas de Machine Learning - -El proceso de creación, uso y mantenimiento de modelos de machine learning, y los datos que se utilizan, es un proceso muy diferente de muchos otros flujos de trabajo de desarrollo. En esta lección, demistificaremos el proceso y describiremos las principales técnicas que necesita saber. Vas a: - -- Comprender los procesos que sustentan el machine learning a un alto nivel. -- Explorar conceptos básicos como 'modelos', 'predicciones', y 'datos de entrenamiento' - - -## [Cuestionario previo a la conferencia](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7?loc=es) -## Introducción - -A un alto nivel, el arte de crear procesos de machine learning (ML) se compone de una serie de pasos: - -1. **Decidir sobre la pregunta**. La mayoría de los procesos de ML, comienzan por hacer una pregunta que no puede ser respondida por un simple programa condicional o un motor basado en reglas. Esas preguntas a menudo giran en torno a predicciones basadas en una recopilación de datos. -2. **Recopile y prepare datos**. Para poder responder a su pregunta, necesita datos. La calidad y, a veces, cantidad de sus datos determinarán que tan bien puede responder a su pregunta inicial. La visualización de datos es un aspecto importante de esta fase. Esta fase también incluye dividir los datos en un grupo de entrenamiento y pruebas para construir un modelo. -3. **Elige un método de entrenamiento**. Dependiendo de su pregunta y la naturaleza de sus datos, debe elegir cómo desea entrenar un modelo para reflejar mejor sus datos y hacer predicciones precisas contra ellos. Esta es la parte de su proceso de ML que requiere experiencia específica y, a menudo, una cantidad considerable de experimentación. -4. **Entrena el modelo**. Usando sus datos de entrenamiento, usará varios algoritmos para entrenar un modelo para reconocer patrones en los datos. El modelo puede aprovechar las ponderaciones internas que se pueden ajustar para privilegiar ciertas partes de los datos sobre otras para construir un modelo mejor. -5. **Evaluar el modelo**. Utiliza datos nunca antes vistos (sus datos de prueba) de su conjunto recopilado para ver cómo se está desempeñando el modelo. -6. **Ajuste de parámetros**. Según el rendimiento de su modelo, puede rehacer el proceso utilizando diferentes parámetros, o variables, que controlan el comportamiento de los algoritmos utilizados para entrenar el modelo. -7. **Predecir**. Utilice nuevas entradas para probar la precisión de su modelo. - -## Qué preguntas hacer - -Las computadoras son particularmente hábiles para descubrir patrones ocultos en los datos. Esta utlidad es muy útil para los investigadores que tienen preguntas sobre un dominio determinado que no pueden responderse fácilmente mediante la creación de un motor de reglas basadas en condicionales. Dada una tarea actuarial, por ejemplo, un científico de datos podría construir reglas creadas manualmente sobre la mortalidad de los fumadores frente a los no fumadores. - -Sin embargo, cuando se incorporan muchas otras variables a la ecuación, un modelo de ML podría resultar más eficiente para predecir las tasas de mortalidad futuras en función de los antecedentes de salud. Un ejemplo más alegre podría hacer predicciones meteorológicas para el mes de abril en una ubicación determinada que incluya latitud, longitud, cambio climático, proximidad al océano, patrones de la corriente en chorro, y más. - -✅ Esta [presentación de diapositivas](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos ofrece una perspectiva histórica del uso de ML en el análisis meteorológico. - -## Tarea previas a la construcción - -Antes de comenzar a construir su modelo, hay varias tareas que debe completar. Para examinar su pregunta y formar una hipótesis basada en las predicciones de su modelo, debe identificar y configurar varios elementos. - -### Datos - -Para poder responder su pregunta con algún tipo de certeza, necesita una buena cantidad de datos del tipo correcto. -Hay dos cosas que debe hacer en este punto: - -- **Recolectar datos**. Teniendo en cuenta la lección anterior sobre la equidad en el análisis de datos, recopile sus datos con cuidado. Tenga en cuenta la fuente de estos datos, cualquier sesgo inherente que pueda tener y documente su origen. -- **Preparar datos**. Hay varios pasos en el proceso de preparación de datos. Podría necesitar recopilar datos y normalizarlos si provienen de diversas fuentes. Puede mejorar la calidad y cantidad de los datos mediante varios métodos, como convertir strings en números (como hacemos en [Clustering](../../5-Clustering/1-Visualize/README.md)). También puede generar nuevos datos, basados en los originales (como hacemos en [Clasificación](../../4-Classification/1-Introduction/README.md)). Puede limpiar y editar los datos (como lo haremos antes de la lección [Web App](../../3-Web-App/README.md)). Por último, es posible que también deba aleatorizarlo y mezclarlo, según sus técnicas de entrenamiento. - -✅ Despúes de recopilar y procesar sus datos, tómese un momento para ver si su forma le permitirá responder a su pregunta. ¡Puede ser que los datos no funcionen bien en su tarea dada, como descubriremos en nuestras lecciones de[Clustering](../../5-Clustering/1-Visualize/README.md)! - -### Características y destino - -Una característica es una propiedad medible de los datos. En muchos conjuntos de datos se expresa como un encabezado de columna como 'date' 'size' o 'color'. La variable de entidad, normalmente representada como `X` en el código, representa la variable de entrada que se utilizará para entrenar el modelo. - -Un objetivo es una cosa que está tratando de predecir. Target generalmente representado como `y` en el código, representa la respuesta a la pregunta que está tratando de hacer de sus datos: en diciembre, ¿qué color de calabazas serán más baratas?; en San Francisco, ¿qué barrios tendrán el mejor precio de bienes raíces? A veces, target también se conoce como atributo label. - -### Seleccionando su variable característica - -🎓 **Selección y extracción de características** ¿Cómo sabe que variable elegir al construir un modelo? Probablemente pasará por un proceso de selección o extracción de características para elegir las variables correctas para un mayor rendimiento del modelo. Sin embargo, no son lo mismo: "La extracción de características crea nuevas características a partir de funciones de las características originales, mientras que la selección de características devuelve un subconjunto de las características." ([fuente](https://wikipedia.org/wiki/Feature_selection)) - -### Visualiza tus datos - -Un aspecto importante del conjunto de herramientas del científico de datos es el poder de visualizar datos utilizando varias bibliotecas excelentes como Seaborn o MatPlotLib. Representar sus datos visualmente puede permitirle descubrir correlaciones ocultas que puede aprovechar. Sus visualizaciones también pueden ayudarlo a descubrir sesgos o datos desequilibrados. (como descubrimos en [Clasificación](../../4-Classification/2-Classifiers-1/README.md)). - -### Divide tu conjunto de datos - -Antes del entrenamiento, debe dividir su conjunto de datos en dos o más partes de tamaño desigual pero que representen bien los datos. - -- **Entrenamiento**. Esta parte del conjunto de datos se ajusta a su modelo para entrenarlo. Este conjunto constituye la mayor parte del conjunto de datos original. -- **Pruebas**. Un conjunto de datos de pruebas es un grupo independiente de datos, a menudo recopilado a partir de los datos originales, que se utiliza para confirmar el rendimiento del modelo construido. -- **Validación**. Un conjunto de validación es un pequeño grupo independiente de ejemplos que se usa para ajustar los hiperparámetros o la arquitectura del modelo para mejorar el modelo. Dependiendo del tamaño de su conjunto de datos y de la pregunta que se está haciendo, es posible que no necesite crear este tercer conjunto (como notamos en [Pronóstico se series de tiempo](../../7-TimeSeries/1-Introduction/README.md)). - -## Contruye un modelo - -Usando sus datos de entrenamiento, su objetivo es construir un modelo, o una representación estadística de sus datos, utilizando varios algoritmos para **entrenarlo**. El entrenamiento de un modelo lo expone a los datos y le permite hacer suposiciones sobre los patrones percibidos que descubre, valida y rechaza. - -### Decide un método de entrenamiento - -Dependiendo de su pregunta y la naturaleza de sus datos, elegirá un método para entrenarlos. Echando un vistazo a la [documentación de Scikit-learn ](https://scikit-learn.org/stable/user_guide.html) - que usamos en este curso - puede explorar muchas formas de entrenar un modelo. Dependiendo de su experiencia, es posible que deba probar varios métodos diferentes para construir el mejor modelo. Es probable que pase por un proceso en el que los científicos de datos evalúan el rendimiento de un modelo alimentándolo con datos no vistos anteriormente por el modelo, verificando la precisión, el sesgo, y otros problemas que degradan la calidad, y seleccionando el método de entrenamieto más apropiado para la tarea en cuestión. -### Entrena un modelo - -Armado con sus datos de entrenamiento, está listo para "ajustarlo" para crear un modelo. Notará que en muchas bibliotecas de ML encontrará un método de la forma 'model.fit' - es en este momento que envía su variable de característica como una matriz de valores (generalmente `X`) y una variable de destino (generalmente `y`). - -### Evaluar el modelo - -Una vez que se completa el proceso de entrenamiento (puede tomar muchas iteraciones, o 'épocas', entrenar un modelo de gran tamaño), podrá evaluar la calidad del modelo utilizando datos de prueba para medir su rendimiento. Estos datos son un subconjunto de los datos originales que el modelo no ha analizado previamente. Puede imprimir una tabla de métricas sobre la calidad de su modelo. - -🎓 **Ajuste del modelo (Model fitting)** - -En el contexto del machine learning, el ajuste del modelo se refiere a la precisión de la función subyacente del modelo cuando intenta analizar datos con los que no está familiarizado. - -🎓 **Ajuste insuficiente (Underfitting)** y **sobreajuste (overfitting)** son problemas comunes que degradan la calidad del modelo, ya que el modelo no encaja suficientemente bien, o encaja demasiado bien. Esto hace que el modelo haga predicciones demasiado estrechamente alineadas o demasiado poco alineadas con sus datos de entrenamiento. Un modelo sobreajustado (overfitting) predice demasiado bien los datos de entrenamiento porque ha aprendido demasiado bien los detalles de los datos y el ruido. Un modelo insuficientemente ajustado (Underfitting) es impreciso, ya que ni puede analizar con precisión sus datos de entrenamiento ni los datos que aún no ha 'visto'. - -![Sobreajuste de un modelo](images/overfitting.png) -> Infografía de [Jen Looper](https://twitter.com/jenlooper) - -## Ajuste de parámetros - -Una vez que haya completado su entrenamiento inicial, observe la calidad del modelo y considere mejorarlo ajustando sus 'hiperparámetros'. Lea más sobre el proceso [en la documentación](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). - -## Predicción - -Este es el momento en el que puede usar datos completamente nuevos para probar la precisión de su modelo. En una configuración de ML aplicado, donde está creando activos web para usar el modelo en producción, este proceso puede implicar la recopilación de la entrada del usuario (presionar un botón, por ejemplo) para establecer una variable y enviarla al modelo para la inferencia o evaluación. -En estas lecciones, descubrirá cómo utilizar estos pasos para preparar, construir, probar, evaluar, y predecir - todos los gestos de un científico de datos y más, a medida que avanza en su viaje para convertirse en un ingeniero de machine learning 'full stack'. ---- - -## 🚀Desafío - -Dibuje un diagrama de flujos que refleje los pasos de practicante de ML. ¿Dónde te ves ahora mismo en el proceso? ¿Dónde predice que encontrará dificultades? ¿Qué te parece fácil? - -## [Cuestionario posterior a la conferencia](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8?loc=es) - -## Revisión & Autoestudio - -Busque entrevistas en línea con científicos de datos que analicen su trabajo diario. Aquí está [uno](https://www.youtube.com/watch?v=Z3IjgbbCEfs). - -## Asignación - -[Entrevistar a un científico de datos](assignment.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.id.md b/1-Introduction/4-techniques-of-ML/translations/README.id.md deleted file mode 100644 index e745955f..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.id.md +++ /dev/null @@ -1,111 +0,0 @@ -# Teknik-teknik Machine Learning - -Proses membangun, menggunakan, dan memelihara model machine learning dan data yang digunakan adalah proses yang sangat berbeda dari banyak alur kerja pengembangan lainnya. Dalam pelajaran ini, kita akan mengungkap prosesnya dan menguraikan teknik utama yang perlu Kamu ketahui. Kamu akan: - -- Memahami gambaran dari proses yang mendasari machine learning. -- Menjelajahi konsep dasar seperti '*models*', '*predictions*', dan '*training data*'. - -## [Quiz Pra-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/) -## Pengantar - -Gambaran membuat proses machine learning (ML) terdiri dari sejumlah langkah: - -1. **Menentukan pertanyaan**. Sebagian besar proses ML dimulai dengan mengajukan pertanyaan yang tidak dapat dijawab oleh program kondisional sederhana atau mesin berbasis aturan (*rules-based engine*). Pertanyaan-pertanyaan ini sering berkisar seputar prediksi berdasarkan kumpulan data. -2. **Mengumpulkan dan menyiapkan data**. Untuk dapat menjawab pertanyaanmu, Kamu memerlukan data. Bagaimana kualitas dan terkadang kuantitas data kamu akan menentukan seberapa baik kamu dapat menjawab pertanyaan awal kamu. Memvisualisasikan data merupakan aspek penting dari fase ini. Fase ini juga mencakup pemisahan data menjadi kelompok *training* dan *testing* untuk membangun model. -3. **Memilih metode training**. Tergantung dari pertanyaan dan sifat datamu, Kamu perlu memilih bagaimana kamu ingin men-training sebuah model untuk mencerminkan data kamu dengan baik dan membuat prediksi yang akurat terhadapnya. Ini adalah bagian dari proses ML yang membutuhkan keahlian khusus dan seringkali perlu banyak eksperimen. -4. **Melatih model**. Dengan menggunakan data *training*, kamu akan menggunakan berbagai algoritma untuk melatih model guna mengenali pola dalam data. Modelnya mungkin bisa memanfaatkan *internal weight* yang dapat disesuaikan untuk memberi hak istimewa pada bagian tertentu dari data dibandingkan bagian lainnya untuk membangun model yang lebih baik. -5. **Mengevaluasi model**. Gunakan data yang belum pernah dilihat sebelumnya (data *testing*) untuk melihat bagaimana kinerja model. -6. **Parameter tuning**. Berdasarkan kinerja modelmu, Kamu dapat mengulang prosesnya menggunakan parameter atau variabel yang berbeda, yang mengontrol perilaku algoritma yang digunakan untuk melatih model. -7. **Prediksi**. Gunakan input baru untuk menguji keakuratan model kamu. - -## Pertanyaan apa yang harus ditanyakan? - -Komputer sangat ahli dalam menemukan pola tersembunyi dalam data. Hal ini sangat membantu peneliti yang memiliki pertanyaan tentang domain tertentu yang tidak dapat dijawab dengan mudah dari hanya membuat mesin berbasis aturan kondisional (*conditionally-based rules engine*). Untuk tugas aktuaria misalnya, seorang data scientist mungkin dapat membuat aturan secara manual seputar mortalitas perokok vs non-perokok. - -Namun, ketika banyak variabel lain dimasukkan ke dalam persamaan, model ML mungkin terbukti lebih efisien untuk memprediksi tingkat mortalitas di masa depan berdasarkan riwayat kesehatan masa lalu. Contoh yang lebih menyenangkan mungkin membuat prediksi cuaca untuk bulan April di lokasi tertentu berdasarkan data yang mencakup garis lintang, garis bujur, perubahan iklim, kedekatan dengan laut, pola aliran udara (Jet Stream), dan banyak lagi. - -✅ [Slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ini menawarkan perspektif historis pada model cuaca dengan menggunakan ML dalam analisis cuaca. - -## Tugas Pra-Pembuatan - -Sebelum mulai membangun model kamu, ada beberapa tugas yang harus kamu selesaikan. Untuk menguji pertanyaan kamu dan membentuk hipotesis berdasarkan prediksi model, Kamu perlu mengidentifikasi dan mengonfigurasi beberapa elemen. - -### Data - -Untuk dapat menjawab pertanyaan kamu dengan kepastian, Kamu memerlukan sejumlah besar data dengan jenis yang tepat. Ada dua hal yang perlu kamu lakukan pada saat ini: - -- **Mengumpulkan data**. Ingat pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data kamu dengan hati-hati. Waspadai sumber datanya, bias bawaan apa pun yang mungkin dimiliki, dan dokumentasikan asalnya. -- **Menyiapkan data**. Ada beberapa langkah dalam proses persiapan data. Kamu mungkin perlu menyusun data dan melakukan normalisasi jika berasal dari berbagai sumber. Kamu dapat meningkatkan kualitas dan kuantitas data melalui berbagai metode seperti mengonversi string menjadi angka (seperti yang kita lakukan di [Clustering](../../5-Clustering/1-Visualize/translations/README.id.md)). Kamu mungkin juga bisa membuat data baru berdasarkan data yang asli (seperti yang kita lakukan di [Classification](../../4-Classification/1-Introduction/translations/README.id.md)). Kamu bisa membersihkan dan mengubah data (seperti yang kita lakukan sebelum pelajaran [Web App](../3-Web-App/translations/README.id.md)). Terakhir, Kamu mungkin juga perlu mengacaknya dan mengubah urutannya, tergantung pada teknik *training* kamu. - -✅ Setelah mengumpulkan dan memproses data kamu, luangkan waktu sejenak untuk melihat apakah bentuknya memungkinkan kamu untuk menjawab pertanyaan yang kamu maksudkan. Mungkin data tidak akan berkinerja baik dalam tugas yang kamu berikan, seperti yang kita temukan dalam pelajaran [Clustering](../../5-Clustering/1-Visualize/translations/README.id.md). - -### Fitur dan Target - -Fitur adalah properti terukur dari data Anda. Dalam banyak set data, data tersebut dinyatakan sebagai judul kolom seperti 'date' 'size' atau 'color'. Variabel fitur Anda, biasanya direpresentasikan sebagai `X` dalam kode, mewakili variabel input yang akan digunakan untuk melatih model. - -A target is a thing you are trying to predict. Target usually represented as `y` in code, represents the answer to the question you are trying to ask of your data: in December, what color pumpkins will be cheapest? in San Francisco, what neighborhoods will have the best real estate price? Sometimes target is also referred as label attribute. - -### Memilih variabel fiturmu - -🎓 **Feature Selection dan Feature Extraction** Bagaimana kamu tahu variabel mana yang harus dipilih saat membangun model? Kamu mungkin akan melalui proses pemilihan fitur (*Feature Selection*) atau ekstraksi fitur (*Feature Extraction*) untuk memilih variabel yang tepat untuk membuat model yang berkinerja paling baik. Namun, keduanya tidak sama: "Ekstraksi fitur membuat fitur baru dari fungsi fitur asli, sedangkan pemilihan fitur mengembalikan subset fitur." ([sumber](https://wikipedia.org/wiki/Feature_selection)) -### Visualisasikan datamu - -Aspek penting dari toolkit data scientist adalah kemampuan untuk memvisualisasikan data menggunakan beberapa *library* seperti Seaborn atau MatPlotLib. Merepresentasikan data kamu secara visual memungkinkan kamu mengungkap korelasi tersembunyi yang dapat kamu manfaatkan. Visualisasimu mungkin juga membantu kamu mengungkap data yang bias atau tidak seimbang (seperti yang kita temukan dalam [Classification](../../4-Classification/2-Classifiers-1/translations/README.id.md)). -### Membagi dataset - -Sebelum memulai *training*, Kamu perlu membagi dataset menjadi dua atau lebih bagian dengan ukuran yang tidak sama tapi masih mewakili data dengan baik. - -- **Training**. Bagian dataset ini digunakan untuk men-training model kamu. Bagian dataset ini merupakan mayoritas dari dataset asli. -- **Testing**. Sebuah dataset tes adalah kelompok data independen, seringkali dikumpulkan dari data yang asli yang akan digunakan untuk mengkonfirmasi kinerja dari model yang dibuat. -- **Validating**. Dataset validasi adalah kumpulan contoh mandiri yang lebih kecil yang kamu gunakan untuk menyetel hyperparameter atau arsitektur model untuk meningkatkan model. Tergantung dari ukuran data dan pertanyaan yang kamu ajukan, Kamu mungkin tidak perlu membuat dataset ketiga ini (seperti yang kita catat dalam [Time Series Forecasting](../7-TimeSeries/1-Introduction/translations/README.id.md)). - -## Membuat sebuah model - -Dengan menggunakan data *training*, tujuan kamu adalah membuat model atau representasi statistik data kamu menggunakan berbagai algoritma untuk **melatihnya**. Melatih model berarti mengeksposnya dengan data dan mengizinkannya membuat asumsi tentang pola yang ditemukan, divalidasi, dan diterima atau ditolak. - -### Tentukan metode training - -Tergantung dari pertanyaan dan sifat datamu, Kamu akan memilih metode untuk melatihnya. Buka dokumentasi [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) yang kita gunakan dalam pelajaran ini, kamu bisa menjelajahi banyak cara untuk melatih sebuah model. Tergantung dari pengalamanmu, kamu mungkin perlu mencoba beberapa metode yang berbeda untuk membuat model yang terbaik. Kemungkinan kamu akan melalui proses di mana data scientist mengevaluasi kinerja model dengan memasukkan data yang belum pernah dilihat, memeriksa akurasi, bias, dan masalah penurunan kualitas lainnya, dan memilih metode training yang paling tepat untuk tugas yang ada. - -### Melatih sebuah model - -Berbekan dengan data pelatihan Anda, Anda siap untuk 'menyesuaikan' untuk membuat model. Anda akan melihat bahwa di banyak perpustakaan ML Anda akan menemukan kode 'model.fit' - saat inilah Anda mengirim variabel fitur Anda sebagai array nilai (biasanya `X`) dan variabel target (biasanya `y`). - -### Mengevaluasi model - -Setelah proses *training* selesai (ini mungkin membutuhkan banyak iterasi, atau 'epoch', untuk melatih model besar), Kamu akan dapat mengevaluasi kualitas model dengan menggunakan data tes untuk mengukur kinerjanya. Data ini merupakan subset dari data asli yang modelnya belum pernah dianalisis sebelumnya. Kamu dapat mencetak tabel metrik tentang kualitas model kamu. - -🎓 **Model fitting** - -Dalam konteks machine learning, *model fitting* mengacu pada keakuratan dari fungsi yang mendasari model saat mencoba menganalisis data yang tidak familiar. - -🎓 **Underfitting** dan **overfitting** adalah masalah umum yang menurunkan kualitas model, karena model tidak cukup akurat atau terlalu akurat. Hal ini menyebabkan model membuat prediksi yang terlalu selaras atau tidak cukup selaras dengan data trainingnya. Model overfit memprediksi data *training* terlalu baik karena telah mempelajari detail dan noise data dengan terlalu baik. Model underfit tidak akurat karena tidak dapat menganalisis data *training* atau data yang belum pernah dilihat sebelumnya secara akurat. - -![overfitting model](../images/overfitting.png) -> Infografis oleh [Jen Looper](https://twitter.com/jenlooper) - -## Parameter tuning - -Setelah *training* awal selesai, amati kualitas model dan pertimbangkan untuk meningkatkannya dengan mengubah 'hyperparameter' nya. Baca lebih lanjut tentang prosesnya [di dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). - -## Prediksi - -Ini adalah saat di mana Kamu dapat menggunakan data yang sama sekali baru untuk menguji akurasi model kamu. Dalam setelan ML 'terapan', di mana kamu membangun aset web untuk menggunakan modelnya dalam produksi, proses ini mungkin melibatkan pengumpulan input pengguna (misalnya menekan tombol) untuk menyetel variabel dan mengirimkannya ke model untuk inferensi, atau evaluasi. - -Dalam pelajaran ini, Kamu akan menemukan cara untuk menggunakan langkah-langkah ini untuk mempersiapkan, membangun, menguji, mengevaluasi, dan memprediksi - semua gestur data scientist dan banyak lagi, seiring kemajuanmu dalam perjalanan menjadi 'full stack' ML engineer. - ---- - -## 🚀Tantangan - -Gambarlah sebuah flow chart yang mencerminkan langkah-langkah seorang praktisi ML. Di mana kamu melihat diri kamu saat ini dalam prosesnya? Di mana kamu memprediksi kamu akan menemukan kesulitan? Apa yang tampak mudah bagi kamu? - -## [Quiz Pra-Pelajaran](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/) - -## Ulasan & Belajar Mandiri - -Cari di Internet mengenai wawancara dengan data scientist yang mendiskusikan pekerjaan sehari-hari mereka. Ini [salah satunya](https://www.youtube.com/watch?v=Z3IjgbbCEfs). - -## Tugas - -[Wawancara dengan data scientist](assignment.id.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.it.md b/1-Introduction/4-techniques-of-ML/translations/README.it.md deleted file mode 100644 index d43f3b52..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.it.md +++ /dev/null @@ -1,114 +0,0 @@ -# Tecniche di Machine Learning - -Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà: - -- Comprendere i processi ad alto livello alla base di machine learning. -- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". - -## [Quiz pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/?loc=it) - -## Introduzione - -Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi: - -1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati. -2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello. -3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. -4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore. -5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello. -6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. -7. **Prevedere**. Usare nuovi input per testare la precisione del modello. - -## Che domanda fare - -I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori. - -Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora. - -✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica. - -## Attività di pre-costruzione - -Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi. - -### Dati - -Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto: - -- **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine. -- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento. - -✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)! - -### Caratteristiche e destinazione - -Una caratteristica è una proprietà misurabile dei dati. In molti set di dati è espresso come intestazione di colonna come 'date' 'size' o 'color'. La variabile di caratteristica, solitamente rappresentata come `X` nel codice, rappresenta la variabile di input che verrà utilizzata per il training del modello. - -Un obiettivo è una cosa che stai cercando di prevedere. Target solitamente rappresentato come `y` nel codice, rappresenta la risposta alla domanda che stai cercando di porre dei tuoi dati: a dicembre, di che colore saranno le zucche più economiche? a San Francisco, quali quartieri avranno il miglior prezzo immobiliare? A volte la destinazione viene anche definita attributo label. - -### Selezione della variabile caratteristica - -🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche)) - -### Visualizzare i dati - -Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)). - -### Dividere l'insieme di dati - -Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati. - -- **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale. -- **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato. -- **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)). - -## Costruire un modello - -Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta. - -### Decidere un metodo di addestramento - -A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere. - -### Allenare un modello - -Armati dei tuoi dati di allenamento, sei pronto a "adattarlo" per creare un modello. Noterai che in molte librerie ML troverai il codice "model.fit" - è in questo momento che invii la tua variabile di funzionalità come matrice di valori (in genere `X`) e una variabile di destinazione (di solito `y`). - -### Valutare il modello - -Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello. - -🎓 **Adattamento del modello** - -Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. - -🎓 **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto". - -![modello sovraaddestrato](../images/overfitting.png) -> Infografica di [Jen Looper](https://twitter.com/jenlooper) - -## Sintonia dei parametri - -Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). - -## Previsione - -Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione. - -In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack". - ---- - -## 🚀 Sfida - -Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile? - -## [Quiz post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/?loc=it) - -## Revisione e Auto Apprendimento - -Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). - -## Compito - -[Intervista a un data scientist](assignment.it.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.ja.md b/1-Introduction/4-techniques-of-ML/translations/README.ja.md deleted file mode 100644 index d326dc6c..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.ja.md +++ /dev/null @@ -1,114 +0,0 @@ -# 機械学習の手法 - -機械学習モデルやそのモデルが使用するデータを構築・使用・管理するプロセスは、他の多くの開発ワークフローとは全く異なるものです。このレッスンでは、このプロセスを明快にして、知っておくべき主な手法の概要をまとめます。あなたは、 - -- 機械学習を支えるプロセスを高い水準で理解します。 -- 「モデル」「予測」「訓練データ」などの基本的な概念を調べます。 - -## [講義前の小テスト](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7?loc=ja) - -## 導入 - -大まかに言うと、機械学習 (Machine Learning: ML) プロセスを作成する技術はいくつかのステップで構成されています。 - -1. **質問を決める**。ほとんどの機械学習プロセスは、単純な条件のプログラムやルールベースのエンジンでは答えられないような質問をすることから始まります。このような質問は、データの集合を使った予測を中心にされることが多いです。 -2. **データを集めて準備する**。質問に答えるためにはデータが必要です。データの質と、ときには量が、最初の質問にどれだけうまく答えられるかを決めます。データの可視化がこのフェーズの重要な側面です。モデルを構築するためにデータを訓練グループとテストグループに分けることもこのフェーズに含みます。 -3. **学習方法を選ぶ**。質問の内容やデータの性質に応じて、データを最も良く反映して正確に予測できるモデルを、どのように学習するかを選ぶ必要があります。これは機械学習プロセスの中でも、特定の専門知識と、多くの場合はかなりの試行回数が必要になる部分です。 -4. **モデルを学習する**。データのパターンを認識するモデルを学習するために、訓練データと様々なアルゴリズムを使います。モデルはより良いモデルを構築するために、データの特定の部分を優先するように調整できる内部の重みを活用するかもしれません。 -5. **モデルを評価する**。モデルがどのように動作しているかを確認するために、集めたデータの中からまだ見たことのないもの(テストデータ)を使います。 -6. **パラメータチューニング**。モデルの性能によっては、モデルを学習するために使われる、各アルゴリズムの挙動を制御するパラメータや変数を変更してプロセスをやり直すこともできます。 -7. **予測する**。モデルの精度をテストするために新しい入力を使います。 - -## どのような質問をすれば良いか - -コンピュータはデータの中に隠れているパターンを見つけることがとても得意です。この有用性は、条件ベースのルールエンジンを作っても簡単には答えられないような、特定の領域に関する質問を持っている研究者にとって非常に役立ちます。たとえば、ある保険数理の問題があったとして、データサイエンティストは喫煙者と非喫煙者の死亡率に関する法則を自分の手だけでも作れるかもしれません。 - -しかし、他にも多くの変数が方程式に含まれる場合、過去の健康状態から将来の死亡率を予測する機械学習モデルの方が効率的かもしれません。もっと明るいテーマの例としては、緯度、経度、気候変動、海への近さ、ジェット気流のパターンなどのデータに基づいて、特定の場所における4月の天気を予測することができます。 - -✅ 気象モデルに関するこの [スライド](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) は、気象解析に機械学習を使う際の歴史的な考え方を示しています。 - -## 構築前のタスク - -モデルの構築を始める前に、いくつかのタスクを完了させる必要があります。質問をテストしたりモデルの予測に基づいた仮説を立てたりするためには、いくつかの要素を特定して設定する必要があります。 - -### データ - -質問に確実に答えるためには、適切な種類のデータが大量に必要になります。ここではやるべきことが2つあります。 - -- **データを集める**。データ解析における公平性に関する前回の講義を思い出しながら、慎重にデータを集めてください。特定のバイアスを持っているかもしれないデータのソースに注意し、それを記録しておいてください。 -- **データを準備する**。データを準備するプロセスにはいくつかのステップがあります。異なるソースからデータを集めた場合、照合と正規化が必要になるかもしれません。([クラスタリング](../../../5-Clustering/1-Visualize/README.md) で行っているように、)文字列を数値に変換するなどの様々な方法でデータの質と量を向上させることができます。([分類](../../../4-Classification/1-Introduction/README.md) で行っているように、)元のデータから新しいデータを生成することもできます。([Webアプリ](../../../3-Web-App/README.md) の講義の前に行うように、)データをクリーニングしたり編集したりすることができます。最後に、学習の手法によっては、ランダムにしたりシャッフルしたりする必要もあるかもしれません。 - -✅ データを集めて処理した後は、その形で意図した質問に対応できるかどうかを確認してみましょう。[クラスタリング](../../../5-Clustering/1-Visualize/README.md) の講義でわかるように、データは与えられたタスクに対して上手く機能しないかもしれません! - -### 機能とターゲット - -フィーチャは、データの測定可能なプロパティです。多くのデータセットでは、'日付' 'サイズ' や '色' のような列見出しとして表現されます。通常、コードでは `X` として表されるフィーチャ変数は、モデルのトレーニングに使用される入力変数を表します - -ターゲットは、予測しようとしているものです。ターゲットは通常、コードで`y`として表され、あなたのデータを尋ねようとしている質問に対する答えを表します:12月に、どの色のカボチャが最も安くなりますか?サンフランシスコでは、どの地域が最高の不動産価格を持つでしょうか?ターゲットはラベル属性とも呼ばれることもあります。 - -### 特徴量の選択 - -🎓 **特徴選択と特徴抽出** モデルを構築する際にどの変数を選ぶべきかは、どうすればわかるでしょうか?最も性能の高いモデルのためには、適した変数を選択する特徴選択や特徴抽出のプロセスをたどることになるでしょう。しかし、これらは同じものではありません。「特徴抽出は元の特徴の機能から新しい特徴を作成するのに対し、特徴選択は特徴の一部を返すものです。」 ([出典](https://wikipedia.org/wiki/Feature_selection)) - -### データを可視化する - -データサイエンティストの道具に関する重要な側面は、Seaborn や MatPlotLib などの優れたライブラリを使ってデータを可視化する力です。データを視覚的に表現することで、隠れた相関関係を見つけて活用できるかもしれません。また、([分類](../../../4-Classification/2-Classifiers-1/README.md) でわかるように、)視覚化することで、バイアスやバランシングされていないデータを見つけられるかもしれません。 - -### データセットを分割する - -学習の前にデータセットを2つ以上に分割して、それぞれがデータを表すのに十分かつ不均等な大きさにする必要があります。 - -- **学習**。データセットのこの部分は、モデルを学習するために適合させます。これは元のデータセットの大部分を占めます。 -- **テスト**。テストデータセットとは、構築したモデルの性能を確認するために使用する独立したデータグループのことで、多くの場合は元のデータから集められます。 -- **検証**。検証セットとは、さらに小さくて独立したサンプルの集合のことで、モデルを改善するためにハイパーパラメータや構造を調整する際に使用されます。([時系列予測](../../../7-TimeSeries/1-Introduction/README.md) に記載しているように、)データの大きさや質問の内容によっては、この3つ目のセットを作る必要はありません。 - -## モデルの構築 - -訓練データと様々なアルゴリズムを使った **学習** によって、モデルもしくはデータの統計的な表現を構築することが目標です。モデルを学習することで、データを扱えるようになったり、発見、検証、肯定または否定したパターンに関する仮説を立てることができたりします。 - -### 学習方法を決める - -質問の内容やデータの性質に応じて、モデルを学習する方法を選択します。このコースで使用する [Scikit-learn のドキュメント](https://scikit-learn.org/stable/user_guide.html) を見ると、モデルを学習する様々な方法を調べられます。経験次第では、最適なモデルを構築するためにいくつかの異なる方法を試す必要があるかもしれません。また、モデルが見たことのないデータを与えたり、質を下げている問題、精度、バイアスについて調べたり、タスクに対して最適な学習方法を選んだりすることで、データサイエンティストが行っている、モデルの性能を評価するプロセスを踏むことになるでしょう。 - -### モデルを学習する - -トレーニングデータを使用して、モデルを作成するために「フィット」する準備が整いました。多くの ML ライブラリでは、コード 'model.fit' が見つかります - この時点で、値の配列 (通常は `X`) とターゲット変数 (通常は `y`) として機能変数を送信します。 - -### モデルを評価する - -(大きなモデルを学習するには多くの反復(エポック)が必要になりますが、)学習プロセスが完了したら、テストデータを使ってモデルの質を評価することができます。このデータは元のデータのうち、モデルがそれまでに分析していないものです。モデルの質を表す指標の表を出力することができます。 - -🎓 **モデルフィッティング** - -機械学習におけるモデルフィッティングは、モデルがまだ知らないデータを分析する際の根本的な機能の精度を参照します。 - -🎓 **未学習** と **過学習** はモデルの質を下げる一般的な問題で、モデルが十分に適合していないか、または適合しすぎています。これによってモデルは訓練データに近すぎたり遠すぎたりする予測を行います。過学習モデルは、データの詳細やノイズもよく学習しているため、訓練データを上手く予測しすぎてしまいます。未学習モデルは、訓練データやまだ「見たことのない」データを正確に分析することができないため、精度が高くないです。 - -![過学習モデル](../images/overfitting.png) -> [Jen Looper](https://twitter.com/jenlooper) さんによる解説画像 - -## パラメータチューニング - -最初のトレーニングが完了したら、モデルの質を観察して、「ハイパーパラメータ」の調整によるモデルの改善を検討しましょう。このプロセスについては [ドキュメント](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) を読んでください。 - -## 予測 - -全く新しいデータを使ってモデルの精度をテストする瞬間です。本番環境でモデルを使用するためにWebアセットを構築するよう「適用された」機械学習の設定においては、推論や評価のためにモデルに渡したり、変数を設定したりするためにユーザの入力(ボタンの押下など)を収集することがこのプロセスに含まれるかもしれません。 - -この講義では、「フルスタック」の機械学習エンジニアになるための旅をしながら、準備・構築・テスト・評価・予測などのデータサイエンティストが行うすべてのステップの使い方を学びます。 - ---- - -## 🚀チャレンジ - -機械学習の学習者のステップを反映したフローチャートを描いてください。今の自分はこのプロセスのどこにいると思いますか?どこに困難があると予想しますか?あなたにとって簡単そうなことは何ですか? - -## [講義後の小テスト](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8?loc=ja) - -## 振り返りと自主学習 - -データサイエンティストが日々の仕事について話しているインタビューをネットで検索してみましょう。ひとつは [これ](https://www.youtube.com/watch?v=Z3IjgbbCEfs) です。 - -## 課題 - -[データサイエンティストにインタビューする](assignment.ja.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.ko.md b/1-Introduction/4-techniques-of-ML/translations/README.ko.md deleted file mode 100644 index 5b67f6ad..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.ko.md +++ /dev/null @@ -1,114 +0,0 @@ -# 머신러닝의 기술 - -머신러닝 모델과 이를 사용하는 데이터를 구축, 사용, 그리고 관리하는 프로세스는 많은 타 개발 워크플로우와 매우 다른 프로세스입니다. 이 강의에서, 프로세스를 이해하고, 알아야 할 주요 기술을 간단히 설명합니다: - -- 머신러닝을 받쳐주는 프로세스를 고수준에서 이해합니다. -- 'models', 'predictions', 그리고 'training data'와 같은 기초 개념을 탐색합니다. - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/) - -## 소개 - -고수준에서, 머신러닝 (ML) 프로세스를 만드는 기술은 여러 단계로 구성됩니다: - -1. **질문 결정하기**. 대부분 ML 프로세스는 간단 조건 프로그램 또는 룰-베이스 엔진으로 대답할 수 없는 질문을 하는 것으로 시작합니다. 이 질문은 가끔 데이터 셋을 기반으로 한 예측을 중심으로 진행됩니다. -2. **데이터 수집 및 준비하기**. 질문에 대답하려면, 데이터가 필요합니다. 데이터의 품질과, 때때로, 양에 따라 초기 질문에 잘 대답할 수 있는 지 결정됩니다. 데이터 시각화는 이 측면에서 중요합니다. 이 단계에서 데이터를 훈련과 테스트 그룹으로 분할하여 모델을 구축하는 게 포함됩니다. -3. **학습 방식 선택하기**. 질문과 데이터의 특성에 따라, 데이터를 가장 잘 반영하고 정확한 예측을 할 수 있게 훈련하는 방법을 선택해야 합니다. 특정 전문 지식과, 지속적으로, 많은 실험이 필요한 ML 프로세스의 일부분입니다. -4. **모델 학습하기**. 학습 데이터로, 다양한 알고리즘을 사용하여 데이터의 패턴을 인식하게 모델을 학습시킵니다. 모델을 더 좋게 만들기 위하여 데이터의 특정 부분을 타 부분보다 먼저 하도록 조정할 수 있도록 내부 가중치를 활용할 수 있습니다. -5. **모델 평가하기**. 수집한 셋에서 이전에 본 적 없는 데이터 (테스트 데이터)로 모델의 성능을 확인합니다. -6. **파라미터 튜닝하기**. 모델의 성능을 기반해서, 모델 학습으로 알고리즘의 동작을 컨트롤하는 다른 파라미터, 또는 변수를, 사용해서 프로세스를 다시 실행할 수 있습니다. -7. **예측하기**. 모델의 정확성을 새로운 입력으로 테스트합니다. - -## 물어볼 질문하기 - -컴퓨터는 데이터에서 숨겨진 패턴 찾는 것을 잘합니다. 유틸리티는 조건-기반 룰 엔진을 만들어서 쉽게 답할 수 없는 도메인에 대해 질문하는 연구원에게 매우 도움이 됩니다. 예를 들어서, actuarial 작업이 주어지면, 데이터 사이언티스트는 흡연자와 비흡연자의 사망률에 대하여 수작업 룰을 작성할 수 있습니다. - -많은 다른 변수가 방정식에 포함되면, ML 모델이 과거 건강기록을 기반으로 미래 사망률을 예측하는 데에 효율적이라고 검증할 수 있습니다. 유쾌한 예시로 위도, 경도, 기후 변화, proximity to the ocean, 제트 기류의 패턴을 포함한 데이터 기반으로 주어진 위치에서 4월의 날씨를 예측하는 것입니다. - -✅ 날씨 모델에 대한 [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)은 날씨 분석에서 ML을 사용한 역사적 관점을 제공합니다. - -## 작업 사전-구축하기 - -모델을 만들기 전에, 완료해야 할 몇가지 작업이 더 있습니다. 질문을 테스트하고 모델 예측을 기반으로 가설 구성하려면, 여러 요소를 식별하고 구성해야 합니다. - -### 데이터 - -어떠한 종류의 질문을 대답하려면, 올바른 타입의 데이터가 필요합니다. 이 포인트에서 필요한 두 가지가 있습니다: - -- **데이터 수집**. 데이터 분석의 공정도를 설명한 이전 강의를 기억하고, 데이터를 조심히 수집합니다. 데이터의 출처와, 내재적 편견을 알고, 출처를 문서화합니다. -- **데이터 준비**. 데이터 준비 프로세스는 여러 단계가 있습니다. 데이터가 다양한 소스에서 제공되는 경우에는 정렬하고 노멀라이즈해야 할 수 있습니다. ([Clustering](../../../5-Clustering/1-Visualize/README.md)과 같이) 문자열을 숫자로 바꾸는 방식처럼 다양한 방식을 통하여 데이터의 품질과 양을 향상시킬 수 있습니다. ([Classification](../../../4-Classification/1-Introduction/README.md)과 같이) 원본 기반으로, 새로운 데이터를 생성할 수 있습니다. ([Web App](../../../3-Web-App/README.md) 강의 이전처럼) 데이터를 정리하고 변경할 수 있습니다. 마지막으로, 훈련하는 기술에 따라서, 무작위로 섞어야 할 수 있습니다. - -✅ 데이터를 수집하고 처리하면, 그 모양이 의도한 질문을 해결할 수 있는 지 잠시 봅니다. [Clustering](../../5-Clustering/1-Visualize/README.md) 강의에서 본 것처럼, 데이터가 주어진 작업에서 잘 수행하지 못할 수 있습니다! - -### Features와 타겟 - -feature는 데이터의 측정할 수 있는 속성입니다. 많은 데이터셋에서 'date' 'size' 또는 'color'처럼 열 제목으로 표현합니다. 일반적으로 코드에서 X로 보여지는 feature 변수는, 모델을 훈련할 때 사용되는 입력 변수로 나타냅니다. - -타겟은 예측하려고 시도한 것입니다. 코드에서 X로 표시하는 보통 타겟은, 데이터에 물어보려는 질문의 대답을 나타냅니다: 12월에, 어떤 색의 호박이 가장 쌀까요? San Francisco 근처의 좋은 토지 실제 거래가는 어디인가요? 가끔은 타겟을 라벨 속성이라고 부르기도 합니다. - -### feature 변수 선택하기 - -🎓 **Feature Selection과 Feature Extraction** 모델을 만들 때 선택할 변수를 어떻게 알 수 있을까요? 가장 성능이 좋은 모델에 올바른 변수를 선택하기 위하여 Feature Selection 또는 Feature Extraction 프로세스를 거치게 됩니다. 그러나, 같은 내용이 아닙니다: "Feature extraction creates new features from functions of the original features, whereas feature selection returns a subset of the features." ([source](https://wikipedia.org/wiki/Feature_selection)) - -### 데이터 시각화하기 - -데이터 사이언티스트의 툴킷에서 중요한 측면은 Seaborn 또는 MatPlotLib과 같이 여러가지 뛰어난 라이브러리로 데이터 시각화하는 파워입니다. 데이터를 시각화로 보여주면 숨겨진 correlations를 찾아서 활용할 수 있습니다. ([Classification](../../../4-Classification/2-Classifiers-1/README.md)에서 발견한대로) 시각화는 편향적이거나 균형적이지 않은 데이터를 찾는 데 도움이 될 수 있습니다. - -### 데이터셋 나누기 - -훈련하기 전, 데이터를 잘 나타낼 크기로 2개 이상의 데이터 셋을 나눌 필요가 있습니다. - -- **학습**. 데이터셋의 파트는 모델을 학습할 때 적당합니다. 이 셋은 본 데이터셋의 대부분을 차지합니다. -- **테스트**. 테스트 데이터셋은 독립적인 데이터의 그룹이지만, 미리 만들어진 모델의 성능을 확인할 때에, 가끔 본 데이터에서도 수집됩니다. -- **검증**. 검증 셋은 모델을 개선하며 모델의 hyperparameters, 또는 architecture를 튜닝할 때, 사용하는 작은 독립된 예시 그룹입니다. ([Time Series Forecasting](../../../7-TimeSeries/1-Introduction/README.md)에서 언급하듯) 데이터의 크기와 질문에 따라서 세번째 셋을 만들 이유가 없습니다. - -## 모델 구축하기 - -훈련하고 있는 데이터를 사용하여, **학습**할 다양한 알고리즘으로, 모델 또는, 데이터의 통계적 표현을 만드는 게 목표입니다. 모델을 학습하면서 데이터에 노출되면 발견, 검증, 그리고 승인하거나 거부되는 perceived patterns에 대하여 가설을 세울 수 있습니다. - -### 학습 방식 결정하기 - -질문과 데이터의 특성에 따라서, 어떻게 학습할 지 선택합니다. [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html)을 - 이 코스에서 - 단계별로 보면 모델이 학습하는 많은 방식을 찾을 수 있습니다. 숙련도에 따라서, 최고의 모델을 만들기 위하여 다른 방식을 해볼 수 있습니다. 데이터 사이언티스트가 볼 수 없는 데이터를 주고 정확도, 편향적, 품질-저하 이슈를 점검해서, 현재 작업에 가장 적당한 학습 방식을 선택하여 모델의 성능을 평가하는 프로세스를 거치게 될 예정입니다. - -### 모델 학습하기 - -훈련 데이터로 감싸면, 모델을 만들 'fit'이 준비 되었습니다. 많은 ML 라이브러리에서 'model.fit' 코드를 찾을 수 있습니다. - 이 순간에 값의 배열 (보통 'X')과 feature 변수 (보통 'y')로 데이터를 보내게 됩니다. - -### 모델 평가하기 - -훈련 프로세스가 완료되면 (큰 모델을 훈련하기 위해서 많이 반복하거나 'epochs'가 요구), 테스트 데이터로 모델의 성능을 측정해서 품질을 평가할 수 있습니다. 데이터는 모델이 이전에 분석하지 않았던 본 데이터의 서브셋입니다. 모델의 품질에 대한 지표 테이블을 출력할 수 있습니다. - -🎓 **모델 피팅** - -머신러닝의 컨텍스트에서, 모델 피팅은 친근하지 않은 데이터를 분석하려고 시도하는 순간에 모델 기본 기능의 정확도를 보입니다. - -🎓 **Underfitting** 과 **overfitting**은 모델 핏이 충분하지 않거나 너무 많을 때, 모델의 품질이 낮아지는 일반적인 이슈입니다. 이러한 이유는 모델이 훈련 데이터와 너무 근접하게 얼라인되거나 너무 느슨하게 얼라인된 예측을 합니다. overfit 모델은 데이터의 디테일과 노이즈를 너무 잘 배웠기에 훈련 데이터로 너무나 잘 예측합니다. underfit 모델은 훈련 데이터 또는 아직 볼 수 없던 데이터를 잘 분석할 수 없으므로 정확하지 않습니다. - -![overfitting model](../images/overfitting.png) -> Infographic by [Jen Looper](https://twitter.com/jenlooper) - -## 파라미터 튜닝 - -초반 훈련이 마무리 될 때, 모델의 품질을 살펴보고 'hyperparameters'를 트윅해서 개선하는 것을 고려합니다. [in the documentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) 프로세스에 대하여 알아봅니다. - -## 예측 - -완전히 새 데이터로 모델의 정확도를 테스트할 수 있는 순간입니다. 프로덕션에서 모델을 쓰기 위해서 웹 어셋을 만들며, '적용한' ML 세팅에, 프로세스는 변수를 설정하고 추론하거나, 평가하고자 사용자 입력(예를 들면, 버튼 입력)을 수집해 모델로 보낼 수 있습니다. - -이 강의에서는, 'full stack' ML 엔지니어가 되기 위하여 여행을 떠나는 과정이며, 이 단계에 - 데이터 사이언티스트의 모든 제스쳐가 있으며 준비, 빌드, 테스트, 평가와 예측 방식을 보게 됩니다. - ---- - -## 🚀 도전 - -ML 실무자의 단계를 반영한 플로우를 그려보세요. 프로세스에서 지금 어디에 있는 지 보이나요? 어려운 내용을 예상할 수 있나요? 어떤게 쉬울까요? - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/) - -## 검토 & 자기주도 학습 - -일상 업무를 이야기하는 데이터 사이언티스트 인터뷰를 온라인으로 검색합니다. 여기 [one](https://www.youtube.com/watch?v=Z3IjgbbCEfs) 있습니다. - -## 과제 - -[Interview a data scientist](../assignment.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.pt-br.md b/1-Introduction/4-techniques-of-ML/translations/README.pt-br.md deleted file mode 100644 index 8b3af3cc..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.pt-br.md +++ /dev/null @@ -1,114 +0,0 @@ -# Técnicas de Machine Learning - -O processo de construção, uso e manutenção de modelos de machine learning e os dados que eles usam é um processo muito diferente de muitos outros fluxos de trabalho de desenvolvimento. Nesta lição, vamos desmistificar o processo e delinear as principais técnicas que você precisa saber. Você irá: - -- Compreender os processos que sustentam o aprendizado de máquina em alto nível. -- Explorar conceitos básicos como 'modelos', 'previsões' e 'dados de treinamento'.. - -## [Questionário pré-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7?loc=ptbr) - -## Introdução - -Em um alto nível, a arte de criar processos de machine learning (ML) é composta por uma série de etapas: - -1. **Decida sobre a questão**. A maioria dos processos de ML começa fazendo uma pergunta que não pode ser respondida por um simples programa condicional ou mecanismo baseado em regras. Essas questões geralmente giram em torno de previsões baseadas em uma coleção de dados. -2. **Colete e prepare dados**. Para responder à sua pergunta, você precisa de dados. A qualidade e, às vezes, a quantidade de seus dados determinarão o quão bem você pode responder à sua pergunta inicial. A visualização de dados é um aspecto importante desta fase. Esta fase também inclui a divisão dos dados em um grupo de treinamento e teste para construir um modelo. -3. **Escolha um método de treinamento**. Dependendo da sua pergunta e da natureza dos seus dados, você precisa escolher como deseja treinar um modelo para melhor refletir seus dados e fazer previsões precisas em relação a eles. Esta é a parte do seu processo de ML que requer conhecimentos específicos e, muitas vezes, uma quantidade considerável de experimentação. -4. **Treine o modelo**. Usando seus dados de treinamento, você usará vários algoritmos para treinar um modelo para reconhecer padrões nos dados. O modelo pode alavancar pesos internos que podem ser ajustados para privilegiar certas partes dos dados sobre outras para construir um modelo melhor. -5. **Avalie o modelo**. Você usa dados nunca antes vistos (seus dados de teste) de seu conjunto coletado para ver como o modelo está se saindo. -6. **Ajuste de parâmetros**. Com base no desempenho do seu modelo, você pode refazer o processo usando diferentes parâmetros, ou variáveis, que controlam o comportamento dos algoritmos usados para treinar o modelo. -7. **Preveja**. Use novas entradas para testar a precisão do seu modelo. - -## Que pergunta fazer - -Os computadores são particularmente adeptos da descoberta de padrões ocultos nos dados. Esse recurso é muito útil para pesquisadores que têm dúvidas sobre um determinado campo que não podem ser respondidas facilmente criando um mecanismo de regras baseado em condições. Dada uma tarefa atuarial, por exemplo, um cientista de dados pode ser capaz de construir manualmente regras sobre a mortalidade de fumantes versus não fumantes. - -Quando muitas outras variáveis ​​são introduzidas na equação, no entanto, um modelo de ML pode ser mais eficiente para prever as taxas de mortalidade futuras com base no histórico de saúde anterior. Um exemplo mais alegre seria fazer previsões do tempo de abril para um determinado local com base em dados que incluem latitude, longitude, mudança climática, proximidade do oceano, padrões de fluxo de jato e muito mais. - -✅ Esta [apresentação](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) sobre modelos meteorológicos oferece uma perspectiva histórica do uso do ML na análise meteorológica. - -## Tarefas de pré-construção - -Antes de começar a construir seu modelo, há várias tarefas que você precisa concluir. Para testar sua pergunta e formar uma hipótese com base nas previsões de um modelo, você precisa identificar e configurar vários elementos. - -### Dados - -Para poder responder à sua pergunta com qualquer tipo de certeza, você precisa de uma boa quantidade de dados do tipo certo. Há duas coisas que você precisa fazer neste momento: - -- **Coletar dados**. Tendo em mente a lição anterior sobre justiça na análise de dados, colete seus dados com cuidado. Esteja ciente das fontes desses dados, de quaisquer tendências inerentes que possam ter e documente sua origem. -- **Prepare os dados**. Existem várias etapas no processo de preparação de dados. Pode ser necessário agrupar dados e normalizá-los se vierem de fontes diversas. Você pode melhorar a qualidade e a quantidade dos dados por meio de vários métodos, como a conversão de strings em números (como fazemos em [Clustering](../../../5-Clustering/1-Visualize/README.md)). Você também pode gerar novos dados, com base no original (como fazemos em [Classificação](../../../4-Classification/1-Introduction/README.md)). Você pode limpar e editar os dados (como faremos antes da lição[Web App](../../../3-Web-App/README.md)). Finalmente, você também pode precisar randomizá-lo e embaralhá-lo, dependendo de suas técnicas de treinamento. - -✅ Depois de coletar e processar seus dados, reserve um momento para ver se o formato permitirá que você responda à pergunta pretendida. Pode ser que os dados não funcionem bem em sua tarefa, como descobrimos em nossas lições de [Clustering](../../../5-Clustering/1-Visualize/README.md)! - -### Recursos e Alvo - -Um [recurso](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) é uma propriedade mensurável de seus dados. Em muitos conjuntos de dados, é expresso como um cabeçalho de coluna como 'data', 'tamanho' ou 'cor'. Sua variável de recurso, geralmente representada como `X` no código, representa a variável de entrada que será usada para treinar o modelo. - -Um alvo é algo que você está tentando prever. Alvo geralmente representado como `y` no código, representa a resposta à pergunta que você está tentando fazer sobre seus dados: em Dezembro, quais abóboras de **cor**serão mais baratas? em São Francisco, quais bairros terão o melhor **preço** imobiliário? Às vezes, o destino também é conhecido como atributo de rótulo. - -### Selecionando sua variável de característica - -🎓 **Seleção e extração de recursos** Como você sabe qual variável escolher ao construir um modelo? Você provavelmente passará por um processo de seleção ou extração de recursos para escolher as variáveis certas para o modelo de melhor desempenho. Eles não são a mesma coisa, no entanto: "A extração de recursos cria novos recursos a partir de funções dos recursos originais, enquanto a seleção de recursos retorna um subconjunto dos recursos." ([fonte](https://wikipedia.org/wiki/Feature_selection)) - -### Visualize seus dados - -Um aspecto importante do kit de ferramentas de uma pessoa cientista de dados é o poder de visualizar dados usando várias bibliotecas excelentes, como Seaborn ou MatPlotLib. A representação visual de seus dados pode permitir que você descubra correlações ocultas que você pode explorar. As visualizações também podem ajudar a descobrir distorções ou dados desequilibrados (como encontrado em[Classificação](../../../4-Classification/2-Classifiers-1/README.md)). - -### Divida seu conjunto de dados - -Antes do treinamento, você precisa dividir seu conjunto de dados em duas ou mais partes de tamanhos desiguais que ainda representam bem os dados. - -- **Treinamento**. Esta parte do conjunto de dados é adequada ao seu modelo para treiná-lo. Este conjunto constitui a maior parte do conjunto de dados original. -- **Teste**. Um conjunto de dados de teste é um grupo independente de dados, geralmente coletado dos dados originais, que você usa para confirmar o desempenho do modelo construído. -- **Validando**. Um conjunto de validação é um grupo menor independente de exemplos que você usa para ajustar os hiperparâmetros do modelo, ou arquitetura, para melhorar o modelo. Dependendo do tamanho dos seus dados e da pergunta que você está fazendo, pode não ser necessário construir este terceiro conjunto (como observamos em [Previsão de série temporal](../../../7-TimeSeries/1-Introduction/README.md)). - -## Construindo um modelo - -Usando seus dados de treinamento, sua meta é construir um modelo, ou uma representação estatística de seus dados, usando vários algoritmos para **treiná-los**. O treinamento de um modelo o expõe aos dados e permite que ele faça suposições sobre os padrões percebidos que descobre, valida e aceita ou rejeita. - -### Decidir sobre um método de treinamento - -Desvendando da sua pergunta e da natureza dos seus dados, você escolherá um método para treiná-los. Percorrendo a [documentação do Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - que usamos neste curso - você pode explorar muitas maneiras de treinar um modelo. Dependendo da sua experiência, pode ser necessário tentar vários métodos diferentes para construir o melhor modelo. É provável que você passe por um processo pelo qual os cientistas de dados avaliam o desempenho de um modelo, alimentando-o com dados invisíveis, verificando a precisão, o viés e outros problemas que degradam a qualidade e selecionando o método de treinamento mais apropriado para a tarefa em questão. - -### Treine um modelo - -Armado com seus dados de treinamento, você está pronto para 'ajustá-los' para criar um modelo. Você notará que em muitas bibliotecas de ML você encontrará o código 'model.fit' - é neste momento que você envia sua variável de recurso como uma matriz de valores (geralmente 'X') e uma variável de destino (geralmente 'y'). - -### Avalie o modelo - -Assim que o processo de treinamento for concluído (pode levar muitas iterações, ou 'epochs', para treinar um modelo grande), você poderá avaliar a qualidade do modelo usando dados de teste para avaliar seu desempenho. Esses dados são um subconjunto dos dados originais que o modelo não analisou anteriormente. Você pode imprimir uma tabela de métricas sobre a qualidade do seu modelo. - -🎓 **Adaptação do modelo** - -No contexto do machine learning, o ajuste do modelo refere-se à precisão da função subjacente do modelo à medida que tenta analisar dados com os quais não está familiarizado. - -🎓 **Underfitting** e **overfitting** são problemas comuns que degradam a qualidade do modelo, pois o modelo não se ajusta bem o suficiente ou se ajusta muito bem. Isso faz com que o modelo faça previsões muito alinhadas ou muito vagamente alinhadas com seus dados de treinamento. Um modelo de ajuste excessivo prevê os dados de treinamento muito bem porque aprendeu os detalhes e o ruído dos dados muito bem. Um modelo insuficiente não é preciso, pois não pode analisar com precisão seus dados de treinamento, nem os dados que ainda não foram 'visto'. - -![modelo de overfitting](../images/overfitting.png) -> Infográfico por [Jen Looper](https://twitter.com/jenlooper) - -## Ajuste de parâmetro - -Quando o treinamento inicial estiver concluído, observe a qualidade do modelo e considere melhorá-lo ajustando seus 'hiperparâmetros'. Leia mais sobre o processo [na documentação](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). - -## Predição - -Este é o momento em que você pode usar dados completamente novos para testar a precisão do seu modelo. Em uma configuração de ML 'aplicada', onde você está construindo ativos da web para usar o modelo na produção, este processo pode envolver a coleta de entrada do usuário (um pressionamento de botão, por exemplo) para definir uma variável e enviá-la ao modelo para inferência, ou avaliação. - -Nessas lições, você descobrirá como usar essas etapas para preparar, criar, testar, avaliar e prever - todos os gestos de uma pessoa cientista de dados e muito mais, conforme você avança em sua jornada para se tornar um engenheiro de ML de 'full stack'. - ---- - -## 🚀Desafio - -Desenhe um fluxograma refletindo as etapas de um praticante de ML. Onde você se vê agora no processo? Onde você prevê que encontrará dificuldade? O que parece fácil para você? - -## [Questionário pós-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8?loc=ptbr) - -## Revisão e Autoestudo - -Procure por entrevistas online com pessoas cientistas de dados que discutem seu trabalho diário. Aqui está [uma](https://www.youtube.com/watch?v=Z3IjgbbCEfs). - -## Tarefa - -[Entreviste uma pessoa cientista de dados](assignment.pt-br.md) \ No newline at end of file diff --git a/1-Introduction/4-techniques-of-ML/translations/README.zh-tw.md b/1-Introduction/4-techniques-of-ML/translations/README.zh-tw.md deleted file mode 100644 index 38d56d56..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/README.zh-tw.md +++ /dev/null @@ -1,111 +0,0 @@ - -# 機器學習技術 - -構建、使用和維護機器學習模型及其使用的數據的過程與許多其他開發工作流程截然不同。 在本課中,我們將揭開該過程的神秘面紗,並概述你需要了解的主要技術。 你會: - -- 在高層次上理解支持機器學習的過程。 -- 探索基本概念,例如「模型」、「預測」和「訓練數據」。 - -## [課前測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/) -## 介紹 - -在較高的層次上,創建機器學習(ML)過程的工藝包括許多步驟: - -1. **決定問題**。 大多數機器學習過程都是從提出一個簡單的條件程序或基於規則的引擎無法回答的問題開始的。 這些問題通常圍繞基於數據集合的預測展開。 -2. **收集和準備數據**。為了能夠回答你的問題,你需要數據。數據的質量(有時是數量)將決定你回答最初問題的能力。可視化數據是這個階段的一個重要方面。此階段還包括將數據拆分為訓練和測試組以構建模型。 -3. **選擇一種訓練方法**。根據你的問題和數據的性質,你需要選擇如何訓練模型以最好地反映你的數據並對其進行準確預測。這是你的ML過程的一部分,需要特定的專業知識,並且通常需要大量的實驗。 -4. **訓練模型**。使用你的訓練數據,你將使用各種算法來訓練模型以識別數據中的模式。該模型可能會利用可以調整的內部權重來使數據的某些部分優於其他部分,從而構建更好的模型。 -5. **評估模型**。你使用收集到的集合中從未見過的數據(你的測試數據)來查看模型的性能。 -6. **參數調整**。根據模型的性能,你可以使用不同的參數或變量重做該過程,這些參數或變量控製用於訓練模型的算法的行為。 -7. **預測**。使用新輸入來測試模型的準確性。 - -## 要問什麽問題 - -計算機特別擅長發現數據中的隱藏模式。此實用程序對於對給定領域有疑問的研究人員非常有幫助,這些問題無法通過創建基於條件的規則引擎來輕松回答。例如,給定一項精算任務,數據科學家可能能夠圍繞吸煙者與非吸煙者的死亡率構建手工規則。 - -然而,當將許多其他變量納入等式時,ML模型可能會更有效地根據過去的健康史預測未來的死亡率。一個更令人愉快的例子可能是根據包括緯度、經度、氣候變化、與海洋的接近程度、急流模式等在內的數據對給定位置的4月份進行天氣預報。 - -✅ 這個關於天氣模型的[幻燈片](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)為在天氣分析中使用機器學習提供了一個歷史視角。 - -## 預構建任務 - -在開始構建模型之前,你需要完成多項任務。要測試你的問題並根據模型的預測形成假設,你需要識別和配置多個元素。 - -### Data - -為了能夠確定地回答你的問題,你需要大量正確類型的數據。 此時你需要做兩件事: - -- **收集數據**。記住之前關於數據分析公平性的課程,小心收集數據。請註意此數據的來源、它可能具有的任何固有偏見,並記錄其來源。 -- **準備數據**。數據準備過程有幾個步驟。如果數據來自不同的來源,你可能需要整理數據並對其進行標準化。你可以通過各種方法提高數據的質量和數量,例如將字符串轉換為數字(就像我們在[聚類](../../../5-Clustering/1-Visualize/README.md)中所做的那樣)。你還可以根據原始數據生成新數據(正如我們在[分類](../../../4-Classification/1-Introduction/README.md)中所做的那樣)。你可以清理和編輯數據(就像我們在 [Web App](../../3-Web-App/README.md)課程之前所做的那樣)。最後,你可能還需要對其進行隨機化和打亂,具體取決於你的訓練技術。 - -✅ 在收集和處理你的數據後,花點時間看看它的形狀是否能讓你解決你的預期問題。正如我們在[聚類](../../../5-Clustering/1-Visualize/README.md)課程中發現的那樣,數據可能在你的給定任務中表現不佳! - -### 功能和目標 - -功能是數據的可測量屬性。在許多數據集中,它表示為標題為"日期""大小"或"顏色"的列。您的功能變量(通常在代碼中表示為 `X`)表示用於訓練模型的輸入變量。 - -目標就是你試圖預測的事情。目標通常表示為代碼中的 `y`,代表您試圖詢問數據的問題的答案:在 12 月,什麽顏色的南瓜最便宜?在舊金山,哪些街區的房地產價格最好?有時目標也稱為標簽屬性。 - -### 選擇特征變量 - -🎓 **特征選擇和特征提取** 構建模型時如何知道選擇哪個變量?你可能會經歷一個特征選擇或特征提取的過程,以便為性能最好的模型選擇正確的變量。然而,它們不是一回事:「特征提取是從基於原始特征的函數中創建新特征,而特征選擇返回特征的一個子集。」([來源](https://wikipedia.org/wiki/Feature_selection)) -### 可視化數據 - -數據科學家工具包的一個重要方面是能夠使用多個優秀的庫(例如 Seaborn 或 MatPlotLib)將數據可視化。直觀地表示你的數據可能會讓你發現可以利用的隱藏關聯。 你的可視化還可以幫助你發現偏見或不平衡的數據(正如我們在 [分類](../../../4-Classification/2-Classifiers-1/README.md)中發現的那樣)。 -### 拆分數據集 - -在訓練之前,你需要將數據集拆分為兩個或多個大小不等但仍能很好地代表數據的部分。 - -- **訓練**。這部分數據集適合你的模型進行訓練。這個集合構成了原始數據集的大部分。 -- **測試**。測試數據集是一組獨立的數據,通常從原始數據中收集,用於確認構建模型的性能。 -- **驗證**。驗證集是一個較小的獨立示例組,用於調整模型的超參數或架構,以改進模型。根據你的數據大小和你提出的問題,你可能不需要構建第三組(正如我們在[時間序列預測](../../../7-TimeSeries/1-Introduction/README.md)中所述)。 - -## 建立模型 - -使用你的訓練數據,你的目標是構建模型或數據的統計表示,並使用各種算法對其進行**訓練**。訓練模型將其暴露給數據,並允許它對其發現、驗證和接受或拒絕的感知模式做出假設。 - -### 決定一種訓練方法 - -根據你的問題和數據的性質,你將選擇一種方法來訓練它。逐步完成 [Scikit-learn的文檔](https://scikit-learn.org/stable/user_guide.html) - 我們在本課程中使用 - 你可以探索多種訓練模型的方法。 根據你的經驗,你可能需要嘗試多種不同的方法來構建最佳模型。你可能會經歷一個過程,在該過程中,數據科學家通過提供未見過的數據來評估模型的性能,檢查準確性、偏差和其他降低質量的問題,並為手頭的任務選擇最合適的訓練方法。 - -### 訓練模型 - -有了您的培訓數據,您就可以"適應"它來創建模型。您會註意到,在許多 ML 庫中,您會發現代碼"model.fit"-此時,您將功能變量作為一系列值(通常是`X`)和目標變量(通常是`y`)發送。 - -### 評估模型 - -訓練過程完成後(訓練大型模型可能需要多次叠代或「時期」),你將能夠通過使用測試數據來衡量模型的性能來評估模型的質量。此數據是模型先前未分析的原始數據的子集。 你可以打印出有關模型質量的指標表。 - -🎓 **模型擬合** - -在機器學習的背景下,模型擬合是指模型在嘗試分析不熟悉的數據時其底層功能的準確性。 - -🎓 **欠擬合**和**過擬合**是降低模型質量的常見問題,因為模型擬合得不夠好或太好。這會導致模型做出與其訓練數據過於緊密對齊或過於松散對齊的預測。 過擬合模型對訓練數據的預測太好,因為它已經很好地了解了數據的細節和噪聲。欠擬合模型並不準確,因為它既不能準確分析其訓練數據,也不能準確分析尚未「看到」的數據。 - -![過擬合模型 ](../images/overfitting.png) -> 作者 [Jen Looper](https://twitter.com/jenlooper) -## 參數調優 - -初始訓練完成後,觀察模型的質量並考慮通過調整其「超參數」來改進它。[在此文檔中](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)閱讀有關該過程的更多信息。 - -## 預測 - -這是你可以使用全新數據來測試模型準確性的時刻。在「應用」ML設置中,你正在構建Web資源以在生產中使用模型,此過程可能涉及收集用戶輸入(例如按下按鈕)以設置變量並將其發送到模型進行推理,或者評估。 - -在這些課程中,你將了解如何使用這些步驟來準備、構建、測試、評估和預測—所有這些都是數據科學家的姿態,而且隨著你在成為一名「全棧」ML工程師的旅程中取得進展,你將了解更多。 - ---- - -## 🚀挑戰 - -畫一個流程圖,反映ML的步驟。在這個過程中,你認為自己現在在哪裏?你預測你在哪裏會遇到困難?什麽對你來說很容易? - -## [閱讀後測驗](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/) - -## 復習與自學 - -在線搜索對討論日常工作的數據科學家的采訪。 這是[其中之一](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 - -## 任務 - -[采訪一名數據科學家](assignment.zh-tw.md) \ No newline at end of file diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.es.md b/1-Introduction/4-techniques-of-ML/translations/assignment.es.md deleted file mode 100644 index 2e931f8c..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.es.md +++ /dev/null @@ -1,11 +0,0 @@ -# Entrevista a un científico de datos - -## Instrucciones - -En tu compañía, en un grupo de usuarios, o entre tus amigos o compañeros de estudio, habla con alguien que trabaje profesionalmente como científico de datos. Escribe un artículo corto (500 palabras) acerca de sus ocupaciones diarias. ¿Son ellos especialistas, o trabajan como 'full stack'? - -## Rúbrica - -| Criterio | Ejemplar | Adecuado | Necesita mejorar | -| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | -| | Un ensayo de la longitud correcta, con fuentes atribuidas, es presentado como un archivo .doc | El ensayo es pobremente atribuido o más corto que la longitud requerida | No se presentó el ensayo | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.id.md b/1-Introduction/4-techniques-of-ML/translations/assignment.id.md deleted file mode 100644 index 9f7b23be..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.id.md +++ /dev/null @@ -1,11 +0,0 @@ -# Wawancara seorang data scientist - -## Instruksi - -Di perusahaan Kamu, dalam user group, atau di antara teman atau sesama siswa, berbicaralah dengan seseorang yang bekerja secara profesional sebagai data scientist. Tulis makalah singkat (500 kata) tentang pekerjaan sehari-hari mereka. Apakah mereka spesialis, atau apakah mereka bekerja 'full stack'? - -## Rubrik - -| Kriteria | Sangat Bagus | Cukup | Perlu Peningkatan | -| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | -| | Sebuah esai dengan panjang yang sesuai, dengan sumber yang dikaitkan, disajikan sebagai file .doc | Esai dikaitkan dengan buruk atau lebih pendek dari panjang yang dibutuhkan | Tidak ada esai yang disajikan | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.it.md b/1-Introduction/4-techniques-of-ML/translations/assignment.it.md deleted file mode 100644 index 41c597f4..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.it.md +++ /dev/null @@ -1,11 +0,0 @@ -# Intervista a un data scientist - -## Istruzioni - -Nella propria azienda, in un gruppo di utenti, o tra amici o compagni di studio, si parli con qualcuno che lavora professionalmente come data scientist. Si scriva un breve documento (500 parole) sulle loro occupazioni quotidiane. Sono specialisti o lavorano "full stack"? - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | -| | Un saggio della lunghezza corretta, con fonti attribuite, è presentato come file .doc | Il saggio è attribuito male o più corto della lunghezza richiesta | Non viene presentato alcun saggio | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.ja.md b/1-Introduction/4-techniques-of-ML/translations/assignment.ja.md deleted file mode 100644 index b3690e77..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.ja.md +++ /dev/null @@ -1,11 +0,0 @@ -# データサイエンティストにインタビューする - -## 指示 - -会社・ユーザグループ・友人・学生仲間の中で、データサイエンティストとして専門的に働いている人に話を聞いてみましょう。その人の日々の仕事について短いレポート(500語)を書いてください。その人は専門家でしょうか?それとも「フルスタック」として働いているでしょうか? - -## 評価基準 - -| 基準 | 模範的 | 十分 | 要改善 | -| ---- | ---------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------- | -| | 出典が明記された適切な長さのレポートが.docファイルとして提示されている | レポートに出典が明記されていない、もしくは必要な長さよりも短い | レポートが提示されていない | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.ko.md b/1-Introduction/4-techniques-of-ML/translations/assignment.ko.md deleted file mode 100644 index 085f723f..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.ko.md +++ /dev/null @@ -1,11 +0,0 @@ -# 데이터 과학자를 인터뷰해 봅시다 - -## 설명 - -현재 일 하는 회사 또는 어느 사용자 집단에서나, 주변 친구들 또는 동료 학생들 중 데이터 과학자로서 전문적으로 일하는 사람과 대화해 보세요. 대화 후 그 사람이 평소 어떤 일을 하는지 500자 이상으로 수필(에세이)을 작성해 보시기 바랍니다. 그 사람은 데이터 과학 분야에서 특정 업무에 집중하는 데이터 과학 전문가인가요, 아니면 전반적으로 다양한 업무에 집중하는 '풀스택' 데이터 과학자인가요? - -## 평가기준표 - -| 평가기준 | 모범 | 적절 | 향상 필요 | -| -------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------- | ------------ | -| | 500자 이상의 에세이이며 참고문헌을 제대로 표기했고 .doc 형식의 워드(Microsoft Word) 파일로 제출 | 500자 이내의 에세이이거나 참고문헌을 제대로 표기하지 않음 | 에세이 미제출 | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.pt-br.md b/1-Introduction/4-techniques-of-ML/translations/assignment.pt-br.md deleted file mode 100644 index 820519cc..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.pt-br.md +++ /dev/null @@ -1,11 +0,0 @@ -# Entreviste uma pessoa cientista de dados - -## Instructions - -Em sua empresa, em um grupo de usuários ou entre seus amigos ou colegas estudantes, converse com alguém que trabalhe profissionalmente como cientista de dados. Escreva um pequeno artigo (500 palavras) sobre suas ocupações diárias. Eles são especialistas ou trabalham com 'full stack'? - -## Rubrica - -| Critérios | Exemplar | Adapte | Precisa Melhorar | -| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | -| | Uma redação com a extensão correta, com fontes atribuídas, é apresentado em arquivo .doc | A redação está mal atribuído ou é menor do que o comprimento exigido | Nenhuma redação é apresentado | | diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.zh-tw.md b/1-Introduction/4-techniques-of-ML/translations/assignment.zh-tw.md deleted file mode 100644 index 6d3d601c..00000000 --- a/1-Introduction/4-techniques-of-ML/translations/assignment.zh-tw.md +++ /dev/null @@ -1,11 +0,0 @@ -# 采訪一位數據科學家 - -## 說明 - -在你的公司、你所在的社群、或者在你的朋友和同學中,找到一位從事數據科學專業工作的人,與他或她交流一下。寫一篇關於他們工作日常的小短文(500字左右)。他們是專家,還是說他們是「全棧」開發者? - -## 評判標準 - -| 標準 | 優秀 | 中規中矩 | 仍需努力 | -| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | -| | 提交一篇清晰描述了職業屬性且字數符合規範的word文檔 | 提交的文檔職業屬性描述得不清晰或者字數不合規範 | 啥都沒有交 | \ No newline at end of file diff --git a/1-Introduction/translations/README.es.md b/1-Introduction/translations/README.es.md deleted file mode 100644 index a4bc59ce..00000000 --- a/1-Introduction/translations/README.es.md +++ /dev/null @@ -1,23 +0,0 @@ -# Introducción al machine learning - -En esta sección del plan de estudios se le presentarán los conceptos básicos que hay detrás del campo del "machine learning", lo que es, y aprenderemos sobre su historia y las técnicas que los investigadores utilizan para trabajar con él. ¡Exploremos juntos el mundo del ML! - -![globe](images/globe.jpg) -> Photo by Bill Oxford on Unsplash - -### Lecciones - -1. [Introducción al machine learning](1-intro-to-ML/README.md) -1. [La Historia del machine learning y la AI](2-history-of-ML/README.md) -1. [Equidad y machine learning](3-fairness/README.md) -1. [Técnicas de machine learning](4-techniques-of-ML/README.md) -### Créditos - -"Introducción al Machine Learning" fue escrito con ♥️ por un equipo de personas que incluye [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) y [Jen Looper](https://twitter.com/jenlooper) - -"La Historia del Machine Learning" fue escrito con ♥️ por [Jen Looper](https://twitter.com/jenlooper) y [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Equidad y Machine Learning" fue escrito con ♥️ por [Tomomi Imura](https://twitter.com/girliemac) - -"Técnicas de Machine Learning" fue escrito con ♥️ por [Jen Looper](https://twitter.com/jenlooper) y [Chris Noring](https://twitter.com/softchris) - diff --git a/1-Introduction/translations/README.fr.md b/1-Introduction/translations/README.fr.md deleted file mode 100644 index 462dea70..00000000 --- a/1-Introduction/translations/README.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -# Introduction au machine learning - -Dans cette section du programme, vous découvrirez les concepts de base sous-jacents au domaine du machine learning, ce qu’il est, et vous découvrirez son histoire et les techniques que les chercheurs utilisent pour travailler avec lui. Explorons ensemble ce nouveau monde de ML ! - -![globe](../images/globe.jpg) -> Photo par Bill Oxford sur Unsplash - -### Leçons - -1. [Introduction au machine learning](../1-intro-to-ML/translations/README.fr.md) -1. [L’histoire du machine learning et de l’IA](../2-history-of-ML/translations/README.fr.md) -1. [Équité et machine learning](../3-fairness/translations/README.fr.md) -1. [Techniques de machine learning](../4-techniques-of-ML/translations/README.fr.md) -### Crédits - -"Introduction au machine learning" a été écrit avec ♥️ par une équipe de personnes comprenant [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) et [Jen Looper](https://twitter.com/jenlooper) - -"L’histoire du machine learning" a été écrit avec ♥️ par [Jen Looper](https://twitter.com/jenlooper) et [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Équité et machine learning" a été écrit avec ♥️ par [Tomomi Imura](https://twitter.com/girliemac) - -"Techniques de machine learning" a été écrit avec ♥️ par [Jen Looper](https://twitter.com/jenlooper) et [Chris Noring](https://twitter.com/softchris) diff --git a/1-Introduction/translations/README.hi.md b/1-Introduction/translations/README.hi.md deleted file mode 100644 index 1d7a9b7b..00000000 --- a/1-Introduction/translations/README.hi.md +++ /dev/null @@ -1,28 +0,0 @@ -# मशीन लर्निंग का परिचय - -पाठ्यक्रम के इस भाग में, आपको मशीन लर्निंग के क्षेत्र में अंतर्निहित बुनियादी अवधारणाओं से परिचित कराया जाएगा, यह क्या है, इसका इतिहास क्या है और इसके साथ काम करने के लिए शोधकर्ताओं द्वारा उपयोग की जाने वाली तकनीकों के बारे में जानेंगे। आइए एक साथ मशीन लर्निंग की इस नई दुनिया को एक्सप्लोर करें! - -![ग्लोब](../images/globe.jpg) -> बिल ऑक्सफ़ोर्ड द्वारा तस्वीर अनस्पेलश पर - -### पाठ - -1. [मशीन लर्निंग का परिचय](../1-intro-to-ML/README.md) -1. [मशीन लर्निंग और ए.आइ. का इतिहास ](../2-history-of-ML/README.md) -1. [निष्पक्षता और मशीन लर्निंग](../3-fairness/README.md) -1. [मशीन लर्निंग की तकनीके](../4-techniques-of-ML/README.md) - -### क्रेडिट - -"मशीन लर्निंग का परिचय" [मुहम्मद साकिब खान इणां ](https://twitter.com/Sakibinan), [ओर्नेला अलटून्यं ](https://twitter.com/ornelladotcom) और [जेन लूपर ](https://twitter.com/jenlooper) द्वारा ♥ से लिखा गया - -"मशीन लर्निंग और ए.आइ. का इतिहास" [जेन लूपर ](https://twitter.com/jenlooper) और [एमी बोयड](https://twitter.com/AmyKateNicho) द्वारा ♥ से लिखा गया - -"निष्पक्षता और मशीन लर्निंग" [टोमोमी ईमुरा](https://twitter.com/girliemac) द्वारा ♥ से लिखा गया - -"मशीन लर्निंग की तकनीक" [जेन लूपर](https://twitter.com/jenlooper) और [क्रिस नोरिंग ](https://twitter.com/softchris) द्वारा ♥ से लिखा गया - - - - - diff --git a/1-Introduction/translations/README.id.md b/1-Introduction/translations/README.id.md deleted file mode 100644 index 0e6cc557..00000000 --- a/1-Introduction/translations/README.id.md +++ /dev/null @@ -1,23 +0,0 @@ -# Pengantar Machine Learning - -Di bagian kurikulum ini, Kamu akan berkenalan dengan konsep yang mendasari bidang Machine Learning, apa itu Machine Learning, dan belajar mengenai -sejarah serta teknik-teknik yang digunakan oleh para peneliti. Ayo jelajahi dunia baru Machine Learning bersama! - -![bola dunia](../images/globe.jpg) -> Foto oleh Bill Oxford di Unsplash - -### Pelajaran - -1. [Pengantar Machine Learning](../1-intro-to-ML/translations/README.id.md) -1. [Sejarah dari Machine Learning dan AI](../2-history-of-ML/translations/README.id.md) -1. [Keadilan dan Machine Learning](../3-fairness/translations/README.id.md) -1. [Teknik-Teknik Machine Learning](../4-techniques-of-ML/translations/README.id.md) -### Penghargaan - -"Pengantar Machine Learning" ditulis dengan ♥️ oleh sebuah tim yang terdiri dari [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) dan [Jen Looper](https://twitter.com/jenlooper) - -"Sejarah dari Machine Learning dan AI" ditulis dengan ♥️ oleh [Jen Looper](https://twitter.com/jenlooper) dan [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Keadilan dan Machine Learning" ditulis dengan ♥️ oleh [Tomomi Imura](https://twitter.com/girliemac) - -"Teknik-Teknik Machine Learning" ditulis dengan ♥️ oleh [Jen Looper](https://twitter.com/jenlooper) dan [Chris Noring](https://twitter.com/softchris) diff --git a/1-Introduction/translations/README.it.md b/1-Introduction/translations/README.it.md deleted file mode 100644 index a9460c26..00000000 --- a/1-Introduction/translations/README.it.md +++ /dev/null @@ -1,22 +0,0 @@ -# Introduzione a machine learning - -In questa sezione del programma di studi, verranno presentati i concetti di base sottostanti machine learning, di cosa si tratta, e si imparerà la sua storia e le tecniche utilizzate dai ricercatori per lavorarci. Si esplorerà insieme questo nuovo mondo di ML! - -![globo](../images/globe.jpg) -> Foto di Bill Oxford su Unsplash - -### Lezioni - -1. [Introduzione a machine learning](../1-intro-to-ML/translations/README.it.md) -1. [La storia di machine learning e dell'AI](../2-history-of-ML/translations/README.it.md) -1. [Equità e machine learning](../3-fairness/translations/README.it.md) -1. [Tecniche di machine learning](../4-techniques-of-ML/translations/README.it.md) -### Crediti - -"Introduzione a Machine Learning" scritto con ♥️ da un team di persone tra cui [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) e [Jen Looper](https://twitter.com/jenlooper) - -"La Storia di Machine Learning" scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Equità e Machine Learning" scritto con ♥️ da [Tomomi Imura](https://twitter.com/girliemac) - -"Tecniche di Machine Learning" scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Chris Noring](https://twitter.com/softchris) \ No newline at end of file diff --git a/1-Introduction/translations/README.ja.md b/1-Introduction/translations/README.ja.md deleted file mode 100644 index de7b6ff2..00000000 --- a/1-Introduction/translations/README.ja.md +++ /dev/null @@ -1,23 +0,0 @@ -# 機械学習への導入 - -このセクションでは、機械学習の分野の基礎となる概念、機械学習とは何かを紹介し、その歴史や研究者が機械学習を扱う際に使用する技術について学びます。 新しいMLの世界を一緒に探求していきましょう! - -![地球](../images/globe.jpg) -> UnsplashBill Oxfordによる写真 - -### レッスン - -1. [機械学習への導入](../1-intro-to-ML/translations/README.ja.md) -1. [機械学習とAIの歴史](../2-history-of-ML/translations/README.ja.md) -1. [機械学習における公平さ](../3-fairness/translations/README.ja.md) -1. [機械学習の技術](../4-techniques-of-ML/translations/README.ja.md) - -### クレジット - -"機械学習への導入 "は、[Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan)、[Ornella Altunyan](https://twitter.com/ornelladotcom)、[Jen Looper](https://twitter.com/jenlooper)などのチームによって制作されました。 - -"機械学習とAIの歴史" は[Jen Looper](https://twitter.com/jenlooper)、[Amy Boyd](https://twitter.com/AmyKateNicho)によって制作されました。 - -"公平性と機械学習"は[Tomomi Imura](https://twitter.com/girliemac) によって制作されました。 - -"機械学習の技術"は[Jen Looper](https://twitter.com/jenlooper)と[Chris Noring](https://twitter.com/softchris) によって制作されました。 diff --git a/1-Introduction/translations/README.ko.md b/1-Introduction/translations/README.ko.md deleted file mode 100644 index 4a5147a6..00000000 --- a/1-Introduction/translations/README.ko.md +++ /dev/null @@ -1,23 +0,0 @@ -# 머신러닝 소개하기 - -커리큘럼의 이 섹션에서, 머신러닝 필드의 기초가 될 기본 개념, 의미, 역사와 연구자가 이용하는 기술을 배울 예정입니다. 새로운 ML의 세계로 같이 모험을 떠납시다! - -![globe](../images/globe.jpg) -> Photo by Bill Oxford on Unsplash - -### 강의 - -1. [머신러닝 소개하기](../1-intro-to-ML/translations/README.ko.md) -1. [머신러닝과 AI의 역사](../2-history-of-ML/translations/README.ko.md) -1. [공정성과 머신러닝](../3-fairness/translations/README.ko.md) -1. [머신러닝의 기술](../4-techniques-of-ML/translations/README.ko.md) - -### 크레딧 - -"Introduction to Machine Learning" was written with ♥️ by a team of folks including [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) and [Jen Looper](https://twitter.com/jenlooper) - -"The History of Machine Learning" was written with ♥️ by [Jen Looper](https://twitter.com/jenlooper) and [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Fairness and Machine Learning" was written with ♥️ by [Tomomi Imura](https://twitter.com/girliemac) - -"Techniques of Machine Learning" was written with ♥️ by [Jen Looper](https://twitter.com/jenlooper) and [Chris Noring](https://twitter.com/softchris) \ No newline at end of file diff --git a/1-Introduction/translations/README.pt-br.md b/1-Introduction/translations/README.pt-br.md deleted file mode 100644 index 317f5eda..00000000 --- a/1-Introduction/translations/README.pt-br.md +++ /dev/null @@ -1,23 +0,0 @@ -# Introdução ao machine learning - -Nesta seção do curso, você conhecerá os conceitos básicos do machine learning, o que ele é, e aprenderá sobre sua história e as técnicas que os pesquisadores usam para trabalhar com ele. Vamos explorar este novo mundo de ML juntos! - -![globe](../images/globe.jpg) -> Foto por Bill Oxford em Unsplash - -### Lições - -1. [Introdução ao machine learning](../1-intro-to-ML/translations/README.pt-br.md) -2. [A história do machine learning e AI](../2-history-of-ML/translations/README.pt-br.md) -3. [Equidade e machine learning](../3-fairness/translations/README.pt-br.md) -4. [Técnicas de machine learning](../4-techniques-of-ML/translations/README.pt-br.md) - -### Créditos - -"Introdução ao Machine Learning" foi escrito com ♥️ por uma equipe de pessoas, incluindo [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) e [Jen Looper](https://twitter.com/jenlooper) - -"A história do Machine Learning e AI" foi escrito com ♥️ por [Jen Looper](https://twitter.com/jenlooper) e [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Equidade e Machine Learning" foi escrito com ♥️ por [Tomomi Imura](https://twitter.com/girliemac) - -"Técnicas de Machine Learning" foi escrito com ♥️ por [Jen Looper](https://twitter.com/jenlooper) e [Chris Noring](https://twitter.com/softchris) \ No newline at end of file diff --git a/1-Introduction/translations/README.ru.md b/1-Introduction/translations/README.ru.md deleted file mode 100644 index 87569f68..00000000 --- a/1-Introduction/translations/README.ru.md +++ /dev/null @@ -1,22 +0,0 @@ -# Введение в машинное обучение - -В этом разделе учебной программы вы познакомитесь с базовыми концепциями, лежащими в основе области машинного обучения; узнаете, что это такое, а также его историю и методы, которые исследователи используют для работы с ним. Давайте вместе исследуем этот новый мир машинного обучения! - -![глобус](../images/globe.jpg) -> Фото Билла Оксфорда на Unsplash - -### Уроки - -1. [Введение в машинное обучение](../1-intro-to-ML/README.md) -1. [История машинного обучения и искусственного интеллекта](../2-history-of-ML/README.md) -1. [Справедливость и машинное обучение](../3-fairness/README.md) -1. [Приемы машинного обучения](../4-techniques-of-ML/README.md) -### Благодарности - -«Введение в машинное обучение» было написано с ♥ ️группой людей, включая [Мухаммад Сакиб Хан Инан](https://twitter.com/Sakibinan), [Орнелла Алтунян](https://twitter.com/ornelladotcom) и [Джен Лупер](https://twitter.com/jenlooper) - -«История машинного обучения» была написана с ♥ ️[Джен Лупер](https://twitter.com/jenlooper) и [Эми Бойд](https://twitter.com/AmyKateNicho) - -«Справедливость и машинное обучение» были написаны с ♥ ️[Томоми Имура](https://twitter.com/girliemac) - -«Методы машинного обучения» были написаны с ♥ ️[Джен Лупер](https://twitter.com/jenlooper) и [Крис Норинг](https://twitter.com/softchris) diff --git a/1-Introduction/translations/README.zh-tw.md b/1-Introduction/translations/README.zh-tw.md deleted file mode 100644 index 36359d0d..00000000 --- a/1-Introduction/translations/README.zh-tw.md +++ /dev/null @@ -1,22 +0,0 @@ -# 機器學習入門 - -課程的本章節將為您介紹機器學習領域背後的基本概念、什麽是機器學習,並學習它的歷史以及曾為此做出貢獻的技術研究者們。讓我們一起開始探索機器學習的全新世界吧! - -![globe](../images/globe.jpg) -> 圖片由 Bill Oxford提供,來自 Unsplash - -### 課程安排 - -1. [機器學習簡介](../1-intro-to-ML/translations/README.zh-tw.md) -1. [機器學習的歷史](../2-history-of-ML/translations/README.zh-tw.md) -1. [機器學習中的公平性](../3-fairness/translations/README.zh-tw.md) -1. [機器學習技術](../4-techniques-of-ML/translations/README.zh-tw.md) -### 致謝 - -"機器學習簡介"由 [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) 及 [Jen Looper](https://twitter.com/jenlooper),共同傾 ♥️ 而作 - -"機器學習及人工智能歷史" 由 [Jen Looper](https://twitter.com/jenlooper) 及 [Amy Boyd](https://twitter.com/AmyKateNicho)傾 ♥️ 而作 - -"公平性與機器學習" 由 [Tomomi Imura](https://twitter.com/girliemac) 傾 ♥️ 而作 - -"機器學習的技術" 由 [Jen Looper](https://twitter.com/jenlooper) 及 [Chris Noring](https://twitter.com/softchris) 傾 ♥️ 而作 diff --git a/2-Regression/1-Tools/translations/README.es.md b/2-Regression/1-Tools/translations/README.es.md deleted file mode 100755 index 6178fae2..00000000 --- a/2-Regression/1-Tools/translations/README.es.md +++ /dev/null @@ -1,206 +0,0 @@ -# Comience con Python y Scikit-learn para modelos de regresión - -![Resumen de regresiones en un boceto](../../sketchnotes/ml-regression.png) - -> Boceto de [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Cuestionario previo](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/) -## Introducción - -En estas cuatro lecciones, descubrirá como crear modelos de regresión. Discutiremos para que sirven estos en breve. Pero antes de hacer cualquier cosa, asegúrese de tener las herramientas adecuadas para comenzar el proceso! - -En esta lección, aprenderá a: - -- Configurar su computadora para tares locales de machine learning. -- Trabajar con cuadernos Jupyter. -- Usar Scikit-learn, incluida la instalación. -- Explorar la regressión lineal con un ejercicio práctico. - -## Instalaciones y configuraciones. - -[![Uso de Python con Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Uso de Python con Visual Studio Code") - -> 🎥 Haga click en la imagen de arriba para ver un video: usando Python dentro de VS Code. - -1. **Instale Python**. Asegúrese de que [Python](https://www.python.org/downloads/) esté instalado en su computadora. Utilizará Python para muchas tareas de ciencia de datos y machine learning. La mayoría de los sistemas informáticos ya incluyen una instalación de Python. También hay disponibles [paquetes de código de Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) útiles para facilitar la configuración a algunos usuarios. - - Sin embargo algunos usos de Python requieren una versión del software, mientras otros requieren una versión diferente. Por esta razón, es útil trabajar dentro de un [entorno virtual](https://docs.python.org/3/library/venv.html). - -2. **Instale Visual Studio Code**. Asegúrese de tener Visual Studio Code instalado en su computadora. Siga estas instrucciones para [instalar Visual Studio Code](https://code.visualstudio.com/) para la instalación básica. Va a utilizar Python en Visual Studio Code en este curso, por lo que es posible que desee repasar cómo [configurar Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para el desarrollo en Python. - - > Siéntase cómodo con Python trabajando con esta colección de [módulos de aprendizaje](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - -3. **Instale Scikit-learn**, siguiendo [estas instrucciones](https://scikit-learn.org/stable/install.html). Dado que debe asegurarse de usar Python3, se recomienda que use un entorno virtual. Tenga en cuenta que si está instalando esta biblioteca en una Mac M1, hay instrucciones especiales en la página vinculada arriba. - -1. **Instale Jupyter Notebook**. Deberá [instalar el paquete de Jupyter](https://pypi.org/project/jupyter/). - -## El entorno de creación de ML - -Utilizará **cuadernos** para desarrollar su código en Python y crear modelos de machine learning. Este tipo de archivos es una herramienta común para científicos de datos, y se pueden identificar por su sufijo o extensión `.ipynb`. - -Los cuadernos son un entorno interactivo que permiten al desarrollador codificar y agregar notas y escribir documentación sobre el código lo cual es bastante útil para proyectos experimentales u orientados a la investigación. -### Ejercicio - trabajar con un cuaderno - -En esta carpeta, encontrará el archivo _notebook.ipynb_. - -1. Abra _notebook.ipynb_ en Visual Studio Code. - -Un servidor de Jupyter comenzará con Python 3+ iniciado. Encontrará áreas del cuaderno que se pueden ejecutar, fragmentos de código. Puede ejecutar un bloque de código seleccionando el icono que parece un botón de reproducción. - -1. Seleccione el icono `md` y agregue un poco de _markdown_, y el siguiente texto **# Welcome to your notebook**. - - A continuación, agregue algo de código Python. - -1. Escriba **print('hello notebook')** en el bloque de código. -1. Seleccione la flecha para ejecutar el código. - - Debería ver impresa la declaración: - - ```output - hello notebook - ``` - -![VS Code con un cuaderno abierto](../images/notebook.jpg) - -Puede intercalar su código con comentarios para autodocumentar el cuaderno. - -✅ Piense por un minuto en cuán diferente es el entorno de trabajo de un desarrollador web en comparación con el de un científico de datos. - -## En funcionamiento con Scikit-learn - -Ahora que Python está configurado en un entorno local, y se siente cómo con los cuadernos de Jupyter, vamos a sentirnos igualmente cómodos con Scikit-learn (pronuncie `sci` como en `science`). Scikit-learn proporciona una [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ayudarlo a realizar tares de ML. - -Según su [sitio web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn es una biblioteca de machine learning de código abierto que admite el aprendizaje supervisado y no supervisado. También proporciona varias herramientas para el ajuste de modelos, preprocesamiento de datos, selección y evaluación de modelos, y muchas otras utilidades." - -En este curso, utilizará Scikit-learn y otras herramientas para crear modelos de machine learning para realizar lo que llamamos tareas de 'machine learning tradicional'. Hemos evitado deliberadamente las redes neuronales y el _deep learning_, ya que se tratarán mejor en nuestro próximo plan de estudios 'IA para principiantes'. - -Scikit-learn hace que sea sencillo construir modelos y evaluarlos para su uso. Se centra principalmente en el uso de datos numéricos y contiene varios conjuntos de datos listos para usar como herramientas de aprendizaje. También incluye modelos prediseñados para que los estudiantes lo prueben. Exploremos el proceso de cargar datos preempaquetados y el uso de un primer modelo de estimador integrado con Scikit-learn con algunos datos básicos. - -## Ejercicio - su primer cuaderno de Scikit-learn - -> Este tutorial se insipiró en el [ejemplo de regresión lineal](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) en el sitio web de Scikit-learn's. - -En el archivo _notebook.ipynb_ asociado a esta lección, borré todas las celdas presionando el icono 'papelera'. - -En esta sección, trabajará con un pequeño conjunto de datos sobre la diabetes que está integrado con Scikit-learn con fines de aprendizaje. Imagínese que quisiera probar un tratamiento para pacientes diabéticos. Los modelos de Machine Learning, pueden ayudarlo a determinar que pacientes responderían mejor al tratamiento, en función de combinaciones de variables. Incluso un modelo de regresión muy básico, cuando se visualiza, puede mostrar información sobre variables que le ayudarían en sus ensayos clínicos teóricos. - -✅ Hay muchos tipos de métodos de regresión y el que elija dependerá de las respuestas que esté buscando. Si desea predecir la altura probable de una persona de una edad determinada, utlizaría la regresión lineal, ya que busca un **valor numérico**. Si está interesado en descubrir si un tipo de cocina puede considerarse vegano o no, está buscando una **asignación de categoría**, por lo que utilizaría la regresión logística. Más adelante aprenderá más sobre la regresión logística. Piense un poco en algunas preguntas que puede hacer a los datos y cuáles de estos métodos sería más apropiado. - -Comencemos con esta tarea. - -### Importar bibliotecas - -Para esta tarea importaremos algunas librerías: - -- **matplotlib**. Es una [herramienta gráfica](https://matplotlib.org/) útil y la usaremos para crear un diagrama de líneas. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) es una librería útil para manejar datos numéricos en Python. -- **sklearn**. Esta es la librería Scikit-learn. - -Importar algunas librerías para ayudarte con tus tareas. - -1. Agrege importaciones escribiendo el siguiente código: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - -Arriba estás importando `matplottlib`, `numpy` y estás importando `datasets`, `linear_model` y `model_selection` de `sklearn`. `model_selection` se usa para dividir datos en conjuntos de entrenamiento y de prueba. - -### El conjunto de datos de diabetes - -El [conjunto de datos de diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) incluye 442 muestras de datos sobre la diabetes, con 10 variables de características, algunas de las cuales incluyen: - -edad: edad en años. -bmi: índice de masa corporal. -bp: presión arterial promedio. -s1 tc: Células-T (un tipo de glóbulos blancos). - -✅ Este conjunto de datos incluye el concepto de sexo como una variable característica importante para la investigación sobre la diabetes. Piense un poco en cómo categorizaciones como ésta podrían excluir a ciertas partes de una población de los tratamientos. - -Ahora cargue los datos X e y. - -> 🎓 Recuerde, esto es aprendizeje supervisado, y necesitamos un objetivo llamado 'y'. - -En una nueva celda de código, cargue el conjunto de datos de diabetes llamando `load_diabetes()`. La entrada `return_X_y=True` indica que `X` será una matriz de datos, y `y` será el objetivo de regresión. - -1. Agregue algunos comandos de impresión para mostrar la forma de la matriz de datos y su primer elemento: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - Lo que recibe como respuesta es una tupla. Lo que está haciendo es asignar los dos primeros valores de la tupla a `X` y `y` respectivamente. Más información [sobre tuplas](https://wikipedia.org/wiki/Tuple). - - Puede ver que estos datos tienen 442 elementos en forma de matrices de 10 elementos: - - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Piense un poco en la relación entre los datos y el objetivo de la regresión. La regresión lineal predice relaciones entre la característica X y la variable objetivo y. ¿Puede encontrar el [objetivo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para el cojunto de datos de diabetes en la documentación? ¿Qué está demostrando este conjunto de datos dado ese objetivo? - -2. A continuación, seleccione una parte de este conjunto de datos para graficarlos colocándolos en una nueva matriz utilizando la función `newaxis` de _numpy_. Vamos a utilizar una regresión lineal para generar una línea entre los valores de estos datos, según un patrón que determine. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ En cualquier momento, imprima los datos para comprobar su forma. - -3. Ahora que tiene los datos listos para graficarlos, puede ver si una máquina puede ayudar a determinar una división lógica entre los númnero en este conjunto de datos. Para hacer esto, necesita dividir los datos (X) y el objetivo (y) en conjunto de datos de prueba y entrenamiento. Scikit-learn tiene una forma sencilla de hacer esto; puede dividir sus datos de prueba en un punto determinado. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Ahora está listo para entrenar su modelo! Cargue el modelo de regresión lineal y entrénelo con sus datos de entrenamiento X e y usando `model.fit()`: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` es una función que verá en muchas bibliotecas de ML como TensorFlow - -5. Luego, cree una predicción usando datos de prueba, usando la función `predict()`. Esto se utilizará para trazar la línea entre los grupos de datos. - - ```python - y_pred = model.predict(X_test) - ``` - -6. Ahora es el momento de mostrar los datos en una gráfica. Matplotlib es una herramienta muy útil para esta tarea. Cree una gráfica de dispersión de todos los datos de prueba X e y, y use la predicción para dibujar una línea en el lugar más apropiado, entre las agrupaciones de datos del modelo. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.show() - ``` - - ![un diagrama de dispersión que muestra puntos de datos sobre la diabetes](./images/scatterplot.png) - - ✅ Piense un poco sobre lo que está pasando aquí. Una línea recta atraviesa muchos pequeños puntos de datos, pero ¿qué está haciendo excactamente? ¿Puede ver cómo debería poder usar esta línea para predecir dónde debe encajar un punto de datos nuevo y no visto en relación con el eje y del gráfico? Intente poner en palabras el uso práctico de este modelo. - -Felicitaciones, construiste tu primer modelo de regresión lineal, creaste una predicción con él y lo mostraste en una gráfica! - ---- -## Desafío - -Grafique una variable diferente de este conjunto de datos. Sugerencia: edite esta linea: `X = X[:, np.newaxis, 2]`. Dado el objetivo de este conjunto de datos,¿qué puede descubrir sobre la progresión de la diabetes? -## [Cuestionario posterior a la conferencia](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) - -## Revisión y autoestudio - -En este tutorial, trabajó con regresión lineal simple, en lugar de regresión lineal univariante o múltiple. Lea un poco sobre las diferencias entre estos métodos o eche un vistazo a [este video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) - -Lea más sobre el concepto de regresión lineal y piense que tipo de preguntas se pueden responder con esta técnica.Tome este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para profundizar su comprensión. - -## Asignación - -[Un conjunto de datos diferentes](assignment.md) diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md deleted file mode 100644 index 180579f1..00000000 --- a/2-Regression/1-Tools/translations/README.id.md +++ /dev/null @@ -1,208 +0,0 @@ -# Memulai dengan Python dan Scikit-learn untuk model regresi - -![Ringkisan regresi dalam sebuah catatan sketsa](../../../sketchnotes/ml-regression.png) - -> Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Kuis Pra-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/) -## Pembukaan - -Dalam keempat pelajaran ini, kamu akan belajar bagaimana membangun model regresi. Kita akan berdiskusi apa fungsi model tersebut dalam sejenak. Tetapi sebelum kamu melakukan apapun, pastikan bahwa kamu sudah mempunyai alat-alat yang diperlukan untuk memulai! - -Dalam pelajaran ini, kamu akan belajar bagaimana untuk: - -- Konfigurasi komputermu untuk tugas pembelajaran. -- Bekerja dengan Jupyter notebooks. -- Menggunakan Scikit-learn, termasuk instalasi. -- Menjelajahi regresi linear dengan latihan *hands-on*. - - -## Instalasi dan konfigurasi - -[![Menggunakan Python dalam Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Menggunakan Python dalam Visual Studio Code") - -> 🎥 Klik foto di atas untuk sebuah video: menggunakan Python dalam VS Code - -1. **Pasang Python**. Pastikan bahwa [Python](https://www.python.org/downloads/) telah dipasang di komputermu. Kamu akan menggunakan Python untuk banyak tugas *data science* dan *machine learning*. Python sudah dipasang di kebanyakan sistem komputer. Adapula *[Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)* yang berguna untuk membantu proses pemasangan untuk beberapa pengguna. - - Beberapa penggunaan Python memerlukan satu versi perangkat lunak tersebut, sedangkan beberapa penggunaan lainnya mungkin memerlukan versi Python yang beda lagi. Oleh sebab itulah akan sangat berguna untuk bekerja dalam sebuah *[virtual environment](https://docs.python.org/3/library/venv.html)* (lingkungan virtual). - -2. **Pasang Visual Studio Code**. Pastikan kamu sudah memasangkan Visual Studio Code di komputermu. Ikuti instruksi-instruksi ini untuk [memasangkan Visual Studio Code](https://code.visualstudio.com/) untuk instalasi dasar. Kamu akan menggunakan Python dalam Visual Studio Code dalam kursus ini, jadi kamu mungkin akan ingin mencari tahu cara [mengkonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) untuk menggunakan Python. - - > Nyamankan diri dengan Python dengan mengerjakan [koleksi modul pembelajaran ini](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - -3. **Pasang Scikit-learn**, dengan mengikuti [instruksi di sini](https://scikit-learn.org/stable/install.html). Karena harus dipastikan bahwa kamu sedang menggunakan Python 3, kami anjurkan kamu menggunakan sebuah *virtual environment*. Ingatlah juga bahwa jika kamu ingin memasangkan ini di sebuah M1 Mac, ada instruksi khusus dalam laman yang ditautkan di atas. - -4. **Pasang Jupyter Notebook**. Kamu akan harus [memasang paket Jupyter](https://pypi.org/project/jupyter/). - -## Lingkungan penulisan ML-mu - -Kamu akan menggunakan ***notebooks*** untuk bekerja dengan kode Python-mu dan membuat model *machine learning*-mu. Jenis file ini adalah alat yang sering digunakan *data scientists* dan dapat diidentifikasikan dengan akhiran/ekstensi `.ipynb`. - -*Notebook* adalah sebuah lingkungan interaktif yang memungkinkan seorang *developer* untuk menulis kode, catatan, dan dokumentasi mengenai kode tersebut sehingga menjadi sangat berguna untuk proyek eksperimental ataupun riset. - -### Latihan - bekerja dengan sebuah *notebook* - -Dalam folder ini, kamu akan menemukan file _notebook.ipynb_. - -1. Buka _notebook.ipynb_ dalam Visual Studio Code. - - Sebuah server Jupyter akan mulai dengan Python 3+. Kamu akan menemukan bagian-bagian *notebook* yang dapat di-`run` (dijalankan). Bagian-bagian tersebut adalah carikan-carikan kode. Kamu bisa menjalankan secarik kode dengan mengklik tombol ▶. - -2. Pilih ikon `md` dan tambahlah sedikit *markdown*: **# Selamat datang di *notebook* saya!** - - Lalu, tambahlah sedikit kode Python. - -3. Ketik **print('hello notebook')** dalam blok kode. - -4. Klik ▶ untuk menjalankan kode. - - Hasilnya harusnya ini: - - ```output - hello notebook - ``` - -![Sebuah *notebook* yang dibuka di VS Code](../images/notebook.jpg) - -Kamu bisa menyelipkan catatan-catatan antara kodemu untuk mendokumentasi *notebook*-nya. - -✅ Pikirkanlah sejenak bagaimana lingkungan seorang *web developer* berbeda dengan lingkungan seorang *data scientist*. - -## Berjalan dengan Scikit-learn - -Sekarang, Python sudah siap dalam lingkungan lokalmu, dan kamu sudah nyaman bekerja dengan *Jupyter notebook*. Marilah membiasakan diri dengan Scikit-learn (dilafalkan `saikit lern`; huruf `e` dalam `lern` seperti `e` dalam kata `Perancis`). Scikit-learn menyediakan sebuah [API ekstensif](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu kamu mengerjakan tugas ML. - -Berdasarkan [situs mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn" adalah sebuah *open-source library* untuk *machine-learning* yang dapat digunakan untuk *supervised* dan *unsupervised learning*. Scikit-learn juga menyediakan beragam alat untuk *model-fitting*, *data preprocessing*, seleksi dan evaluasi model, dll. - -Dalam kursus ini, kamu akan menggunakan Scikit-learn dan beberapa alat lainnya untuk membangun model *machine-learning* untuk mengerjakan apa yang kami panggil tugas '*machine-learning* tradisional'. Kami sengaja menghindari *neural networks* dan *deep learning* sebab mereka akan dibahas dengan lebih lengkap dalam kurikulum 'AI untuk pemula' nanti. - -Scikit-learn memudahkan pembangunan dan evaluasi model-model. Dia terutama fokus pada menggunakan data numerik dan mempunyai beberapa *dataset* yang siap sedia untuk digunakan sebagai alat belajar. Dia juga mempunyai model yang sudah dibangun untuk murid-murid untuk langsung coba. Mari menjelajahi proses memuat data yang sudah disiapkan dan menggunakan model ML pengestimasian pertama menggunakan Scikit-learn dengan data sederhana. - - -## Latihan - Scikit-learn *notebook* pertamamu - -> Tutorial ini terinspirasi [contoh regresi linear ini](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di situs Scikit-learn. - -Dalam file _notebook.ipynb_ dari pelajaran ini, kosongkan semua sel dengan mengklik tombol berlambang 'tempat sampah'. - -Dalam bagian ini, kamu akan bekerja dengan sebuah *dataset* kecil tentang diabetes yang datang bersama dengan Scikit-learn yang dimaksud sebagai bahan ajaran. Bayangkan bahwa kamu ingin mencoba sebuah cara pengobatan untuk pasien diabetes. Model *machine learning* mungkin dapat membantu kamu menentukan pasien mana merespon lebih baik pada pengobatan tersebut berdasarkan kombinasi-kombinasi variabel. Bahkan sebuah model regresi yang sederhana, saat divisualisasikan, dapat menunjukkanmu informasi tentang variabel-variabel yang dapat membantu kamu mengorganisasikan uji-uji klinis teoritismu. - -✅ Ada banyak macam metode regresi, dan yang mana yang kamu pilih tergantung pada jawaban yang kamu sedang cari. Kalau kamu ingin memprediksi tinggi badan seseorang dari usianya, kamu bisa menggunakan regresi linear, karena kamu mencari sebuah **nilai numerik**. Kalau kamu tertarik pada apa sebuah jenis kuliner sebaiknya dianggap sebagai vegan atau tidak, kamu sedang mencari sebuah **kategorisasi/klasifikasi**; kamu bisa menggunakan regresi logistik. Kamu akan belajar lebih banyak tentang regresi logistik nanti. Pikirkan dahulu beberapa pertanyaan yang kamu bisa tanyakan dari data yang ada dan metode yang mana akan paling cocok. - -Mari mulai mengerjakan tugas ini. - -### Impor *library* - -Untuk tugas ini, kita akan mengimpor beberapa *library*: - -- **matplotlib**. Sebuah [alat untuk membuat grafik](https://matplotlib.org/) yang kita akan gunakan untuk membuat sebuah grafik garis. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah sebuah *library* berguna untuk menangani data numerik di Python. -- **sklearn**. Ini adalah *library* Scikit-learn. - -Imporlah *library-library* yang akan membantu dengan tugasmu. - -1. Tambahlah impor dengan mengetik kode berikut: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - Di atas, kamu sedang mengimpor `matplottlib`, `numpy`. Selain itu, kamu juga sedang mengimpor `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk memisahkan data menjadi set latihan dan set ujian. - -### *Dataset* diabetes - -[*Dataset* diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) mencakupi 442 sampel data mengenai diabetes dengan 10 variabel utama, termasuk: - -- age: usia dalam tahun -- bmi: *body mass index* -- bp: tekanan darah rata-rata -- s1 tc: Sel T (sejenis cel darah putih) - -✅ *Dataset* ini juga mempunyai konsep 'jenis kelamin' sebagai sebuah variabel utama yang penting dalam riset diabetes. Banyak *dataset* medis mempunyai klasifikasi binari ini. Pikirkan sejenak bagaimana kategorisasi seperti yang ini dapat mengecualikan bagian tertentu dari sebuah populasi dari pengobatan. - -Sekarang, muatkan data X dan y. - -> 🎓 Ingatlah, ini adalah *supervised learning*, jadi kita perlu sebuah target (dinamakan 'y'). - -Dalam sebuah sel kode yang baru, muatkan *dataset* diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menunjukkan bahwa `X` adalah sebuah matriks data dan `y` adalah target regresi. - -1. Tambah beberapa instruksi *print* untuk menunjukkan ukuran data matriks dan elemen pertama matriks tersebut. - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - Respon yang didapati adalah sebuah *tuple*. Kamu sedang menetapkan kedua nilai pertama dalam *tuple* itu ke dalam `X` dan `y` secara berturut. Pelajari lebih banyak [tentant *tuples*](https://wikipedia.org/wiki/Tuple). - - Kamu bisa melihat bahwa data ini berupa 422 nilai yang disusun menjadi beberapa `array` dengan 10 elemen: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Pikirkan sejenak tentang hubungan antara data dan target regresi. Apa kamu bisa menemukan [targetnya](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk *database* diabetes dalam dokumentasinya? Mengetahui targetnya, apa yang *dataset* ini sedang mendemonstrasikan? - -2. Lalu, pilih sebuah porsi dataset ini untuk digambarkan dengan menyusuninya menjadi sebuah `array` baru dengan fungsi `newaxis` dari `numpy`. Kita akan menggunakan regresi linear untuk menggambar sebuah garis antara nilai-nilai dalam data ini sesuai dengan pola yang ditentukannya. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ Kapanpun, *print*-lah datanya untuk memeriksa bentuknya. - -3. Sekarang datanya sudah siap untuk digambar. Kamu bisa melihat jikalau sebuah mesin dapat menentukan sebuah perpisahan logika dari nomor-nomor *dataset* ini. Untuk melakukan itu, kamu harus memisahkan data (X) dan target (y) menjadi set latihan dan set ujian. Scikit-learn juga memberi cara untuk melakukan itu; kamu bisa memisahkan data ujianmu pada titik tertentu. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Sekarang, kamu sudah siap untuk melatihkan modelmu! Muatkan dahulu data regresi linear dan latihkan modelmu dengan set X dan y-mu dengan `model.fit()`: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` adalah sebuah fungsi yang akan kamu temukan dalam banyak *library* ML seperti TensorFlow. - -5. Lalu, buatlah sebuah prediksi dengan data ujianmu dengan fungsi `predict()`. Ini akan digunakan untuk menggambar sebuah garis antara grup-grup data. - - ```python - y_pred = model.predict(X_test) - ``` - -6. Sekarang waktunya untuk menggambar data dalam sebuah grafik. Matplotlib adalah sebuah alat yang sangat berguna untuk melakukan itu. Buatlah sebuah petak sebar dari semua X dan y dari set ujian dan gunakan prediksi yang dihasilkan untuk menggambar sebuah garis di tempat yang paling cocok antara grup-grup data modelnya. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.show() - ``` - - ![sebuah petak sebar yang menunjukkan titik-titik data sekitar diabetes](./images/scatterplot.png) - - ✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus membentang tengah-tengah titik-titik kecil data. Tetapi apa yang sedang garis itu lakukan? Apa kamu bisa melihat bagaimana kamu bisa menggunakan garis ini untuk memprediksi di mana sebuah titik data baru yang tidak pernah dilihat sebelumnya kemungkinan besar akan terletak berhubungan dengan sumbu y grafik ini? Coba jelaskan dalam kata-kata kegunaan praktis model ini. - -Selamat, kamu telah membangun model regresi linear pertamamu, membuat sebuah prediksi darinya, dan menunjukkannya dalam sebuah grafik! - ---- -## Tantangan - -Gambarkan sebuah variabel yang beda dari *dataset* ini. Petunjuk: edit baris ini: `X = X[:, np.newaxis, 2]`. Mengetahui target *dataset* ini, apa yang kamu bisa menemukan tentang kemajuan diabetes sebagai sebuah penyakit? -## [Kuis pasca-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/) - -## Review & Pembelajaran Mandiri - -Dalam tutorial ini, kamu bekerja dengan sebuah model regresi linear yang sederhana daripada regresi linear univariat atau berganda. Bacalah sedikit tentang perbedaan antara metode-metode ini atau tontonlah [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). - -Bacalah lebih banyak tentang konsep regresi dan pikirkanlah tentang jenis pertanyaan apa saja yang bisa dijawab teknik ini. Cobalah [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) untuk memperdalam pemahamanmu. - -## Tugas - -[*Dataset* yang beda](assignment.md) diff --git a/2-Regression/1-Tools/translations/README.it.md b/2-Regression/1-Tools/translations/README.it.md deleted file mode 100644 index f251de16..00000000 --- a/2-Regression/1-Tools/translations/README.it.md +++ /dev/null @@ -1,211 +0,0 @@ -# Iniziare con Python e Scikit-learn per i modelli di regressione - -![Sommario delle regressioni in uno sketchnote](../../../sketchnotes/ml-regression.png) - -> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Qui Pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/?loc=it) - -## Introduzione - -In queste quattro lezioni, si scoprirà come costruire modelli di regressione. Si discuterà di cosa siano fra breve. -Prima di tutto, ci si deve assicurare di avere a disposizione gli strumenti adatti per far partire il processo! - -In questa lezione, si imparerà come: - -- Configurare il proprio computer per attività locali di machine learning. -- Lavorare con i Jupyter notebook. -- Usare Scikit-learn, compresa l'installazione. -- Esplorare la regressione lineare con un esercizio pratico. - -## Installazioni e configurazioni - -[![Usare Python con Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Using Python with Visual Studio Code") - -> 🎥 Fare click sull'immagine qui sopra per un video: usare Python all'interno di VS Code. - -1. **Installare Python**. Assicurarsi che [Python](https://www.python.org/downloads/) sia installato nel proprio computer. Si userà Python for per molte attività di data science e machine learning. La maggior parte dei sistemi già include una installazione di Python. Ci sono anche utili [Pacchetti di Codice Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponbili, per facilitare l'installazione per alcuni utenti. - - Alcuni utilizzi di Python, tuttavia, richiedono una versione del software, laddove altri ne richiedono un'altra differente. Per questa ragione, è utile lavorare con un [ambiente virtuale](https://docs.python.org/3/library/venv.html). - -2. **Installare Visual Studio Code**. Assicurarsi di avere installato Visual Studio Code sul proprio computer. Si seguano queste istruzioni per [installare Visual Studio Code](https://code.visualstudio.com/) per l'installazione basica. Si userà Python in Visual Studio Code in questo corso, quindi meglio rinfrescarsi le idee su come [configurare Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) per lo sviluppo in Python. - - > Si prenda confidenza con Python tramite questa collezione di [moduli di apprendimento](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - -3. **Installare Scikit-learn**, seguendo [queste istruzioni](https://scikit-learn.org/stable/install.html). Visto che ci si deve assicurare di usare Python 3, ci si raccomanda di usare un ambiente virtuale. Si noti che se si installa questa libreria in un M1 Mac, ci sono istruzioni speciali nella pagina di cui al riferimento qui sopra. - -1. **Installare Jupyter Notebook**. Servirà [installare il pacchetto Jupyter](https://pypi.org/project/jupyter/). - -## Ambiente di creazione ML - -Si useranno **notebook** per sviluppare il codice Python e creare modelli di machine learning. Questo tipo di file è uno strumento comune per i data scientist, e viene identificato dal suffisso o estensione `.ipynb`. - -I notebook sono un ambiente interattivo che consente allo sviluppatore di scrivere codice, aggiungere note e scrivere documentazione attorno al codice il che è particolarmente utile per progetti sperimentali o orientati alla ricerca. - -### Esercizio - lavorare con un notebook - -In questa cartella, si troverà il file _notebook.ipynb_. - -1. Aprire _notebook.ipynb_ in Visual Studio Code. - - Un server Jupyter verrà lanciato con Python 3+. Si troveranno aree del notebook che possono essere `eseguite`, pezzi di codice. Si può eseguire un blocco di codice selezionando l'icona che assomiglia a un bottone di riproduzione. - -1. Selezionare l'icona `md` e aggiungere un poco di markdown, e il seguente testo **# Benvenuto nel tuo notebook**. - - Poi, aggiungere un blocco di codice Python. - -1. Digitare **print('hello notebook')** nell'area riservata al codice. -1. Selezionare la freccia per eseguire il codice. - - Si dovrebbe vedere stampata la seguente frase: - - ```output - hello notebook - ``` - -![VS Code con un notebook aperto](../images/notebook.jpg) - -Si può inframezzare il codice con commenti per auto documentare il notebook. - -✅ Si pensi per un minuto all'ambiente di lavoro di uno sviluppatore web rispetto a quello di un data scientist. - -## Scikit-learn installato e funzionante - -Adesso che Python è impostato nel proprio ambiente locale, e si è familiari con i notebook Jupyter, si acquisterà ora confidenza con Scikit-learn (si pronuncia con la `si` della parola inglese `science`). Scikit-learn fornisce una [API estensiva](https://scikit-learn.org/stable/modules/classes.html#api-ref) che aiuta a eseguire attività ML. - -Stando al loro [sito web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn è una libreria di machine learning open source che supporta l'apprendimento assistito (supervised learning) e non assistito (unsuperivised learnin). Fornisce anche strumenti vari per l'adattamento del modello, la pre-elaborazione dei dati, la selezione e la valutazione dei modelli e molte altre utilità." - -In questo corso, si userà Scikit-learn e altri strumenti per costruire modelli di machine learning per eseguire quelle che vengono chiamate attività di 'machine learning tradizionale'. Si sono deliberamente evitate le reti neurali e il deep learning visto che saranno meglio trattati nel prossimo programma di studi 'AI per Principianti'. - -Scikit-learn rende semplice costruire modelli e valutarli per l'uso. Si concentra principalmente sull'utilizzo di dati numerici e contiene diversi insiemi di dati già pronti per l'uso come strumenti di apprendimento. Include anche modelli pre-costruiti per gli studenti da provare. Si esplora ora il processo di caricamento dei dati preconfezionati, e, utilizzando un modello di stimatore incorporato, un primo modello ML con Scikit-Learn con alcuni dati di base. - -## Esercizio - Il Primo notebook Scikit-learn - -> Questo tutorial è stato ispirato dall'[esempio di regressione lineare](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) nel sito web di Scikit-learn. - -Nel file _notebook.ipynb_ associato a questa lezione, svuotare tutte le celle usando l'icona cestino ('trash can'). - -In questa sezione, di lavorerà con un piccolo insieme di dati sul diabete che è incorporato in Scikit-learn per scopi di apprendimento. Si immagini di voler testare un trattamento per i pazienti diabetici. I modelli di machine learning potrebbero essere di aiuto nel determinare quali pazienti risponderebbero meglio al trattamento, in base a combinazioni di variabili. Anche un modello di regressione molto semplice, quando visualizzato, potrebbe mostrare informazioni sulle variabili che aiuteranno a organizzare le sperimentazioni cliniche teoriche. - -✅ Esistono molti tipi di metodi di regressione e quale scegliere dipende dalla risposta che si sta cercando. Se si vuole prevedere l'altezza probabile per una persona di una data età, si dovrebbe usare la regressione lineare, visto che si sta cercando un **valore numerico**. Se si è interessati a scoprire se un tipo di cucina dovrebbe essere considerato vegano o no, si sta cercando un'**assegnazione di categoria** quindi si dovrebbe usare la regressione logistica. Si imparerà di più sulla regressione logistica in seguito. Si pensi ad alcune domande che si possono chiedere ai dati e quale di questi metodi sarebbe più appropriato. - -Si inizia con questa attività. - -### Importare le librerie - -Per questo compito verranno importate alcune librerie: - -- **matplotlib**. E' un utile [strumento grafico](https://matplotlib.org/) e verrà usato per creare una trama a linee. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) è una libreira utile per gestire i dati numerici in Python. -- **sklearn**. Questa è la libreria Scikit-learn. - -Importare alcune librerie che saranno di aiuto per le proprie attività. - -1. Con il seguente codice si aggiungono le importazioni: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - Qui sopra vengono importati `matplottlib`, e `numpy`, da `sklearn` si importa `datasets`, `linear_model` e `model_selection`. `model_selection` viene usato per dividere i dati negli insiemi di addestramento e test. - -### L'insieme di dati riguardante il diabete - -L'[insieme dei dati sul diabete](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) include 442 campioni di dati sul diabete, con 10 variabili caratteristiche, alcune delle quali includono: - -- age (età): età in anni -- bmi: indice di massa corporea (body mass index) -- bp: media pressione sanguinea -- s1 tc: Cellule T (un tipo di leucocito) - -✅ Questo insieme di dati include il concetto di "sesso" come caratteristica variabile importante per la ricerca sul diabete. Molti insiemi di dati medici includono questo tipo di classificazione binaria. Si rifletta su come categorizzazioni come questa potrebbe escludere alcune parti di una popolazione dai trattamenti. - -Ora si caricano i dati di X e y. - -> 🎓 Si ricordi, questo è apprendimento supervisionato (supervised learning), e serve dare un nome all'obiettivo 'y'. - -In una nuova cella di codice, caricare l'insieme di dati sul diabete chiamando `load_diabetes()`. Il parametro `return_X_y=True` segnala che `X` sarà una matrice di dati e `y` sarà l'obiettivo della regressione. - -1. Si aggiungono alcuni comandi di stampa per msotrare la forma della matrice di dati e i suoi primi elementi: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - Quella che viene ritornata è una tuple. Quello che si sta facento è assegnare i primi due valori della tupla a `X` e `y` rispettivamente. Per saperne di più sulle [tuples](https://wikipedia.org/wiki/Tuple). - - Si può vedere che questi dati hanno 442 elementi divisi in array di 10 elementi: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Si rifletta sulla relazione tra i dati e l'obiettivo di regressione. La regressione lineare prevede le relazioni tra la caratteristica X e la variabile di destinazione y. Si può trovare l'[obiettivo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) per l'insieme di dati sul diabete nella documentazione? Cosa dimostra questo insieme di dati, dato quell'obiettivo? - -2. Successivamente, selezionare una porzione di questo insieme di dati da tracciare sistemandola in un nuovo array usando la funzione di numpy's `newaxis`. Verrà usata la regressione lineare per generare una linea tra i valori in questi dati secondo il modello che determina. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ A piacere, stampare i dati per verificarne la forma. - -3. Ora che si hanno dei dati pronti per essere tracciati, è possibile vedere se una macchina può aiutare a determinare una divisione logica tra i numeri in questo insieme di dati. Per fare ciò, è necessario dividere sia i dati (X) che l'obiettivo (y) in insiemi di test e addestamento. Scikit-learn ha un modo semplice per farlo; si possono dividere i dati di prova in un determinato punto. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Ora si è pronti ad addestare il modello! Caricare il modello di regressione lineare e addestrarlo con i propri insiemi di addestramento X e y usando `model.fit()`: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` è una funzione che si vedrà in molte librerie ML tipo TensorFlow - -5. Successivamente creare una previsione usando i dati di test, con la funzione `predict()`. Questo servirà per tracciare la linea tra i gruppi di dati - - ```python - y_pred = model.predict(X_test) - ``` - -6. Ora è il momento di mostrare i dati in un tracciato. Matplotlib è uno strumento molto utile per questo compito. Si crei un grafico a dispersione (scatterplot) di tutti i dati del test X e y e si utilizzi la previsione per disegnare una linea nel luogo più appropriato, tra i raggruppamenti dei dati del modello. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.show() - ``` - - ![un grafico a dispersione che mostra i punti dati sul diabete](../images/scatterplot.png) - - ✅ Si pensi a cosa sta succedendo qui. Una linea retta scorre attraverso molti piccoli punti dati, ma cosa sta facendo esattamente? Si può capire come si dovrebbe utilizzare questa linea per prevedere dove un nuovo punto di dati non noto dovrebbe adattarsi alla relazione con l'asse y del tracciato? Si cerchi di mettere in parole l'uso pratico di questo modello. - -Congratulazioni, si è costruito il primo modello di regressione lineare, creato una previsione con esso, e visualizzata in una tracciato! - ---- - -## 🚀Sfida - -Tracciare una variabile diversa da questo insieme di dati. Suggerimento: modificare questa riga: `X = X[:, np.newaxis, 2]`. Dato l'obiettivo di questo insieme di dati, cosa si potrebbe riuscire a scoprire circa la progressione del diabete come matattia? - -## [Qui post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/?loc=it) - -## Riepilogo e Auto Apprendimento - -In questo tutorial, si è lavorato con una semplice regressione lineare, piuttosto che una regressione univariata o multipla. Ci so informi circa le differenze tra questi metodi oppure si dia uno sguardo a [questo video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) - -Si legga di più sul concetto di regressione e si pensi a quale tipo di domande potrebbero trovare risposta con questa tecnica. Seguire questo [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) per approfondire la propria conoscenza. - -## Compito - -[Un insieme di dati diverso](assignment.it.md) - diff --git a/2-Regression/1-Tools/translations/README.ja.md b/2-Regression/1-Tools/translations/README.ja.md deleted file mode 100644 index 8a40fbe3..00000000 --- a/2-Regression/1-Tools/translations/README.ja.md +++ /dev/null @@ -1,218 +0,0 @@ -# 回帰モデルについてPythonとScikit-learnから始めましょう - -![回帰の要約についてのスケッチノート](../../../sketchnotes/ml-regression.png) - -> [Tomomi Imura](https://www.twitter.com/girlie_mac) によって制作されたスケッチノート - -## [講義前クイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9?loc=ja) - -## イントロダクション - -この章で用意されている4つのレッスンでは、回帰モデルを構築する方法について学びます。回帰モデルが何をするためのものなのかは、後ほど説明します。しかし、何かを始める前にプロセスを開始するための適切なツールが用意されていることを確認してください! - -このレッスンでは、以下のことを学びます。 - -- ローカル環境で機械学習タスクを実行するための設定 -- Jupyter Notebookの使い方 -- Scikit-learnのインストールと使い方 -- 線形回帰に関するハンズオン - -## インストールと設定 - -[![VisualStudioCodeでのPythonの使用方法](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "VisualStudioCodeでのPythonの使用方法") - -> 🎥 上の画像をクリックするとビデオが再生されます: VisualStudioCodeでのPythonの使用方法 - -1. **Pythonのインストール**: [Python](https://www.python.org/downloads/) がコンピュータにインストールされていることを確認してください。Pythonは多くのデータサイエンス、機械学習のタスクで使用します。ほとんどのコンピュータシステムにはPythonがすでにインストールされています。一部のユーザのセットアップを簡単にするために [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) を利用することもできます。 - - しかし、Pythonを使っていると時に異なるバージョンを必要とする場合があります。そのため、[仮想環境](https://docs.python.org/3/library/venv.html) を利用すると便利です。 - - -2. **Visual Studio Codeのインストール**: Visual Studio Codeがコンピュータにインストールされていることを確認してください。[こちらの手順](https://code.visualstudio.com/) でVisual Studio Codeをインストールしてください。このコースでは、Visual Studio CodeでPythonを使用しますので [Visual Studio Codeの設定](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) をブラッシュアップしておくといいです。 - - > この [学習モジュール](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) を利用して、Pythonの使い方に慣れてください。 - - -3. **Scikit-learnのインストール**: [こちらの手順](https://scikit-learn.org/stable/install.html) に従ってインストールしてください。Python3の環境で実行する必要があるので、仮想環境を使用することをおすすめします。なお、このライブラリをM1のMacにインストールする場合は、上記リンク先のページに特別な説明があります。 - - -4. **Jupyter Notebookのインストール**: [Jupyter package](https://pypi.org/project/jupyter/) をインストールする必要があります。 - -## MLのオーサリング環境 - -**ノートブック**を利用して、Pythonコードでの開発や機械学習モデルの作成を行います。このような種類のファイルは、データサイエンティストにとって一般的なツールであり、接尾辞または拡張子が `.ipynb` であることで識別できます。 - -ノートブックは、開発者がコードを書くと同時に、そのコードにメモを加えたり、文書を書いたりすることができるインタラクティブな環境です。そのため、実験や研究を目的としたプロジェクトに非常に役立ちます。 - -### エクササイズ - ノートブックでの作業 - -フォルダの中に _notebook.ipynb_ というファイルが入っています。 - -1. Visual Studio Codeで _notebook.ipynb_ を開いてください。 - - JupyterサーバーはPython3+が起動した状態でスタートします。ノートブックの中には、コードを「実行」できる部分があります。再生ボタンのようなアイコンを選択すると、コードブロックを実行することができます。 - - -2. `md`アイコンを選択して、**# Welcome to your notebook** というテキストの簡単なマークダウンを追加してみましょう. - - 次に、Pythonのコードを追加します。 - - -3. コードブロックで **print('hello notebook')** と入力してください。 - - -4. 矢印を選択するとコードが実行されます。 - - 以下のような結果が出力されます: - - ```output - hello notebook - ``` - -![VS Codeで開いたノートブック](../images/notebook.jpg) - -コードにコメントを追加することで、ノートブックをセルフドキュメント化することができます。 - -✅ ウェブ開発者とデータサイエンティストの開発環境がどれほど違うか、ちょっと考えてみてください。 - -## Scikit-learnを使ってみましょう - -さて、ローカル環境にPythonがセットアップされ、Jupyter notebookに慣れてきたところで、Scikit-learn(「science」のように「sci」と発音してください)にも同様に慣れていきましょう。Scikit-learnは、MLタスクを実行するための [広範なAPI](https://scikit-learn.org/stable/modules/classes.html#api-ref) を提供しています。 - -同社の [Webサイト](https://scikit-learn.org/stable/getting_started.html) には次のような説明があります。"Scikit-learnは、教師あり、教師なしの学習をサポートするオープンソースの機械学習ライブラリです。また、モデルのフィッティング、データの前処理、モデルの選択と評価、その他多くのユーティリティーのための様々なツールを提供しています。" - -このコースでは、Scikit-learnやその他のツールを使って機械学習モデルを構築し、私たちが「伝統的な機械学習」と呼ぶタスクを実行します。ニューラルネットワークやディープラーニングについては、近日公開予定の「AI for Beginners」カリキュラムで詳しく解説しますので、意図的に避けています。 - -Scikit-learnは、モデルを構築し、評価を行って実際に利用するということが簡単にできます。主に数値データの使用に焦点を当てており、学習ツールとして使用するための既製のデータセットがいくつか含まれています。また、事前に構築済みのモデルもいくつか含まれています。では、Scikit-learnであらかじめ用意されているデータを使って、最初のMLモデルを構築するプロセスを体験しましょう。 - -## エクササイズ - 初めてのScikit-learnノートブック - -> このチュートリアルはScikit-learnのWebサイトに掲載されている [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) を参考にしています。 - -このレッスンに関連する _notebook.ipynb_ ファイルで、「ゴミ箱」アイコンを押して全てのセルを消去します。 - -このセクションでは、学習用にScikit-learnに組み込まれた、糖尿病に関する小さなデータセットを扱います。糖尿病患者の治療法をテストしたい場合を想像してみてください。機械学習モデルは、変数の組み合わせに基づいて、どの患者がその治療法によく反応するかを判断するのに役立つかもしれません。非常に基本的な回帰モデルであっても、視覚化することで、理論的な臨床試験を整理するのに役立つ変数に関する情報が得られるかもしれません。 - -✅ 回帰には様々な種類があり、求める答えによってどの手法を選ぶかが異なります。例えば、ある人の年齢が与えられて身長を予測したい場合には、**数値**を求めたいので線形回帰を利用します。ある種類の料理がビーガンとみなされるべきかどうかを発見することに興味がある場合は、**カテゴリーの割り当て**を求めているので、ロジスティック回帰を使用するでしょう。ロジスティック回帰については後ほど詳しく説明します。いくつかのデータについて、どのような手法がより適切であるかを少し考えてみてください。 - -では、今回のタスクに取り掛かりましょう。 - -### ライブラリのインポート - -このタスクでは、いくつかのライブラリをインポートします。 - -- **matplotlib**: 便利な [グラフ作成ツール](https://matplotlib.org/) です。今回はこれを使って折れ線グラフを作成します。 -- **numpy**: [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) はPythonで数値データを扱うための便利なライブラリです。 -- **sklearn**: Scikit-learnのライブラリです。 - -作業に役立つライブラリをいくつか紹介します。 - -1. 以下のコードを入力してインポートを追加します。 - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - 上記では、`matplottlib`と`numpy`をインポートし、`sklearn`から`datasets`、`linear_model`、`model_selection`をインポートしています。`model_selection`はデータをトレーニングセットとテストセットに分割する際に使用します。 - -### 糖尿病のデータセット - -組み込みの [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) には、糖尿病に関する442サンプルのデータが含まれており、10個の変数が含まれています。 - -- age: 年齢 -- bmi: ボディマス指数 -- bp: 平均血圧 -- s1 tc: T細胞(白血球の一種) - -✅ このデータセットには、糖尿病に関する研究に重要な変数として「性別」の概念が含まれています。多くの医療データセットには、このようなバイナリ分類が含まれています。このような分類が、人口のある部分を治療から排除する可能性があることについて、少し考えてみましょう。 - -では、Xとyのデータを読み込みます。 - -> 🎓 今回は教師あり学習なので、「y」で表されるターゲットが必要なことを覚えておいてください。 - -新しいコードセルで、`load_diabetes()` を呼び出して糖尿病データセットを読み込みます。入力の `return_X_y=True` は、`X` がデータ行列であり、`y` が回帰の対象であることを示しています。 - -1. データ行列の形とその最初の要素を表示するために、いくつかのprintコマンドを追加します。 - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - `load_diabetes()` のレスポンスとしてタプルが返ってきます。タプルの2つの値をそれぞれ `X`と` y`に割り当てます。詳しくは、 [タプルについて](https://wikipedia.org/wiki/Tuple) を確認してください。 - - このデータは、442個のアイテムで構成されており、一つのアイテムは10個の要素を持つ配列であることがわかります。 - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ データと回帰対象の関係について少し考えてみましょう。線形回帰では、特徴量Xとターゲット変数yの関係を予測します。ドキュメントで、糖尿病データセットの [ターゲット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) を見つけることができますか?そのターゲットを踏まえて、このデータセットは何を示していますか? - - -2. 次に、numpyの`newaxis`関数を使って新しい配列を作成することで、プロットするためのデータセットの一部を選択します。最終的には線形回帰を使用することで、決まったパターンに従って、このデータの値の間に線を生成します。 - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ いつでも、データをprintして、その形を確認することができます。 - - -3. データをプロットする準備ができたので、このデータセットの数字の論理的な分割を機械が判断できるかどうかを確認してみましょう。そのためには、データ(X)とターゲット(y)の両方をトレーニングセットとテストセットに分ける必要があります。Scikit-learnには、これを行うための簡単な方法が用意されています。 - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - - -4. これで、モデルをトレーニングする準備が整いました!線形回帰モデルを読み込み、Xとyのトレーニングセットに `model.fit()` を適用して、モデルの学習を行います。 - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` は、TensorFlowなどのMLライブラリでよく見かける関数です。 - - -5. 次に、`predict()` 関数を使って、テストデータに対する予測を行います。これは、データグループ間の線を引くために使用されます。 - - ```python - y_pred = model.predict(X_test) - ``` - -6. さて、いよいよデータをプロットして表示してみましょう。Matplotlibはこの作業にとても便利なツールです。テストデータの全てのXとyに関する散布図を作成し、モデルの予測を使用することでデータグループ間の最も適切な場所に線を引きます。 - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.show() - ``` - - ![糖尿病周辺のデータポイントを示す散布図](../images/scatterplot.png) - - ✅ ここで何が起こっているのか、少し考えてみましょう。直線がたくさんの小さなデータの点を通っていますが、正確には何をしているのでしょうか?この直線を使って、見たことのない新しいデータポイントがプロットのy軸との関係でどこに当てはまるかを予測することができるはずだということがわかりますか?このモデルの実用的な使い方を言葉にしてみてください。 - -おめでとうございます!初めて線形回帰モデルを構築し、それを使って予測を行い、結果をプロットで表示しました! - ---- -## 🚀チャレンジ - -このデータセットから別の変数を選択してプロットしてください。ヒント: `X = X[:, np.newaxis, 2]` の行を編集する。今回のデータセットのターゲットである、糖尿病という病気の進行について、どのような発見があるのでしょうか? -## [講義後クイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10?loc=ja) - -## レビュー & 自主学習 - -このチュートリアルでは、単変量線形回帰や多変量線形回帰ではなく、単純線形回帰を扱いました。これらの手法の違いについて少し調べてみるか、この [ビデオ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) を見てみましょう。 - -回帰の概念について詳しく調べ、この手法でどのような質問に答えられるかを考えてみましょう。この [チュートリアル](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) で理解を深めることもできます。 - -## 課題 - -[異なるデータセット](./assignment.ja.md) diff --git a/2-Regression/1-Tools/translations/README.ko.md b/2-Regression/1-Tools/translations/README.ko.md deleted file mode 100644 index 81150a70..00000000 --- a/2-Regression/1-Tools/translations/README.ko.md +++ /dev/null @@ -1,213 +0,0 @@ -# Regression 모델을 위한 Python과 Scikit-learn 시작하기 - -![Summary of regressions in a sketchnote](../../../sketchnotes/ml-regression.png) - -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/) - -## 소개 - -4개의 강의에서, regression 모델을 어떻게 만드는 지에 대하여 탐험합니다. 무엇인지 곧 이야기할 것 입니다. 하지만 모든 것을 하기 전에, 프로세스를 시작할 때 올바른 도구가 있는 지 확인합니다! - -이 강의에서는, 이와 같은 내용을 배웁니다: - -- 로컬 머신러닝 작업을 위해서 컴퓨터를 구성합니다. -- Jupyter notebooks으로 작업합니다. -- 설치 과정을 포함해서, Scikit-learn 사용합니다. -- 직접 연습해보며 linear regression을 알아봅니다. - -## 설치하고 구성하기 - -[![Using Python with Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Using Python with Visual Studio Code") - -> 🎥 영상 보려면 이미지 클릭: using Python within VS Code. - -1. **Python 설치하기**. [Python](https://www.python.org/downloads/)이 컴퓨터에 설치되었는 지 확인합니다. 많은 데이터 사이언스와 머신러닝 작업에서 Python을 사용하게 됩니다. 대부분 컴퓨터 시스템은 이미 Python 애플리케이션을 미리 포함하고 있습니다. 사용자가 설치를 쉽게하는, 유용한 [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)이 존재합니다. - - 그러나, 일부 Python만 사용하면, 소프트웨어의 하나의 버전만 요구하지만, 다른 건 다른 버전을 요구합니다. 이런 이유로, [virtual environment](https://docs.python.org/3/library/venv.html)에서 작업하는 것이 유용합니다. - -2. **Visual Studio Code 설치하기**. 컴퓨터에 Visual Studio Code가 설치되어 있는 지 확인합니다. 기본 설치로 [install Visual Studio Code](https://code.visualstudio.com/)를 따라합니다. Visual Studio Code에서 Python을 사용하므로 Python 개발을 위한 [configure Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)를 살펴봅니다. - - > 이 [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)의 모음을 통하여 Python에 익숙해집시다. - -3. [these instructions](https://scikit-learn.org/stable/install.html)에 따라서, **Scikit-learn 설치하기**. Python 3을 사용하는 지 확인할 필요가 있습니다. 가상 환경으로 사용하는 것을 추천합니다. 참고로, M1 Mac에서 라이브러리를 설치하려면, 링크된 페이지에서 특별한 설치 방법을 따라합시다. - -1. **Jupyter Notebook 설치하기**. [install the Jupyter package](https://pypi.org/project/jupyter/)가 필요합니다. - - -## ML 작성 환경 - -**notebooks**으로 Python 코드를 개발하고 머신러닝 모델도 만드려고 합니다. 이 타입 파일은 데이터 사이언티스트의 일반적인 도구이고, 접미사 또는 확장자 `.ipynb`로 찾을 수 있습니다. - -노트북은 개발자가 코드를 작성하고 노트를 추가하며 코드 사이에 문서를 작성할 수 있는 대화형 환경으로서 실험적이거나 연구-중심 프로젝트에 매우 도움이 됩니다. - -### 연습 - notebook으로 작업하기 - -이 폴더에서, _notebook.ipynb_ 파일을 찾을 수 있습니다. - -1. Visual Studio Code에서 _notebook.ipynb_ 엽니다. - - Jupyter 서버는 Python 3+ 이상에서 시작됩니다. 코드 조각에서, `run` 할 수 있는 노트북 영역을 찾습니다. 재생 버튼처럼 보이는 아이콘을 선택해서, 코드 블록을 실핼할 수 있습니다. - -1. `md` 아이콘을 선택하고 markdown을 살짝 추가합니다, 그리고 **# Welcome to your notebook** 텍스트를 넣습니다. - - 다음으로, 약간의 Python 코드를 추가합니다. - -1. 코드 블록에서 **print('hello notebook')** 입력합니다. -1. 코드를 실행하려면 화살표를 선택합니다. - - 출력된 구문이 보여야 합니다: - - ```output - hello notebook - ``` - -![VS Code with a notebook open](../images/notebook.jpg) - -코드에 주석을 넣어서 노트북이 자체적으로 문서화 할 수 있게 할 수 있습니다. - -✅ 웹 개발자의 작업 환경이 데이터 사이언티스트와 어떻게 다른 지 잠시 알아보세요. - -## Scikit-learn으로 시작하고 실행하기 - -이제 로컬 환경에 Python이 설정되었고, 그리고 Jupyter notebooks에 익숙해진 상태에서, Scikit-learn (`science`에서는 `sci`로 발음)도 익숙하게 하겠습니다. Scikit-learn은 ML 작업을 돕는 [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref)가 제공됩니다. - -[website](https://scikit-learn.org/stable/getting_started.html)에 따르면, "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities." 라고 언급되고 있습니다. - -이 코스에서, Scikit-learn과 다른 도구를 사용하여 머신러닝 모델을 만들면서 'traditional machine learning' 작업이 진행됩니다. 곧 다가올 'AI for Beginners' 커리큘럼에서 더 잘 커버될 것이기 때문에, 신경망과 딥러닝은 제외했습니다. - -Scikit-learn 사용하면 올바르게 모델을 만들고 사용하기 위해 평가할 수 있습니다. 주로 숫자 데이터에 포커스를 맞추고 학습 도구로 사용하기 위한 여러 ready-made 데이터셋이 포함됩니다. 또 학생들이 시도해볼 수 있도록 사전-제작된 모델을 포함합니다. 패키징된 데이터를 불러오고 기초 데이터와 Scikit-learn이 같이 있는 estimator first ML 모델로 프로세스를 찾아봅니다. - -## 연습 - 첫 Scikit-learn notebook - -> 이 튜토리얼은 Scikit-learn 웹사이트에 있는 [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)에서 영감 받았습니다. - -이 강의에서 관련있는 _notebook.ipynb_ 파일에서, 'trash can' 아이콘을 누르면 모든 셀이 지워집니다. - -이 세션에서, 학습 목적의 Scikit-learn에서 만든 작은 당뇨 데이터셋으로 다룹니다. 당뇨 환자를 위한 치료 방법을 테스트하고 싶다고 생각해보세요. 머신러닝 모델은 변수 조합을 기반으로, 어떤 환자가 더 잘 치료될 지 결정할 때 도울 수 있습니다. 매우 기초적인 regression 모델도, 시각화하면, 이론적인 임상 시험을 구성하는 데에 도움이 될 변수 정보를 보여줄 수 있습니다. - -✅ Regression 방식에는 많은 타입이 있고, 어떤 것을 선택하는 지에 따라 다릅니다. 만약 주어진 나이의 사람이 클 수 있는 키에 대하여 예측하려고, **numeric value**를 구할 때, linear regression을 사용합니다. 만약 어떤 타입의 요리를 비건으로 분류해야 하는 지 알고 싶다면, logistic regression으로 **category assignment**을 찾습니다. logistic regression은 나중에 자세히 알아봅시다. 데이터에 대하여 물어볼 수 있는 몇 가지 질문과, 이 방식 중 어느 것이 적당한 지 생각해봅니다. - -작업을 시작하겠습니다. - -### 라이브러리 Import - -작업을 하기 위하여 일부 라이브러리를 import 합니다: - -- **matplotlib**. 유용한 [graphing tool](https://matplotlib.org/)이며 line plot을 만들 때 사용합니다. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 Python애서 숫자를 핸들링할 때 유용한 라이브러리입니다. -- **sklearn**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리 입니다. - -작업을 도움받으려면 라이브러리를 Import 합니다. - -1. 다음 코드를 타이핑해서 imports를 추가합니다: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - `matplottlib`, `numpy`를 가져오고 `sklearn` 에서 `datasets`, `linear_model`과 `model_selection`을 가져옵니다. `model_selection`은 데이터를 학습하고 테스트 셋으로 나누기 위하여 사용합니다. - -### 당뇨 데이터셋 - -빌트-인된 [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)은 당뇨에 대한 442개의 데이터 샘플이 있고, 10개의 feature 변수가 있으며, 그 일부는 아래와 같습니다: - -- age: age in years -- bmi: body mass index -- bp: average blood pressure -- s1 tc: T-Cells (a type of white blood cells) - -✅ 이 데이터셋에는 당뇨를 연구할 때 중요한 feature 변수인 '성' 컨셉이 포함되어 있습니다. 많은 의학 데이터셋에는 binary classification의 타입이 포함됩니다. 이처럼 categorizations이 치료에서 인구의 특정 파트를 제외할 수 있는 방법에 대하여 조금 고민해보세요. - -이제, X 와 y 데이터를 불러옵니다. - -> 🎓 다시 언급하지만, 지도 학습이며, 이름이 붙은 'y' 타겟이 필요합니다. - -새로운 코드 셀에서, `load_diabetes()`를 호출하여 당뇨 데이터셋을 불러옵니다. 입력 `return_X_y=True`는 `X`를 data matrix, `y`를 regression 타겟으로 나타냅니다. - - -1. data matrix와 첫 요소의 모양을 보여주는 출력 명령을 몇 개 추가합니다: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - 응답하는 것은, tuple 입니다. 할 일은 tuple의 두 첫번째 값을 `X` 와 `y`에 각자 할당하는 것입니다. [about tuples](https://wikipedia.org/wiki/Tuple)을 봅시다. - - 데이터에 10개 요소의 배열로 이루어진 442개의 아이템이 보입니다: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ 데이터와 regression 타겟의 관계를 잠시 생각해보세요. Linear regression은 feature X와 타겟 변수 y 사이 관계를 예측합니다. 문서에서 당뇨 데이터셋의 [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)을 찾을 수 있나요? 타겟이 고려하면, 데이터셋은 무엇을 보여주나요? - -2. 다음은, numpy의 `newaxis` 함수로 새로운 배열을 통해 플롯할 데이터셋의 일부를 선택합니다. 결정한 패턴에 맞춰서, 데이터의 값 사이에 라인을 생성하기 위하여 linear regression을 사용합니다. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ 언제나, 모양 확인 차 데이터를 출력할 수 있습니다. - -3. 이제 데이터를 그릴 준비가 되었으므로, 머신이 데이터셋의 숫자 사이에서 논리적으로 판단하며 나누는 것을 도와주고 있는 지 확인할 수 있습니다. 그러면, 데이터 (X) 와 타겟 (y)를 테스트와 훈련 셋으로 나눌 필요가 있습니다. Scikit-learn에서는 간단한 방식이 존재합니다; 주어진 포인트에서 테스트 데이터를 나눌 수 있습니다. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. 이제 모델을 훈련할 준비가 되었습니다! linear regression 모델을 부르고 `model.fit()` 사용하여 X 와 y 훈련 셋으로 훈련합니다: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()`은 TensorFlow 처럼 많은 ML 라이브러리에서 볼 수 있는 함수입니다 - -5. 그러면, `predict()` 함수를 사용하여, 테스트 데이터로 prediction을 만듭니다. 데이터 그룹 사이에 라인을 그릴 때 사용합니다 - - ```python - y_pred = model.predict(X_test) - ``` - -6. 이제 plot으로 데이터를 나타낼 시간입니다. Matplotlib은 이 작업에서 매우 유용한 도구입니다. 모든 X 와 y 테스트 데이터의 scatterplot (산점도)를 만들고, prediction을 사용해서 모델의 데이터 그룹 사이, 가장 적절한 장소에 라인을 그립니다. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.xlabel('Scaled BMIs') - plt.ylabel('Disease Progression') - plt.title('A Graph Plot Showing Diabetes Progression Against BMI') - plt.show() - ``` - - ![a scatterplot showing datapoints around diabetes](.././images/scatterplot.png) - - ✅ 여기에 어떤 일이 생기는 지 생각합니다. 직선은 많은 데이터의 점을 지나지만, 무엇을 하고있나요? 라인으로 보이지 않는 데이터 포인트가 plot y 축으로 연관해서, 새롭게 맞출 지 예측하는 방식을 알 수 있을까요? 모델의 실제 사용 사례를 말 해봅니다. - -축하드립니다. 첫 linear regression 모델을 만들고, 이를 통해서 prediction도 만들어서, plot에 보이게 했습니다! - ---- -## 🚀 도전 - -이 데이터셋은 다른 변수를 Plot 합니다. 힌트: 이 라인을 수정합니다: `X = X[:, np.newaxis, 2]`. 이 데이터셋의 타겟이 주어질 때, 질병으로 당뇨가 진행되면 어떤 것을 탐색할 수 있나요? - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/) - -## 검토 & 자기주도 학습 - -이 튜토리얼에서, univariate 또는 multiple linear regression이 아닌 simple linear regression으로 작업했습니다. 방식의 차이를 읽어보거나, [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)를 봅니다. - -regression의 개념에 대하여 더 읽고 기술로 답변할 수 있는 질문의 종류에 대하여 생각해봅니다. [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott)로 깊게 이해합니다. - -## 과제 - -[A different dataset](../assignment.md) diff --git a/2-Regression/1-Tools/translations/README.pt-br.md b/2-Regression/1-Tools/translations/README.pt-br.md deleted file mode 100644 index 4e8fab74..00000000 --- a/2-Regression/1-Tools/translations/README.pt-br.md +++ /dev/null @@ -1,213 +0,0 @@ -# Primeiros passos com Python e Scikit-learn para modelos de regressão - -![Resumo de uma regressão em um _sketchnote_](../../../sketchnotes/ml-regression.png) - -> _Sketchnote_ por [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Questionário inicial](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9?loc=ptbr) - -> ### [Esta lição está disponível em R!](../solution/R/lesson_1-R.ipynb) - -## Introdução - -Nestas quatro lições, você irá descobrir como construir modelos de regressão. Discutiremos o que eles são daqui a pouco. Antes de mais nada, certifique-se que tem as ferramentas de que precisa para começar! - -Nesta lição, você aprenderá como: - -- Configurar seu computador para tarefas de _machine learning_. -- Trabalhar com Jupyter notebooks. -- Usar Scikit-learn, incluindo como fazer sua instalação. -- Explorar regressão linear com exercícios práticos. - -## Instalação e configuração - -[![Configurar Python no Visual Studio Code (vídeo em inglês)](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurar Python no Visual Studio Code") - -> 🎥 Clique na imagem acima para assistir o vídeo: usando Python no VS Code (vídeo em inglês). - -1. **Instale Python**. Verifique se você já instalou [Python](https://www.python.org/downloads/) em seu computador. Você usará Python para muitas tarefas de _data science_ (ciência de dados) e _machine learning_. A maioria dos sistemas de computador já possui Python instalado. Existem [Pacotes de Código em Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponíveis para ajudar na instalação. - - Algumas aplicações em Python exigem versões diferentes da linguagem. Portanto, será útil trabalhar com [ambiente virtual](https://docs.python.org/3/library/venv.html). - -2. **Instale o Visual Studio Code**. Verifique se já existe o Visual Studio Code instalado em seu computador. Siga essas instruções para [instalar o Visual Studio Code](https://code.visualstudio.com/) com uma instalação básica. Você usará Python no Visual Studio Code neste curso e precisará [configurar o Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para isso. - - > Fique mais confortável em usar Python trabalhando nessa coleção de [módulos de aprendizagem](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott). - -3. **Instale a Scikit-learn**, seguindo [estas instruções](https://scikit-learn.org/stable/install.html). Visto que você precisa ter certeza que está usando o Python 3, é recomendável usar um ambiente virtual. Note que se você estiver usando essa biblioteca em um M1 Mac, há instruções específicas na página linkada acima. - -1. **Instale o Jupyter Notebook**. Você precisará [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). - -## Seu ambiente de ML - -Você irá usar **_notebooks_** para desenvolver código em Python e criar modelos de _machine learning_. Esse tipo de arquivo é uma ferramenta comum para _data scientists_, e pode ser identificado pelo sufixo ou extensão `.ipynb`. - -_Notebooks_ são ambientes interativos que permitem a construção de código de programação e notas de _markdown_ para documentá-lo, o que pode ser muito útil para -projetos experimentais ou de pesquisa. - -### Exercício - Trabalhando com um **_notebook_** - -Nesta pasta, você encontrará o arquivo _notebook.ipynb_. - -1. Abra _notebook.ipynb_ no Visual Studio Code. - - Um servidor Jupyter será iniciado com Python 3+ carregado. Você encontrará áreas do _notebook_ que podem ser executadas (`run`). Para executar uma célula de código, basta clicar no ícone que parece um botão _play_ ▶. - -1. Adicione uma célula de _markdown_ (ícone `md`) e escreva o texto: "**# Boas-vindas ao seu notebook**" (Welcome to your Notebook). - - Em seguida, adicionaremos algum código em Python. - -1. Crie e escreva **print('hello notebook')** numa célula de código. -1. Clique no ícone ▶ para executar o código. - - O resultado ficará assim: - - ```output - hello notebook - ``` - -![VS Code com um notebook aberto](../images/notebook.jpg) - -Você pode adicionar comentários para documentar seu _notebook_. - -✅ Pense por um momento em como o ambiente de uma pessoa desenvolvedora _web_ difere do ambiente para _data scientists_. - -## Scikit-learn instalado e funcionando - -Agora que Python está funcionando em seu ambiente local e você está mais confortável com Jupyter notebooks, vamos nos familizar com a Scikit-learn (a pronúncia de `sci` é a mesma do verbo sair conjugado na forma `sai`). Scikit-learn fornece uma [API abrangente](https://scikit-learn.org/stable/modules/classes.html#api-ref) para te ajudar com tarefas de ML. - -De acordo com o seu [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn é uma bibilioteca de código aberto para _machine learning_ que suporta aprendizado supervisionado e não supervisionado. Também fornece várias ferramentas para ajuste de modelo, processamento de dados, seleção e validação de modelo, etc." - -Nesse curso, você irá usar a Scikit-learn e outras ferramentas para construir modelos de _machine learning_ para fazer as chamadas tarefas "tradicionais" de _machine learning_. Nós evitamos usar _neural networks_ (redes neurais) e _deep learning_ (aprendizagem profunda) por que serão abordadas de uma forma mais completa no curso de "AI para iniciantes". - -Scikit-learn facilita a construção e validação de modelos. O foco principal é no uso de dados numéricos mas também contém vários conjuntos de dados prontos para serem usados como ferramenta de estudo. Também possui modelos pré-construídos para os alunos experimentarem. Vamos explorar o processo de carregar dados predefinidos e usar um modelo com estimador integrado com a Scikit-learn e alguns dados básicos. - -## Exercício - Seu primeiro notebook Scikit-learn - -> Este tutorial foi inspirado pelo [exemplo de regressão linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) do site da Scikit-learn. - -No arquivo _notebook.ipynb_, limpe todas as células clicando no ícone que parece uma lata de lixo 🗑️. - -Nesta seção, você irá trabalhar com um pequeno conjunto de dados sobre diabetes que foi produzido para a Scikit-learn com fins de aprendizagem. Imagine que você queira testar um tratamento para pessoas diabéticas. Modelos de _machine learning_ podem te ajudar a escolher quais pacientes irão responder melhor ao tratamento, baseado em combinações de variáveis. Mesmo um modelo de regressão simples, quando visualizado, pode mostrar informações sobre variáveis que ajudarão a organizar ensaios clínicos teóricos. - -✅ Existem muitos tipos de métodos de regressão, e a escolha dentre eles dependerá da resposta que você procura. Se você quer prever a altura provável de uma pessoa de uma determinada idade, você deve usar a regressão linear, pois está sendo usado um **valor numérico**. Se você quer descobrir se um tipo de cozinha pode ser considerado vegano ou não, isso está relacionado a uma **atribuição de categoria**, então usa-se a regressão logística. Você irá aprender mais sobre regressão logística em breve. Pense um pouco nas questões que aparecem com os dados que você tem e qual desses métodos seria mais apropriado usar. - -Vamos começar a tarefa. - -### Importe as bibliotecas - -Para esta tarefa nós importaremos algumas bibliotecas: - -- **matplotlib**. É uma [ferramenta gráfica](https://matplotlib.org/) que usaremos para criar um gráfico de linha. -- **numpy**. [Numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil que lida com dados numéricos em Python. -- **sklearn**. Essa é a bilioteca [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). - -Importe essas bibliotecas pois te ajudarão na tarefa. - -1. Para importar você pode usar o código abaixo: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - Acima, você está importando `matplottlib`, `numpy` e também `datasets`, `linear_model` e `model_selection` da `sklearn`. A função `model_selection` é usada para dividir os dados em conjuntos de dados de treinamento e teste. - -### O conjunto de dados sobre diabetes - -O [conjunto de dados sobre diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) inclui 442 exemplos de dados sobre diabetes, com 10 variáveis de características, algumas delas incluem: - -- age: idade em anos -- bmi (body mass index): índice de massa corporal -- bp (blood pressure): média de pressão sanguínea -- s1 tc: Células T (um tipo de glóbulo branco) - -✅ Esse conjunto de dados inclui o conceito de "sexo" como variável de característica importante no contexto de diabetes. Muitos conjuntos de dados médicos incluem tipos de classificação binária. Pense um pouco sobre como categorizações como essa podem excluir partes de uma população dos tratamentos. - -Agora, carregue os dados X e y. - -> 🎓 Lembre-se que esse é um processo de aprendizado supervisionado, portanto, precisamos de um alvo 'y'. - -Em uma célula de código, carregue o conjunto de dados sobre diabetes chamando a função `load_diabetes()`. O parâmetro `return_X_y=True` indica que `X` será uma matriz de dados e `y` é o alvo da regressão. - -1. Adicione alguns comandos _print_ para mostrar a forma da matriz e seu primeiro elemento: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - A função retorna uma estrutura chamada tupla. Na primeira linha, os dois primeiros valores da tupla são atribuidos a `X` e `y`, respectivamente. Saiba mais [sobre tuplas](https://wikipedia.org/wiki/Tuple). - - Você pode observar que os dados possuem 442 elementos divididos em matrizes de 10 elementos: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Pense sobre a relação entre os dados e o alvo da regressão. Regressão linear sugere a relação entre a característica X e a característica alvo y. Você pode achar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para o conjunto de dados sobre diabetes na documentação? Conhecendo o alvo, o que este conjunto de dados demonstra? - -2. Em seguida, selecione uma parte do conjunto de dados para plotar em um gráfico, colocando-o em uma nova matriz usando a função `newaxis` da numpy. Iremos usar regressão linear para gerar uma linha entre os valores do conjunto de dados, de acordo com o padrão que ela é definida. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ Você pode adicionar comandos _print_ para imprimir e visualizar os dados e verificar seus formatos. - -3. Agora que os dados estão prontos para serem plotados, podemos usar uma máquina para ajudar a determinar a divisão lógica entre os dados no conjunto de dados. Para isso, é necessário dividir os dados (X) e o alvo (y) em conjuntos de teste e treinamento e a Scikit-learn oferece uma maneira de fazer isso. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Seu modelo está pronto para ser treinado! Carregue o modelo de regressão linear e treine-o usando seus conjuntos de treinamento X e Y usando a função `model.fit()`: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` é uma função que aparece em muitas biblioteas de ML, como a TensorFlow. - -5. Por fim, faça uma previsão com seus dados de teste, usando a função `predict()`. Isso será usado para traçar uma linha entre os grupos de dados. - - ```python - y_pred = model.predict(X_test) - ``` - -6. Chegou a hora de mostrar os resultados em um gráfico. Matplotlib é a ferramenta perfeita para essa tarefa. Crie um gráfico de dispersão (`scatter`) de todos os dados de teste de X e y, e use a previsão feita para traçar no lugar mais adequado, entre os grupos de dados do modelo. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.xlabel('Scaled BMIs') - plt.ylabel('Disease Progression') - plt.title('A Graph Plot Showing Diabetes Progression Against BMI') - plt.show() - ``` - - ![um gráfico de dispersão mostrando pontos de dados de diabetes](../images/scatterplot.png) - - ✅ Observe o que está acontecendo. Uma linha reta está atravessando os pequenos pontos de dados, mas o que significa isso? Você consegue ver como pode usar essa linha para prever onde um ponto de dados novo ficaria em relação ao eixo y deste gráfico? Tente colocar em palavras o uso prático desse modelo. - -Parabéns, usando um conjunto de dados, você construiu seu primeiro modelo de regressão linear, pediu que ele fizesse uma previsão e a mostrou em forma de gráfico! - ---- -## 🚀Desafio - -Plote uma variável diferente desse mesmo conjunto de dados. Dica: edite a linha: `X = X[:, np.newaxis, 2]`. Dado o conjunto de dados alvo, o que pode ser descoberto sobre o progresso da diabetes como uma doença? -## [Questionário para fixação](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10?loc=ptbr) - -## Revisão e Auto Aprendizagem - -Neste tutorial, você trabalhou com regressão linear simples, ao invés de regressão univariada ou múltipla. Leia sobre as diferença desses métodos, ou assista [esse vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). - -Leia mais sobre o conceito de regressão e pense sobre os tipos de questões que podem ser respondidas usando essa técnica. Faça esse [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprender mais. - -## Tarefa - -[Um conjunto de dados diferente](assignment.pt-br.md). diff --git a/2-Regression/1-Tools/translations/README.pt.md b/2-Regression/1-Tools/translations/README.pt.md deleted file mode 100644 index c144ee37..00000000 --- a/2-Regression/1-Tools/translations/README.pt.md +++ /dev/null @@ -1,214 +0,0 @@ -# Começar com Python e Scikit-learn para modelos de regressão - -![Resumo das regressões numa nota de esboço -](../../../sketchnotes/ml-regression.png) - -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Questionário pré-palestra](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/) - -> ### [Esta lição está disponível em R!](./solution/R/lesson_1-R.ipynb) - -## Introdução - -Nestas quatro lições, você vai descobrir como construir modelos de regressão. Discutiremos para que são em breve. Mas antes de fazer qualquer coisa, certifique-se de ter as ferramentas certas para iniciar o processo! - -Nesta lição, aprenderá a: - -- Configurar o seu computador para tarefas locais de aprendizagem automática. -- Trabalhe com cadernos Jupyter. -- Utilize scikit-learn, incluindo a instalação. -- Explore a regressão linear com um exercício prático. - -## Instalações e configurações - -[![Configurar Python com código de estúdio visual -](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurar Python com código de estúdio visual -") - -> 🎥 Clique na imagem acima para um vídeo: utilizando Python dentro do Código VS. - -1. **Instalar Python**. Certifique-se de que [Python](https://www.python.org/downloads/) está instalado no seu computador. Você usará Python para muitas tarefas de ciência de dados e machine learning. A maioria dos sistemas informáticos já inclui uma instalação Python. Há úteis [Python Pacotes de codificação](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponível também, para facilitar a configuração para alguns utilizadores. - - Alguns usos de Python, no entanto, requerem uma versão do software, enquanto outros requerem uma versão diferente. Por esta razão, é útil trabalhar dentro de um [ambiente virtual](https://docs.python.org/3/library/venv.html). - -2. **Instalar código de estúdio visual**. Certifique-se de que tem o Código do Estúdio Visual instalado no seu computador. Siga estas instruções para -[instalar Código do Estúdio Visual](https://code.visualstudio.com/) para a instalação básica. Você vai usar Python em Código estúdio visual neste curso, então você pode querer relembrá-lo [configurar código de estúdio visual](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para o desenvolvimento de Python. - -> Fique confortável com python trabalhando através desta coleção de [Aprender módulos](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - -3. **Instale Scikit-learn**, seguindo [estas instruções] -(https://scikit-learn.org/stable/install.html). Uma vez que precisa de garantir que utiliza o Python 3, recomenda-se que utilize um ambiente virtual. Note que se estiver a instalar esta biblioteca num Mac M1, existem instruções especiais na página acima ligada. - -1. **Instale o Caderno Jupyter**. Você precisará [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). - -## O seu ambiente de autoria ML -Você vai usar **cadernos** para desenvolver o seu código Python e criar modelos de aprendizagem automática. Este tipo de ficheiro é uma ferramenta comum para cientistas de dados, e podem ser identificados pelo seu sufixo ou extensão `.ipynb`. - -Os cadernos são um ambiente interativo que permite ao desenvolvedor codificar e adicionar notas e escrever documentação em torno do código que é bastante útil para projetos experimentais ou orientados para a investigação. - -## Exercício - trabalhe com um caderno - -Nesta pasta, encontrará o ficheiro _notebook.ipynb_. - -1. Abra _notebook.ipynb_ em Código de Estúdio Visual. - - Um servidor Jupyter começará com o Python 3+ iniciado. Encontrará áreas do caderno que podem ser `executadas`, peças de código. Pode executar um bloco de código, selecionando o ícone que parece um botão de reprodução. - -2. Selecione o ícone `md` e adicione um pouco de marcação, e o seguinte texto **# Bem-vindo ao seu caderno**. - - Em seguida, adicione um pouco de código Python. - -5. Escreva **print ('olá caderno')** no bloco de código. - -6. Selecione a seta para executar o código. - - Deve ver a declaração impressa: - - ```saída -Olá caderno -``` -![Código VS com um caderno aberto](../images/notebook.jpg) - -Pode interligar o seu código com comentários para auto-documentar o caderno. - -✅ Pense por um minuto como o ambiente de trabalho de um web developer é diferente do de um cientista de dados. - -## Em funcionamento com Scikit-learn - -Agora que python está montado no seu ambiente local, e você está confortável com os cadernos jupyter, vamos ficar igualmente confortáveis com Scikit-learn (pronunciá-lo 'sci' como em 'ciência'). Scikit-learn fornece uma [API extensiva](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ajudá-lo a executar tarefas ML. - -De acordo com o seu [site](https://scikit-learn.org/stable/getting_started.html), "O Scikit-learn é uma biblioteca de aprendizagem automática de código aberto que suporta a aprendizagem supervisionada e sem supervisão. Também fornece várias ferramentas para a montagem de modelos, pré-processamento de dados, seleção e avaliação de modelos, e muitas outras utilidades." - -Neste curso, você usará scikit-learn e outras ferramentas para construir modelos de machine learning para executar o que chamamos de tarefas tradicionais de aprendizagem automática. Evitámos deliberadamente redes neurais e aprendizagem profunda, uma vez que estão melhor cobertas no nosso próximo currículo de IA para principiantes. - - - -O scikit-learn torna simples construir modelos e avaliá-los para uso. Está focado principalmente na utilização de dados numéricos e contém vários conjuntos de dados prontos para uso como ferramentas de aprendizagem. Também inclui modelos pré-construídos para os alunos experimentarem. Vamos explorar o processo de carregamento de dados pré-embalados e usar um modelo ml incorporado no estimador com o Scikit-learn com alguns dados básicos. - -## Exercício - o seu primeiro caderno Scikit-learn - -> Este tutorial foi inspirado no exemplo [de regressão linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) no site da Scikit-learn. - -No ficheiro _notebook.ipynb_ associado a esta lição, limpe todas as células premindo o ícone 'caixote do lixo'. - -Nesta secção, você vai trabalhar com um pequeno conjunto de dados sobre diabetes que é incorporado em Scikit-learn para fins de aprendizagem. Imagine que queria testar um tratamento para pacientes diabéticos. Os modelos de Machine Learning podem ajudá-lo a determinar quais os pacientes que responderiam melhor ao tratamento, com base em combinações de variáveis. Mesmo um modelo de regressão muito básico, quando visualizado, pode mostrar informações sobre variáveis que o ajudariam a organizar os seus ensaios clínicos teóricos. - -✅ There are many types of regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use linear regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of cuisine should be considered vegan or not, you're looking for a **category assignment** so you would use logistic regression. You'll learn more about logistic regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate. - -Vamos começar com esta tarefa. - -### Bibliotecas de importação - -Para esta tarefa importaremos algumas bibliotecas: - -- **matplotlib**. É uma ferramenta útil [de grafimento](https://matplotlib.org/) e vamos usá-lo para criar um enredo de linha. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil para o tratamento de dados numéricos em Python. -- **sklearn**. Este é o [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteca. - -Importe algumas bibliotecas para ajudar nas suas tarefas. - -1. Adicione as importações digitando o seguinte código: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - Acima está a importar `matplottlib`, `numpy` e está a importar `datasets`, `linear_model` e `model_selection` de `sklearn`. É utilizado `model_selection` para dividir dados em conjuntos de treino e teste. - - ## O conjunto de dados da diabetes - O conjunto de dados incorporado [diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) Inclui 442 amostras de dados em torno da diabetes, com 10 variáveis de características, algumas das quais incluem: - - - idade: idade em anos - - bmi: índice de massa corporal - - bp: pressão arterial média - - s1 tc: T-Cells (um tipo de glóbulos brancos) - - ✅ Este conjunto de dados inclui o conceito de 'sexo' como uma variável de característica importante para a investigação em torno da diabetes. Muitos conjuntos de dados médicos incluem este tipo de classificação binária. Pense um pouco sobre como categorizações como esta podem excluir certas partes de uma população de tratamentos. - -Agora, carregue os dados X e Y. - -> 🎓 Lembre-se, isto é aprendizagem supervisionada, e precisamos de um alvo chamado "y". - -Numa nova célula de código, carregue o conjunto de dados da diabetes chamando `load_diabetes()` A entrada `return_X_y=True` indica que `X` será uma matriz de dados, e `y` será o alvo de regressão. - -1. Adicione alguns comandos de impressão para mostrar a forma da matriz de dados e o seu primeiro elemento: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - O que estás a receber como resposta, é um tuple. O que está a fazer é atribuir os dois primeiros valores da tuple para `X` and `y` respectivamente. Saiba mais [sobre tuples](https://wikipedia.org/wiki/Tuple). - - Pode ver que estes dados têm 442 itens moldados em matrizes de 10 elementos: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Pense um pouco sobre a relação entre os dados e o alvo de regressão. A regressão linear prevê relações entre a característica X e a variável alvo. Pode encontrar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para o conjunto de dados da diabetes na documentação? O que é que este conjunto de dados está a demonstrar, tendo em conta esse objetivo? - -2. Em seguida, selecione uma parte deste conjunto de dados para traçar, organizando-o numa nova matriz usando a função `newaxis` da Numpy. Vamos usar a regressão linear para gerar uma linha entre valores nestes dados, de acordo com um padrão que determina. - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ A qualquer momento, imprima os dados para verificar a sua forma. - - 3. Agora que tem dados prontos a serem traçados, pode ver se uma máquina pode ajudar a determinar uma divisão lógica entre os números deste conjunto de dados. Para isso, é necessário dividir os dados (X) e o alvo (y) em conjuntos de teste e treino. O Scikit-learn tem uma forma simples de o fazer; pode dividir os seus dados de teste num dado momento. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Agora está pronto para treinar o seu modelo! Carregue o modelo linear de regressão e treine-o com os seus conjuntos de treinamento X e y usando `modelo.fit()`: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `modelo.fit()` é uma função que você verá em muitas bibliotecas ML, como TensorFlow - -5. Em seguida, crie uma previsão utilizando dados de teste, utilizando a função `predict()`. Isto será usado para traçar a linha entre grupos de dados - ```python - y_pred = model.predict(X_test) - ``` - -6. Agora é hora de mostrar os dados num enredo. Matplotlib é uma ferramenta muito útil para esta tarefa. Crie uma dispersão de todos os dados de teste X e y, e use a previsão para traçar uma linha no local mais apropriado, entre os agrupamentos de dados do modelo. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.xlabel('Scaled BMIs') - plt.ylabel('Disease Progression') - plt.title('A Graph Plot Showing Diabetes Progression Against BMI') - plt.show() - ``` - - ![a scatterplot showing datapoints around diabetes](../images/scatterplot.png) - - ✅ Pense um pouco sobre o que está acontecendo aqui. Uma linha reta está a passar por muitos pequenos pontos de dados, mas o que está a fazer exatamente? Consegue ver como deve ser capaz de usar esta linha para prever onde um novo ponto de dados invisível se deve encaixar em relação ao eixo y do enredo? Tente colocar em palavras o uso prático deste modelo. - -Parabéns, construíste o teu primeiro modelo linear de regressão, criaste uma previsão com ele, e exibiste-o num enredo! ---- -## 🚀Challenge - -Defina uma variável diferente deste conjunto de dados. Dica: edite esta linha:`X = X[:, np.newaxis, 2]`. Tendo em conta o objetivo deste conjunto de dados, o que é que consegue descobrir sobre a progressão da diabetes como uma doença? -## [Questionário pós-palestra](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/) - -## Review & Self Study - -Neste tutorial, trabalhou com uma simples regressão linear, em vez de univariado ou regressão linear múltipla. Leia um pouco sobre as diferenças entre estes métodos, ou dê uma olhada[este vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) - -Leia mais sobre o conceito de regressão e pense sobre que tipo de perguntas podem ser respondidas por esta técnica. Tome este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprofundar a sua compreensão. -## Missão - -[Um conjunto de dados diferente](assignment.md) diff --git a/2-Regression/1-Tools/translations/README.tr.md b/2-Regression/1-Tools/translations/README.tr.md deleted file mode 100644 index d6d50548..00000000 --- a/2-Regression/1-Tools/translations/README.tr.md +++ /dev/null @@ -1,210 +0,0 @@ -# Regresyon modelleri için Python ve Scikit-learn'e giriş - -![Summary of regressions in a sketchnote](../../../sketchnotes/ml-regression.png) - -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Ders öncesi quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/) - -> ### [R dili ile bu dersin içeriği!](././solution/R/lesson_1-R.ipynb) - -## Giriş - -Bu dört derste, regresyon modellerinin nasıl oluşturulacağını keşfedeceksiniz.Bunların ne için olduğunu birazdan tartışacağız. Ancak herhangi bir şey yapmadan önce, süreci başlatmak için doğru araçlara sahip olduğunuzdan emin olun! - -Bu derste, şunları öğreneceğiz: - -- Bilgisayarınızı yerel makine öğrenimi görevleri için yapılandırma. -- Jupyter notebooks ile çalışmayı. -- Scikit-learn kullanmayı, kurulum da dahil. -- Uygulamalı alıştırma ile doğrusal(lineer) regresyonu keşfedin. - -## Kurulum ve Konfigürasyonlar - -[![Visual Studio Code ile Python kurulumu](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") - -> 🎥 Video için yukarıdaki resme tıklayınız: Python'u VS Code içinde kullanma. - -1. **Python Kurulumu**. [Python](https://www.python.org/downloads/) kurulumunun bilgisayarınızda yüklü olduğundan emin olun.Python'u birçok veri bilimi ve makine öğrenimi görevi için kullanacaksınız. Çoğu bilgisayar sistemi zaten bir Python kurulumu içerir. Şurada [Python Kodlama Paketleri](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) mevcut, bazı kullanıcılar için kurulumu daha kolay. - - Ancak Python'un bazı kullanımları, yazılımın spesifik bir sürümünü gerektirir, diğerleri ise farklı bir sürüm gerektirir. Bu yüzden, [virtual environment](https://docs.python.org/3/library/venv.html) (sanal ortamlar) ile çalışmak daha kullanışlıdır. - -2. **Visual Studio Code kurulumu**. Visual Studio Code'un bilgisayarınıza kurulduğundan emin olun. [Visual Studio Code kurulumu](https://code.visualstudio.com/) bu adımları takip ederek basitçe bir kurulum yapabilirsiniz. Bu kursta Python'ı Visual Studio Code'un içinde kullanacaksınız, bu yüzden nasıl yapılacağını görmek isteyebilirsiniz. Python ile geliştirme için [Visual Studio Code konfigürasyonu](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott). - - > Bu koleksiyon üzerinde çalışarak Python ile rahatlayın. [Modülleri öğren](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - -3. **Scikit-learn kurulumu**, [bu talimatları](https://scikit-learn.org/stable/install.html) takip ediniz. Python 3 kullandığınızdan emin olmanız gerektiğinden, sanal ortam kullanmanız önerilir. Not, bu kütüphaneyi bir M1 Mac'e kuruyorsanız, yukarıda bağlantısı verilen sayfada özel talimatlar var onları takip ediniz. - -1. **Jupyter Notebook kurulumu**. [Jupyter package'ı](https://pypi.org/project/jupyter/) kurmanız gerekmektedir. - -## Makine öğrenimi geliştirme ortamınız - -Python kodunuzu geliştirmek ve makine öğrenimi modelleri oluşturmak için **notebook** kullanacaksınız. Bu dosya türü, veri bilimcileri için yaygın bir araçtır ve bunlar, ".ipynb" son eki veya uzantısıyla tanımlanabilir. - -Notebook'lar, geliştiricinin hem kod yazmasına hem de notlar eklemesine ve kodun etrafına deneysel veya araştırma odaklı projeler için oldukça yararlı olan dökümantasyonlar yazmasına izin veren etkileşimli bir ortamdır. -### Alıştırma - notebook'larla çalışmak - -Bu klasörde, _notebook.ipynb_ adlı dosyası bulacaksınız. - -1. _notebook.ipynb_ dosyasını Visual Studio Code ile açınız. - - Bir Jupyter serveri Python 3+ ile beraber başlayacaktır. Notebook içinde kod parçalarını çalıştıracak `run` alanını göreceksiniz. Play butonuna benzeyen buton ile kod bloklarını çalıştırabileceksiniz. - -1. `md` ikonunu seçip bir markdown ekleyelim ve **# Welcome to your notebook** yazalım. - - Sonra, biraz Python kodu ekleyelim. - -1. Kod bloğuna **print('hello notebook')** yazalım. -1. Ok işaretini seçip kodu çalıştıralım. - - Bu ifadeyi çıktı olarak göreceksiniz: - - ```output - hello notebook - ``` - -![VS Code ile notebook açma](../images/notebook.jpg) - -Notebook'kunuzu dökümante etmek için kodunuza yorumlar ekleyebilirsiniz. - -✅ Bir web geliştiricisinin çalışma ortamının bir veri bilimcisinden ne kadar farklı olduğunu bir an için düşünün. - -## Scikit-learn çalışır durumda - -Artık Python yerel ortamınızda kurulduğuna göre ve Jupyter notebook ile rahatsanız, hadi Scikit-learn ile de eşit derecede rahat edelim.(`sci` `science`'ın kısaltması yani bilim anlamı taşır). Scikit-learn sağladığı [yaygın API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ile ML görevlerinde sizlere yardım eder. - -[websitelerine](https://scikit-learn.org/stable/getting_started.html) göre, "Scikit-learn, denetimli ve denetimsiz öğrenmeyi destekleyen açık kaynaklı bir makine öğrenimi kütüphanesidir. Ayrıca model uydurma, veri ön işleme, model seçimi ve değerlendirmesi gibi diğer birçok şey için yardımcı olacak çeşitli araçlar sağlar." - -Bu kursta, 'geleneksel makine öğrenimi' olarak adlandırdığımız görevleri gerçekleştirmek üzere ve makine öğrenimi modelleri oluşturmak için Scikit-learn ve diğer araçları kullanacaksınız. Yakında çıkacak olan 'Yeni Başlayanlar için Yapay Zeka' müfredatımızda daha iyi ele alındığı için sinir ağlarından ve derin öğrenme konularından bilinçli olarak kaçındık. - -Scikit-learn, modeller oluşturmayı ve bunları kullanım için modeli değerlendirmeyi kolaylaştırır. Öncelikle sayısal verileri kullanmaya odaklanır ve öğrenme araçları olarak kullanılmak üzere birkaç hazır veri seti içerir. Ayrıca öğrencilerin denemesi için önceden oluşturulmuş modelleri de içerir. Önceden paketlenmiş verileri yükleme ve bazı temel verilerle birlikte Scikit-learn'de ilk ML modelini kullanma sürecini keşfedelim. - -## Alıştırma - ilk Scikit-learn notebook'unuz - -> Bu eğitim Scikit-learn web sitesindeki [lineer regresyon örneğinden](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ilham alınmıştır. - -_notebook.ipynb_ dosyasıda bu dersle ilgili olan, tüm hücreleri 'çöp kutusu' simgesine basarak temizleyin. - -Bu bölümde, öğrenme amacıyla Scikit-learn'de yerleşik olarak bulunan diyabetle ilgili küçük bir veri seti ile çalışacaksınız. Diyabet hastaları için bir tedaviyi test etmek istediğinizi hayal edin. Makine Öğrenimi modelleri, değişken kombinasyonlarına göre hangi hastaların tedaviye daha iyi yanıt vereceğini belirlemenize yardımcı olabilir. Çok basit bir regresyon modeli bile görselleştirildiğinde, teorik klinik denemelerinizi düzenlemenize yardımcı olacak değişkenler hakkında bilgi verebilir. - -✅ Pek çok regresyon yöntemi vardır ve hangisini seçeceğiniz, aradığınız cevaba bağlıdır. Belirli bir yaştaki bir kişinin olası boyunu tahmin etmek istiyorsanız, **sayısal bir değer** aradığınız için doğrusal regresyon kullanırsınız. Bir yemeğin vegan olarak kabul edilip edilmeyeceğini keşfetmekle ilgileniyorsanız, **kategorik görev** olduğu için lojistik regresyon kullanmalısınız. Daha sonra lojistik regresyon hakkında daha fazla bilgi edineceksiniz. Verilere sorabileceğiniz bazı sorular ve bu yöntemlerden hangisinin daha uygun olacağı hakkında biraz düşünün. - -Hadi bu görev ile başlayalım. - -### Kütüphaneleri Import etmek - -Bu görev için bazı kütüphaneleri import edeceğiz: - -- **matplotlib**. Kullanışlı bir [grafiksel bir araç](https://matplotlib.org/) ve bir çizgi grafiği oluşturmak için kullanacağız. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python'da nümerik verileri ele almak için kullanışlı bir kütüphane. -- **sklearn**. Bu da [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) kütüphanesi. - -Bu görevimizde yardımcı olacak bazı kütüphaneleri import edelim. - -1. Aşağıdaki kodu yazarak import edelim: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - `matplotlib`, `numpy` import ettik ve `datasets`, `linear_model` , `model_selection` 'ı `sklearn` den import ettik. `model_selection` veri setimizi eğitim ve test kümeleri şeklinde bölmemize yardımcı olacak. - -### Diyabet veri seti - -[Diyabet veri seti](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 tane diyabet ile ilgili örnek içeririr, 10 öznitelik değişkeni,bazıları şunları içerir: - -- age: yaşı -- bmi: vücut kitle indeksi -- bp: ortalama kan basıncı -- s1 tc: T-Cells (bir tür beyaz kan hücresi) - -✅ Bu veri seti, diyabet hakkında araştırma yapmak için önemli bir özellik değişkeni olarak 'cinsiyet' kavramını içerir. Birçok tıbbi veri kümesi bu tür ikili sınıflandırmayı içerir. Bunun gibi sınıflandırmaların bir popülasyonun belirli bölümlerini tedavilerden nasıl dışlayabileceğini biraz düşünün. - -Şimdi, X ve y verilerini yükleyelim. - -> 🎓 Unutmayın, bu denetimli öğrenmedir ve bir 'y' hedefine ihtiyaç vardır. - -Yeni bir hücrede, load_diabetes()'i çağırarak diyabet veri setini yükleyin. 'return_X_y=True' girişi, X'in bir veri matrisi olacağını ve y'nin regresyon hedefi olacağını bildirir. - -1. Verinin, matriksinin şekline ve ilk elementine göz atmak için print kullanalım. - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - Yanıt olarak geri aldığınız şey, bir tuple. Yaptığınız şey, tuple'ın ilk iki değerini sırasıyla 'X' ve 'y'ye atamak. [Tuple hakkında daha fazla bilgi](https://wikipedia.org/wiki/Tuple). - - Bu verinin 10 elemanlı dizilerde(array) şekillendirilmiş 442 öğeye sahip olduğunu görebilirsiniz: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ Veriler ve regresyon hedefi arasındaki ilişki hakkında biraz düşünün. Doğrusal regresyon, özellik X ile hedef değişken y arasındaki ilişkileri tahmin eder. Diyabet veri setindeki dökümantasyonda [hedefi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) bulabildiniz mi? Bu hedef göz önüne alındığında, bu veri kümesi neyi gösteriyor? - -2. Ardından, numpy'nin 'newaxis' fonksiyonunu kullanarak yeni bir array düzenleyerek bu veri kümesinin bir bölümünü seçin. Belirlediği bir kalıba göre bu verilerdeki değerler arasında bir çizgi oluşturmak için doğrusal regresyon kullanacağız. - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ İstediğiniz zaman, verinin şeklini kontrol etmek için yazdırın. - -3. Artık çizilmeye hazır verileriniz olduğuna göre, bir makinenin bu veri kümesindeki sayılar arasında mantıksal bir ayrım belirlemeye yardımcı olup olamayacağını görebilirsiniz. Bunun için, hem verileri (X) hem de hedefi (y), test ve eğitim kümelerine ayırmanız gerekir. Scikit-learn'in bunu yapmanın basit bir yolu var; test verilerinizi belirli bir noktada bölebilirsiniz. - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. Artık modelinizi eğitmeye hazırsınız! Doğrusal regresyon modelini yükleyin ve onu "model.fit()" kullanarak X ve y eğitim kümelerinde eğitin: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` TensorFlow gibi birçok ML kütüphanesinde görebileceğiniz bir fonksiyondur. - -5. Ardından, "predict()" fonksiyonunu kullanarak test verilerini üzerinde bir tahmin oluşturun. Bu, veri grupları arasındaki çizgiyi çizmek için kullanılacaktır. - - ```python - y_pred = model.predict(X_test) - ``` - -6. Şimdi verileri bir plotta gösterme zamanı. Matplotlib bu görev için çok kullanışlı bir araçtır. Tüm X ve y test verilerinin bir dağılım grafiğini(scatterplot) oluşturun ve modelin veri grupları arasında en uygun yere bir çizgi çizmek için tahminleri kullanın. - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.xlabel('Scaled BMIs') - plt.ylabel('Disease Progression') - plt.title('A Graph Plot Showing Diabetes Progression Against BMI') - plt.show() - ``` - - ![a scatterplot showing datapoints around diabetes](././images/scatterplot.png) - - ✅ Burada neler olduğunu biraz düşünün. Birçok küçük veri noktalarından düz bir çizgi geçiyor ama tam olarak ne yapıyor? Yeni, görünmeyen bir veri noktasının grafiğin y eksenine göre nerede olması gerektiğini tahmin etmek için bu çizgiyi nasıl kullanabilmeniz gerektiğini görebiliyor musunuz? Bu modelin pratik kullanımını kelimelere dökmeye çalışın. - -Tebrikler, ilk doğrusal regresyon modelinizi oluşturdunuz, onunla bir tahmin oluşturdunuz ve bunu bir grafikte görüntülediniz! - ---- -## 🚀Challenge - -Bu veri kümesinden farklı bir değişken çizin. İpucu: bu satırı düzenleyin: `X = X[:, np.newaxis, 2]`. Bu veri setinin hedefi göz önüne alındığında, diyabetin bir hastalık olarak ilerlemesi hakkında neler keşfedebilirsiniz? -## [Post-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/) - -## İnceleme ve Bireysel Çalışma - -Bu eğitimde, tek değişkenli veya çoklu doğrusal regresyon yerine basit doğrusal regresyonla çalıştınızBu yöntemler arasındaki farklar hakkında biraz bilgi edinin veya şuna bir göz atın: [bu videoya](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) - -Regresyon kavramı hakkında daha fazla bilgi edinin ve bu teknikle ne tür soruların yanıtlanabileceğini düşünün. Anlayışınızı derinleştirmek için bu [eğitime](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) göz atabilirsiniz. - -## Assignment - -[A different dataset](assignment.md) diff --git a/2-Regression/1-Tools/translations/README.zh-tw.md b/2-Regression/1-Tools/translations/README.zh-tw.md deleted file mode 100644 index 8d79c727..00000000 --- a/2-Regression/1-Tools/translations/README.zh-tw.md +++ /dev/null @@ -1,208 +0,0 @@ -# 開始使用 Python 和 Scikit 學習回歸模型 - -![回歸](../../../sketchnotes/ml-regression.png) - -> 作者 [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [課前測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/) - -## 介紹 - -在這四節課中,你將了解如何構建回歸模型。我們將很快討論這些是什麽。但在你做任何事情之前,請確保你有合適的工具來開始這個過程! - -在本課中,你將學習如何: - -- 為本地機器學習任務配置你的計算機。 -- 使用 Jupyter notebooks。 -- 使用 Scikit-learn,包括安裝。 -- 通過動手練習探索線性回歸。 - -## 安裝和配置 - -[![在 Visual Studio Code 中使用 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") - -> 🎥 單擊上圖觀看視頻:在 VS Code 中使用 Python。 - -1. **安裝 Python**。確保你的計算機上安裝了 [Python](https://www.python.org/downloads/)。你將在許多數據科學和機器學習任務中使用 Python。大多數計算機系統已經安裝了 Python。也有一些有用的 [Python 編碼包](https://code.visualstudio.com/learn/educations/installers?WT.mc_id=academic-77952-leestott) 可用於簡化某些用戶的設置。 - - 然而,Python 的某些用法需要一個版本的軟件,而其他用法則需要另一個不同的版本。 因此,在 [虛擬環境](https://docs.python.org/3/library/venv.html) 中工作很有用。 - -2. **安裝 Visual Studio Code**。確保你的計算機上安裝了 Visual Studio Code。按照這些說明 [安裝 Visual Studio Code](https://code.visualstudio.com/) 進行基本安裝。在本課程中,你將在 Visual Studio Code 中使用 Python,因此你可能想復習如何 [配置 Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) 用於 Python 開發。 - - > 通過學習這一系列的 [學習模塊](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) 熟悉 Python - -3. **按照 [這些說明](https://scikit-learn.org/stable/install.html) 安裝 Scikit learn**。由於你需要確保使用 Python3,因此建議你使用虛擬環境。註意,如果你是在 M1 Mac 上安裝這個庫,在上面鏈接的頁面上有特別的說明。 - -4. **安裝 Jupyter Notebook**。你需要 [安裝 Jupyter 包](https://pypi.org/project/jupyter/)。 - -## 你的 ML 工作環境 - -你將使用 **notebooks** 開發 Python 代碼並創建機器學習模型。這種類型的文件是數據科學家的常用工具,可以通過後綴或擴展名 `.ipynb` 來識別它們。 - -Notebooks 是一個交互式環境,允許開發人員編寫代碼並添加註釋並圍繞代碼編寫文檔,這對於實驗或面向研究的項目非常有幫助。 - -### 練習 - 使用 notebook - -1. 在 Visual Studio Code 中打開 _notebook.ipynb_。 - - Jupyter 服務器將以 python3+啟動。你會發現 notebook 可以「運行」的區域、代碼塊。你可以通過選擇看起來像播放按鈕的圖標來運行代碼塊。 - -2. 選擇 `md` 圖標並添加一點 markdown,輸入文字 **# Welcome to your notebook**。 - - 接下來,添加一些 Python 代碼。 - -1. 在代碼塊中輸入 **print("hello notebook")**。 - -2. 選擇箭頭運行代碼。 - - 你應該看到打印的語句: - - ```output - hello notebook - ``` - -![打開 notebook 的 VS Code](../images/notebook.jpg) - -你可以為你的代碼添加註釋,以便 notebook 可以自描述。 - -✅ 想一想 web 開發人員的工作環境與數據科學家的工作環境有多大的不同。 - -## 啟動並運行 Scikit-learn - -現在 Python 已在你的本地環境中設置好,並且你對 Jupyter notebook 感到滿意,讓我們同樣熟悉 Scikit-learn(在「science」中發音為「sci」)。 Scikit-learn 提供了 [大量的 API](https://scikit-learn.org/stable/modules/classes.html#api-ref) 來幫助你執行 ML 任務。 - -根據他們的 [網站](https://scikit-learn.org/stable/getting_started.html),「Scikit-learn 是一個開源機器學習庫,支持有監督和無監督學習。它還提供了各種模型擬合工具、數據預處理、模型選擇和評估以及許多其他實用程序。」 - -在本課程中,你將使用 Scikit-learn 和其他工具來構建機器學習模型,以執行我們所謂的「傳統機器學習」任務。我們特意避免了神經網絡和深度學習,因為它們在我們即將推出的「面向初學者的人工智能」課程中得到了更好的介紹。 - -Scikit-learn 使構建模型和評估它們的使用變得簡單。它主要側重於使用數字數據,並包含幾個現成的數據集用作學習工具。它還包括供學生嘗試的預建模型。讓我們探索加載預先打包的數據和使用內置的 estimator first ML 模型和 Scikit-learn 以及一些基本數據的過程。 - -## 練習 - 你的第一個 Scikit-learn notebook - -> 本教程的靈感來自 Scikit-learn 網站上的 [線性回歸示例](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)。 - -在與本課程相關的 _notebook.ipynb_ 文件中,通過點擊「垃圾桶」圖標清除所有單元格。 - -在本節中,你將使用一個關於糖尿病的小數據集,該數據集內置於 Scikit-learn 中以用於學習目的。想象一下,你想為糖尿病患者測試一種治療方法。機器學習模型可能會幫助你根據變量組合確定哪些患者對治療反應更好。即使是非常基本的回歸模型,在可視化時,也可能會顯示有助於組織理論臨床試驗的變量信息。 - -✅ 回歸方法有很多種,你選擇哪一種取決於你正在尋找的答案。如果你想預測給定年齡的人的可能身高,你可以使用線性回歸,因為你正在尋找**數值**。如果你有興趣了解某種菜肴是否應被視為素食主義者,那麽你正在尋找**類別分配**,以便使用邏輯回歸。稍後你將了解有關邏輯回歸的更多信息。想一想你可以對數據提出的一些問題,以及這些方法中的哪一個更合適。 - -讓我們開始這項任務。 - -### 導入庫 - -對於此任務,我們將導入一些庫: - -- **matplotlib**。這是一個有用的 [繪圖工具](https://matplotlib.org/),我們將使用它來創建線圖。 -- **numpy**。 [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) 是一個有用的庫,用於在 Python 中處理數字數據。 -- **sklearn**。這是 Scikit-learn 庫。 - -導入一些庫來幫助你完成任務。 - -1. 通過輸入以下代碼添加導入: - - ```python - import matplotlib.pyplot as plt - import numpy as np - from sklearn import datasets, linear_model, model_selection - ``` - - 在上面的代碼中,你正在導入 `matplottlib`、`numpy`,你正在從 `sklearn` 導入 `datasets`、`linear_model` 和 `model_selection`。 `model_selection` 用於將數據拆分為訓練集和測試集。 - -### 糖尿病數據集 - -內置的 [糖尿病數據集](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 包含 442 個圍繞糖尿病的數據樣本,具有 10 個特征變量,其中包括: - -- age:歲數 -- bmi:體重指數 -- bp:平均血壓 -- s1 tc:T 細胞(一種白細胞) - -✅ 該數據集包括「性別」的概念,作為對糖尿病研究很重要的特征變量。許多醫學數據集包括這種類型的二元分類。想一想諸如此類的分類如何將人群的某些部分排除在治療之外。 - -現在,加載 X 和 y 數據。 - -> 🎓 請記住,這是監督學習,我們需要一個命名為「y」的目標。 - -在新的代碼單元中,通過調用 `load_diabetes()` 加載糖尿病數據集。輸入 `return_X_y=True` 表示 `X` 將是一個數據矩陣,而`y`將是回歸目標。 - -1. 添加一些打印命令來顯示數據矩陣的形狀及其第一個元素: - - ```python - X, y = datasets.load_diabetes(return_X_y=True) - print(X.shape) - print(X[0]) - ``` - - 作為響應返回的是一個元組。你正在做的是將元組的前兩個值分別分配給 `X` 和 `y`。了解更多 [關於元組](https://wikipedia.org/wiki/Tuple)。 - - 你可以看到這個數據有 442 個項目,組成了 10 個元素的數組: - - ```text - (442, 10) - [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 - -0.04340085 -0.00259226 0.01990842 -0.01764613] - ``` - - ✅ 稍微思考一下數據和回歸目標之間的關系。線性回歸預測特征 X 和目標變量 y 之間的關系。你能在文檔中找到糖尿病數據集的 [目標](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 嗎?鑒於該目標,該數據集展示了什麽? - -2. 接下來,通過使用 numpy 的 `newaxis` 函數將數據集的一部分排列到一個新數組中。我們將使用線性回歸根據它確定的模式在此數據中的值之間生成一條線。 - - ```python - X = X[:, np.newaxis, 2] - ``` - - ✅ 隨時打印數據以檢查其形狀。 - -3. 現在你已準備好繪製數據,你可以看到計算機是否可以幫助確定此數據集中數字之間的邏輯分割。為此你需要將數據 (X) 和目標 (y) 拆分為測試集和訓練集。Scikit-learn 有一個簡單的方法來做到這一點;你可以在給定點拆分測試數據。 - - ```python - X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) - ``` - -4. 現在你已準備好訓練你的模型!加載線性回歸模型並使用 `model.fit()` 使用 X 和 y 訓練集對其進行訓練: - - ```python - model = linear_model.LinearRegression() - model.fit(X_train, y_train) - ``` - - ✅ `model.fit()` 是一個你會在許多機器學習庫(例如 TensorFlow)中看到的函數 - -5. 然後,使用函數 `predict()`,使用測試數據創建預測。這將用於繪製數據組之間的線 - - ```python - y_pred = model.predict(X_test) - ``` - -6. 現在是時候在圖中顯示數據了。Matplotlib 是完成此任務的非常有用的工具。創建所有 X 和 y 測試數據的散點圖,並使用預測在模型的數據分組之間最合適的位置畫一條線。 - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, y_pred, color='blue', linewidth=3) - plt.show() - ``` - - ![顯示糖尿病周圍數據點的散點圖](../images/scatterplot.png) - - ✅ 想一想這裏發生了什麽。一條直線穿過許多小數據點,但它到底在做什麽?你能看到你應該如何使用這條線來預測一個新的、未見過的數據點對應的 y 軸值嗎?嘗試用語言描述該模型的實際用途。 - -恭喜,你構建了第一個線性回歸模型,使用它創建了預測,並將其顯示在繪圖中! - ---- - -## 🚀挑戰 - -從這個數據集中繪製一個不同的變量。提示:編輯這一行:`X = X[:, np.newaxis, 2]`。鑒於此數據集的目標,你能夠發現糖尿病作為一種疾病的進展情況嗎? - -## [課後測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/) - -## 復習與自學 - -在本教程中,你使用了簡單線性回歸,而不是單變量或多元線性回歸。閱讀一些關於這些方法之間差異的信息,或查看 [此視頻](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) - -閱讀有關回歸概念的更多信息,並思考這種技術可以回答哪些類型的問題。用這個 [教程](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) 加深你的理解。 - -## 任務 - -[不同的數據集](./assignment.zh-tw.md) diff --git a/2-Regression/1-Tools/translations/assignment.es.md b/2-Regression/1-Tools/translations/assignment.es.md deleted file mode 100644 index e5193597..00000000 --- a/2-Regression/1-Tools/translations/assignment.es.md +++ /dev/null @@ -1,14 +0,0 @@ -# Regresión con Scikit-learn - -## Instrucciones - - -Eche un vistazo al [Linnerud _dataset_](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) en Scikit-learn. Este _dataset_ tiene varios [objetivos](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset): 'Consiste en tres ejercicios (datos) y tres variables fisiológicas (objetivos) recopiladas de veinte hombres de mediana edad en un gimnasio'. - -En sus palabras, describa como crear un modelo de regresión que trazaría la relación entre la cintura y la cantidad de abdominales que se realizan. Haga lo mismo con otros puntos de datos en el _dataset_. - -## Rúbrica - -| Criterios | Ejemplar | Adecuado | Necesita Mejorar | -| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | -| Envíe un párrafo descriptivo | Se envía un párrafo bien escrito | Se envían algunas frases | No se proporciona ninguna descripción | diff --git a/2-Regression/1-Tools/translations/assignment.it.md b/2-Regression/1-Tools/translations/assignment.it.md deleted file mode 100644 index 51fa1663..00000000 --- a/2-Regression/1-Tools/translations/assignment.it.md +++ /dev/null @@ -1,13 +0,0 @@ -# Regressione con Scikit-learn - -## Istruzioni - -Dare un'occhiata all'[insieme di dati Linnerud](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) in Scikit-learn. Questo insieme di dati ha [obiettivi](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) multipli: "Consiste di tre variabili di esercizio (dati) e tre variabili fisiologiche (obiettivo) raccolte da venti uomini di mezza età in un fitness club". - -Con parole proprie, descrivere come creare un modello di Regressione che tracci la relazione tra il punto vita e il numero di addominali realizzati. Fare lo stesso per gli altri punti dati in questo insieme di dati. - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | -| Inviare un paragrafo descrittivo | Viene presentato un paragrafo ben scritto | Vengono inviate alcune frasi | Non viene fornita alcuna descrizione | diff --git a/2-Regression/1-Tools/translations/assignment.ja.md b/2-Regression/1-Tools/translations/assignment.ja.md deleted file mode 100644 index 6f7d9ef0..00000000 --- a/2-Regression/1-Tools/translations/assignment.ja.md +++ /dev/null @@ -1,13 +0,0 @@ -# Scikit-learnを用いた回帰 - -## 課題の指示 - -Scikit-learnで[Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) を見てみましょう。このデータセットは複数の[ターゲット](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) を持っています。フィットネスクラブで20人の中年男性から収集した3つの運動変数(data)と3つの生理変数(target)で構成されています。 - -あなた自身の言葉で、ウエストラインと腹筋の回数との関係をプロットする回帰モデルの作成方法を説明してください。このデータセットの他のデータポイントについても同様に説明してみてください。 - -## ルーブリック - -| 指標 | 模範的 | 適切 | 要改善 | -| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | -| 説明文を提出してください。 | よく書けた文章が提出されている。 | いくつかの文章が提出されている。 | 文章が提出されていません。 | diff --git a/2-Regression/1-Tools/translations/assignment.ko.md b/2-Regression/1-Tools/translations/assignment.ko.md deleted file mode 100644 index 7db04f54..00000000 --- a/2-Regression/1-Tools/translations/assignment.ko.md +++ /dev/null @@ -1,13 +0,0 @@ -# Scikit-learn과 함께 회귀에 대해 알아봅시다 - -## 설명 - -Scikit-learn에서 [Linnerud 데이터세트](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud)를 살펴보시기 바랍니다. 이 데이터세트에는 다수의 목표 변수가 있습니다: '한 헬스장에서 스무 명의 중년 남성으로부터 수집한 운동(데이터)과 생리적(목표) 변수가 각각 세 개씩 있습니다'. - -허리둘레와 윗몸 일으키기 횟수의 관계성을 그리는 회귀 모델을 어떻게 만들지 직접 서술해 주시기 바랍니다. 마찬가지로, 이 데이터세트의 다른 종류의 데이터(변수)들도 어떻게 회귀 모델을 만들지 서술해 주세요. - -## 평가기준표 - -| 평가기준 | 모범 | 적절 | 향상 필요 | -| --------------------------------- | --------------------------- | ----------------------------- | ---------------- | -| 문단으로 자세히 서술해 제출하였는가? | 문단으로 자세히 서술하여 제출 | 몇 문장으로 서술한 내용을 제출 | 서술한 내용이 없음 | diff --git a/2-Regression/1-Tools/translations/assignment.pt-br.md b/2-Regression/1-Tools/translations/assignment.pt-br.md deleted file mode 100644 index d8081621..00000000 --- a/2-Regression/1-Tools/translations/assignment.pt-br.md +++ /dev/null @@ -1,13 +0,0 @@ -# Regressão com Scikit-learn - -## Instruções - -Dê uma olhada no [conjunto de dados Linnerud](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud). Esse conjunto de dados possui múltiplos [alvos](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset): 'Consiste em três variáveis de exercício (dados) e três variáveis fisiológicas (alvos) coletadas de vinte homens de meia idade de uma academia '. - -Em suas palavras, descreva como criar um modelo de regressão que mostra a relação entre a cintura e o número de abdominiais feitas. Faça o mesmo para os outros pontos de dados nesse conjunto de dados. - -## Critérios de avaliação - -| Critério | Exemplar | Adequado | Precisa melhorar | -| ------------------------------ | ----------------------------------- | -------------------------------- | ---------------------------- | -| Enviar um parágrafo descritivo | Parágrafo bem escrito | Algumas sentenças foram enviadas | Não possui nenhuma descrição | diff --git a/2-Regression/1-Tools/translations/assignment.pt.md b/2-Regression/1-Tools/translations/assignment.pt.md deleted file mode 100644 index 7be53773..00000000 --- a/2-Regression/1-Tools/translations/assignment.pt.md +++ /dev/null @@ -1,13 +0,0 @@ -# Regressão com Scikit-learn - -## Instruções - -Dê uma olhada no conjunto de [dados Linnerud](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) em Scikit-learn. Este conjunto de dados tem vários [alvos](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset): 'Consiste em três variáveis de exercício (dados) e três variáveis fisiológicas (alvo) recolhidas de vinte homens de meia-idade num clube de fitness' - -Nas suas próprias palavras, descreva como criar um modelo de Regressão que traçaria a relação entre a cintura e quantos situps são realizados. Faça o mesmo para os outros pontos de dados neste conjunto de dados. - -## Rubrica - -| Critérios | exemplares | Adequado | Necessidades de Melhoria | -| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | -| Enviar um parágrafo descritivo | Parágrafo bem escrito é submetido | Algumas frases são submetidas | Nenhuma descrição é fornecida | \ No newline at end of file diff --git a/2-Regression/1-Tools/translations/assignment.tr.md b/2-Regression/1-Tools/translations/assignment.tr.md deleted file mode 100644 index 076593fe..00000000 --- a/2-Regression/1-Tools/translations/assignment.tr.md +++ /dev/null @@ -1,13 +0,0 @@ -# Scikit-learn ile Regresyon - -## Talimatlar - -[Linnerud veri kümesine](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) Scikit-learn ile bir gözatın. Bu veri kümesinin birden fazla [hedefi](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) vardır: 'Üç egzersiz (veri) ve yirmi veri kümesinden toplanan üç fizyolojik (hedef) değişkenden oluşur. Bir fitness kulübünde ki orta yaşlı erkekler'. - -Kendi kelimelerinizle, bel ile çekilen mekik sayısı arasındaki ilişkiyi çizecek bir Regresyon modelinin nasıl oluşturulacağını açıklayın. Bu veri kümesindeki diğer veri noktaları için de aynısını yapın. - -## Değerlendirme - -| Kriter | Örnek | Yeterli | İyileştirme Gerekli | -| ----------------------------------- | ------------------------------------- | ----------------------------- | -------------------------- | -| Açıklayıcı bir paragraf gönderildi. | İyi yazılmış bir paragraf gönderildi. | Birkaç cümle gönderildi. | Açıklama sağlanmadı. | diff --git a/2-Regression/1-Tools/translations/assignment.zh-tw.md b/2-Regression/1-Tools/translations/assignment.zh-tw.md deleted file mode 100644 index bd1d384c..00000000 --- a/2-Regression/1-Tools/translations/assignment.zh-tw.md +++ /dev/null @@ -1,14 +0,0 @@ -# 用 Scikit-learn 實現一次回歸算法 - -## 說明 - -先看看 Scikit-learn 中的 [Linnerud 數據集](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) -這個數據集中有多個[目標變量(target)](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset),其中包含了三種運動(訓練數據)和三個生理指標(目標變量)組成,這些數據都是從一個健身俱樂部中的 20 名中年男子收集到的。 - -之後用自己的方式,創建一個可以描述腰圍和完成仰臥起坐個數關系的回歸模型。用同樣的方式對這個數據集中的其它數據也建立一下模型探究一下其中的關系。 - -## 評判標準 - -| 標準 | 優秀 | 中規中矩 | 仍需努力 | -| ------------------------------ | ----------------------------------- | ----------------------------- | -------------------------- | -| 需要提交一段能描述數據集中關系的文字 | 很好的描述了數據集中的關系 | 只能描述少部分的關系 | 啥都沒有提交 | diff --git a/2-Regression/1-Tools/translations/tutorial.ipynb b/2-Regression/1-Tools/translations/tutorial.ipynb new file mode 100644 index 00000000..406c104b --- /dev/null +++ b/2-Regression/1-Tools/translations/tutorial.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b889c621", + "metadata": {}, + "source": [ + "# Your first scikit-learn notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10f7be51", + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "from sklearn import datasets,linear_model,model_selection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60a20f49", + "metadata": {}, + "outputs": [], + "source": [ + "# load datasets\n", + "X,y = datasets.load_diabetes(return_X_y=True)\n", + "print(X.shape)\n", + "print(X[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e9aab99", + "metadata": {}, + "outputs": [], + "source": [ + "# 划分测试集与训练集\n", + "X = X[:,np.newaxis,2]\n", + "X_train,X_test,y_train,y_test = model_selection.train_test_split(X,y,test_size=0.33)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "896224a5", + "metadata": {}, + "outputs": [], + "source": [ + "model = linear_model.LinearRegression()\n", + "# 训练模型\n", + "model.fit(X_train,y_train)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e550d3e5", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52cf3e2d", + "metadata": {}, + "outputs": [], + "source": [ + "plt.scatter(X_test,y_test,color='blue')\n", + "plt.plot(X_test,y_pred,color='green',linewidth=3)" + ] + }, + { + "cell_type": "markdown", + "id": "53e9bfc5", + "metadata": {}, + "source": [ + "# test\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f677b074", + "metadata": {}, + "outputs": [], + "source": [ + "X_1,y_1 = datasets.load_linnerud(return_X_y=True)\n", + "print(X_1.shape)\n", + "print(X_1[0:2])\n", + "print(y_1.shape)\n", + "print(y_1[0:2])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a22d1f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 创建一个可以描述腰围和完成仰卧起坐个数关系的回归模型\n", + "waist = X_1[:,0]\n", + "situps = y_1[:,1]\n", + "waist_train, waist_test, situps_train, situps_test = model_selection.train_test_split(waist, situps, test_size=0.33)\n", + "waist_situps_model = linear_model.LinearRegression()\n", + "waist_situps_model.fit(waist_train.reshape(-1,1), situps_train)\n", + "situps_pred = waist_situps_model.predict(waist_test.reshape(-1,1))\n", + "plt.scatter(waist_test, situps_test, color='blue')\n", + "plt.plot(waist_test, situps_pred, color='green', linewidth=3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f7d1661", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/2-Regression/2-Data/.ipynb_checkpoints/notebook-checkpoint.ipynb b/2-Regression/2-Data/.ipynb_checkpoints/notebook-checkpoint.ipynb new file mode 100644 index 00000000..c9b9925b --- /dev/null +++ b/2-Regression/2-Data/.ipynb_checkpoints/notebook-checkpoint.ipynb @@ -0,0 +1,33 @@ +{ + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3-final" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python3", + "display_name": "Python 3", + "language": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ] +} \ No newline at end of file diff --git a/2-Regression/2-Data/translations/.ipynb_checkpoints/data-checkpoint.ipynb b/2-Regression/2-Data/translations/.ipynb_checkpoints/data-checkpoint.ipynb new file mode 100644 index 00000000..87ed0f90 --- /dev/null +++ b/2-Regression/2-Data/translations/.ipynb_checkpoints/data-checkpoint.ipynb @@ -0,0 +1,1041 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 21, + "id": "d907e945", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "pumpkins = pd.read_csv(\"D:/Applications/Obsidian/ML-For-Beginners/2-Regression/data/US-pumpkins.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "05ecc6bf", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "int64", + "type": "integer" + }, + { + "name": "City Name", + "rawType": "object", + "type": "string" + }, + { + "name": "Type", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Package", + "rawType": "object", + "type": "string" + }, + { + "name": "Variety", + "rawType": "object", + "type": "string" + }, + { + "name": "Sub Variety", + "rawType": "object", + "type": "string" + }, + { + "name": "Grade", + "rawType": "float64", + "type": "float" + }, + { + "name": "Date", + "rawType": "object", + "type": "string" + }, + { + "name": "Low Price", + "rawType": "float64", + "type": "float" + }, + { + "name": "High Price", + "rawType": "float64", + "type": "float" + }, + { + "name": "Mostly Low", + "rawType": "float64", + "type": "float" + }, + { + "name": "Mostly High", + "rawType": "float64", + "type": "float" + }, + { + "name": "Origin", + "rawType": "object", + "type": "string" + }, + { + "name": "Origin District", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Item Size", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Color", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Environment", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unit of Sale", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Quality", + "rawType": "float64", + "type": "float" + }, + { + "name": "Condition", + "rawType": "float64", + "type": "float" + }, + { + "name": "Appearance", + "rawType": "float64", + "type": "float" + }, + { + "name": "Storage", + "rawType": "float64", + "type": "float" + }, + { + "name": "Crop", + "rawType": "float64", + "type": "float" + }, + { + "name": "Repack", + "rawType": "object", + "type": "string" + }, + { + "name": "Trans Mode", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unnamed: 24", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unnamed: 25", + "rawType": "object", + "type": "string" + } + ], + "ref": "9c6791cf-5dd7-4fcf-89f1-4b8d21a4c4ad", + "rows": [ + [ + "1752", + "ST. LOUIS", + null, + "22 lb cartons", + "MINIATURE", + "FLAT TYPE", + null, + "9/30/16", + "14.75", + "14.75", + null, + null, + "ILLINOIS", + null, + null, + "WHITE", + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "LOWER." + ], + [ + "1753", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/26/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "LOWER." + ], + [ + "1754", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/27/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "STEADY." + ], + [ + "1755", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/28/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "ABOUT STEADY." + ], + [ + "1756", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/29/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "MINIATURE LOWER, OTHERS STEADY." + ] + ], + "shape": { + "columns": 26, + "rows": 5 + } + }, + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
1752ST. LOUISNaN22 lb cartonsMINIATUREFLAT TYPENaN9/30/1614.7514.75NaN...NaNNaNNaNNaNNaNNaNNNaNNaNLOWER.
1753ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/26/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNLOWER.
1754ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/27/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNSTEADY.
1755ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/28/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNABOUT STEADY.
1756ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/29/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNMINIATURE LOWER, OTHERS STEADY.
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "1752 ST. LOUIS NaN 22 lb cartons MINIATURE FLAT TYPE NaN 9/30/16 \n", + "1753 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/26/16 \n", + "1754 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/27/16 \n", + "1755 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/28/16 \n", + "1756 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/29/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "1752 14.75 14.75 NaN ... NaN NaN NaN \n", + "1753 275.00 275.00 NaN ... NaN NaN NaN \n", + "1754 275.00 275.00 NaN ... NaN NaN NaN \n", + "1755 275.00 275.00 NaN ... NaN NaN NaN \n", + "1756 275.00 275.00 NaN ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 \\\n", + "1752 NaN NaN NaN N NaN NaN \n", + "1753 NaN NaN NaN N NaN NaN \n", + "1754 NaN NaN NaN N NaN NaN \n", + "1755 NaN NaN NaN N NaN NaN \n", + "1756 NaN NaN NaN N NaN NaN \n", + "\n", + " Unnamed: 25 \n", + "1752 LOWER. \n", + "1753 LOWER. \n", + "1754 STEADY. \n", + "1755 ABOUT STEADY. \n", + "1756 MINIATURE LOWER, OTHERS STEADY. \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b018d392", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City Name 0\n", + "Type 1712\n", + "Package 0\n", + "Variety 5\n", + "Sub Variety 1461\n", + "Grade 1757\n", + "Date 0\n", + "Low Price 0\n", + "High Price 0\n", + "Mostly Low 103\n", + "Mostly High 103\n", + "Origin 3\n", + "Origin District 1626\n", + "Item Size 279\n", + "Color 616\n", + "Environment 1757\n", + "Unit of Sale 1595\n", + "Quality 1757\n", + "Condition 1757\n", + "Appearance 1757\n", + "Storage 1757\n", + "Crop 1757\n", + "Repack 0\n", + "Trans Mode 1757\n", + "Unnamed: 24 1757\n", + "Unnamed: 25 1654\n", + "dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "3acbb4d9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PackageDateLow PriceHigh Price
024 inch bins4/29/17270.00280.00
124 inch bins5/6/17270.00280.00
224 inch bins9/24/16160.00160.00
324 inch bins9/24/16160.00160.00
424 inch bins11/5/1690.00100.00
...............
175222 lb cartons9/30/1614.7514.75
175336 inch bins9/26/16275.00275.00
175436 inch bins9/27/16275.00275.00
175536 inch bins9/28/16275.00275.00
175636 inch bins9/29/16275.00275.00
\n", + "

1757 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Package Date Low Price High Price\n", + "0 24 inch bins 4/29/17 270.00 280.00\n", + "1 24 inch bins 5/6/17 270.00 280.00\n", + "2 24 inch bins 9/24/16 160.00 160.00\n", + "3 24 inch bins 9/24/16 160.00 160.00\n", + "4 24 inch bins 11/5/16 90.00 100.00\n", + "... ... ... ... ...\n", + "1752 22 lb cartons 9/30/16 14.75 14.75\n", + "1753 36 inch bins 9/26/16 275.00 275.00\n", + "1754 36 inch bins 9/27/16 275.00 275.00\n", + "1755 36 inch bins 9/28/16 275.00 275.00\n", + "1756 36 inch bins 9/29/16 275.00 275.00\n", + "\n", + "[1757 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date']\n", + "pumpkins.drop([c for c in pumpkins.columns if c not in new_columns],axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4501affe", + "metadata": {}, + "outputs": [], + "source": [ + "price = (pumpkins['High Price'] + pumpkins['Low Price'])/2\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "221da76a", + "metadata": {}, + "outputs": [], + "source": [ + "new_pumpkins = pd.DataFrame({'Month':month,'Package':pumpkins['Package'],'Low Price':pumpkins['Low Price'],'High Price':pumpkins['High Price'],'Price':price})" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "29a3ff79-6cfc-4a15-a781-aa12217cf1e8", + "metadata": {}, + "outputs": [], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel',case=True,regex=True)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "59db71e4-52b9-41d8-a908-5e85181189d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...QualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25price
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNNaNNaNNaN15.0
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNNaNNaNNaN18.0
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNNaNNaNNaN18.0
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNNaNNaNNaN17.0
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNNaNNaNNaN15.0
\n", + "

5 rows × 27 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade \\\n", + "70 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "71 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "72 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "73 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "74 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "\n", + " Date Low Price High Price Mostly Low ... Quality Condition \\\n", + "70 9/24/16 15.0 15.0 15.0 ... NaN NaN \n", + "71 9/24/16 18.0 18.0 18.0 ... NaN NaN \n", + "72 10/1/16 18.0 18.0 18.0 ... NaN NaN \n", + "73 10/1/16 17.0 17.0 17.0 ... NaN NaN \n", + "74 10/8/16 15.0 15.0 15.0 ... NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 price \n", + "70 NaN NaN NaN N NaN NaN NaN 15.0 \n", + "71 NaN NaN NaN N NaN NaN NaN 18.0 \n", + "72 NaN NaN NaN N NaN NaN NaN 18.0 \n", + "73 NaN NaN NaN N NaN NaN NaN 17.0 \n", + "74 NaN NaN NaN N NaN NaN NaN 15.0 \n", + "\n", + "[5 rows x 27 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "706f2874-29a3-44d3-9668-8f2472a6da8a", + "metadata": {}, + "outputs": [], + "source": [ + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'),'Price'] = price/(1+1/9)\n", + "\n", + "price = new_pumpkins.Price\n", + "month = new_pumpkins.Month" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "0f690cf9-d1ea-4180-94f1-2ced7f79a303", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(price,month)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4d8718e2-b789-4673-9436-5aedab7f1173", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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evXqpbS0NHd/dna2Xn31VW3ZskUvvfSSdu7cqfvuu0+BQECS5Pf71bhxY7Vo0SLofImJifL7/Re9r9mzZysuLs7dkpOTr3ZsAABQD9TpRzzfN3HiRO3du1dFRUVB+0eMGOH+Oi0tTV27dlW7du20bt06DR069JLnM8bIcZyLHps+fbomT57s3q6srCRSAABowK7qCsqkSZP01ltv6d1331WbNm0uuzYpKUnt2rXToUOHJEler1c1NTUqLy8PWldWVqbExMSLnsPj8Sg2NjZoAwAADVedAsUYo4kTJ2r16tXasmWLUlJSrvg1x48fV0lJiZKSkiRJ6enpioqKUmFhobumtLRU+/fvV48ePeo4PgAAaIjq9COeCRMmaOXKlXrzzTcVExPjPmckLi5O0dHROnHihHJzczVs2DAlJSXpyJEjmjFjhhISEvTggw+6a8eNG6cpU6aoZcuWio+P19SpU9W5c2f3VT0AAODmVqdAWbRokSQpIyMjaP+SJUs0ZswYRUREaN++fXrllVf07bffKikpSX369NGqVasUExPjrp8/f74iIyM1fPhwVVdXq2/fvlq6dKkiIiKu/REBAIB6r06BYoy57PHo6Ght3Ljxiudp0qSJ8vPzlZ+fX5e7BwAANwk+iwcAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFinTp9mDCA02j+7LuTnPDLngZCfEwDChSsoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwTmS4BwBCrf2z60J6viNzHgjp+QAAV8YVFAAAYB0CBQAAWIdAAQAA1iFQAACAdXiSrCVC/cROiSd3AgDqL66gAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAO74OCH433agEA3ChcQQEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYp06BMnv2bN19992KiYlR69atNWTIEB08eDBojTFGubm58vl8io6OVkZGhg4cOBC0JhAIaNKkSUpISFCzZs00aNAgHT169NofDQAAaBDqFCjb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+fzzz60JlNjYWHPo0CFjzPk/vCIjI83u3bvd4/v27TOJiYnhGs/1wQcfmFtvvdVMmTLF1NTUGGPsDZSLxdSOHTtMmzZtwjFakJYtW5pdu3YZY85/j+7Zsyfo+OHDh010dHQ4RnN9/79lTU2NWbVqlenfv7+JiIgwPp/PzJgxw/2eDZfo6Gg39IwxJioqyuzfv9+9feTIEdO0adNwjBakXbt2pqioyL197Ngx4ziOOXXqlDHGmOLiYtOkSZNwjefKyMgwDz/8sAkEAhccCwQC5pFHHjEZGRlhmOz/ffzxx5fdVq1aFfY/0x977DFzzz33mJ07d5rCwkLTtWtXk56ebr755htjzPlAcRznhs1z0waKz+cza9asueTxjz76KKzfLDExMeaTTz65YP/EiRNNmzZtzHvvvRf2b2ZjggPFGGOaN28e9C+uI0eOWPEHmDHGVFVVmccee8x06dLF7N2710RFRVkVKGVlZcaY89+b3//LypjzfxF4PJ5wjBbk0UcfNePGjTPGGPPQQw+ZX//610HH8/LyTOfOncMxmuv7gfJ9X375pXnuuedMu3btwv57JyUlxaxfv94YY8xnn31mGjVqZP7whz+4x9etW2fat28frvFcv/zlL01aWppZv3692bJli+nTp0/QX/QbNmwwf/3Xfx3GCc+Ljo6+7O/lffv2WRHOl/pH8Xf7w/196fP5zH//93+7t0+fPm0GDx5s7rjjDnP8+PEb/g/jm/ZVPOnp6frwww81ZMiQix53HCesL0P92c9+5j5B7fvy8/NljNGgQYPCNFmw9u3b6/Dhw+rQoYMk6b/+67/Utm1b93hJSYmSkpLCNV6Q5s2ba9myZSooKFBmZqZqa2vDPVKQvn37KjIyUpWVlfrss8902223uce++uorJSQkhHG681588UX17NlTvXv3VteuXfXSSy9p69at6tixow4ePKgdO3ZozZo14R7zotq2bavc3Fw999xz2rx5c1hnGTlypB577DENHjxY77zzjp555hlNnTpVx48fl+M4euGFF/SLX/wirDNK0vPPP6/S0lINHDhQtbW16t69u1asWOEedxxHs2fPDuOE57Vo0UKHDh1Sp06dLnr88OHDatGixQ2eKljLli314osvqm/fvhc9fuDAAQ0cOPAGTxWsoqIi6L+Tx+PRf/7nf+qhhx5Snz59gv7f3wg3baD86le/0smTJy95vEOHDnr33Xdv4ETBHnzwQb322msaNWrUBccWLlyoc+fO6d/+7d/CMFmwp556Kugv+rS0tKDj69ev13333Xejx7qshx9+WL169dLu3bvD9unZP/Tcc88F3W7atGnQ7bVr1+ree++9kSNdlM/n00cffaQ5c+Zo7dq1Msbogw8+UElJiXr27Kn3339fXbt2DeuM7dq1u+xLXx3HUWZm5g2c6EKzZs1SdHS0duzYoSeeeELPPPOMunTpomnTpunUqVMaOHCg/vmf/zmsM0rno37VqlU6ffq0zp49q+bNmwcdz8rKCtNkwR5//HGNHj1av/71r5WZmanExEQ5jiO/36/CwkLl5eUpJycnrDOmp6fr2LFjl/wz59tvvw37ezP95Cc/0d69e5Wamurui4yM1B//+Ec99NBDGjBgwA2dh08zBgDUey+++KJ+97vfye/3y3EcSeffjNHr9SonJ0fTpk0L63xr1qzRyZMn9eijj170eHl5ud566y2NHj36Bk/2/5555hnt2bNHGzduvODY2bNnNWzYMK1du1bnzp27IfMQKACABqO4uFh+v1+S5PV6lZKSEuaJ6o+zZ8/q1KlTio2Nvejx2tpaHT169IZdeeaN2gAADUZKSoq6d++u7t27u3FiwxtvXokNM0ZGRl4yTiTp2LFjmjVr1g2bhysoAIAG7eOPP9Zdd91l3RPjv48ZL3TTPkkWANAwvPXWW5c9/sUXX9ygSS6NGeuOKygAgHqtUaNGV3xrCMdxwnp1ghmvYp4bci8AAFwnSUlJev3113Xu3LmLbh9++GG4R2TGq0CgAADqte/eePNSwv3GmxIzXg2egwIAqNdsf+NNiRmvBs9BAQAA1uFHPAAAwDoECgAAsA6BAgAArEOgAAAA6xAoABoMx3H0xhtvhHsMACFAoAC4ZmPGjJHjOHryyScvODZ+/Hg5jqMxY8aE7P5yc3N1xx13hOx8AOxDoAAIieTkZBUUFKi6utrdd/r0ab322mtq27ZtGCcDUB8RKABC4q677lLbtm21evVqd9/q1auVnJysO++8090XCAT09NNPq3Xr1mrSpIl69eqlnTt3use3bt0qx3H0zjvvqGvXrmratKl69OihgwcPSpKWLl2qWbNm6eOPP5bjOHIcR0uXLnW//uuvv9aDDz6opk2bKjU19YofgAbATgQKgJD5+7//ey1ZssS9/R//8R8aO3Zs0Jpp06bp9ddf17Jly/Thhx+qQ4cO6t+/v7755pugdTNnztRLL72kXbt2KTIy0j3PiBEjNGXKFN12220qLS1VaWmpRowY4X7drFmzNHz4cO3du1d/+7d/q7/7u7+74NwA7EegAAiZUaNGqaioSEeOHNGXX36p999/X48++qh7/OTJk1q0aJF++9vfKjs7W506ddLLL7+s6OhoLV68OOhcL7zwgnr37q1OnTrp2Wef1fbt23X69GlFR0erefPmioyMlNfrldfrVXR0tPt1Y8aM0SOPPKIOHTooLy9PJ0+e1AcffHDD/hsACA0+iwdAyCQkJOiBBx7QsmXLZIzRAw88oISEBPf4559/rjNnzqhnz57uvqioKP3N3/yNPv3006BzdenSxf11UlKSJKmsrOyKz2f5/tc1a9ZMMTExKisru6bHBeDGI1AAhNTYsWM1ceJESdK//Mu/BB377qO/HMe5YP8P90VFRbm//u7YuXPnrnj/3/+67772x3wdALvwIx4AIXX//ferpqZGNTU16t+/f9CxDh06qHHjxioqKnL3nTlzRrt27VLHjh1/9H00btxYtbW1IZsZgH24ggIgpCIiItwf10RERAQda9asmZ566in96le/Unx8vNq2bau5c+fq1KlTGjdu3I++j/bt26u4uFh79uxRmzZtFBMTI4/HE9LHASC8CBQAIRcbG3vJY3PmzNG5c+c0atQoVVVVqWvXrtq4caNatGjxo88/bNgwrV69Wn369NG3336rJUuWhPSN4ACEn2O++6EwAACAJXgOCgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOv8H/YOI3XvcDVmAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')\n", + "plt.ylabel = 'Pumpkin Price'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01b2bb81-287d-4919-8f43-d80472c5f4b8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/2-Regression/2-Data/translations/README.es.md b/2-Regression/2-Data/translations/README.es.md deleted file mode 100644 index 9483f816..00000000 --- a/2-Regression/2-Data/translations/README.es.md +++ /dev/null @@ -1,207 +0,0 @@ -# Construye un modelo de regresión usando Scikit-learn: prepara y visualiza los datos - -![Infografía de visualización de datos](../images/data-visualization.png) - -Infografía por [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Examen previo a la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11?loc=es) - -> ### [Esta lección se encuentra disponible en R!](../solution/R/lesson_2-R.ipynb) - -## Introducción - -Ahora que has configurado las herramientas necesarias para iniciar el trabajo con la construcción de modelo de aprendizaje automático con Scikit-learn, estás listo para comenzar a realizar preguntas a tus datos. Mientras trabajas con los datos y aplicas soluciones de ML, es muy importante entender cómo realizar las preguntas correctas para desbloquear el potencial de tu conunto de datos. - -En esta lección, aprenderás: - -- Cómo preparar tus datos para la construcción de modelos. -- Cómo usar Matplotlib para visualización de datos. - -[![Preparación y visualización de datos](https://img.youtube.com/vi/11AnOn_OAcE/0.jpg)](https://youtu.be/11AnOn_OAcE "Video de preparación y visualizción de datos - ¡Clic para ver!") -> 🎥 Da clic en la imagen superior para ver un video de los aspectos clave de esta lección - - -## Realizando la pregunta correcta a tus datos - -La pregunta para la cual necesitas respuesta determinará qué tipo de algoritmos de ML requerirás. Y la calidad de la respuesta que obtendas será altamente dependiente de la naturaleza de tus datos. - -Echa un vistazo a los [datos](../../data/US-pumpkins.csv) provistos para esta lección. Puedes abrir este archivo .csv en VS Code. Un vistazo rápido muestra inmediatamente que existen campos en blanco y una mezcla de datos numéricos y de cadena. También hay una columna extraña llamada 'Package' donde los datos están mezclados entre los valores 'sacks', 'bins' y otros. Los datos de hecho, son un pequeño desastre. - -De hecho, no es muy común obtener un conjunto de datos que esté totalmente listo para su uso en un modelo de ML. En esta lección, aprenderás cómo preparar un conjunto de datos en crudo usando librerías estándares de Python. También aprenderás varias técnicas para visualizar los datos. - -## Caso de estudio: 'El mercado de calabazas' - -En este directorio encontrarás un archivo .cvs in la raíz del directorio `data` llamado [US-pumpkins.csv](../../data/US-pumpkins.csv), el cual incluye 1757 líneas de datos acerca del mercado de calabazas, ordenados en agrupaciones por ciudad. Estos son loas datos extraídos de [Reportes estándar de mercados terminales de cultivos especializados](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuido por el Departamento de Agricultura de los Estados Unidos. - -### Preparando los datos - -Estos datos son de dominio público. Puede ser descargado en varios archivos por separado, por ciudad, desde el sitio web de USDA. para evitar demasiados archivos por separado, hemos concatenado todos los datos de ciudad en una hoja de cálculo, así ya hemos _preparado_ los datos un poco. Lo siguiente es dar un vistazo más a fondo a los datos. - -### Los datos de las calabazas - conclusiones iniciales - -¿Qué notas acerca de los datos? Ya has visto que hay una mezcla de cadenas, números, blancos y valores extraños a los cuales debes encontrarle sentido. - -¿Qué preguntas puedes hacerle a los datos usando una técnica de regresión? Qué tal el "predecir el precio de la venta de calabaza durante un mes dado". Viendo nuevamente los datos, hay algunos cambios que necesitas hacer para crear las estructuras de datos necesarias para la tarea. -## Ejercicio - Analiza los datos de la calabaza - -Usemos [Pandas](https://pandas.pydata.org/), (el nombre es un acrónimo de `Python Data Analysis`) a tool very useful for shaping data, to analyze and prepare this pumpkin data. - -### Primero, revisa las fechas faltantes - -Necesitarás realizar algunos pasos para revisar las fechas faltantes: - -1. Convertir las fechas a formato de mes (las fechas están en formato de EE.UU., por lo que el formato es `MM/DD/YYYY`). -2. Extrae el mes en una nueva columna. - -Abre el archivo _notebook.ipynb_ en Visual Studio Code e importa la hoja de cálculo en un nuevo dataframe de Pandas. - -1. Usa la función `head()` para visualizar las primeras cinco filas. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ ¿Qué función usarías para ver las últimas cinco filas? - -1. Revisa si existen datos faltantes en el dataframe actual: - - ```python - pumpkins.isnull().sum() - ``` - - Hay datos faltabtes, pero quizá no importen para la tarea en cuestión. - -1. Para facilitar el trabajo con tu dataframe, elimina varias de sus columnas usando `drop()`, manteniendo sólo las columnas que necesitas: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### Segundo, determina el precio promedio de la calabaza - -Piensa en cómo determinar el precio promedio de la calabaza en un mes dado. ¿Qué columnas eligirás para esa tarea? Pista: necesitarás 3 columnas. - -Solución: toma el promedio de las columnas `Low Price` y `High Price` para poblar la nueva columna `Price` y convierte la columna `Date` para mostrar únicamente el mes, Afortunadamente, de acuerdo a la revisión de arriba, no hay datos faltantes para las fechas o precios. - -1. Para calcular el promedio, agrega el siguiente código: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ Siéntete libre de imprimir cualquier dato que desees verificar, usando `print(month)`. - -2. Ahora, copia tus datos convertidos en un nuevo dataframe de Pandas: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - Imprimir tu dataframe te mostrará un conjunto de datos limpio y ordenado, en el cual puedes construir tu nuevo modelo de regresión. - -### ¡Pero espera!, Hay algo raro aquí - -Si observas la columna `Package`, las calabazas se venden en distintas configuraciones. Algunas son vendidas en medidas de '1 1/9 bushel', y otras en '1/2 bushel', algunas por pieza, algunas por libra y otras en grandes cajas de ancho variable. - -> Las calabazas parecen muy difíciles de pesar consistentemente. - -Indagando en los datos originales, es interesante que cualquiera con el valor `Unit of Sale` igualado a 'EACH' o 'PER BIN' también tiene el tipo de `Package` por pulgada, por cesto, o 'each'. Las calabazas parecen muy difíciles de pesar consistentemente, por lo que las filtraremos seleccionando solo aquellas calabazas con el string 'bushel' en su columna `Package`. - -1. Agrega un filtro al inicio del archivo, debajo de la importación inicial del .csv: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - Si imprimes los datos ahora, puedes ver que solo estás obteniendo alrededor de 415 filas de datos que contienen calabazas por fanegas. - -### ¡Pero espera! Aún hay algo más que hacer - -¿Notaste que la cantidad de fanegas varían por fila? Necesitas normalizar el precio para así mostrar el precio por fanega, así que haz los cálculos para estandarizarlo. - -1. Agrega estas líneas después del bloque para así crear el dataframe new_pumpkins: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ De acuerdo a [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), el peso de una fanega depende del tipo de producto, ya que es una medida de volumen. "Una fanega de tomates, por ejemplo, se supone pese 56 libras... Las hojas y verduras usan más espacio con menos peso, por lo que una fanega de espinaca es de sólo 20 libras." ¡Todo es tan complicado! No nos molestemos en realizar una conversión fanega-a-libra, y en su lugar hagámosla por precio de fanega. ¡Todo este estudio de las fanegas de calabazas nos mostrará cuán importante es comprender la naturaleza de tus datos! - -Ahora, puedes analizar el precio por unidad basándote en su medida de fanega. Si imprimes los datos una vez más, verás que ya están estandarizados. - -✅ ¿Notaste que las calabazas vendidas por media fanega son más caras? ¿Puedes descubrir la razón? Ayuda: Las calabazas pequeñas son mucho más caras que las grandes, probablemente porque hay muchas más de ellas por fanega, dado el espacio sin usar dejado por una calabaza grande. - -## Estrategias de visualización - -parte del rol de un científico de datos es el demostrar la calidad y naturaleza de los dato con los que está trabajando. Para hacerlo, usualmente crean visualizaciones interesantes, o gráficos, grafos, y gráficas, mostrando distintos aspectos de los datos. De esta forma, son capaces de mostrar visualmente las relaciones y brechas de que otra forma son difíciles de descubrir. - -Las visualizaciones también ayudan a determinar la técnica de aprendizaje automático más apropiada para los datos. Por ejemplo, un gráfico de dispersión que parece seguir una línea, indica que los datos son un buen candidato para un ejercicio de regresión lineal. - -Una librería de visualización de datos que funciona bien en los notebooks de Jupyter es [Matplotlib](https://matplotlib.org/) (la cual también viste en la lección anterior). - -> Obtén más experiencia con la visualización de datos en [estos tutoriales](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). - -## Ejercicio - experimenta con Matplotlib - -Intenta crear algunas gráficas básicas para mostrar el nuevo dataframe que acabas de crear. ¿Qué mostraría una gráfica de línea básica? - -1. Importa Matplotlib al inicio del archivo, debajo de la importación de Pandas: - - ```python - import matplotlib.pyplot as plt - ``` - -1. Vuelve a correr todo el notebook para refrescarlo. -1. Al final del notebook, agrega una celda para graficar los datos como una caja: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![Una gráfica de dispersión mostrando la relación precio a mes](../images/scatterplot.png) - - ¿La gráfica es útil? ¿Hay algo acerca de ésta que te sorprenda? - - No es particularmente útil ya que todo lo que hace es mostrar tus datos como puntos dispersos en un mes dado. - -### Hacerlo útil - -Para obtener gráficas para mostrar datos útiles, necesitas agrupar los datos de alguna forma. Probemos creando un gráfico donde el eje y muestre los meses y los datos demuestren la distribución de los datos. - -1. Agrega una celda para crear una gráfica de barras agrupadas: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![Una gráfica de bsarras mostrando la relación precio a mes](../images/barchart.png) - - ¡Esta es una visualización de datos más útil! Parece indicar que el precio más alto para las calabazas ocurre en Septiembre y Octubre. ¿Cumple esto con tus expectativas? ¿por qué sí o por qué no? - ---- - -## 🚀Desafío - -Explora los distintos tipos de visualización que ofrece Matplotlib. ¿Qué tipos son los más apropiados para problemas de regresión? - -## [Examen posterior a la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12?loc=es) - -## Revisión y autoestudio - -Dale un vistazo a las distintas forma de visualizar los datos. Haz un lista de las distintas librerías disponibles y nota cuales son mejores para cierto tipo de tareas, por ejemplo visualizaciones 2D vs visualizaciones 3D. ¿Qué descubriste? - -## Asignación - -[Explorando la visualización](assignment.es.md) diff --git a/2-Regression/2-Data/translations/README.id.md b/2-Regression/2-Data/translations/README.id.md deleted file mode 100644 index d6c7de5f..00000000 --- a/2-Regression/2-Data/translations/README.id.md +++ /dev/null @@ -1,202 +0,0 @@ -# Membangun sebuah model regresi dengan Scikit-learn: siapkan dan visualisasikan data - -![Infografik visualisasi data](../images/data-visualization.png) -> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Kuis pra-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/) - -## Pembukaan - -Karena sekarang kamu sudah siap dengan alat-alat yang akan diperlukan untuk mulai melampiaskan pembangunan model *machine learning* dengan Scikit-learn, kamu juga siap untuk mulai membuat pertanyaan dari datamu. Selagi kamu bekerja dengan data dan mengaplikasikan solusi ML, sangatlah penting untuk mengerti bagaimana menanyakan cara yang benar dan tepat untuk mengemukakan potensial *dataset*-mu. - -Dalam pelajaran ini, kamu akan belajar: - -- Cara mempersiapkan datamu untuk pembangunan model. -- Cara menggunakan Matplotlib untuk memvisualisasikan data. - -## Menanyakan pertanyaan yang tepat dari datamu - -Pertanyaan yang perlu dijawab akan menentukan jenis algoritma ML yang kamu akan memanfaatkan. Lalu, kualitas jawaban yang kamu akan dapat sangat tergantung pada sifat datamu (*the nature of your data*). - -Lihatlah [data](../data/US-pumpkins.csv) yang disiapkan untuk pelajaran ini. Kamu bisa membuka file .csv ini di VS Code. Membaca dengan cepat, *dataset* ini ada yang kosong dan ada yang campuran data *string* dan data numerik. Adapula sebuah kolom 'Package' yang aneh dan mengandung data antara 'sacks', 'bins', dll. Terus terang, data ini amburadul. - -Faktanya adalah tidak sering kita dihadiahkan sebuah *dataset* yang langsung bisa digunakan untuk membuat sebuah model ML. Dalam pelajaran ini, kamu akan belajar bagaimana menyiapkan sebuah *dataset* 'mentah' menggunakan *library* standar Python. Kamu juga akan belajar aneka teknik untuk memvisualisasikan datanya. - -## Studi kasus: 'pasar labu' - -Dalam folder ini kamu akan menemukan sebuah file .csv dalam folder `data` bernama [US-pumpkins.csv](../data/US-pumpkins.csv) yang mempunyai 1757 baris data tentang pasar labu disortir dalam pengelompokkan berdasarkan kota. Ini adalah data mentah yang diambil dari [Specialty Crops Terminal Markets Standard Reports (Laporan Standar Pasar Terminal Tanaman Khusus)](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang didistribusi Departemen Agrikultur Amerika Serikat. - -### Menyiapkan data - -Data ini terbuka untuk umum (*publik domain*) dan bisa diunduh sebagai banyak file terpisah berdasarkan kota dari situs internet Departemen Agrikultur Amerika Serikat. Supaya tidak berurusan dengan terlalu banyak file, kami telah menggabungkan data dari semua kota menjadi satu *spreadsheet* (file Excel). Jadi kamu sudah _menyiapkan_ datanya sedikit. Selanjutnya, mari kita lihat datanya. - -### Data labu - kesimpulan-kesimpulan awal - -Apa yang kamu cermati tentang data ini? Kamu sudah melihat bahwa ada campuran *string*, nomor, kekosongan, dan nilai-nilai aneh yang harus diartikan. - -Pertanyaan apa yang kamu bisa tanyakan dari data data ini menggunakan teknik regresi? Kalau "Prediksikan harga jual sebuah labu pada bulan tertentu" bagaimana? Melihat datanya sekali lagi, ada beberapa perubahan yang kamu harus terapkan untuk membuat struktur data yang diperlukan untuk tugas ini. - -## Latihan - analisiskan data labu - -Mari menggunakan [Pandas](https://pandas.pydata.org/) (singkatan dari `Python Data Analysis`), sebuah alat yang sangat beruna untuk membentuk, menganalisis, dan menyiapkan data labu ini. - -### Pertama, carilah tanggal yang hilang - -Kamu harus mengambil langkah untuk mencari tanggal-tanggal yang hilang terlebih dahulu: - -1. Konversi tanggal-tanggalnya menjadi format bulan (tanggal-tanggal ini dalam format Amerika Serikat, yaitu `BULAN/TANGGAL/TAHUN`). -2. Jadikan data bulan menjadi kolom baru - -Buka file _notebook.ipynb_ dalam Visual Studio Code dan impor *spreadsheet*-nya menjadi sebuah *dataframe* Pandas. - -1. Gunakan fungsi `head()` untuk melihat lima baris pertama. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ Fungsi apa yang akan kamu gunakan untuk melihat lima baris **terakhir**? - -2. Periksa apa ada data yang hilang dalam *dataframe* ini: - - ```python - pumpkins.isnull().sum() - ``` - - Ada data yang hilang, namun mungkin tidak akan diperlukan untuk tugas ini. - -3. Untuk menjadikan *dataframe* kamu lebih mudah untuk digunakan, buanglah beberapa kolom menggunakan `drop()` dan simpanlah kolom-kolom yang diperlukan saja: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### Kedua, tentukan harga rata-rata labu - -Pikirkan bagaimana caranya menentukan harga rata-rata sebuah labu pada bulan tertentu. Kamu akan pilih kolom apa saja untuk tugas ini? Petunjuk: kamu akan perlu 3 kolom. - -Solusi: Ambil rata-rata kolom `Low Price` dan `High Price` untuk mengisi kolom `Price` yang baru. Terus, konversikan kolom `Date` untuk hanya menunjukkan bulan saja. Untungnya, berdasarkan pemeriksaan di atas, tidak ada data tanggal atau harga yang hilang. - -1. Untuk mengkalkulasi rata-rata, tambahlah kode berikut: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ Jangan ragu untuk mem-*print* data apapun yang kamu ingin periksa menggunakan `print(month)`. - -2. Sekarang, salinlah data yang telah dikonversi ke sebuah *dataframe* Pandas yang baru: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - Jika *dataframe* baru ini di-*print*, kamu akan lihat sebuah *dataset* yang rapih darimana kamu bisa membangun model regresi barumu. - -### But wait! There's something odd here -### Tunggu! Ada yang aneh di sini - -Kalau kamu lihat kolom `Package`, labu dijual dalam berbagai konfigurasi. Beberapa dijual dalam satuan '1 1/9 bushel', beberapa per labu, beberapa per pon, dan beberapa dalam dus-dus besar dengan kelebaran yang berbeda-beda. - -> Kelihatannya susah untuk menimbang labu secara konsisten - -Menggali data orisinal lebih dalam, sangatlah menarik untuk melihat apapun dengan `Unit of Sale` (satuan penjualan) yang sama dengan 'EACH' atau 'PER BIN' akan mempunyai jenis `Package` yang per inci, per bin, atau 'each'. Kelihatannya susah untuk menimbang labu secara konsisten, jadi mari memilah datanya dengan hanya memilih labu yang kolom `Package`-nya sama dengan *string* 'bushel'. - -1. Tambah sebuah filter di atas file tetapi dibawah impor .csv yang di awal - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - Kalau kamu *print* datanya sekarang, kamu bisa lihat bahwa kamu hanya mendapatkan sekitar 415 baris data yang mengandung data labu per bushel. - -### Tunggu! Masih ada satu lagi - -Apa kamu sadar bahwa jumlah bushel berbeda-beda per baris? Kamu harus menormalisasi harganya supaya kamu menunjukkan harga per bushel. Gunakanlah sedikit matematika untuk menstandarisasinya. - -1. Tambahlah beberapa baris ini setelah blok yang membuat *dataframe* new_pumpkins: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ Berdasarkan [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat satu bushel tergantung jenis hasil bumi sebab bushel adalah satuan volume. "Satu bushel tomat, sebagai contoh, seharusnya seberat 56 pon (25.4 kg)... Dedaunan mengambil lebih banyak ruang tetapi lebih ringan, jadi satu bushel bayam hanya seberat 20 pon (9.1 kg)" (diterjemah). Lumayan rumit ya! Kita tidak usah mengkonversi bushel ke pon saja bagaimana, jadi kita gunakan satuan harga per bushel? Namun, semua riset ini tentang bushel labu menunjukkan sebagaimana pentingnya untuk mengerti sifat datamu! - -Sekarang, kamu bisa meneliti harga per satuan berdasarkan hitungan bushel mereka. Jika kamu *print* datanya sekali lagi, kamu bisa lihat bagaimana telah distandarisasi. - -✅ Apa kamu sadar bahwa labu yang dijual per setengah bushel sangat mahal? Kira-kira mengapa ya? Petunjuk: labu kecil jauh lebih mahal daripada labu besar, mungkin karena ada lebih banyak per bushel, apalagi mengingat pula bahwa satu labu besar mempunyai rongga kosong yang besar di dalamnya. - -## Strategi Visualisasi - -Sebagian dari peran seorang *data scientist* adalah untuk mendemonstrasikan kualitas dan sifat data yang sedang digunakan. Untuk melakukan ini, mereka seringkali membuat visualisasi-visualisasi atau grafik menarik yang menunjukkan aspek-aspek berbeda tentang datanya. Dengan cara ini, mereka dapat menunjukkan hubungan-hubungan dan celah-celah secara visual. Kalau tidak secara visual, akan susah untuk menemukan pola-pola tersebut. - -Visualisasi juga bisa membantu menentukan teknik *machine learning* yang palingn cocok untuk datanya. Sebagai contoh, sebuah petak sebar yang kelihatannya mengikuti sebuah garis mengindikasikan bahwa data ini adalah kandidat baik untuk latihan regresi linear. - -Satu *library* visualisasi data yang bekerja dengan baik dalam sebuah *Jupyter notebook* adalah [Matplotlib](https://matplotlib.org/) (yang kamu juga lihat dalam pelajaran sebelumnya). - -> Carilah pengalaman dalam memvisualisasi data dengan [tutorial-tutorial ini](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). - -## Latihan - sebuah experimen dengan Matplotlib - -Coba membuat beberapa grafik sederhana untuk menunjukkan *dataframe* baru yang baru kamu buat. Kira-kira, sebuah plot garis akan menunjukkan apa ya? - -1. Impor Matplotlib di atas file tetapi di bawah impor Pandas: - - ```python - import matplotlib.pyplot as plt - ``` - -2. Jalankan ulang keseluruhan *notebook*-nya. -3. Di bagian bawah *notebook*-nya, tambahkan sebuah sel untuk menggambarkan datanya sebagai sebuah kotak. - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![Sebuah petak sebar yang menunjukkan hubungan antara harga dan bulan](../images/scatterplot.png) - - Apakah grafik ini berguna? Apa ada yang mengejutkanmu? - - Sebenarnya tidak terlalu berguna karena dia hanya menunjukkan datamu sebagai sebuah penyebaran poin pada bulan tertentu. - -### Jadikan berguna - -Untuk menjadikan sebuah grafik menjadi berguna, biasanya datanya harus dikelompokkan dengan suatu cara. Kita coba membuat suatu plot di mana sumbu y menunjukkan bulan dan datanya mendemonstrasikan distribusi data, yuk! - -1. Tambah sebuah sel untuk membuat sebuah diagram batang berkelompok: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![Sebuah diagram batang yang menunjukkan hubungan antara harga dan bulan](../images/barchart.png) - - Nah, ini lebih berguna! Kelihatannya visualisasi ini mengindikasi bahwa labu itu paling mahal pada bulan September dan Oktober. Apa itu sesuai ekspektasimu? Mengapa? - ---- - -## 🚀Tantangan - -Jelajahi jenis-jenis visualisasi yang beda dan yang disediakan Matplotlib. Jenis mana yang paling cocok untuk kasus regresi? - -## [Kuis pasca-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/) - -## Review & Pembelajaran Mandiri - -Lihatlah beragam cara memvisualisasi data. Buatlah sebuah daftar dari aneka *library* yang tersedia dan catatlah yang mana yang paling baik untuk jenis-jenis tugas tertentu. Sebagai contoh, bagaimana dengan visualisasi 2D vs. 3D? Apa yang kamu temukan? - -## Tugas - -[Menjelajahi visualisasi](../assignment.md) diff --git a/2-Regression/2-Data/translations/README.it.md b/2-Regression/2-Data/translations/README.it.md deleted file mode 100644 index c0e79ef6..00000000 --- a/2-Regression/2-Data/translations/README.it.md +++ /dev/null @@ -1,201 +0,0 @@ -# Costruire un modello di regressione usando Scikit-learn: preparare e visualizzare i dati - -> ![Infografica sulla visualizzazione dei dati](../images/data-visualization.png) -> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Quiz pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/?loc=it) - -## Introduzione - -Ora che si hanno a disposizione gli strumenti necessari per iniziare ad affrontare la creazione di modelli di machine learning con Scikit-learn, si è pronti per iniziare a porre domande sui propri dati. Mentre si lavora con i dati e si applicano soluzioni ML, è molto importante capire come porre la domanda giusta per sbloccare correttamente le potenzialità del proprio insieme di dati. - -In questa lezione, si imparerà: - -- Come preparare i dati per la creazione del modello. -- Come utilizzare Matplotlib per la visualizzazione dei dati. - -## Fare la domanda giusta ai propri dati - -La domanda a cui si deve rispondere determinerà il tipo di algoritmi ML che verranno utilizzati. La qualità della risposta che si riceverà dipenderà fortemente dalla natura dei propri dati. - -Si dia un'occhiata ai [dati](../../data/US-pumpkins.csv) forniti per questa lezione. Si può aprire questo file .csv in VS Code. Una rapida scrematura mostra immediatamente che ci sono spazi vuoti e un mix di stringhe e dati numerici. C'è anche una strana colonna chiamata "Package" (pacchetto) in cui i dati sono un mix tra "sacks" (sacchi), "bins" (contenitori) e altri valori. I dati, infatti, sono un po' un pasticcio. - -In effetti, non è molto comune ricevere un insieme di dati completamente pronto per creare un modello ML pronto all'uso. In questa lezione si imparerà come preparare un insieme di dati non elaborato utilizzando le librerie standard di Python. Si impareranno anche varie tecniche per visualizzare i dati. - -## Caso di studio: 'il mercato della zucca' - -In questa cartella si troverà un file .csv nella cartella `data` radice chiamato [US-pumpkins.csv](../../data/US-pumpkins.csv) che include 1757 righe di dati sul mercato delle zucche, ordinate in raggruppamenti per città. Si tratta di dati grezzi estratti dai [Report Standard dei Mercati Terminali delle Colture Speciali](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuiti dal Dipartimento dell'Agricoltura degli Stati Uniti. - -### Preparazione dati - -Questi dati sono di pubblico dominio. Possono essere scaricati in molti file separati, per città, dal sito web dell'USDA. Per evitare troppi file separati, sono stati concatenati tutti i dati della città in un unico foglio di calcolo, quindi un po' i dati sono già stati _preparati_ . Successivamente, si darà un'occhiata più da vicino ai dati. - -### I dati della zucca - prime conclusioni - -Cosa si nota riguardo a questi dati? Si è già visto che c'è un mix di stringhe, numeri, spazi e valori strani a cui occorre dare un senso. - -Che domanda si puà fare a questi dati, utilizzando una tecnica di Regressione? Che dire di "Prevedere il prezzo di una zucca in vendita durante un dato mese". Esaminando nuovamente i dati, ci sono alcune modifiche da apportare per creare la struttura dati necessaria per l'attività. - -## Esercizio: analizzare i dati della zucca - -Si usa [Pandas](https://pandas.pydata.org/), (il nome sta per `Python Data Analysis`) uno strumento molto utile per dare forma ai dati, per analizzare e preparare questi dati sulla zucca. - -### Innanzitutto, controllare le date mancanti - -Prima si dovranno eseguire i passaggi per verificare le date mancanti: - -1. Convertire le date in un formato mensile (queste sono date statunitensi, quindi il formato è `MM/GG/AAAA`). -2. Estrarre il mese in una nuova colonna. - -Aprire il file _notebook.ipynb_ in Visual Studio Code e importare il foglio di calcolo in un nuovo dataframe Pandas. - -1. Usare la funzione `head()` per visualizzare le prime cinque righe. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ Quale funzione si userebbe per visualizzare le ultime cinque righe? - -1. Controllare se mancano dati nel dataframe corrente: - - ```python - pumpkins.isnull().sum() - ``` - - Ci sono dati mancanti, ma forse non avrà importanza per l'attività da svolgere. - -1. Per rendere più facile lavorare con il dataframe, si scartano molte delle sue colonne, usando `drop()`, mantenendo solo le colonne di cui si ha bisogno: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### Secondo, determinare il prezzo medio della zucca - -Si pensi a come determinare il prezzo medio di una zucca in un dato mese. Quali colonne si sceglierebbero per questa attività? Suggerimento: serviranno 3 colonne. - -Soluzione: prendere la media delle colonne `Low Price` e `High Price` per popolare la nuova colonna Price e convertire la colonna Date per mostrare solo il mese. Fortunatamente, secondo il controllo di cui sopra, non mancano dati per date o prezzi. - -1. Per calcolare la media, aggiungere il seguente codice: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ Si possono di stampare tutti i dati che si desidera controllare utilizzando `print(month)`. - -2. Ora copiare i dati convertiti in un nuovo dataframe Pandas: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - La stampa del dataframe mostrerà un insieme di dati pulito e ordinato su cui si può costruire il nuovo modello di regressione. - -### Ma non è finita qui! C'è qualcosa di strano qui. - -Osservando la colonna `Package`, le zucche sono vendute in molte configurazioni diverse. Alcune sono venduti in misure '1 1/9 bushel' (bushel = staio) e alcuni in misure '1/2 bushel', alcuni per zucca, alcuni per libbra e alcuni in grandi scatole con larghezze variabili. - -> Le zucche sembrano molto difficili da pesare in modo coerente - -Scavando nei dati originali, è interessante notare che qualsiasi cosa con `Unit of Sale` (Unità di vendita) uguale a 'EACH' o 'PER BIN' ha anche il tipo di `Package` per 'inch' (pollice), per 'bin' (contenitore) o 'each' (entrambi). Le zucche sembrano essere molto difficili da pesare in modo coerente, quindi si filtrano selezionando solo zucche con la stringa "bushel" nella colonna `Package`. - -1. Aggiungere un filtro nella parte superiore del file, sotto l'importazione .csv iniziale: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - Se si stampano i dati ora, si può vedere che si stanno ricevendo solo le circa 415 righe di dati contenenti zucche per bushel. - -### Ma non è finita qui! C'è un'altra cosa da fare. - -Si è notato che la quantità di bushel varia per riga? Si deve normalizzare il prezzo in modo da mostrare il prezzo per bushel, quindi si facciano un po' di calcoli per standardizzarlo. - -1. Aggiungere queste righe dopo il blocco che crea il dataframe new_pumpkins: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ Secondo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), il peso di un bushel dipende dal tipo di prodotto, poiché è una misura di volume. "Un bushel di pomodori, per esempio, dovrebbe pesare 56 libbre... Foglie e verdure occupano più spazio con meno peso, quindi un bushel di spinaci è solo 20 libbre". È tutto piuttosto complicato! Non occorre preoccuparsi di fare una conversione da bushel a libbra, e invece si valuta a bushel. Tutto questo studio sui bushel di zucche, però, dimostra quanto sia importante capire la natura dei propri dati! - -Ora si può analizzare il prezzo per unità in base alla misurazione del bushel. Se si stampano i dati ancora una volta, si può vedere come sono standardizzati. - -✅ Si è notato che le zucche vendute a metà bushel sono molto costose? Si riesce a capire perché? Suggerimento: le zucche piccole sono molto più costose di quelle grandi, probabilmente perché ce ne sono molte di più per bushel, dato lo spazio inutilizzato occupato da una grande zucca cava. - -## Strategie di Visualizzazione - -Parte del ruolo del data scientist è dimostrare la qualità e la natura dei dati con cui sta lavorando. Per fare ciò, si creano spesso visualizzazioni interessanti o tracciati, grafici e diagrammi, che mostrano diversi aspetti dei dati. In questo modo, sono in grado di mostrare visivamente relazioni e lacune altrimenti difficili da scoprire. - -Le visualizzazioni possono anche aiutare a determinare la tecnica di machine learning più appropriata per i dati. Un grafico a dispersione che sembra seguire una linea, ad esempio, indica che i dati sono un buon candidato per un esercizio di regressione lineare. - -Una libreria di visualizzazione dei dati che funziona bene nei notebook Jupyter è [Matplotlib](https://matplotlib.org/) (che si è visto anche nella lezione precedente). - -> Per fare più esperienza con la visualizzazione dei dati si seguano [questi tutorial](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). - -## Esercizio - sperimentare con Matplotlib - -Provare a creare alcuni grafici di base per visualizzare il nuovo dataframe appena creato. Cosa mostrerebbe un grafico a linee di base? - -1. Importare Matplotlib nella parte superiore del file, sotto l'importazione di Pandas: - - ```python - import matplotlib.pyplot as plt - ``` - -1. Rieseguire l'intero notebook per aggiornare. -1. Nella parte inferiore del notebook, aggiungere una cella per tracciare i dati come una casella: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![Un grafico a dispersione che mostra la relazione tra prezzo e mese](../images/scatterplot.png) - - È un tracciato utile? C'è qualcosa che sorprende? - - Non è particolarmente utile in quanto tutto ciò che fa è visualizzare nei propri dati come una diffusione di punti in un dato mese. - -### Renderlo utile - -Per fare in modo che i grafici mostrino dati utili, di solito è necessario raggruppare i dati in qualche modo. Si prova a creare un grafico che mostra la distribuzione dei dati dove l'asse x mostra i mesi. - -1. Aggiungere una cella per creare un grafico a barre raggruppato: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![Un grafico a barre che mostra la relazione tra prezzo e mese](../images/barchart.png) - - Questa è una visualizzazione dei dati più utile! Sembra indicare che il prezzo più alto per le zucche si verifica a settembre e ottobre. Questo soddisfa le proprie aspettative? Perché o perché no? - ---- - -## 🚀 Sfida - -Esplorare i diversi tipi di visualizzazione offerti da Matplotlib. Quali tipi sono più appropriati per i problemi di regressione? - -## [Quiz post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/?loc=it) - -## Revisione e Auto Apprendimento - -Dare un'occhiata ai molti modi per visualizzare i dati. Fare un elenco delle varie librerie disponibili e annotare quali sono le migliori per determinati tipi di attività, ad esempio visualizzazioni 2D rispetto a visualizzazioni 3D. Cosa si è scoperto? - -## Compito - -[Esplorazione della visualizzazione](assignment.it.md) diff --git a/2-Regression/2-Data/translations/README.ja.md b/2-Regression/2-Data/translations/README.ja.md deleted file mode 100644 index a877bdac..00000000 --- a/2-Regression/2-Data/translations/README.ja.md +++ /dev/null @@ -1,206 +0,0 @@ -# Scikit-learnを用いた回帰モデルの構築: データの準備と可視化 - -> ![データの可視化に関するインフォグラフィック](../images/data-visualization.png) -> -> [Dasani Madipalli](https://twitter.com/dasani_decoded) によるインフォグラフィック - -## [講義前のクイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11?loc=ja) - -## イントロダクション - -Scikit-learnを使って機械学習モデルの構築を行うために必要なツールの用意ができたところで、データに対する問いかけを始める準備が整いました。データを扱いMLソリューションを適用する際には、データセットの潜在能力を適切に引き出すために正しい問いかけをすることが非常に重要です。 - -このレッスンでは、以下のことを学びます。 - -- モデルを構築するためのデータ処理方法について -- データの可視化におけるMatplotlibの使い方について - -## データに対して正しい問いかけをする - -どのような質問に答えるかによって、どのようなMLアルゴリズムを活用するかが決まります。また、返ってくる回答の質は、データの性質に大きく依存します。 - -このレッスンのために用意された[データ]((../../data/US-pumpkins.csv))を見てみましょう。この.csvファイルは、VS Codeで開くことができます。ざっと確認してみると、空欄があったり、文字列や数値データが混在していることがわかります。また、「Package」という奇妙な列では「sacks」や 「bins」などの異なる単位の値が混在しています。このように、データはちょっとした混乱状態にあります。 - -実際のところ、MLモデルの作成にすぐに使えるような整ったデータセットをそのまま受け取ることはあまりありません。このレッスンでは、Pythonの標準ライブラリを使って生のデータセットを準備する方法を学びます。また、データを可視化するための様々なテクニックを学びます。 - -## ケーススタディ: カボチャの市場 - -ルートの`date`フォルダの中に [US-pumpkins.csv](../../data/US-pumpkins.csv) という名前の.csvファイルがあります。このファイルには、カボチャの市場に関する1757行のデータが、都市ごとにグループ分けされて入っています。これは、米国農務省が配布している [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) から抽出した生データです。 - -### データの準備 - -このデータはパブリックドメインです。米国農務省のウェブサイトから、都市ごとに個別ファイルをダウンロードすることができます。ファイルが多くなりすぎないように、すべての都市のデータを1つのスプレッドシートに連結しました。次に、データを詳しく見てみましょう。 - -### カボチャのデータ - 初期の結論 - -このデータについて何か気付いたことはありますか?文字列、数字、空白、奇妙な値が混在していて、意味を理解しなければならないこと気付いたと思います。 - -回帰を使って、このデータにどのような問いかけができますか?「ある月に販売されるカボチャの価格を予測する」というのはどうでしょうか?データをもう一度見てみると、この課題に必要なデータ構造を作るために、いくつかの変更が必要です。 - -## エクササイズ - カボチャのデータを分析 - -データを整形するのに非常に便利な [Pandas](https://pandas.pydata.org/) (Python Data Analysisの略) を使って、このカボチャのデータを分析したり整えてみましょう。 - -### 最初に、日付が欠損していないか確認する - -日付が欠損していないか確認するために、いくつかのステップがあります: - -1. 日付を月の形式に変換する(これは米国の日付なので、形式は `MM/DD/YYYY` となる)。 -2. 新しい列として月を抽出する。 - -Visual Studio Codeで _notebook.ipynb_ ファイルを開き、スプレッドシートを Pandas DataFrame としてインポートします。 - -1. `head()` 関数を使って最初の5行を確認します。 - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ 最後の5行を表示するには、どのような関数を使用しますか? - - -2. 現在のデータフレームに欠損データがあるかどうかをチェックします。 - - ```python - pumpkins.isnull().sum() - ``` - - 欠損データがありましたが、今回のタスクには影響がなさそうです。 - - -3. データフレームを扱いやすくするために、`drop()` 関数を使っていくつかの列を削除し、必要な列だけを残すようにします。 - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### 次に、カボチャの平均価格を決定します。 - -ある月のかぼちゃの平均価格を決定する方法を考えてみましょう。このタスクのために、どの列が必要ですか?ヒント:3つの列が必要になります。 - -解決策:「最低価格」と「最高価格」の平均値を取って新しい「price」列を作成し、「日付」列を月のみ表示するように変換します。幸いなことに、上記で確認した結果によると日付や価格に欠損データはありませんでした。 - -1. 平均値を算出するために、以下のコードを追加します。 - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ `print(month)` などを使って自由にデータを確認してみてください。 - - -2. 変換したデータをPandasの新しいデータフレームにコピーします。 - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - データフレームを出力すると、新しい回帰モデルを構築するための綺麗に整頓されたデータセットが表示されます。 - -### でも、待ってください!なにかおかしいです。 - -`Package` 列をみると、カボチャは様々な形で販売されています。「1 1/9ブッシェル」で売られているもの、「1/2ブッシェル」で売られているもの、かぼちゃ1個単位で売られているもの、1ポンド単位で売られているもの、幅の違う大きな箱で売られているものなど様々です。 - - -> かぼちゃの重さを一定にするのはとても難しいようです。 - -元のデータを調べてみると、「Unit of Sale」が「EACH」または「PER BIN」となっているものは、「Package」が「per inch」、「per bin」、「each」となっているのが興味深いです。カボチャの計量単位に一貫性を持たせるのが非常に難しいようなので、`Package`列に「bushel」という文字列を持つカボチャだけを選択してフィルタリングしてみましょう。 - -1. ファイルの一番上にフィルタを追加します。 - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - 今、データを出力してみると、ブッシェル単位のカボチャを含む415行ほどのデータしか得られていないことがわかります。 - -### でも、待ってください!もうひとつ、やるべきことがあります。 - -行ごとにブッシェルの量が異なることに気付きましたか?1ブッシェルあたりの価格を表示するためには、計算して価格を標準化する必要があります。 - -1. new_pumpkinsデータフレームを作成するブロックの後に以下の行を追加します。 - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) によると、ブッシェルの重さは体積を測るものなので、農産物の種類によって異なります。例えば、トマトの1ブッシェルは、56ポンドの重さになるとされています。葉っぱや野菜は重量が少なくてもスペースを取るので、ほうれん草の1ブッシェルはたったの20ポンドです。なんだか複雑ですね!ブッシェルからポンドへの換算は面倒なのでやめて、ブッシェル単位で価格を決めましょう。しかし、カボチャのブッシェルについての議論は、データの性質を理解することがいかに重要であるかを示しています。 - -これで、ブッシェルの測定値に基づいて、ユニットごとの価格を分析することができます。もう1度データを出力してみると、標準化されていることがわかります。 - -✅ ハーフブッシェルで売られているカボチャがとても高価なことに気付きましたか?なぜだかわかりますか?小さなカボチャは大きなカボチャよりもはるかに高価です。おそらく大きなカボチャ中身には、体積あたりで考えると空洞な部分が多く含まれると考えられます。 - -## 可視化戦略 - -データサイエンティストの役割の一つは、扱うデータの質や性質を示すことです。そのために、データのさまざまな側面を示す興味深いビジュアライゼーション(プロット、グラフ、チャート)を作成することがよくあります。そうすることで、他の方法では発見しにくい関係性やギャップを視覚的に示すことができます。 - -また、可視化することでデータに適した機械学習の手法を判断することができます。例えば、散布図が直線に沿っているように見える場合は、適用する手法の候補の一つとして線形回帰が考えられます。 - -Jupyter notebookでうまく利用できるテータ可視化ライブラリの一つに [Matplotlib](https://matplotlib.org/) があります (前のレッスンでも紹介しています)。 - -> [こちらのチュートリアル](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) でデータの可視化ついてより深く体験することができます。 - -## エクササイズ - Matplotlibの実験 - -先ほど作成したデータフレームを表示するために、いくつか基本的なプロットを作成してみてください。折れ線グラフから何が読み取れるでしょうか? - -1. ファイルの先頭、Pandasのインポートの下で Matplotlibをインポートします。 - - ```python - import matplotlib.pyplot as plt - ``` - -1. ノートブック全体を再実行してリフレッシュします。 -2. ノートブックの下部に、データをプロットするためのセルを追加します。 - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![価格と月の関係を示す散布図](../images/scatterplot.png) - - これは役に立つプロットですか?なにか驚いたことはありますか? - - これはデータをある月について、データの広がりとして表示しているだけなので、特に役に立つものではありません。 - -### 活用できるようにする - -グラフに有用なデータを表示するには、通常、データを何らかの方法でグループ化する必要があります。ここでは、X軸を月として、データの分布を示すようなプロットを作ってみましょう。 - -1. セルを追加してグループ化された棒グラフを作成します。 - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![値段と月の関係を表した棒グラフ](../images/barchart.png) - - このプロットの方が、より有用なデータを可視化しています!カボチャの価格が最も高くなるのは、9月と10月であることを示しているようです。このプロットはあなたの期待に応えるものですか?どのような点で期待通りですか?また、どのような点で期待に答えられていませんか? - ---- - -## 🚀チャレンジ - -Matplotlibが提供する様々なタイプのビジュアライゼーションを探ってみましょう。回帰の問題にはどのタイプが最も適しているでしょうか? - -## [講義後クイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12?loc=ja) - -## レビュー & 自主学習 - -データを可視化するための様々な方法を見てみましょう。様々なライブラリをリストアップし、例えば2Dビジュアライゼーションと3Dビジュアライゼーションのように、特定のタイプのタスクに最適なものをメモします。どのような発見がありましたか? - -## 課題 - -[ビジュアライゼーションの探求](./assignment.ja.md) diff --git a/2-Regression/2-Data/translations/README.ko.md b/2-Regression/2-Data/translations/README.ko.md deleted file mode 100644 index 2d5a2d71..00000000 --- a/2-Regression/2-Data/translations/README.ko.md +++ /dev/null @@ -1,202 +0,0 @@ -# Scikit-learn 사용한 regression 모델 만들기: 데이터 준비와 시각화 - -> ![Data visualization infographic](.././images/data-visualization.png) - -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/) - -## 소개 - -이제 Scikit-learn으로 머신러닝 모델을 만들기 시작할 때 필요한 도구를 세팅했으므로, 데이터에 대한 질문을 할 준비가 되었습니다. 데이터로 작업하고 ML 솔루션을 적용하려면, 데이터셋의 잠재력을 잘 분석하기 위하여 올바른 질문 방식을 이해하는 것이 매우 중요합니다. - -이 강의에서, 다음을 배웁니다: - -- 모델-제작 위한 데이터 준비하는 방식. -- 데이터 시각화 위한 Matplotlib 사용하는 방식. - -## 데이터에 올바른 질문하기 - -답변이 필요한 질문에 따라서 활용할 ML 알고리즘의 타입이 결정됩니다. 그리고 받는 답변의 퀄리티는 데이터의 성격에 크게 의존됩니다. - -이 강의에서 제공되는 [data](../data/US-pumpkins.csv)를 보세요. VS Code에서 .csv 파일을 열 수 있습니다. 빠르게 흝어보면 공백과 문자열과 숫자 데이터가 섞여진 것을 보여줍니다. 'Package'라고 불리는 이상한 열에 'sacks', 'bins'과 다른 값 사이에 섞인 데이터가 있습니다. 사실은, 조금 엉성합니다. - -실제로, ML 모델을 바로 꺼내 만들면서 완벽하게 사용할 준비가 된 데이터셋을 주는 건 매우 평범하지 않습니다. 이 강의에서는, 표준 Python 라이브러리로 원본 데이터셋을 준비하는 과정을 배우게 됩니다. 데이터 시각화하는 다양한 기술을 배웁니다. - -## 케이스 스터디: 'the pumpkin market' - -이 폴더에서는 호박 시장에 대한 데이터 1757 라인이 도시별로 분류된 [US-pumpkins.csv](../../data/US-pumpkins.csv) 라고 불리는 최상위 `data` 폴더에서 .csv 파일을 찾을 수 있습니다. United States Department of Agriculture가 배포한 [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)에서 원본 데이터를 추출했습니다. - -### 데이터 준비하기 - -이 데이터는 공개 도메인에 존재합니다. USDA 웹사이트에서, 도시별로, 많은 여러개 파일을 내려받을 수 있습니다. 너무 많이 분리된 파일들을 피하기 위해서, 모든 도시 데이터를 한 개의 스프레드 시트에 연결했으므로, 미리 데이터를 조금 _준비_ 했습니다. 다음으로, 데이터를 가까이 봅니다. - -### 호박 데이터 - 이른 결론 - -데이터에서 어떤 것을 눈치챘나요? 이해할 문자열, 숫자, 공백과 이상한 값이 섞여있다는 것을 이미 봤습니다. - -Regression 기술을 사용해서, 데이터에 물어볼 수 있는 질문인가요? "Predict the price of a pumpkin for sale during a given month"는 어떤가요. 데이터를 다시보면, 작업에 필요한 데이터 구조를 만들기 위하여 조금 바꿀 점이 있습니다. - -## 연습 - 호박 데이터 분석하기 - -호박 데이터를 분석하고 준비하며, 데이터를 구성할 때 매우 유용한 도구인, [Pandas](https://pandas.pydata.org/) (`Python Data Analysis`의 약자)를 사용해봅시다. - -### 먼저, 누락된 날짜를 확인합니다. - -먼저 누락된 데이터들을 확인하는 단계가 필요합니다: - -1. 날짜를 월 포맷으로 변환합니다 (US 날짜라서 `MM/DD/YYYY` 포맷). -2. month를 새로운 열로 추출합니다. - -visual Studio Code에서 _notebook.ipynb_ 파일을 열고 새로운 Pandas 데아터프레임에 spreadsheet를 가져옵니다. - -1. 처음 5개 행을 보기 위하여 `head()` 함수를 사용합니다. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ 마지막 5개 행을 보려면 어떤 함수를 사용하나요? - -1. 지금 데이터프레임에 누락된 데이터가 있다면 확인합니다: - - ```python - pumpkins.isnull().sum() - ``` - - 누락된 데이터이지만, 당장 앞에 있는 작업에는 중요하지 않을 수 있습니다. - -1. 데이터프레임 작업을 더 쉽게 하려면, `drop()`으로, 여러 열을 지우고, 필요한 행만 둡니다. - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### 두번째로, 호박의 평균 가격을 결정합니다. - -주어진 달에 호박의 평균 가격을 결정하는 방식에 대하여 생각합니다. 이 작업을 하기 위하여 어떤 열을 선택할까요? 힌트: 3개의 열이 필요합니다. - -솔루션: `Low Price`와 `High Price` 열의 평균으로 새로운 가격 열을 채우고, 이 달만 보여주기 위해 날짜 열을 변환합니다. 다행히, 확인해보니, 누락된 날짜나 가격 데이터가 없습니다. - -1. 평균을 계산하려면, 해당 코드를 추가합니다: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ `print(month)`로 확인하려는 데이터를 마음껏 출력해보세요. - -2. 이제, 새로 만든 Pandas 데이터프레임으로 변환한 데이터를 복사해보세요: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - 데이터프레임을 출력해보면 새로운 regression 모델을 만들 수 있는 깨끗하고, 단정한 데이터셋이 보여집니다. - -### 하지만 기다려주세요! 여기 무언가 있습니다 - -`Package` 열을 보면, 호박이 많이 다양한 구성으로 팔린 것을 볼 수 있습니다. 일부는 '1 1/9 bushel' 단위로 팔고, '1/2 bushel' 단위로 팔고, 호박 단위, 파운드 단위, 그리고 다양한 넓이의 큰 박스에도 넣어서 팔고 있습니다. - -> 호박은 일정한 무게로 이루어지기 꽤 어려운 것 같습니다. - -원본 데이터를 파다보면, 모든 항목에 인치, 박스 당, 또는 'each'로 이루어져서 `Unit of Sale`이 'EACH' 또는 'PER BIN'이라는 사실은 흥미롭습니다. 호박은 일정하게 무게를 달기가 매우 어려워서, `Package` 열에 'bushel' 문자열이 있는 호박만 선택해서 필터링하겟습니다. - -1. 파일 상단, 처음 .csv import 하단에 필터를 추가합니다: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - 지금 데이터를 출력해보면, bushel 호박 포함한 대략 415개의 행만 가져올 수 있습니다. - -### 하지만 기다려주세요! 하나 더 있습니다 - -bushel 수량이 행마다 다른 것을 알았나요? bushel 단위로 가격을 보여줄 수 있도록 가격을 노말라이즈해야 되므로, 수학으로 일반화해야 합니다. - -1. new_pumpkins 데이터프레임을 만드는 블록 뒤에 이 라인들을 추가합니다: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)에 따르면, bushel의 무게는 볼륨 측정이므로, 농산물 타입에 따릅니다. "A bushel of tomatoes, for example, is supposed to weigh 56 pounds... Leaves and greens take up more space with less weight, so a bushel of spinach is only 20 pounds." 모든 게 정말 복잡합니다! bushel에서 파운드로 변환하면서 신경쓰지 말고, bushel로 가격을 정합니다. 호박 bushels의 모든 연구는, 데이터의 특성을 이해하는 게 매우 중요하다는 것을 보여줍니다. - -지금, bushel 측정을 기반으로 가격을 분석하는 게 가능해졌습니다. 만약 한 번 데이터를 출력하면, 표준화된 상태로 볼 수 있습니다. - -✅ half-bushel로 파는 게 매우 비싸다는 사실을 파악했나요? 왜 그런 지 알 수 있나요? 힌트: 작은 호박은 큰 호박보다 비쌉니다, 큰 hollow 파이 호박 하나가 차지하는 빈 공간을 생각해보면, bushel 당 더 많습니다. - -## 시각화 전략 - -데이터 사이언티스트 룰의 일부는 작업하고 있는 데이터의 품질과 특성을 증명하는 것입니다. 데이터의 다양한 측면을 보여주는, 흥미로운 시각화, 또는 plots, 그래프 그리고 차트를 만드는 경우가 자주 있습니다. 이렇게, 다른 방식으로 밝히기 힘든 관계와 간격을 시각적으로 표현할 수 있습니다. - -시각화는 데이터에 가장 적합한 머신러닝 기술의 결정을 돕습니다. 라인을 따라가는 것처럼 보이는 scatterplot을(산점도) 예시로, 데이터가 linear regression 연습에 좋은 후보군이라는 것을 나타냅니다. - -Jupyter notebooks에서 잘 작동하는 데이터 시각화 라이브러리는 (이전 강의에서 보았던) [Matplotlib](https://matplotlib.org/)입니다. - -> [these tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)에서 데이터 시각화 연습을 더 해보세요. - -## 연습 - Matplotlib으로 실험하기 - -직전에 만든 새로운 데이터프레임을 출력하려면 기초 plot을 만듭시다. 기초 라인 plot은 어떻게 보여주나요? - -1. 파일의 상단에, Pandas import 밑에서 Matplotlib을 Import 합니다: - - ```python - import matplotlib.pyplot as plt - ``` - -1. 전체 노트북을 다시 실행해서 새로 고칩니다. -1. 노트북의 하단에, 데이터를 박스로 plot할 셀을 추가합니다: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![A scatterplot showing price to month relationship](.././images/scatterplot.png) - - 쓸모있는 plot인가요? 어떤 것에 놀랬나요? - - 주어진 달에 대하여 점의 발산은 데이터에 보여질 뿐이므로 특별히 유용하지 않습니다. - -### 유용하게 만들기 - -차트에서 유용한 데이터를 보여지게 하려면, 데이터를 어떻게든지 그룹으로 묶어야 합니다. y축이 달을 나타내면서 데이터의 분포를 나타내는 데이터로 plot을 만들어 보겠습니다. - -1. 그룹화된 바 차트를 만들기 위한 셀을 추가합니다: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![A bar chart showing price to month relationship](.././images/barchart.png) - - 조금 더 유용한 데이터 시각화힙니다! 호박 가격이 가장 높았을 때는 9월과 10월로 보여집니다. 기대하던 목표에 부합하나요? 왜 그렇게 생각하나요? - ---- - -## 🚀 도전 - -Matplotlib에서 제공하는 다양한 시각화 타입을 찾아보세요. regression 문제에 가장 적당한 타입은 무엇인가요? - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/) - -## 검토 & 자기주도 학습 - -데이터 시각화하는 많은 방식을 찾아보세요. 사용할 수 있는 다양한 라이브러리 목록을 만들고 2D visualizations vs. 3D visualizations 예시처럼, 주어진 작업의 타입에 적당한 라이브러리를 확인합니다. 어떤 것을 찾았나요? - -## 과제 - -[Exploring visualization](../assignment.md) diff --git a/2-Regression/2-Data/translations/README.pt-br.md b/2-Regression/2-Data/translations/README.pt-br.md deleted file mode 100644 index 9215bf59..00000000 --- a/2-Regression/2-Data/translations/README.pt-br.md +++ /dev/null @@ -1,208 +0,0 @@ -# Construindo um modelo de regressão usando Scikit-learn: preparar e visualizar dados - -![Infográfico de visualização de dados](../images/data-visualization.png) - -Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Questionário inicial](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11?loc=ptbr) - -> ### [Esta liçao está disponível em R!](../solution/R/lesson_2-R.ipynb) - -## Introdução - -Agora que você configurou as ferramentas que precisa para começar a construir modelos de _machine learning_ com o Scikit-learn, vamos fazer perguntas sobre seus dados. Conforme você trabalha com dados e aplica soluções de ML, é muito importante entender como fazer a pergunta certa para obter o melhor de seu conjunto de dados. - -Nesta lição, você irá aprender a: - -- Como preparar os dados para a construção do modelo. -- Como usar matplotlib para visualização de dados. - -[![Preparando e visualizando os dados (vídeo em inglês)](https://img.youtube.com/vi/11AnOn_OAcE/0.jpg)](https://youtu.be/11AnOn_OAcE "Preparando e Visualizando dados - Clique para assistir!") -> 🎥 Clique na imagem acima para assistir a um vídeo sobre os principais aspectos desta lição (vídeo em inglês). - - -## Fazendo a pergunta correta a seus dados - -A pergunta que você precisa responder determinará que tipo de algoritmos de ML você usará. E a qualidade da resposta que você receber dependerá muito da natureza dos seus dados. - -Dê uma olhada [nesses dados](../../data/US-pumpkins.csv). Você pode abrir este arquivo .csv no VS Code. Uma rápida leitura mostra imediatamente que existem espaços em branco e uma mistura de strings e dados numéricos. Há também uma coluna estranha chamada `Package` onde os dados são uma mistura entre 'sacks' (sacos), 'bins' (caixas) e outros valores. Esses dados estão uma bagunça. - -A verdade é que raramente somos apresentados a um conjunto de dados que pode ser usado diretamente para criar um modelo de ML. Nesta lição, você aprenderá como preparar um conjunto de dados "bruto" usando bibliotecas Python. Você também aprenderá várias técnicas para visualizar os dados. - -## Caso de estudo: 'o mercado de abóboras' - -Na pasta `data`, na raiz do projeto, você encontrará um arquivo .csv chamado [US-pumpkins.csv](../../data/US-pumpkins.csv) que inclui 1757 linhas de dados sobre o mercado de abóboras, classificados em agrupamentos por cidade. Estes são dados brutos extraídos dos [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) (Relatórios Padrão de Mercados Terminais para Cultivos Especiais) distribuído pelo Departamento de Agricultura dos Estados Unidos. - -### Preparando os dados - -Esses dados são abertos ao público. Podem ser baixados em arquivos separados, por cidade, no site do USDA. Para evitar muitos arquivos separados, concatenamos todos os dados da cidade em uma planilha, feito isso, já _preparamos_ os dados um pouco. Agora vamos examinar mais de perto os dados. - -### Dados das abóboras - conclusões inciais - -O que você acha desses dados? Você já viu que existe uma mistura de strings, números, espaços em branco e valores estranhos? - -Que pergunta você pode fazer sobre esses dados, usando uma técnica de regressão? Que tal "Como prever o preço de uma abóbora à venda durante um determinado mês"?. Olhando novamente para os dados, existem algumas mudanças que você precisa fazer para criar a estrutura de dados necessária para a tarefa. - -## Exercício - Análise dos dados das abóboras - -Vamos usar o [Pandas](https://pandas.pydata.org/), (que significa `Python Data Analysis`) uma ferramenta útil para moldar, analizar e preparar dados. - -### Primeiro, procuramos datas faltantes - -Você precisará seguir alguns passos para procurar por datas faltantes: - -1. Converta as datas para um formato mensal (as datas estão no formato dos EUA, ou seja, `MM/DD/AAAA`). -2. Transforme o mês numa nova coluna. - -Abra o arquivo _notebook.ipynb_ no Visual Studio Code e importe a planilha no formato de um _dataframe_ Pandas. - -1. Use a função `head()` para visualizar as cinco primeiras linhas. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ Qual função você usaria para visualizar as últimas cinco linhas? - -1. Veja se existe datas faltantes no _dataframe_ atual: - - ```python - pumpkins.isnull().sum() - ``` - - Alguns dados estão faltando, mas talvez não sejam necessários para esta tarefa. - -1. Para tornar seu _dataframe_ mais fácil de usar, remova algumas das colunas usando a função `drop()`, mantendo apenas as colunas que você precisa: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### Segundo, calcule o preço médio das abóboras - -Pense em como determinar o preço médio de uma abóbora em um determinado mês. Quais colunas você escolheria para esta tarefa? Dica: você precisará de 3 colunas. - -Solução: pegue a média das colunas `Low Price` (Preço baixo) e `High Price` (Preço alto) para preencher a nova coluna `Price` (Preço) e converta a coluna `Date` (Data) para mostrar apenas o mês. Felizmente, de acordo com a verificação acima, não faltam dados de datas ou preços. - -1. Pra calcular a média, adicione o seguinte código: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ Sinta-se a vontade para imprimir qualquer dado usando `print(nome da variável aqui)`. - -2. Agora, copie sua data convertida em um _dataframe_ Pandas novinho em folha: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - Ao imprimir seu _dataframe_, você verá um conjunto de dados limpo e organizado para criar seu modelo de regressão. - -### Mas espere! Parece que tem algo estranho 🤔 - -Se você olhar a coluna `Package` (Pacote), as abóboras são vendidas em muitas configurações diferentes. Algumas são vendidas em medidas de '1 1/9 bushel' (bushel é uma unidade de medida, equivalente à "alqueire"), e algumas de '1/2 bushel', algumas por abóbora, algumas por libra (unidade de medida) e algumas em grandes caixas de larguras variadas. - -> Parece que é difícil pesar a abóbora de uma forma consistente. - -Analisando os dados originais, é interessante observar que qualquer coisa com `Unit of Sale` (Unidade de Venda) igual a 'EACH' ou 'PER BIN' também tem o tipo `Package` com "per inch" (por polegada), "per bin" (por caixa) ou "each" (ambos). Como as abóboras são difíceis de pesar de forma consistente, vamos filtrá-las selecionando apenas as abóboras com a string "bushel" em sua coluna `Package`. - -1. Adicione um filtro na parte superior do arquivo, abaixo da importação inicial do .csv: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - Se você imprimir os dados agora, verá que retorna cerca de 415 contendo dados de abóboras por bushel. - -### Opa! Mais uma coisa... - -Você notou que a quantidade de bushel varia por linha? Você precisa normalizar o preço para mostrar o preço por bushel. - -1. Adicione essas linhas após o bloco criando o _dataframe_ `new_pumpkins`: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ De acordo com [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso por bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras (25,4 kg).. Folhas e verduras ocupam mais espaço com menos peso, então um bushel de espinafre pesa apenas 20 libras (9,1 kg)." (fala traduzida). É muito complicado! Não vamos nos preocupar em fazer uma conversão de bushel para libra e, em vez disso, definir o preço por bushel. Perceba que todo esse estudo de bushels de abóboras mostra como é muito importante entender a natureza de seus dados! - -Você pode analisar o preço por unidade com base na medição do bushel. Se você imprimir os dados mais uma vez, verá como eles estão padronizados. - -✅ Você notou que as abóboras vendidas a meio bushel são muito caras? Você pode descobrir por quê? Dica: as abóboras pequenas são muito mais caras do que as grandes, provavelmente porque há muito mais delas por bushel, especialmente considerando que uma abóbora grande tem uma grande cavidade vazia. - -## Estratégias de visualização - -Parte da função do _data scientist_ é demonstrar a qualidade e a natureza dos dados com os quais está trabalhando. Para fazer isso, eles geralmente criam visualizações, ou plotagens, gráficos e tabelas, mostrando diferentes aspectos dos dados. Dessa forma, eles são capazes de mostrar visualmente relações e lacunas que, de outra forma, seriam difíceis de descobrir. - -As visualizações também podem ajudar a determinar a técnica de _machine learning_ mais adequada para os dados. Um gráfico de dispersão que parece seguir uma linha, por exemplo, indica que os dados são bons candidatos para um exercício de regressão linear. - -Uma biblioteca de visualização de dados que funciona bem nos blocos de _notebooks_ é a [Matplotlib](https://matplotlib.org/) (que você também viu na lição anterior). - -> Ganhe mais experiência em visualização de dados fazendo [esses tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). - -## Exercício - Experimento com Matplotlib - -Tente criar alguns gráficos básicos para exibir o novo _dataframe_ que você acabou de criar. O que um gráfico de linha básico mostraria? - -1. Importe a Matplotlib no início do arquivo, embaixo da importação do pandas: - - ```python - import matplotlib.pyplot as plt - ``` - -1. Execute o _notebook_ inteiro para atualizá-lo. -1. No final do _notebook_, adicione uma célula para plotar os dados: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![Um gráfico de dispersão mostrando a relação de preços por mês](../images/scatterplot.png) - - Esse gráfico é relevante? Alguma coisa nele te surpreende? - - O gráfico não é útil, pois tudo o que faz é exibir seus dados como uma distribuição de pontos em um determinado mês. - -### Torne o gráfico útil - -Para fazer com que os gráficos exibam dados úteis, você precisa agrupar os dados de alguma forma. Vamos tentar criar um gráfico onde o eixo "y" mostra os meses e o eixo "x" mostra a distribuição dos preços das abóboras. - -1. Adicione uma célula de código para criar um gráfico de barras: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![Um gráfico de barras mostrando a relação de preços por mês](../images/barchart.png) - - Essa visualização de dados parece ser mais útil! Parece indicar que o preço mais alto das abóboras ocorre em setembro e outubro. Isso atende às suas expectativas? Por quê ou por quê não? - ---- - -## 🚀Desafio - -Explore os diferentes tipos de visualização que o Matplotlib oferece. Quais tipos são mais adequados para problemas de regressão? - -## [Questionário para fixação](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12?loc=ptbr) - -## Revisão e Auto Aprendizagem - -Dê uma olhada nas maneiras de visualizar dados. Faça uma lista das várias bibliotecas disponíveis e observe quais são as melhores para determinados tipos de tarefas, por exemplo, visualizações 2D vs. visualizações 3D. O que você descobriu? - -## Tarefa - -[Explorando visualização](assignment.pt-br.md). diff --git a/2-Regression/2-Data/translations/README.pt.md b/2-Regression/2-Data/translations/README.pt.md deleted file mode 100644 index 4ede28b0..00000000 --- a/2-Regression/2-Data/translations/README.pt.md +++ /dev/null @@ -1,207 +0,0 @@ -# Crie um modelo de regressão usando o Scikit-learn: preparar e visualizar dados - -![Infográfico de visualização de dados](../images/data-visualization.png) - -Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Teste de pré-aula](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/) - -> ### [Esta lição está disponível em R!](./solution/R/lesson_2-R.ipynb) - -## Introdução - -Agora que você está configurado com as ferramentas necessárias para começar a lidar com a construção de modelos de aprendizagem automática com o Scikit-learn, você está pronto para começar a fazer perguntas sobre seus dados. Como você trabalha com dados e aplica soluções ML, é muito importante entender como fazer a pergunta certa para desbloquear adequadamente os potenciais de seu conjunto de dados. - -Nesta lição, você aprenderá: - -- Como preparar seus dados para a criação de modelos. -- Como usar Matplotlib para visualização de dados. - -[![Preparação e Visualização de Dados](https://img.youtube.com/vi/11AnOn_OAcE/0.jpg)](https://youtu.be/11AnOn_OAcE "Preparando e Visualizando vídeo de dados - Clique para Assistir!") -> 🎥 Clique na imagem acima para ver um vídeo que aborda os principais aspectos desta lição - - -## Fazendo a pergunta certa sobre seus dados - -A pergunta que você precisa responder determinará que tipo de algoritmos de ML você utilizará. E a qualidade da resposta que você recebe de volta será fortemente dependente da natureza de seus dados. - -Dê uma olhada nos [dados](../data/US-pumpkins.csv) fornecidos para esta lição. Você pode abrir este arquivo .csv no Código VS. Um skim rápido imediatamente mostra que há espaços em branco e uma mistura de strings e dados numéricos. Há também uma coluna estranha chamada 'Package' onde os dados são uma mistura entre 'sacks', 'bins' e outros valores. Os dados, de fato, são um pouco confusos. - -Na verdade, não é muito comum ser dotado de um conjunto de dados que está completamente pronto para usar para criar um modelo ML pronto para uso. Nesta lição, você aprenderá como preparar um conjunto de dados bruto usando bibliotecas Python padrão. Você também aprenderá várias técnicas para visualizar os dados. - -## Estudo de caso: "mercado da abóbora" - -Nesta pasta você encontrará um arquivo .csv na pasta raiz `data` chamada [US-pumpkins.csv](../data/US-pumpkins.csv) que inclui 1757 linhas de dados sobre o mercado de abóboras, classificadas em agrupamentos por cidade. Estes são dados brutos extraídos dos [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuídos pelo Departamento de Agricultura dos Estados Unidos. - -### Preparando dados - -Estes dados são do domínio público. Ele pode ser baixado em muitos arquivos separados, por cidade, a partir do site USDA. Para evitar muitos arquivos separados, nós concatenamos todos os dados da cidade em uma planilha, assim nós já _preparamos_ os dados um pouco. A seguir, vamos dar uma olhada nos dados. - -### Os dados da abóbora - primeiras conclusões - -O que você nota sobre esses dados? Vocês já viram que há uma mistura de strings, números, espaços em branco e valores estranhos que você precisa entender. - -Que pergunta você pode fazer sobre esses dados, usando uma técnica de Regressão? E quanto a "Prever o preço de uma abóbora à venda durante um determinado mês". Observando novamente os dados, há algumas alterações que você precisa fazer para criar a estrutura de dados necessária para a tarefa. -## Exercício - analisar os dados da abóbora - -Vamos usar [Pandas](https://pandas.pydata.org/), (o nome significa `Python Data Analysis`) uma ferramenta muito útil para moldar dados, para analisar e preparar esses dados de abóbora. - -### Primeiro, verifique se há datas ausentes - -Primeiro, você precisará seguir as etapas para verificar se há datas ausentes: - -1. Converta as datas em um formato de mês (essas são datas americanas, portanto o formato é `MM/DD/AAAA`). -2. Extraia o mês para uma nova coluna. - -Abra o arquivo _notebook.ipynb_ no Visual Studio Code e importe a planilha para um novo quadro de dados do Pandas. - -1. Use a função `head()` para exibir as cinco primeiras linhas. - - ```python - import pandas as pd - pumpkins = pd.read_csv('../data/US-pumpkins.csv') - pumpkins.head() - ``` - - Qual função você usaria para exibir as últimas cinco linhas? - -1. Verifique se há dados ausentes no banco de dados atual: - - ```python - pumpkins.isnull().sum() - ``` - - Faltam dados, mas talvez não seja importante para a tarefa em questão. - -1. Para facilitar o trabalho com seu banco de dados, solte várias de suas colunas, usando `drop()`, mantendo apenas as colunas necessárias: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### Segundo, determinar o preço médio da abóbora - -Pense sobre como determinar o preço médio de uma abóbora em um determinado mês. Que colunas você escolheria para esta tarefa? Dica: você precisará de 3 colunas. - -Solução: utilize a média das colunas `Preço Baixo` e Preço Alto` para preencher a nova coluna Preço e converta a coluna Data para mostrar apenas o mês. Felizmente, de acordo com a verificação acima, não há dados ausentes para datas ou preços. - -1. Para calcular a média, adicione o seguinte código: -2. - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅Sinta-se à vontade para imprimir quaisquer dados que você gostaria de verificar usando `print(month)`. - -3. Agora, copie seus dados convertidos em um novo dataframe Pandas: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - A impressão do seu dataframe mostrará um conjunto de dados limpo e organizado no qual você pode construir seu novo modelo de regressão. - -### Mas espere! Há algo estranho aqui - -Se você observar a coluna `Package`, as abóboras são vendidas em várias configurações diferentes. Algumas são vendidas em medidas de "1 1/9 bushel", e algumas em medidas de "1/2 bushel", algumas por abóbora, algumas por libra, e algumas em caixas grandes com larguras variadas. - -> Abóboras parecem muito difíceis de pesar consistentemente - -Analisando os dados originais, é interessante que qualquer coisa com `Unidade de Venda` igual a 'CADA' ou 'POR CAIXA' também tenha o tipo `Pacote` por polegada, por caixa ou 'cada'. As abóboras parecem ser muito difíceis de pesar consistentemente, então vamos filtrá-las selecionando apenas as abóboras com a cadeia "bushel" na coluna `Pacote`. - -1. Adicione um filtro na parte superior do arquivo, sob a importação .csv inicial: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - Se você imprimir os dados agora, você pode ver que você está apenas recebendo as 415 ou mais linhas de dados contendo abóboras pelo bushel. - -### Mas espere! Há mais uma coisa a fazer - -Você notou que o montante de bushel varia por linha? Você precisa normalizar o preço para que você mostre o preço por bushel, então faça algumas contas para padronizá-lo. - -1. Adicione estas linhas após o bloco criar o dataframe new_pumpkins: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ De acordo com [O Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso de um bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras... Folhas e verdes ocupam mais espaço com menos peso, então um alqueire de espinafre pesa apenas 20 libras." É tudo muito complicado! Não nos preocupemos em fazer uma conversão bushel-to-pound, e em vez disso o preço pelo bushel. Todo este estudo de bushels de abóboras, no entanto, vai para mostrar como é muito importante entender a natureza dos seus dados! - -Agora, você pode analisar o preço por unidade com base em sua medição de bushel. Se você imprimir os dados mais uma vez, poderá ver como eles são padronizados. - -Você notou que as abóboras vendidas pela metade do bushel são muito caras? Você pode descobrir por quê? Dica: abóboras pequenas são muito mais caras do que as grandes, provavelmente porque há muito mais delas por bushel, dado o espaço não utilizado tomado por uma grande abóbora de torta oca. - -## Estratégias de visualização - -Parte do papel do cientista de dados é demonstrar a qualidade e a natureza dos dados com os quais eles estão trabalhando. Para fazer isso, muitas vezes criam visualizações interessantes, ou gráficos, gráficos e gráficos, mostrando diferentes aspectos dos dados. Dessa forma, eles são capazes de mostrar visualmente relacionamentos e lacunas que de outra forma são difíceis de descobrir. - -Visualizações também podem ajudar a determinar a técnica de aprendizado de máquina mais apropriada para os dados. Um gráfico de dispersão que parece seguir uma linha, por exemplo, indica que os dados são um bom candidato para um exercício de regressão linear. - -Uma biblioteca de visualização de dados que funciona bem em notebooks Jupyter é [Matplotlib](https://matplotlib.org/) (que você também viu na lição anterior). - -> Obtenha mais experiência com visualização de dados em [estes tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=university-15963-cxa). - -## Exercício - experimente com Matplotlib - -Tente criar alguns gráficos básicos para exibir o novo banco de dados que você acabou de criar. O que um gráfico de linha básica mostraria? - -1. Importar Matplotlib no topo do arquivo, sob a importação Pandas: - - ```python - import matplotlib.pyplot as plt - ``` - -1. Execute novamente todo o bloco de anotações para atualizar. -1. Na parte inferior do notebook, adicione uma célula para plotar os dados como uma caixa: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![Uma distribuição que mostra a relação preço/mês](../images/scatterplot.png) - -Será isto um enredo útil? Alguma coisa sobre isso o surpreende? - -Não é particularmente útil, uma vez que tudo o que apresenta nos seus dados como uma distribuição de pontos num determinado mês. - -### Tornar útil - -Para que os gráficos apresentem dados úteis, normalmente é necessário agrupar os dados de alguma forma. Vamos tentar criar um desenho onde o eixo Y mostre os meses e os dados demonstram a distribuição de dados. - -1. Adicionar uma célula para criar um gráfico de barras agrupado: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - -![Um gráfico de barras que mostra a relação preço/mês](../images/barchart.png) - -Esta é uma visualização de dados mais útil! Parece indicar que o preço mais alto para as abrigas ocorre em setembro e outubro. Isso atende às suas expetativas? Porque ou porque não? - -— - -## 🚀 desafio - -Explore os diferentes tipos de visualização que o Matplotlib oferece. Que tipos são mais apropriados para problemas de regressão? - -## [Questionário pós-palestra](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/) - -## Revisão e Estudo Automático - -Dê uma vista de olhos às muitas formas de visualizar dados. Disponibilize uma lista das várias bibliotecas e anote quais as melhores para determinados tipos de tarefas, por exemplo, visualizações 2D vs. visualizações 3D. O que você descobre? - -## Atribuição - -[A explorar visualização](assignment.md) diff --git a/2-Regression/2-Data/translations/README.zh-cn.md b/2-Regression/2-Data/translations/README.zh-cn.md index 215f7411..fc3f2688 100644 --- a/2-Regression/2-Data/translations/README.zh-cn.md +++ b/2-Regression/2-Data/translations/README.zh-cn.md @@ -60,6 +60,12 @@ ✅ 使用什么函数来查看最后五行? + ```python + pumpkins + ``` + + + 2. 检查当前 dataframe 中是否缺少数据: ```python diff --git a/2-Regression/2-Data/translations/README.zh-tw.md b/2-Regression/2-Data/translations/README.zh-tw.md deleted file mode 100644 index d9795fd2..00000000 --- a/2-Regression/2-Data/translations/README.zh-tw.md +++ /dev/null @@ -1,203 +0,0 @@ -# 使用 Scikit-learn 構建回歸模型:準備和可視化數據 - -![數據可視化信息圖](../images/data-visualization.png) -> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [課前測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/) - -## 介紹 - -既然你已經設置了開始使用 Scikit-learn 處理機器學習模型構建所需的工具,你就可以開始對數據提出問題了。當你處理數據並應用ML解決方案時,了解如何提出正確的問題以正確釋放數據集的潛力非常重要。 - -在本課中,你將學習: - -- 如何為模型構建準備數據。 -- 如何使用 Matplotlib 進行數據可視化。 - -## 對你的數據提出正確的問題 - -你提出的問題將決定你將使用哪種類型的 ML 算法。你得到的答案的質量將在很大程度上取決於你的數據的性質。 - -查看為本課程提供的[數據](../data/US-pumpkins.csv)。你可以在 VS Code 中打開這個 .csv 文件。快速瀏覽一下就會發現有空格,還有字符串和數字數據的混合。還有一個奇怪的列叫做「Package」,其中的數據是「sacks」、「bins」和其他值的混合。事實上,數據有點亂。 - -事實上,得到一個完全準備好用於創建 ML 模型的開箱即用數據集並不是很常見。在本課中,你將學習如何使用標準 Python 庫準備原始數據集。你還將學習各種技術來可視化數據。 - -## 案例研究:「南瓜市場」 - -你將在 `data` 文件夾中找到一個名為 [US-pumpkins.csv](../data/US-pumpkins.csv) 的 .csv 文件,其中包含有關南瓜市場的 1757 行數據,已按城市排序分組。這是從美國農業部分發的[特種作物終端市場標準報告](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)中提取的原始數據。 - -### 準備數據 - -這些數據屬於公共領域。它可以從美國農業部網站下載,每個城市有許多不同的文件。為了避免太多單獨的文件,我們將所有城市數據合並到一個電子表格中,因此我們已經準備了一些數據。接下來,讓我們仔細看看數據。 - -### 南瓜數據 - 早期結論 - -你對這些數據有什麽看法?你已經看到了無法理解的字符串、數字、空格和奇怪值的混合體。 - -你可以使用回歸技術對這些數據提出什麽問題?「預測給定月份內待售南瓜的價格」怎麽樣?再次查看數據,你需要進行一些更改才能創建任務所需的數據結構。 - -## 練習 - 分析南瓜數據 - -讓我們使用 [Pandas](https://pandas.pydata.org/),(「Python 數據分析」 Python Data Analysis 的意思)一個非常有用的工具,用於分析和準備南瓜數據。 - -### 首先,檢查遺漏的日期 - -你首先需要采取以下步驟來檢查缺少的日期: - -1. 將日期轉換為月份格式(這些是美國日期,因此格式為 `MM/DD/YYYY`)。 - -2. 將月份提取到新列。 - -在 Visual Studio Code 中打開 notebook.ipynb 文件,並將電子表格導入到新的 Pandas dataframe 中。 - -1. 使用 `head()` 函數查看前五行。 - - ```python - import pandas as pd - pumpkins = pd.read_csv('../../data/US-pumpkins.csv') - pumpkins.head() - ``` - - ✅ 使用什麽函數來查看最後五行? - -2. 檢查當前 dataframe 中是否缺少數據: - - ```python - pumpkins.isnull().sum() - ``` - - 有數據丟失,但可能對手頭的任務來說無關緊要。 - -3. 為了讓你的 dataframe 更容易使用,使用 `drop()` 刪除它的幾個列,只保留你需要的列: - - ```python - new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] - pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) - ``` - -### 然後,確定南瓜的平均價格 - -考慮如何確定給定月份南瓜的平均價格。你會為此任務選擇哪些列?提示:你需要 3 列。 - -解決方案:取 `Low Price` 和 `High Price` 列的平均值來填充新的 Price 列,將 Date 列轉換成只顯示月份。幸運的是,根據上面的檢查,沒有丟失日期或價格的數據。 - -1. 要計算平均值,請添加以下代碼: - - ```python - price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 - - month = pd.DatetimeIndex(pumpkins['Date']).month - - ``` - - ✅ 請隨意使用 `print(month)` 打印你想檢查的任何數據。 - -2. 現在,將轉換後的數據復製到新的 Pandas dataframe 中: - - ```python - new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) - ``` - - 打印出的 dataframe 將向你展示一個幹凈整潔的數據集,你可以在此數據集上構建新的回歸模型。 - -### 但是等等!這裏有點奇怪 - -如果你看看 `Package`(包裝)一欄,南瓜有很多不同的配置。有的以 1 1/9 蒲式耳的尺寸出售,有的以 1/2 蒲式耳的尺寸出售,有的以每只南瓜出售,有的以每磅出售,有的以不同寬度的大盒子出售。 - -> 南瓜似乎很難統一稱重方式 - -深入研究原始數據,有趣的是,任何 `Unit of Sale` 等於「EACH」或「PER BIN」的東西也具有每英寸、每箱或「每個」的 `Package` 類型。南瓜似乎很難采用統一稱重方式,因此讓我們通過僅選擇 `Package` 列中帶有字符串「蒲式耳」的南瓜來過濾它們。 - -1. 在初始 .csv 導入下添加過濾器: - - ```python - pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] - ``` - - 如果你現在打印數據,你可以看到你只獲得了 415 行左右包含按蒲式耳計算的南瓜的數據。 - -### 可是等等! 還有一件事要做 - -你是否註意到每行的蒲式耳數量不同?你需要對定價進行標準化,以便顯示每蒲式耳的定價,因此請進行一些數學計算以對其進行標準化。 - -1. 在創建 new_pumpkins dataframe 的代碼塊之後添加這些行: - - ```python - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) - - new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) - ``` - -✅ 根據 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308),蒲式耳的重量取決於產品的類型,因為它是一種體積測量。「例如,一蒲式耳西紅柿應該重56 磅……葉子和蔬菜占據更多空間,重量更輕,所以一蒲式耳菠菜只有20磅。」 這一切都相當復雜!讓我們不要費心進行蒲式耳到磅的轉換,而是按蒲式耳定價。然而,所有這些對蒲式耳南瓜的研究表明,了解數據的性質是多麽重要! - -現在,你可以根據蒲式耳測量來分析每單位的定價。如果你再打印一次數據,你可以看到它是如何標準化的。 - -✅ 你有沒有註意到半蒲式耳賣的南瓜很貴?你能弄清楚為什麽嗎?提示:小南瓜比大南瓜貴得多,這可能是因為考慮到一個大的空心餡餅南瓜占用的未使用空間,每蒲式耳的南瓜要多得多。 - -## 可視化策略 - -數據科學家的部分職責是展示他們使用的數據的質量和性質。為此,他們通常會創建有趣的可視化或繪圖、圖形和圖表,以顯示數據的不同方面。通過這種方式,他們能夠直觀地展示難以發現的關系和差距。 - -可視化還可以幫助確定最適合數據的機器學習技術。例如,似乎沿著一條線的散點圖表明該數據是線性回歸練習的良好候選者。 - -一個在 Jupyter notebooks 中運行良好的數據可視化庫是 [Matplotlib](https://matplotlib.org/)(你在上一課中也看到過)。 - -> 在[這些教程](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)中獲得更多數據可視化經驗。 - -## 練習 - 使用 Matplotlib 進行實驗 - -嘗試創建一些基本圖形來顯示你剛剛創建的新 dataframe。基本線圖會顯示什麽? - -1. 在文件頂部導入 Matplotlib: - - ```python - import matplotlib.pyplot as plt - ``` - -2. 重新刷新以運行整個 notebook。 - -3. 在 notebook 底部,添加一個單元格以繪製數據: - - ```python - price = new_pumpkins.Price - month = new_pumpkins.Month - plt.scatter(price, month) - plt.show() - ``` - - ![顯示價格與月份關系的散點圖](../images/scatterplot.png) - - 這是一個有用的圖嗎?有什麽讓你吃驚的嗎? - - 它並不是特別有用,因為它所做的只是在你的數據中顯示為給定月份的點數分布。 - -### 讓它有用 - -為了讓圖表顯示有用的數據,你通常需要以某種方式對數據進行分組。讓我們嘗試創建一個圖,其中 y 軸顯示月份,數據顯示數據的分布。 - -1. 添加單元格以創建分組柱狀圖: - - ```python - new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') - plt.ylabel("Pumpkin Price") - ``` - - ![顯示價格與月份關系的柱狀圖](../images/barchart.png) - - 這是一個更有用的數據可視化!似乎表明南瓜的最高價格出現在 9 月和 10 月。這符合你的期望嗎?為什麽?為什麽不? - ---- - -## 🚀挑戰 - -探索 Matplotlib 提供的不同類型的可視化。哪種類型最適合回歸問題? - -## [課後測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/) - -## 復習與自學 - -請看一下可視化數據的多種方法。列出各種可用的庫,並註意哪些庫最適合給定類型的任務,例如 2D 可視化與 3D 可視化。你發現了什麽? - -## 任務 - -[探索可視化](./assignment.zh-tw.md) diff --git a/2-Regression/2-Data/translations/assignment.es.md b/2-Regression/2-Data/translations/assignment.es.md deleted file mode 100644 index a00afc8c..00000000 --- a/2-Regression/2-Data/translations/assignment.es.md +++ /dev/null @@ -1,9 +0,0 @@ -# Explorando visualizaciones - -Hay varias librerías diferentes que están disponibles para la visualización de los datos. Cree algunas visualizaciones utilizando los datos de 'Pumpkin' en esta lección con _matplotlib_ y _seaborn_ en un cuaderno de muestra. ¿Con qué bibliotecas es más fácil trabajar? - -## Rúbrica - -| Criterios | Ejemplar | Adecuado | Necesita mejorar | -| -------- | --------- | -------- | ----------------- | -| | Se envía un cuaderno con dos exploraciones/visualizaciones | Se envía un cuaderno con una exploración/visualización | No se envía un cuaderno | diff --git a/2-Regression/2-Data/translations/assignment.it.md b/2-Regression/2-Data/translations/assignment.it.md deleted file mode 100644 index 14527fca..00000000 --- a/2-Regression/2-Data/translations/assignment.it.md +++ /dev/null @@ -1,9 +0,0 @@ -# Esplorazione delle visualizzazioni - -Sono disponibili diverse librerie per la visualizzazione dei dati. Creare alcune visualizzazioni utilizzando i dati della zucca in questa lezione con matplotlib e seaborn in un notebook di esempio. Con quali librerie è più facile lavorare? - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| -------- | --------- | -------- | ----------------- | -| | Viene inviato un notebook con due esplorazioni/visualizzazioni | Viene inviato un notebook con una esplorazione/visualizzazione | Non è stato inviato un notebook | diff --git a/2-Regression/2-Data/translations/assignment.ja.md b/2-Regression/2-Data/translations/assignment.ja.md deleted file mode 100644 index 09f344d6..00000000 --- a/2-Regression/2-Data/translations/assignment.ja.md +++ /dev/null @@ -1,9 +0,0 @@ -# ビジュアライゼーションの探求 - -データのビジュアライゼーションには、いくつかの異なるライブラリがあります。このレッスンのPumpkinデータを使って、matplotlibとseabornを使って、サンプルノートブックでいくつかのビジュアライゼーションを作ってみましょう。どのライブラリが作業しやすいでしょうか? - -## ルーブリック - -| 指標 | 模範的 | 適切 | 要改善 | -| -------- | --------- | -------- | ----------------- | -| | ノートブックには2つの活用法/可視化方法が示されている。 | ノートブックには1つの活用法/可視化方法が示されている。 | ノートブックが提出されていない。 | diff --git a/2-Regression/2-Data/translations/assignment.ko.md b/2-Regression/2-Data/translations/assignment.ko.md deleted file mode 100644 index 340ec4df..00000000 --- a/2-Regression/2-Data/translations/assignment.ko.md +++ /dev/null @@ -1,11 +0,0 @@ -# 시각화에 대해 알아봅시다 - -## 설명 - -데이터 시각화를 위한 다양한 라이브러리가 존재합니다. 이번 시간에는 matplotlib과 seaborn 라이브러리로 Pumpkin 데이터를 샘플 노트북(Jupyter Notebook)에 시각화해보시기 바랍니다. 둘 중 어느 라이브러리가 작업하기 더 쉽나요? - -## 평가기준표 - -| 평가기준 | 모범 | 적절 | 향상 필요 | -| -------- | ------------------------------------------------- | -------------------------------------------- | ------------ | -| | 두 가지의 다른 시각화 라이브러리를 사용한 노트북 제출 | 한 가지의 시각화 라이브러리를 사용한 노트북 제출 | 노트북 미제출 | diff --git a/2-Regression/2-Data/translations/assignment.pt-br.md b/2-Regression/2-Data/translations/assignment.pt-br.md deleted file mode 100644 index 835465c7..00000000 --- a/2-Regression/2-Data/translations/assignment.pt-br.md +++ /dev/null @@ -1,11 +0,0 @@ -# Explorando Visualizações - -## Instruções - -Existem muitas bibliotecas disponíveis para visualização de dados. Crie algumas visualizações usando o conjunto de dados sobre abóboras nesta lição usando matplotlib e seaborn em um _notebook_. Quais bibliotecas são mais fáceis de usar? - -## Critérios de avaliação - -| Critério | Exemplar | Adequado | Precisa melhorar | -| -------- | --------- | -------- | ----------------- | -| | Um _notebook_ foi submetido com duas explorações/visualizações | Um _notebook_ foi submetido com uma exploração/visualização | Nenhum _notebook_ foi submetido | diff --git a/2-Regression/2-Data/translations/assignment.pt.md b/2-Regression/2-Data/translations/assignment.pt.md deleted file mode 100644 index 27672b9e..00000000 --- a/2-Regression/2-Data/translations/assignment.pt.md +++ /dev/null @@ -1,9 +0,0 @@ -# Exploração de Visualizações - -Existem várias bibliotecas diferentes que estão disponíveis para visualização de dados. Crie algumas visualizações utilizando os dados da Abóbora nesta lição com matplotlib e nascidos num caderno de amostras. Com que bibliotecas é mais fácil de trabalhar? - -## Rubrica - - Critérios | exemplares | Adequado | Necessidades de Melhoria | -| -------- | --------- | -------- | ----------------- | -| | Um caderno é submetido com duas explorações/visualizações| Um caderno é submetido com uma exploração/visualizações | Um caderno não é submetido | diff --git a/2-Regression/2-Data/translations/assignment.zh-tw.md b/2-Regression/2-Data/translations/assignment.zh-tw.md deleted file mode 100644 index 7eb2e9a5..00000000 --- a/2-Regression/2-Data/translations/assignment.zh-tw.md +++ /dev/null @@ -1,9 +0,0 @@ -# 探索數據可視化 - -有好幾個庫都可以進行數據可視化。用 matplotlib 和 seaborn 對本課中涉及的 Pumpkin 數據集創建一些數據可視化的圖標。並思考哪個庫更容易使用? - -## 評判標準 - -| 標準 | 優秀 | 中規中矩 | 仍需努力 | -| -------- | --------- | -------- | ----------------- | -| | 提交了含有兩種探索可視化方法的 notebook 工程文件 | 提交了只包含有一種探索可視化方法的 notebook 工程文件 | 沒提交 notebook 工程文件 | diff --git a/2-Regression/2-Data/translations/data.ipynb b/2-Regression/2-Data/translations/data.ipynb new file mode 100644 index 00000000..87ed0f90 --- /dev/null +++ b/2-Regression/2-Data/translations/data.ipynb @@ -0,0 +1,1041 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 21, + "id": "d907e945", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "pumpkins = pd.read_csv(\"D:/Applications/Obsidian/ML-For-Beginners/2-Regression/data/US-pumpkins.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "05ecc6bf", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.microsoft.datawrangler.viewer.v0+json": { + "columns": [ + { + "name": "index", + "rawType": "int64", + "type": "integer" + }, + { + "name": "City Name", + "rawType": "object", + "type": "string" + }, + { + "name": "Type", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Package", + "rawType": "object", + "type": "string" + }, + { + "name": "Variety", + "rawType": "object", + "type": "string" + }, + { + "name": "Sub Variety", + "rawType": "object", + "type": "string" + }, + { + "name": "Grade", + "rawType": "float64", + "type": "float" + }, + { + "name": "Date", + "rawType": "object", + "type": "string" + }, + { + "name": "Low Price", + "rawType": "float64", + "type": "float" + }, + { + "name": "High Price", + "rawType": "float64", + "type": "float" + }, + { + "name": "Mostly Low", + "rawType": "float64", + "type": "float" + }, + { + "name": "Mostly High", + "rawType": "float64", + "type": "float" + }, + { + "name": "Origin", + "rawType": "object", + "type": "string" + }, + { + "name": "Origin District", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Item Size", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Color", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Environment", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unit of Sale", + "rawType": "object", + "type": "unknown" + }, + { + "name": "Quality", + "rawType": "float64", + "type": "float" + }, + { + "name": "Condition", + "rawType": "float64", + "type": "float" + }, + { + "name": "Appearance", + "rawType": "float64", + "type": "float" + }, + { + "name": "Storage", + "rawType": "float64", + "type": "float" + }, + { + "name": "Crop", + "rawType": "float64", + "type": "float" + }, + { + "name": "Repack", + "rawType": "object", + "type": "string" + }, + { + "name": "Trans Mode", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unnamed: 24", + "rawType": "float64", + "type": "float" + }, + { + "name": "Unnamed: 25", + "rawType": "object", + "type": "string" + } + ], + "ref": "9c6791cf-5dd7-4fcf-89f1-4b8d21a4c4ad", + "rows": [ + [ + "1752", + "ST. LOUIS", + null, + "22 lb cartons", + "MINIATURE", + "FLAT TYPE", + null, + "9/30/16", + "14.75", + "14.75", + null, + null, + "ILLINOIS", + null, + null, + "WHITE", + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "LOWER." + ], + [ + "1753", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/26/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "LOWER." + ], + [ + "1754", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/27/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "STEADY." + ], + [ + "1755", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/28/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "ABOUT STEADY." + ], + [ + "1756", + "ST. LOUIS", + null, + "36 inch bins", + "MINIATURE", + "ROUND TYPE", + null, + "9/29/16", + "275.0", + "275.0", + null, + null, + "MICHIGAN", + null, + "sml", + null, + null, + null, + null, + null, + null, + null, + null, + "N", + null, + null, + "MINIATURE LOWER, OTHERS STEADY." + ] + ], + "shape": { + "columns": 26, + "rows": 5 + } + }, + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
1752ST. LOUISNaN22 lb cartonsMINIATUREFLAT TYPENaN9/30/1614.7514.75NaN...NaNNaNNaNNaNNaNNaNNNaNNaNLOWER.
1753ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/26/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNLOWER.
1754ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/27/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNSTEADY.
1755ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/28/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNABOUT STEADY.
1756ST. LOUISNaN36 inch binsMINIATUREROUND TYPENaN9/29/16275.00275.00NaN...NaNNaNNaNNaNNaNNaNNNaNNaNMINIATURE LOWER, OTHERS STEADY.
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade Date \\\n", + "1752 ST. LOUIS NaN 22 lb cartons MINIATURE FLAT TYPE NaN 9/30/16 \n", + "1753 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/26/16 \n", + "1754 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/27/16 \n", + "1755 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/28/16 \n", + "1756 ST. LOUIS NaN 36 inch bins MINIATURE ROUND TYPE NaN 9/29/16 \n", + "\n", + " Low Price High Price Mostly Low ... Unit of Sale Quality Condition \\\n", + "1752 14.75 14.75 NaN ... NaN NaN NaN \n", + "1753 275.00 275.00 NaN ... NaN NaN NaN \n", + "1754 275.00 275.00 NaN ... NaN NaN NaN \n", + "1755 275.00 275.00 NaN ... NaN NaN NaN \n", + "1756 275.00 275.00 NaN ... NaN NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 \\\n", + "1752 NaN NaN NaN N NaN NaN \n", + "1753 NaN NaN NaN N NaN NaN \n", + "1754 NaN NaN NaN N NaN NaN \n", + "1755 NaN NaN NaN N NaN NaN \n", + "1756 NaN NaN NaN N NaN NaN \n", + "\n", + " Unnamed: 25 \n", + "1752 LOWER. \n", + "1753 LOWER. \n", + "1754 STEADY. \n", + "1755 ABOUT STEADY. \n", + "1756 MINIATURE LOWER, OTHERS STEADY. \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b018d392", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "City Name 0\n", + "Type 1712\n", + "Package 0\n", + "Variety 5\n", + "Sub Variety 1461\n", + "Grade 1757\n", + "Date 0\n", + "Low Price 0\n", + "High Price 0\n", + "Mostly Low 103\n", + "Mostly High 103\n", + "Origin 3\n", + "Origin District 1626\n", + "Item Size 279\n", + "Color 616\n", + "Environment 1757\n", + "Unit of Sale 1595\n", + "Quality 1757\n", + "Condition 1757\n", + "Appearance 1757\n", + "Storage 1757\n", + "Crop 1757\n", + "Repack 0\n", + "Trans Mode 1757\n", + "Unnamed: 24 1757\n", + "Unnamed: 25 1654\n", + "dtype: int64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "3acbb4d9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PackageDateLow PriceHigh Price
024 inch bins4/29/17270.00280.00
124 inch bins5/6/17270.00280.00
224 inch bins9/24/16160.00160.00
324 inch bins9/24/16160.00160.00
424 inch bins11/5/1690.00100.00
...............
175222 lb cartons9/30/1614.7514.75
175336 inch bins9/26/16275.00275.00
175436 inch bins9/27/16275.00275.00
175536 inch bins9/28/16275.00275.00
175636 inch bins9/29/16275.00275.00
\n", + "

1757 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Package Date Low Price High Price\n", + "0 24 inch bins 4/29/17 270.00 280.00\n", + "1 24 inch bins 5/6/17 270.00 280.00\n", + "2 24 inch bins 9/24/16 160.00 160.00\n", + "3 24 inch bins 9/24/16 160.00 160.00\n", + "4 24 inch bins 11/5/16 90.00 100.00\n", + "... ... ... ... ...\n", + "1752 22 lb cartons 9/30/16 14.75 14.75\n", + "1753 36 inch bins 9/26/16 275.00 275.00\n", + "1754 36 inch bins 9/27/16 275.00 275.00\n", + "1755 36 inch bins 9/28/16 275.00 275.00\n", + "1756 36 inch bins 9/29/16 275.00 275.00\n", + "\n", + "[1757 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date']\n", + "pumpkins.drop([c for c in pumpkins.columns if c not in new_columns],axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4501affe", + "metadata": {}, + "outputs": [], + "source": [ + "price = (pumpkins['High Price'] + pumpkins['Low Price'])/2\n", + "month = pd.DatetimeIndex(pumpkins['Date']).month" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "221da76a", + "metadata": {}, + "outputs": [], + "source": [ + "new_pumpkins = pd.DataFrame({'Month':month,'Package':pumpkins['Package'],'Low Price':pumpkins['Low Price'],'High Price':pumpkins['High Price'],'Price':price})" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "29a3ff79-6cfc-4a15-a781-aa12217cf1e8", + "metadata": {}, + "outputs": [], + "source": [ + "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel',case=True,regex=True)]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "59db71e4-52b9-41d8-a908-5e85181189d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...QualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25price
70BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1615.015.015.0...NaNNaNNaNNaNNaNNNaNNaNNaN15.0
71BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN9/24/1618.018.018.0...NaNNaNNaNNaNNaNNNaNNaNNaN18.0
72BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1618.018.018.0...NaNNaNNaNNaNNaNNNaNNaNNaN18.0
73BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/1/1617.017.017.0...NaNNaNNaNNaNNaNNNaNNaNNaN17.0
74BALTIMORENaN1 1/9 bushel cartonsPIE TYPENaNNaN10/8/1615.015.015.0...NaNNaNNaNNaNNaNNNaNNaNNaN15.0
\n", + "

5 rows × 27 columns

\n", + "
" + ], + "text/plain": [ + " City Name Type Package Variety Sub Variety Grade \\\n", + "70 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "71 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "72 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "73 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "74 BALTIMORE NaN 1 1/9 bushel cartons PIE TYPE NaN NaN \n", + "\n", + " Date Low Price High Price Mostly Low ... Quality Condition \\\n", + "70 9/24/16 15.0 15.0 15.0 ... NaN NaN \n", + "71 9/24/16 18.0 18.0 18.0 ... NaN NaN \n", + "72 10/1/16 18.0 18.0 18.0 ... NaN NaN \n", + "73 10/1/16 17.0 17.0 17.0 ... NaN NaN \n", + "74 10/8/16 15.0 15.0 15.0 ... NaN NaN \n", + "\n", + " Appearance Storage Crop Repack Trans Mode Unnamed: 24 Unnamed: 25 price \n", + "70 NaN NaN NaN N NaN NaN NaN 15.0 \n", + "71 NaN NaN NaN N NaN NaN NaN 18.0 \n", + "72 NaN NaN NaN N NaN NaN NaN 18.0 \n", + "73 NaN NaN NaN N NaN NaN NaN 17.0 \n", + "74 NaN NaN NaN N NaN NaN NaN 15.0 \n", + "\n", + "[5 rows x 27 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pumpkins.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "706f2874-29a3-44d3-9668-8f2472a6da8a", + "metadata": {}, + "outputs": [], + "source": [ + "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'),'Price'] = price/(1+1/9)\n", + "\n", + "price = new_pumpkins.Price\n", + "month = new_pumpkins.Month" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "0f690cf9-d1ea-4180-94f1-2ced7f79a303", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAikAAAGdCAYAAADXIOPgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA43ElEQVR4nO3de3xU9b3/+/dM7oHMQNCQxHBJa63GiAU0LVagWrGIwull76otXrbnULVi0e7do7BrgV0lemxr67aiUq9QN57fT9kHKtLSqoAVd6iBDRiLugk3TYwSnEnIPbPOH3HGXOaykqyZ+SZ5PR+PeTzImu+s9VnfWZf3rJn1xWVZliUAAADDuJNdAAAAQDiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkVKTXUBvgUBAH3zwgXJycuRyuZJdDgAAsMGyLDU0NKiwsFButzPXQIwLKR988IEmTJiQ7DIAAMAAHD16VEVFRY7My7iQkpOTI6lrJT0eT5KrAQAAdvj9fk2YMCF0HneCcSEl+BWPx+MhpAAAMMQ4+VMNfjgLAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABjJuMHcTNLc1qmfbdyrP1d9JMuyNG3iWD149TRlpaeoorpedQ0tys1K198/bNDRE02alJuta2ZMVnoq2W+g2joCWrvzkA7Xx+7P/rQdqprbOrVqc5UOHW/S5HHZWjavRFnpKTFfNxL6BsDw57Isy+rPC7Zv3677779fb775pmpqarRhwwZ985vflCS1t7frpz/9qTZv3qyDBw/K6/Xqkksu0b333qvCwkJb8/f7/fJ6vfL5fEkdcXbRM7u0taou7HNpKS61d4bvNrdLWjSzWEvnlcSzvGGpfHOV1uyoVqBb10bqz/60HaoibYNzSvK05trzI75uJPQNAPPE4/zd749WJ0+e1LnnnquHHnqoz3NNTU2qrKzUXXfdpcrKSr3wwgt65513tGDBAkeKTZRoAUVSxIAiSQFLenR7tco3V8WjtGGrfHOVHt3e88Qqhe/P/rQdqqJtg1ur6rTomV1hnxsJfQNg5Oj3lZQeL3a5elxJCWfXrl0qKyvT4cOHNXHixJjzTPaVlOa2Tp31sy2Dno/bJf3955dxid2Gto6AzrzrpT4n1u6C/SnJdtuh2vd2t8G3/21uj69++tOPQ7VvAJjLiCsp/eXz+eRyuTRmzJiwz7e2tsrv9/d4JNMqhz5pBixp7c5DjsxruFu781DUE6v0WX/2p+1QZXcb7N1uJPQNgJElriGlpaVFd955p773ve9FTFXl5eXyer2hx4QJE+JZUkyHjjc5Nq/D9c7Naziz20+H65v61XaosrsN9m43EvoGwMgSt5DS3t6uq666SoFAQA8//HDEdkuXLpXP5ws9jh49Gq+SbJk8LtuxeU3KdW5ew5ndfpqUm92vtkOV3W2wd7uR0DcARpa4hJT29nZ997vfVXV1tbZu3Rr1u6mMjAx5PJ4ej2Ra5tDdD26XdM2MyY7Ma7i7ZsZkuV3R2wT7sz9thyq722DvdiOhbwCMLI6HlGBAeffdd/XnP/9Z48aNc3oRcZWVnqI5JXmDns+imcX8ONGm9FS3Fs0sjtom2J/9aTtU2dkG55Tk9RkvZST0DYCRpd9Hq8bGRu3Zs0d79uyRJFVXV2vPnj06cuSIOjo69A//8A/629/+pt///vfq7OxUbW2tamtr1dbW5nTtcbPm2vOjniTSUiJ/XHW7pBtnMR5Ffy2dV6IbZxX3uRIQrj/703aoirYNRhsnZST0DYCRo9+3IL/66qu66KKL+ky/7rrrtGLFChUXh/8k98orr+hrX/tazPkn+xbk7hhxNvEYcbYnRpwFMFTE4/w9qHFS4sGkkAIAAOwZkuOkAAAADAQhBQAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIyUmuwCTNMZsFRRXa+j9U1a+9f3tK+2KWr7FJd0Vv4oBSyX3G63vnr6KZr1hVNVeppX//K/9ujIiWZNHJulB66cqqz0FFVU16uuoUV5OZkqK85VitsVdvnR2oTT3NapVZurdOh4kyaPy9ayeSXKSk+JuZ52l9PWEdDanYd0uL5Jk3Kzdc2MyUpP7Zlxw9WQnuqOuZzu854wNltn5ufo/U+a9MRr1fK3dMiTmaobLiyWNyVVd21+KzRt/aILdN8f39aRE806zZupsdmpeuXAx2pt79SkcVn6l2+UaPYXT+2zvO51njYmS3W+Jr3vb9PEsVn6xT9+SVU1ftU1tCjb5db/85cD+qihVaMzUnXzRZ/X507J6bEOA32/Gls6dPtzu3tsHyluV5/+S3G7tHbnIR063iTJ0pTTvPK3dCh3dIZys9K09e1aHa5v1uRx2fqXS8/U/37zqA7XN2lMdoqefeOofC0dykpz61++cYa+kOftUd9H/lZ96+HXVH+yXbmj0rThhxcqKz3FVl29ty07/RCrTfD5Wl+z6k+2KXd0hvI99vs0nOA8/+ejBv166zs62dapcaPSteGHF+pUT8aA5jlc2dnHgURzWZZlJbuI7vx+v7xer3w+nzweT0KXvWV/jVZuqlKNryUu8091u9QR+Ky7C7yZWj6/RHNLCyIuv3ebcBY9s0tbq+r6TJ9Tkqc1157fZ3p/l1O+uUprdlSrW+lyu6RFM4u1dF5J1BoyUt1q7QhEXE64eTspLcWlf796amh5kersj+A6SBrQ+7XgoR3ae8w/qBoGKljf//2/98rf0jHg+XTftuxsT7HaRNv37PRpOLH2Z09mqvau+Ea/5jlc2dnHgVjicf4mpHxqy/4a3byuUonsjOBnw9ULp0lS2OV3bxPuIB3rpNs7qERaz0jLKd9cpUe3V0ec/42zinXw45O2T/zdl7P7yImo83bSIwun6fnKY4MOKLHEer+SGVCcNqckT9+ZVhRze5Kib9s/mFWsx7ZXR933XIrcp+HY3Z8JKvb2cYIK7CCkxElnwNKF970ctyso0bgkjfdkSHKp1h9++S5J+d5MvXbHxT0ueze3deqsn22JuYy3/22ustJTYq5n7+W0dQR05l0vRb3K4Xap31dBgutc19AatysovZ06Kk0fnWxPyLIivV+NLR0qXfHHhNSQKPmeDNX6W8M+F+wHy7KitnHZ2IYi9Wk4/d2fdy27ZMR+9WN3H//7zy/jqx/EFI/zN1udpIrq+qQEFEmyJNX6WyMGlGCbGl+LKqrre0xftbnK1jKC7WKtZ+/lrN15KObJYyAhI7jOiQookhIWUKTI79ftz+1OWA2JEil8SJ/1Q6w2draDSH0aTn/35289/JrttsON3X187c5DCakH6I2QIqmuITkBpb9619n1Y8rYgu3srmew3eF6e/NHeL37+8iJ5iRVMnzY2Yb7uz/XJzDAmsbuPs6xAMlCSJGUl5OZ7BJs6V3n5HHZtl4XbGd3PYPtJuXamz/C693fE8dmJamS4cPONtzf/Tl3VNpAyxny7O7jHAuQLIQUSWXFuSrwZmpgNzkOjktd3+vneyIv36WuOxzKinN7TF9m88dswXax1rP3cq6ZMVmx7vwcyJ2hwXUe4F2lA3JqAk9Ekd6vB66cmrAaEiXfkxFze4rVxs52EKlPwwlu53Zt+OGFttsON3b38WtmTE5IPUBvhBRJKW5X6JbSRAoeG1YsOFsrFpT0mNa7zfL5JX1+MJiVnqI5JXlRlzGnJC80pkX39bSznPRUtxbNLI46/0Uzi2PWEG45KxacHXPeTvr5t87pV5129ef9Gp2ZqilFib2tPp7mlORpxYKzJUXvh1htFs0stvUBIVyfhhPczu3M05OZOmJ/NCvZ38f50SyShS3vU3NLC7R64bR+fQLrr9ReB9h8b2botsrg8vN7Lb97m3DWXHt+xJNvuHFS+rucpfNKdOOs4j6fttyuz25NjFZDRq+DW/flRJq3k9JSXHrk0+VFq7M/CryZemThND0ygPdr4+KZSQ0qwdo9mYMbxzG4bdnZnmK1WTqvJOq+VxCjT8Oxsz9z+3EXO/s4kCzcgtwLI86Gx4izjDjLiLPDGyPOYrAYJwUAABiJcVIAAMCIQUgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACMRUgAAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjERIAQAARiKkAAAAI6X29wXbt2/X/fffrzfffFM1NTXasGGDvvnNb4aetyxLK1eu1GOPPaYTJ07oy1/+sn7729/q7LPPdrLufjvycZPm/mabmtsDykpza8uS2Zp4Snafdo0tHbrtuUq9XdOgEydb1dRu2Zr/HZd9Xl8qOlW5Wem6/N+3qyPCy+6Z/0VNHj9GHze2Ki8nU2XFuUpxu/rUcPtzu3XkRLMmjs3Sivml+tH6Sn3ga1GhN1M/ueRMfe+JNxRQV8r8w+KZKs4bpVWbq3ToeJMmj8vWsnklykpPiVhvZ8BSRXW96hpaQnVI6jOtd21tHQGt3XlIh+ubNCk3W9fMmKz01MhZ19fUrhueqgjV/sT1ZfJmp/VYz+qPG9XSHtCEcdn6/CmjNees8fqkpV15OZk65zSv7tvytg4db1Jupktbqj5Wa6elFJc07bQc7TrWEFrWI9/5knLHZum7v9sZmpbulnLSXTreEvl9dEnq/WyWS2oO85I0t5Sa4tK4URna8MMLtbPqQ/3oP/eFnr/8nNFKc4/Spr0fqtPqan/H3LPU3NiuX25/L9Tu2+eO1gv/3Rj6+/TRUmtqho5+0hqatv6Gr+isIo9ueKpC73/SrI7OgCaPTVdtY6ey01M0MTdbUyeN0cGPG7Xt7x+rPWApze3S7DNPUc2HNXr9WN/6H/72uZpXViRJer++WZc9uE0nWzuVne7WlNNy9HFTQBPHZumBK6dqdGZqj/cp0vb4xPVlykpP6bNdpLhdEben3tvf9EljtePtOv380/e6u6e+d57+crCux7Ytqc/23tYRiLitrd/xP7rzxb+H5pki6UsTx+iJ68s0OjM15nZvV31jm6567HXVNbQpLydd639wgXJHpw9oXonW330b0YU7xg50uxoJdUXisizL3ln4Uy+99JL++te/atq0afrOd77TJ6Tcd999uueee/TUU0/pjDPO0N13363t27frwIEDysnJiTl/v98vr9crn88nj8fT7xUK5/RlL6oj0Hd6qlt6b9Xlob8XPLRDe4/5HVmmXQXeTC2fX6K5pQWO1zCnJE9rrj2/z/Qt+2u0clOVanwtoWljPj2Yf9LUHrG28s1VWrOjWoFuW4zbJS2aWayln544upt9/8s6fLy5z/RJ47LkzUpLeF/jM+kpLrV1Rt/1pxR17X8DeZ9cLikrLUVNbZ2hacHtSVKf7S9eJo3LCrsNdpfiljq7HR96b/d2nX/3Vn3U2NZn+qmj07Xrp3P6Na9E6+++jejCHWMHul0Npbricf7ud0jp8WKXq0dIsSxLhYWFuu2223THHXdIklpbWzV+/Hjdd999uvHGG2PO0+mVjBRQgoJBJRkBRer6FC9JqxdO08Ovvud4Db2Dypb9Nbp5XWWfKwexatt95IQe3V4dse2Ns3oezCIFFIxc4a5Ymaj7dm/3wB0poASZHFTKN1f1a99GdJGOsQPZrpyUiLriEVIcvZZXXV2t2tpaXXrppaFpGRkZmj17tl5//XUnF2XLkY+bogYUSeoISFXH/En7VB/cYO7asDcuNWytqlPzp59mOwOWVm6qsn2iCLZb/v/t15odkQ9ikrRmR7XaPu1sX1M7AQV9DIWAIn1W58pNVeoMxK66vrEtakCRpI8a21Qfo00ytHUE+rVvI7pox9j+bldOMrUuOxwNKbW1tZKk8ePH95g+fvz40HO9tba2yu/393g4Ze5vttlqd8VDOxxb5kBYkj462RG3+a/aXCWp6/cm/b3Ebkn6sKFNsbbdgCWt3XlIknTDUxUDqBIwhyWpxteiiur6mG2veszeBzC77RJp7c5D/dq3EV2sY2x/tisnmVqXHXH5VZTL1fNHOJZl9ZkWVF5eLq/XG3pMmDDBsTqa2+2l/+H+GSH4Q8S6hvj+BuBwfddyPkjAbw2ARLCzz9Q12LtCYrddIgX3WafajXR2j7HxPhYPdHmJrssOR0NKfn6+JPW5alJXV9fn6krQ0qVL5fP5Qo+jR486Vk9Wmr3VG+6/X588rusupryczLguZ1Ju13IKvfFdDpAodvaZvBx7d+/YbZdIwX3WqXYjnd1jbLyPxQNdXqLrssPR83NxcbHy8/O1devW0LS2tjZt27ZNF1xwQdjXZGRkyOPx9Hg4ZcuS2bba/WHxTMeWORAuSaeO6vfd4LYFb9ksK85VgTdT/bnZzCVpfE66Yt2h5nZJ18yYLEl64vqyAdUJmMKlrrsegrfmR7P+B+GPbQNtl0jXzJjcr30b0cU6xvZnu3KSqXXZ0e+Q0tjYqD179mjPnj2Sun4su2fPHh05ckQul0u33XabVq1apQ0bNmj//v26/vrrlZ2dre9973tO1x7TxFOyFes2/1S3VFLkCd1umWjBjebn35oSlxrmlOSFxktJcbtCt4DaCSrBNiv/j1Itmlkcte2imcWhMRW82WmaNC5roCVjmHJF+LdpgrUtn19ia/yI3NHpOjXGWCinjk43cryU9FR3v/ZtRBftGNvf7Wok1GVHv29BfvXVV3XRRRf1mX7dddfpqaeeCg3m9uijj/YYzK20tNTW/BknJTnjpIzNTpMlxkkZKRgn5TOMk8I4KU5jnBRDxkmJh3ispMSIs70x4uxnGHGWEWcZcZYRZ51m6siu8ayLkAIAAIxk/GBuAAAATiGkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACOlJruARHmvtlGXPbhN7QEpzS299KPZOj1/dJ92bR0B/W7HQa1747A+9Leo04o+3yy31B6QOj79OzvNpZJCjzo7A/q4sU2tHQF1BqQx2WlKT3HL19Kh5vYOnTIqXd+ZPkE3XPg5paf2zYqdAUtvHDyunf9zXB2dAb1T51edv01jstJ07YzJ2vZunY7UN2vyuGwtm1ciSVq1uUqHjjeFpmWlp/SrjzoDliqq61XX0KK8nEyVFecqxe2y/fr6xjZd9djrqmtoU15Outb/4AKluF264akKfeBrUaE3UyuuKNWVa15Xc3tAWWlubVkyWxNPye4zr8aWDt3+3G4dOdGsiWOz9MCVU+VratdlD27TydZOZaS69b2vFujxV9+Xpa60ff3MIn1U36JNb30sSXJJ2vjDC5XidumKh3Yo8Om8Zxalacex9tCyzj9tlI63dOr9T1rldkmjMlJ1y8Wf039sP6B3fJ/VNGOC9G59mk62dSo3O013XX62KqtP6LGd1aE2T1w1XWVnntJVe32TRmek6rvnT1BzS6tWvPhOqN2Kb5yuFX98L/T38stOV0paun7xpwNqbg/Im5mqP9w6S6d6MlRRXa9tb32oR17/bDn5WdKZp43VJ60B1fpalOp26Sun5+qs8V5dM2OyfrG5Uo+9/mGPPi0ak6kNP7xQnQFLV/z7dvlaOiTLUqEnTfnebP3XYV+PfjtnojfsdvHF8Tla9Myu0Hv6xPVl8man9Wl7yugMyZI+PtmqvJxMfWnCGD37X4d1uL5Jk3Kzdc2MyZKktTsP6XB9kyaMzdKZ+R4d/NivX/7pXbW0B+TJTNX/uvGreuL1gz22bcne9h6s538+atCvt76j4yfbZUlKcUmjMlL00o9m67TcrD6ve7++ObStRWvXW3Nb56D3w0gGun+2dQRCfRzs90jHnMHs/8kUz34fKLv9juhclmXFOA0nlt/vl9frlc/nk8fjcWSexXe+qHAr6ZJUfe/lob/LN1fp0e3VYVrG142zirX00wOvJG3ZX6M7X9inT5rao7wqtjkleVpz7fm22m7ZX6OVm6pU42sJTSvwZmr5/BLNLS2I+frz796qjxrbBlRnqlt6b9Vn78OCh3Zo7zH/gOYFZz2ycFqf7SKcSeOytPSys2y1DXJJYffLgeq9vYfbpsNJT3HpnXvmhf4+4183qy3Mp5Pe7Xpb9Mwuba2qi1nXQAx0/yzfXKU1O6oV6LY6bpe0aGbfY85g9v9kime/D5Tdfh9u4nH+HvYhJVJACQoGlWQFlKBgUNmyv0Y3rat0bL52dtQt+2t087rKPv0U/Ay1euG0qAeqwQSUoGBQIaBgMILbe6RtOpJgAIkUUHq36y3SibJ3XQMx0P0z1jGt+zFnMPt/MsWz3wfKbr8PR/EIKcP62tN7tY0xD1KWpKpjfq3ZkbyAIkmPba9Wc1unVmyscnS+W6vq1NzWGfH5zoCllZuqwvZTcNrKTVXqDITvyfrGtkEHFEnqCHS9DwQUDMbWqjo1tnRE3KYjaeu0VPFefdSAEmz3fn1zj2nNbZ1RT5TBuqLth5EMdP9s6wjEPKat2dF1zBnM/p9M8ez3gbLb720dgaht8JlhHVIue3CbrXZXPLRDyd4HLXV9x17rt3epvD9WbY4cfCqq66NeDrck1fhaVFFdH/b5qx57fbDlhVzx0A7H5oWR6/bndtv+yqm77/5up612vY8r0favgbTrbqD759qdh2Ie0wJWV02D2f+TKZ79PlB2+33tzkMJqWc4GNYhpd1mWDUl0x463pTw+dY12DuYR2pX1zD4qyhBprwPGNqOnGiO3WgQTrb2/GRud78dyP490P3zcL2zNdmtI5Hi2e8DZbff7bbDMA8paTbXzpROmDyu710u8Z5vXk6mrXlEapeXkz6gmsIx5X3A0DZxbOy7cAZjVEbPu0bs7rcD2b8Hun9OynW2Jrt1JFI8+32g7Pa73XYY5ueFl34021a7PyyeqWTfaeeStGxeifI9zh8MlkX5kVZZca4KvJmKtPoudf3Kv6w4N+zz639wweAL/NQfFs90bF4YuR64cqoKvP3fj/7f/2uGrXa9jyvR9q+BtOtuoPvnNTMmxzymuV1dNQ1m/0+mePb7QNnt9+Dt94htWIeU0/NHR9z5glySSoo8WjSzOBElRfSDWcXKSk/RigXO7lBzSvKijheQ4nZp+fyuZfbuq+Dfy+eXRBwvIXd0uk4dPfirKanurvdhSpEzvwiHc/qT35M9qsackjyNzkzV8vkl/aolPcWlstNzlZ4S/VXpKa4+46VkpadoTklezLoGMm7HQPfP9FR3zGPaopldx5zB7P/JFM9+Hyi7/c54KfYN+56qvvfyqJ8SguOkLJ1XohtnJSeodL8lbW5pgR5ZOE1jPh0cazDs3n43t7RAqxdOU36vT5/53kxbtx/u+umcQQWV7uOkbFw8k6BikEfCbBfhTBqXZbttkNOnve7be3CbtnNFpfttxe/cMy9iUIk2Tsqaa8+PeMIc7G2wA90/g8e03vnC7ep7zBnM/p9M8ez3gbLb77Bn2I+TEsSIs7Ex4iwjznbvN0acZcRZE6+ghMOIs2ZgMDcAAGAkBnMDAAAjBiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACMRUgAAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjJTq9Aw7Ojq0YsUK/f73v1dtba0KCgp0/fXX66c//anc7uRloraOgNbuPKTD9U2alJuta2ZMVnqq/Xo6A5beOHhcf33vY33wSbNOG5OlC04/RV/53DiluF092vqa2nXDUxX6wNeiQm+mnri+TN7sNKdXCYhosNu7SZzcnzoDliqq61XX0KK8nEyVFef22X8BmMNlWZbl5AzvuecePfDAA3r66ad19tln629/+5v+6Z/+SXfffbeWLFkS8/V+v19er1c+n08ej8eRmso3V2nNjmoFuq2p2yUtmlmspfNKYr5+y/4a3fnCPn3S1N7nuTHZabr32+dobmmBJGn2/S/r8PHmPu0mjcvStp9cPPCVAGwa7PZuEif3py37a7RyU5VqfC2haQXeTC2fXxLafwEMXDzO346HlCuuuELjx4/X448/Hpr2ne98R9nZ2Vq7dm3M1zu9kuWbq/To9uqIz984K/qBe8v+Gt20rjLmch5ZOE3lL70d9oAaRFBBvA12ezdJpIAS1J/9acv+Gt28rlK9D3bBayirF04jqACDFI+Q4vj13wsvvFB/+ctf9M4770iS/vu//1uvvfaa5s2b5/SiYmrrCGjNjsgHbElas6NabR2BsM91Biyt2Fhla1nLN74V9YAqSYePN8sX5moM4ITBbu8m8TW1O7Y/dQYsrdxU1SegSApNW7mpSp0BRz+vAXCA4yHljjvu0NVXX60zzzxTaWlpmjp1qm677TZdffXVYdu3trbK7/f3eDhl7c5DinXcCVhd7cKpqK5Xrb8l7HO9fehvtdXuhqcqbLUD+muw27tJ7O4ndtpVVNf3+IqnN0tSja9FFdX1dssDkCCOh5TnnntO69at07PPPqvKyko9/fTT+sUvfqGnn346bPvy8nJ5vd7QY8KECY7Vcri+aVDt6hrsBZT++CDKwRIYjMFu7yaxu5/YaWd3P47H/g5gcBwPKT/5yU9055136qqrrtI555yja665RrfffrvKy8vDtl+6dKl8Pl/ocfToUcdqmZSbPah2eTmZjtUSVOh1fp6ANPjt3SR29xM77ezux/HY3wEMjuMhpampqc+txikpKQoEwn8PnpGRIY/H0+PhlGtmTFasuwvdrq524ZQV5yrfY+/ANd6TYavdE9eX2WoH9Ndgt3eT2N1P7LQrK85VgTdTkbrGpa67fMqKc+0XCCAhHA8p8+fP1z333KMXX3xRhw4d0oYNG/SrX/1K3/rWt5xeVEzpqW4tmlkctc2imcURx49Icbu0YoG9OyFWLjhbk8ZlRW0zaVwW46Ugbga7vZvEm53m2P6U4nZp+fyu/bh3UAn+vXx+CeOlAAZy/BbkhoYG3XXXXdqwYYPq6upUWFioq6++Wj/72c+Unp4e8/VDbZyUsdlpKmecFBiEcVLCY5wUIL6GxDgpgxWPlZQYcRYjCyPOhseIs0D8EFIAAICRhsRgbgAAAE4gpAAAACMRUgAAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjpSa7AAAjQ2fAUkV1veoaWpSXk6my4lyluF0xX9fY0qHbn9utIyeaNXFslh64cqpGZ3LoAkYC9nQAcbdlf41WbqpSja8lNK3Am6nl80s0t7Qg4usWPLRDe4/5Q38fqG1Q6Yo/akqRRxsXz4xrzQCSj697AMTVlv01unldZY+AIkm1vhbdvK5SW/bXhH1d74DS3d5jfi14aIfjtQIwCyEFQNx0Biyt3FQlK8xzwWkrN1WpM9CzRWNLR8SAErT3mF+NLR3OFArASIQUAHFTUV3f5wpKd5akGl+LKqrre0y//bndtuZvtx2AoYmQAiBu6hoiB5Ro7Y6caLb1OrvtAAxNhBQAcZOXkzmgdhPHZtl6nd12AIYmQgqAuCkrzlWBN1ORbjR2qesun7Li3B7TH7hyqq35220HYGgipACImxS3S8vnl0hSn6AS/Hv5/JI+46WMzkzVlCJP1HlPKfIwXgowzBFSAMTV3NICrV44Tfnenl/p5HsztXrhtIjjpGxcPDNiUGGcFGBkcFmWFe7uwKTx+/3yer3y+XzyeKJ/kgIwdDDiLDC8xeP8TUgBAACDFo/zN1/3AAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACMRUgAAgJEIKQAAwEipyS4AwNDS2NKh25/brSMnmjVxbJYeuHKqRmdyKEH/NLd1atXmKh063qTJ47K1bF6JstJTkl0WDOOyLMtyeqbvv/++7rjjDr300ktqbm7WGWecoccff1zTp0+P+Vq/3y+v1yufzyePx+N0aQAGYcFDO7T3mL/P9ClFHm1cPDMJFWEoWvTMLm2tquszfU5JntZce34SKoIT4nH+dvzrnhMnTuirX/2q0tLS9NJLL6mqqkq//OUvNWbMGKcXBSCBIgUUSdp7zK8FD+1IcEUYiiIFFEnaWlWnRc/sSnBFMJnj12jvu+8+TZgwQU8++WRo2uTJk51eDIAEamzpiBhQgvYe86uxpYOvfhBRc1tnxIAStLWqTs1tnXz1A0lxuJKyceNGnXfeefrHf/xH5eXlaerUqVqzZk3E9q2trfL7/T0eAMxy+3O7HW2HkWnV5ipH22H4czykHDx4UKtXr9YXvvAF/fGPf9RNN92kH/3oR3rmmWfCti8vL5fX6w09JkyY4HRJAAbpyIlmR9thZDp0vMnRdhj+HA8pgUBA06ZN06pVqzR16lTdeOONWrRokVavXh22/dKlS+Xz+UKPo0ePOl0SgEGaODbL0XYYmSaPy3a0HYY/x0NKQUGBSkpKekw766yzdOTIkbDtMzIy5PF4ejwAmOWBK6c62g4j07J5JbEb9aMdhj/HQ8pXv/pVHThwoMe0d955R5MmTXJ6UQASZHRmqqYURf8AMaXIw49mEVVWeormlORFbTOnJI8fzSLE8ZBy++2364033tCqVav03nvv6dlnn9Vjjz2mW265xelFAUigjYtnRgwqjJMCu9Zce37EoMI4KegtLoO5/eEPf9DSpUv17rvvqri4WD/+8Y+1aNEiW69lMDfAbIw4Cycw4uzwE4/zd1xCymAQUgAAGHqGxIizAAAATiCkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACOlJrsAAObpDFiqqK5XXUOL8nIyVVacqxS3S5LU3NapVZurdOh4kyaPy9ayeSXKSk9JcsX2RFsvAOYhpADoYcv+Gq3cVKUaX0toWoE3U8vnl+j5ymPaWlUXmr7jXWntG0c0pyRPa649Pxnl2hZtveaWFiSxMgCRuCzLspJdRHd+v19er1c+n08ejyfZ5QAjypb9Nbp5XaV6HxRcUp9pvZkcVKKtlyStXjiNoAIMUjzO3/wmBYCkrq9CVm6qChtG7HyS2VpVp+a2TqfLGjQ767VyU5U6A0Z9XgMgQgqAT1VU1/f4KmQgVm2ucqga58RaL0tSja9FFdX1iSsKgC2EFACSpLqGwQUUSTp0vMmBSpxld72cWH8AziKkAJAk5eVkDnoek8dlO1CJs+yulxPrD8BZhBQAkqSy4lwVeDM1mBtyl80rcawep8RaL5e67vIpK85NZFkAbCCkAJAkpbhdWj6/K2T0PqHbCS5zSvKMHC/Fznotn1/CeCmAgQgpAELmlhZo9cJpyvf2/Ooj35upRxZO05ySvLCvM/n2Yyn6enH7MWAuxkkB0AcjzgLor3icvwkpAABg0BjMDQAAjBiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADBSarILAJAcvqZ23fBUhT7wtajQm6knri+TNzst2WXFVWfAUkV1veoaWpSXk6my4lyluF3JLgtABHEPKeXl5Vq2bJmWLFmiX//61/FeHAAbZt//sg4fbw79XeNr0bn/9idNGpelbT+5OImVxc+W/TVaualKNb6W0LQCb6aWzy/R3NKCJFYGIJK4ft2za9cuPfbYY5oyZUo8FwOgH3oHlO4OH2/W7PtfTnBF8bdlf41uXlfZI6BIUq2vRTevq9SW/TVJqgxANHELKY2Njfr+97+vNWvWaOzYsfFaDIB+8DW1RwwoQYePN8vX1J6giuKvM2Bp5aYqWWGeC05bualKnYFwLQAkU9xCyi233KLLL79cl1xySdR2ra2t8vv9PR4A4uOGpyocbTcUVFTX97mC0p2lrq+7KqrrE1cUAFvi8puU9evXq7KyUrt27YrZtry8XCtXroxHGQB6+SDKyXog7YaCugZ762K3HYDEcfxKytGjR7VkyRKtW7dOmZmZMdsvXbpUPp8v9Dh69KjTJQH4VKE39j7Zn3ZDQV6OvXWx2w5A4jgeUt58803V1dVp+vTpSk1NVWpqqrZt26YHH3xQqamp6uzs7NE+IyNDHo+nxwNAfDxxfZmj7YaCsuJcFXgzFelGY5e67vIpK85NZFkAbHA8pHz961/Xvn37tGfPntDjvPPO0/e//33t2bNHKSkpTi8SgE3e7DRNGpcVtc2kcVnDaryUFLdLy+eXSFKfoBL8e/n8EsZLAQzkeEjJyclRaWlpj8eoUaM0btw4lZaWOr04AP207ScXRwwqw3WclLmlBVq9cJrye32Nle/N1OqF0xgnBTAUI84CI9C2n1w84kacnVtaoDkl+Yw4CwwhLsuyjBocwO/3y+v1yufz8fsUAACGiHicv/kPBgEAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIqckuAEByNLZ06PbnduvIiWZNHJulB66cqtGZHBIAmIMjEjACLXhoh/Ye84f+PlDboNIVf9SUIo82Lp6ZxMoA4DN83QOMML0DSnd7j/m14KEdCa4IAMIjpAAjSGNLR8SAErT3mF+NLR0JqggAIiOkACPI7c/tdrQdAMQTIQUYQY6caHa0HQDEEyEFGEEmjs1ytB0AxBMhBRhBHrhyqqPtACCeCCnACDI6M1VTijxR20wp8jBeCgAjEFKAEWbj4pkRgwrjpAAwCR+XgBFo4+KZjDgLwHgckYARanRmqtZcd36yywCAiPi6BwAAGImQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEZKTXYBAJKvM2CporpedQ0tysvJ1JcmjNGz/3VYh+ubNGFsls7M96i+qU15OZkqK85VituV7JIBjACOh5Ty8nK98MIL+vvf/66srCxdcMEFuu+++/TFL37R6UUBcMCW/TVaualKNb4WW+0LvJlaPr9Ec0sL4lwZgJHO8a97tm3bpltuuUVvvPGGtm7dqo6ODl166aU6efKk04sCMEhb9tfo5nWVtgOKJNX6WnTzukpt2V8Tx8oAQHJZlmXFcwEfffSR8vLytG3bNs2aNStme7/fL6/XK5/PJ4/HE8/SgBGtM2Dpwvte7ldACXJJyvdm6rU7LuarHwCS4nP+jvsPZ30+nyQpNzc37POtra3y+/09HgDir6K6fkABRZIsSTW+FlVU1ztbFAB0E9eQYlmWfvzjH+vCCy9UaWlp2Dbl5eXyer2hx4QJE+JZEoBP1TUMLKA4PQ8AiCSuIWXx4sXau3ev/uM//iNim6VLl8rn84UeR48ejWdJAD6Vl5NpxDwAIJK43YJ86623auPGjdq+fbuKiooitsvIyFBGRka8ygAQQVlxrgq8mar1tai/P0wL/ialrDj817gA4ATHr6RYlqXFixfrhRde0Msvv6zi4mKnFwHAASlul5bPL5HUFTrsCrZdPr+EH80CiCvHQ8ott9yidevW6dlnn1VOTo5qa2tVW1ur5uZmpxcFYJDmlhZo9cJpyvfa/9om35up1QunMU4KgLhz/BZklyv8J6snn3xS119/fczXcwsykHiMOAtgsOJx/nb8NylxHnYFQBykuF2a8flxPab9nzM/l6RqAKAL/8EgAAAwEiEFAAAYiZACAACMREgBAABGIqQAAAAjEVIAAICRCCkAAMBIhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACMRUgAAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGCk12QUMB20dAa3deUiH65s0KTdb18yYrPRU8h8Gr7GlQ7c/t1tHTjRr4tgsPXDlVI3OZLcFMDK4LMuykl1Ed36/X16vVz6fTx6PJ9nlxFS+uUprdlQr0K0X3S5p0cxiLZ1XkrzCMOQteGiH9h7z95k+pcijjYtnJqEiAIgsHudvPu4PQvnmKj26vWdAkaSAJT26vVrlm6uSUxiGvEgBRZL2HvNrwUM7ElwRACQeIWWA2joCWrOjOmqbNTuq1dYRSFBFGC4aWzoiBpSgvcf8amzpSFBFAJAchJQBWrvzUJ8rKL0FrK52QH/c/txuR9sBwFBFSBmgw/VNjrYDgo6caHa0HQAMVYSUAZqUm+1oOyBo4tgsR9sBwFBFSBmga2ZMltsVvY3b1dUO6I8HrpzqaDsAGKoIKQOUnurWopnFUdssmlnMeCnot9GZqZpSFP32vSlFHsZLATDscQYdhKXzSnTjrOI+V1TcLunGWYyTgoHbuHhmxKDCOCkARgoGc3MAI84iXhhxFsBQEY/zNyEFAAAMGiPOAgCAEYOQAgAAjERIAQAARiKkAAAAIxFSAACAkQgpAADASIQUAABgJEIKAAAwEiEFAAAYybjxtYMD4Pr9/iRXAgAA7Aqet50cyN64kNLQ0CBJmjBhQpIrAQAA/dXQ0CCv1+vIvIz7v3sCgYA++OAD5eTkyOVyxX5BP/j9fk2YMEFHjx7l/wVKIPo9Oej35KDfk4N+T47u/Z6Tk6OGhgYVFhbK7Xbm1yTGXUlxu90qKiqK6zI8Hg8bcRLQ78lBvycH/Z4c9HtyBPvdqSsoQfxwFgAAGImQAgAAjDSiQkpGRoaWL1+ujIyMZJcyotDvyUG/Jwf9nhz0e3LEu9+N++EsAACANMKupAAAgKGDkAIAAIxESAEAAEYipAAAACONmJDy8MMPq7i4WJmZmZo+fbp27NiR7JKGtO3bt2v+/PkqLCyUy+XSf/7nf/Z43rIsrVixQoWFhcrKytLXvvY1vfXWWz3atLa26tZbb9Upp5yiUaNGacGCBTp27FgC12JoKS8v1/nnn6+cnBzl5eXpm9/8pg4cONCjDf0eH6tXr9aUKVNCA1bNmDFDL730Uuh5+j3+ysvL5XK5dNttt4Wm0e/OW7FihVwuV49Hfn5+6PmE97k1Aqxfv95KS0uz1qxZY1VVVVlLliyxRo0aZR0+fDjZpQ1Zmzdvtv71X//Vev755y1J1oYNG3o8f++991o5OTnW888/b+3bt8+68sorrYKCAsvv94fa3HTTTdZpp51mbd261aqsrLQuuugi69xzz7U6OjoSvDZDwze+8Q3rySeftPbv32/t2bPHuvzyy62JEydajY2NoTb0e3xs3LjRevHFF60DBw5YBw4csJYtW2alpaVZ+/fvtyyLfo+3iooKa/LkydaUKVOsJUuWhKbT785bvny5dfbZZ1s1NTWhR11dXej5RPf5iAgpZWVl1k033dRj2plnnmndeeedSapoeOkdUgKBgJWfn2/de++9oWktLS2W1+u1HnnkEcuyLOuTTz6x0tLSrPXr14favP/++5bb7ba2bNmSsNqHsrq6OkuStW3bNsuy6PdEGzt2rPW73/2Ofo+zhoYG6wtf+IK1detWa/bs2aGQQr/Hx/Lly61zzz037HPJ6PNh/3VPW1ub3nzzTV166aU9pl966aV6/fXXk1TV8FZdXa3a2toefZ6RkaHZs2eH+vzNN99Ue3t7jzaFhYUqLS3lfbHJ5/NJknJzcyXR74nS2dmp9evX6+TJk5oxYwb9Hme33HKLLr/8cl1yySU9ptPv8fPuu++qsLBQxcXFuuqqq3Tw4EFJyelz4/6DQad9/PHH6uzs1Pjx43tMHz9+vGpra5NU1fAW7NdwfX748OFQm/T0dI0dO7ZPG96X2CzL0o9//GNdeOGFKi0tlUS/x9u+ffs0Y8YMtbS0aPTo0dqwYYNKSkpCB1763Xnr169XZWWldu3a1ec5tvf4+PKXv6xnnnlGZ5xxhj788EPdfffduuCCC/TWW28lpc+HfUgJcrlcPf62LKvPNDhrIH3O+2LP4sWLtXfvXr322mt9nqPf4+OLX/yi9uzZo08++UTPP/+8rrvuOm3bti30PP3urKNHj2rJkiX605/+pMzMzIjt6HdnXXbZZaF/n3POOZoxY4Y+//nP6+mnn9ZXvvIVSYnt82H/dc8pp5yilJSUPgmurq6uTxqEM4K/BI/W5/n5+Wpra9OJEycitkF4t956qzZu3KhXXnlFRUVFoen0e3ylp6fr9NNP13nnnafy8nKde+65+s1vfkO/x8mbb76puro6TZ8+XampqUpNTdW2bdv04IMPKjU1NdRv9Ht8jRo1Suecc47efffdpGzrwz6kpKena/r06dq6dWuP6Vu3btUFF1yQpKqGt+LiYuXn5/fo87a2Nm3bti3U59OnT1daWlqPNjU1Ndq/fz/vSwSWZWnx4sV64YUX9PLLL6u4uLjH8/R7YlmWpdbWVvo9Tr7+9a9r37592rNnT+hx3nnn6fvf/7727Nmjz33uc/R7ArS2turtt99WQUFBcrb1fv/UdggK3oL8+OOPW1VVVdZtt91mjRo1yjp06FCySxuyGhoarN27d1u7d++2JFm/+tWvrN27d4du67733nstr9drvfDCC9a+ffusq6++OuxtakVFRdaf//xnq7Ky0rr44ou5NTCKm2++2fJ6vdarr77a4/bApqamUBv6PT6WLl1qbd++3aqurrb27t1rLVu2zHK73daf/vQny7Lo90TpfnePZdHv8fDP//zP1quvvmodPHjQeuONN6wrrrjCysnJCZ0vE93nIyKkWJZl/fa3v7UmTZpkpaenW9OmTQvdtomBeeWVVyxJfR7XXXedZVldt6otX77cys/PtzIyMqxZs2ZZ+/bt6zGP5uZma/HixVZubq6VlZVlXXHFFdaRI0eSsDZDQ7j+lmQ9+eSToTb0e3zccMMNoePHqaeean39618PBRTLot8TpXdIod+dFxz3JC0tzSosLLS+/e1vW2+99Vbo+UT3ucuyLGtA14AAAADiaNj/JgUAAAxNhBQAAGAkQgoAADASIQUAABiJkAIAAIxESAEAAEYipAAAACMRUgAAgJEIKQAAwEiEFAAAYCRCCgAAMBIhBQAAGOn/B+E8EvXuq0H7AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(price,month)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4d8718e2-b789-4673-9436-5aedab7f1173", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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evXqpbS0NHd/dna2Xn31VW3ZskUvvfSSdu7cqfvuu0+BQECS5Pf71bhxY7Vo0SLofImJifL7/Re9r9mzZysuLs7dkpOTr3ZsAABQD9TpRzzfN3HiRO3du1dFRUVB+0eMGOH+Oi0tTV27dlW7du20bt06DR069JLnM8bIcZyLHps+fbomT57s3q6srCRSAABowK7qCsqkSZP01ltv6d1331WbNm0uuzYpKUnt2rXToUOHJEler1c1NTUqLy8PWldWVqbExMSLnsPj8Sg2NjZoAwAADVedAsUYo4kTJ2r16tXasmWLUlJSrvg1x48fV0lJiZKSkiRJ6enpioqKUmFhobumtLRU+/fvV48ePeo4PgAAaIjq9COeCRMmaOXKlXrzzTcVExPjPmckLi5O0dHROnHihHJzczVs2DAlJSXpyJEjmjFjhhISEvTggw+6a8eNG6cpU6aoZcuWio+P19SpU9W5c2f3VT0AAODmVqdAWbRokSQpIyMjaP+SJUs0ZswYRUREaN++fXrllVf07bffKikpSX369NGqVasUExPjrp8/f74iIyM1fPhwVVdXq2/fvlq6dKkiIiKu/REBAIB6r06BYoy57PHo6Ght3Ljxiudp0qSJ8vPzlZ+fX5e7BwAANwk+iwcAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFinTp9mDCA02j+7LuTnPDLngZCfEwDChSsoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwTmS4BwBCrf2z60J6viNzHgjp+QAAV8YVFAAAYB0CBQAAWIdAAQAA1iFQAACAdXiSrCVC/cROiSd3AgDqL66gAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAO74OCH433agEA3ChcQQEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYp06BMnv2bN19992KiYlR69atNWTIEB08eDBojTFGubm58vl8io6OVkZGhg4cOBC0JhAIaNKkSUpISFCzZs00aNAgHT169NofDQAAaBDqFCjbtm3ThAkTtGPHDhUWFurs2bPKysrSyZMn3TVz587VvHnztHDhQu3cuVNer1eZmZmqqqpy1+Tk5GjNmjUqKChQUVGRTpw4oQEDBqi2tjZ0jwwAANRbdXqr+w0bNgTdXrJkiVq3bq3du3fr5z//uYwxWrBggWbOnKmhQ4dKkpYtW6bExEStXLlSTzzxhCoqKrR48WItX75c/fr1kyStWLFCycnJ2rx5s/r373/B/QYCAQUCAfd2ZWVlnR8oAACoP67pOSgVFRWSpPj4eElScXGx/H6/srKy3DUej0e9e/fW9u3bJUm7d+/WmTNngtb4fD6lpaW5a35o9uzZiouLc7fk5ORrGRsAAFjuqgPFGKPJkyerV69eSktLkyT5/X5JUmJiYtDaxMRE95jf71fjxo3VokWLS675oenTp6uiosLdSkpKrnZsAABQD1z1pxlPnDhRe/fuVVFR0QXHHMcJum2MuWDfD11ujcfjkcfjudpRAQBAPXNVV1AmTZqkt956S++++67atGnj7vd6vZJ0wZWQsrIy96qK1+tVTU2NysvLL7kGAADc3OoUKMYYTZw4UatXr9aWLVuUkpISdDwlJUVer1eFhYXuvpqaGm3btk09evSQJKWnpysqKipoTWlpqfbv3++uAQAAN7c6/YhnwoQJWrlypd58803FxMS4V0ri4uIUHR0tx3GUk5OjvLw8paamKjU1VXl5eWratKlGjhzprh03bpymTJmili1bKj4+XlOnTlXnzp3dV/UAAICbW50CZdGiRZKkjIyMoP1LlizRmDFjJEnTpk1TdXW1xo8fr/LycnXr1k2bNm1STEyMu37+/PmKjIzU8OHDVV1drb59+2rp0qWKiIi4tkcDAAAahDoFijHmimscx1Fubq5yc3MvuaZJkybKz89Xfn5+Xe4eAADcJPgsHgAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYJ06B8p7772ngQMHyufzyXEcvfHGG0HHx4wZI8dxgrZ77rknaE0gENCkSZOUkJCgZs2aadCgQTp69Og1PRAAANBw1DlQTp48qdtvv10LFy685Jr7779fpaWl7vb2228HHc/JydGaNWtUUFCgoqIinThxQgMGDFBtbW3dHwEAAGhwIuv6BdnZ2crOzr7sGo/HI6/Xe9FjFRUVWrx4sZYvX65+/fpJklasWKHk5GRt3rxZ/fv3r+tIAACggbkuz0HZunWrWrdurVtvvVWPP/64ysrK3GO7d+/WmTNnlJWV5e7z+XxKS0vT9u3bL3q+QCCgysrKoA0AADRcIQ+U7Oxsvfrqq9qyZYteeukl7dy5U/fdd58CgYAkye/3q3HjxmrRokXQ1yUmJsrv91/0nLNnz1ZcXJy7JScnh3psAABgkTr/iOdKRowY4f46LS1NXbt2Vbt27bRu3ToNHTr0kl9njJHjOBc9Nn36dE2ePNm9XVlZSaQAANCAXfeXGSclJaldu3Y6dOiQJMnr9aqmpkbl5eVB68rKypSYmHjRc3g8HsXGxgZtAACg4brugXL8+HGVlJQoKSlJkpSenq6oqCgVFha6a0pLS7V//3716NHjeo8DAADqgTr/iOfEiRM6fPiwe7u4uFh79uxRfHy84uPjlZubq2HDhikpKUlHjhzRjBkzlJCQoAcffFCSFBcXp3HjxmnKlClq2bKl4uPjNXXqVHXu3Nl9VQ8AALi51TlQdu3apT59+ri3v3tuyOjRo7Vo0SLt27dPr7zyir799lslJSWpT58+WrVqlWJiYtyvmT9/viIjIzV8+HBVV1erb9++Wrp0qSIiIkLwkAAAQH1X50DJyMiQMeaSxzdu3HjFczRp0kT5+fnKz8+v690DAICbAJ/FAwAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOpHhHuBGaP/supCe78icB0J6PgAAEIwrKAAAwDo3xRUUAMDlhfpKs8TVZlwbAgUAUG/wI/ubBz/iAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0+iwcArjM+iA+oO66gAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6fxQMAQAjx2UuhwRUUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFinzoHy3nvvaeDAgfL5fHIcR2+88UbQcWOMcnNz5fP5FB0drYyMDB04cCBoTSAQ0KRJk5SQkKBmzZpp0KBBOnr06DU9EAAA0HDUOVBOnjyp22+/XQsXLrzo8blz52revHlauHChdu7cKa/Xq8zMTFVVVblrcnJytGbNGhUUFKioqEgnTpzQgAEDVFtbe/WPBAAANBh1fqO27OxsZWdnX/SYMUYLFizQzJkzNXToUEnSsmXLlJiYqJUrV+qJJ55QRUWFFi9erOXLl6tfv36SpBUrVig5OVmbN29W//79r+HhAACAhiCkz0EpLi6W3+9XVlaWu8/j8ah3797avn27JGn37t06c+ZM0Bqfz6e0tDR3zQ8FAgFVVlYGbQAAoOEKaaD4/X5JUmJiYtD+xMRE95jf71fjxo3VokWLS675odmzZysuLs7dkpOTQzk2AACwzHV5FY/jOEG3jTEX7Puhy62ZPn26Kioq3K2kpCRkswIAAPuENFC8Xq8kXXAlpKyszL2q4vV6VVNTo/Ly8kuu+SGPx6PY2NigDQAANFwhDZSUlBR5vV4VFha6+2pqarRt2zb16NFDkpSenq6oqKigNaWlpdq/f7+7BgAA3Nzq/CqeEydO6PDhw+7t4uJi7dmzR/Hx8Wrbtq1ycnKUl5en1NRUpaamKi8vT02bNtXIkSMlSXFxcRo3bpymTJmili1bKj4+XlOnTlXnzp3dV/UAAICbW50DZdeuXerTp497e/LkyZKk0aNHa+nSpZo2bZqqq6s1fvx4lZeXq1u3btq0aZNiYmLcr5k/f74iIyM1fPhwVVdXq2/fvlq6dKkiIiJC8JAAAEB9V+dAycjIkDHmkscdx1Fubq5yc3MvuaZJkybKz89Xfn5+Xe8eAADcBPgsHgAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHXq/GGBAACgfmv/7LqQn/PInAdCej6uoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOsQKAAAwDoECgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOuEPFByc3PlOE7Q5vV63ePGGOXm5srn8yk6OloZGRk6cOBAqMcAAAD12HW5gnLbbbeptLTU3fbt2+cemzt3rubNm6eFCxdq586d8nq9yszMVFVV1fUYBQAA1EPXJVAiIyPl9XrdrVWrVpLOXz1ZsGCBZs6cqaFDhyotLU3Lli3TqVOntHLlyusxCgAAqIeuS6AcOnRIPp9PKSkpevjhh/XFF19IkoqLi+X3+5WVleWu9Xg86t27t7Zv337J8wUCAVVWVgZtAACg4Qp5oHTr1k2vvPKKNm7cqJdffll+v189evTQ8ePH5ff7JUmJiYlBX5OYmOgeu5jZs2crLi7O3ZKTk0M9NgAAsEjIAyU7O1vDhg1T586d1a9fP61bt06StGzZMneN4zhBX2OMuWDf902fPl0VFRXuVlJSEuqxAQCARa77y4ybNWumzp0769ChQ+6reX54taSsrOyCqyrf5/F4FBsbG7QBAICG67oHSiAQ0KeffqqkpCSlpKTI6/WqsLDQPV5TU6Nt27apR48e13sUAABQT0SG+oRTp07VwIED1bZtW5WVlen5559XZWWlRo8eLcdxlJOTo7y8PKWmpio1NVV5eXlq2rSpRo4cGepRAABAPRXyQDl69KgeeeQRff3112rVqpXuuece7dixQ+3atZMkTZs2TdXV1Ro/frzKy8vVrVs3bdq0STExMaEeBQAA1FMhD5SCgoLLHnccR7m5ucrNzQ31XQMAgAaCz+IBAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWIVAAAIB1CBQAAGAdAgUAAFiHQAEAANYhUAAAgHUIFAAAYB0CBQAAWIdAAQAA1iFQAACAdQgUAABgHQIFAABYh0ABAADWCWug/Ou//qtSUlLUpEkTpaen609/+lM4xwEAAJYIW6CsWrVKOTk5mjlzpj766CPde++9ys7O1ldffRWukQAAgCXCFijz5s3TuHHj9A//8A/q2LGjFixYoOTkZC1atChcIwEAAEtEhuNOa2pqtHv3bj377LNB+7OysrR9+/YL1gcCAQUCAfd2RUWFJKmysvJH3d+5wKlrmPZCP/Z+6yLUM0qhn7M+zCjx/ztU6sOMEv+/Q6U+zCjx/ztUwjXjd2uMMVc+oQmD//mf/zGSzPvvvx+0/4UXXjC33nrrBeufe+45I4mNjY2NjY2tAWwlJSVXbIWwXEH5juM4QbeNMRfsk6Tp06dr8uTJ7u1z587pm2++UcuWLS+6/mpUVlYqOTlZJSUlio2NDck5Q60+zCjVjzmZMXTqw5zMGDr1YU5mDJ1Qz2mMUVVVlXw+3xXXhiVQEhISFBERIb/fH7S/rKxMiYmJF6z3eDzyeDxB+2655ZbrMltsbKzV3yxS/ZhRqh9zMmPo1Ic5mTF06sOczBg6oZwzLi7uR60Ly5NkGzdurPT0dBUWFgbtLywsVI8ePcIxEgAAsEjYfsQzefJkjRo1Sl27dlX37t31+9//Xl999ZWefPLJcI0EAAAsEbZAGTFihI4fP67f/OY3Ki0tVVpamt5++221a9cuLPN4PB4999xzF/woySb1YUapfszJjKFTH+ZkxtCpD3MyY+iEc07HmB/zWh8AAIAbh8/iAQAA1iFQAACAdQgUAABgHQIFAABYh0DBTYvnhwOAvcL6VvdAOHk8Hn388cfq2LFjuEcBrFVaWqpFixapqKhIpaWlioiIUEpKioYMGaIxY8YoIiIi3COigeIKyiWUlJRo7NixYZ2hurpaRUVF+uSTTy44dvr0ab3yyithmOpCn376qZYsWaI///nPkqQ///nPeuqppzR27Fht2bIlzNOdf1PAi221tbWaM2eOe9sm5eXlWrBggSZMmKDnn39eJSUl4R5JkvTRRx+puLjYvb1ixQr17NlTycnJ6tWrlwoKCsI43XmTJk3Sn/70p3CPcUX5+fkaPXq0/vCHP0iSli9frk6dOulnP/uZZsyYobNnz4Z5QmnXrl3q2LGj1q5dq9OnT+uzzz7TXXfdpWbNmmnq1Km69957VVVVFe4x0VCF4tOJG6I9e/aYRo0ahe3+Dx48aNq1a2ccxzGNGjUyvXv3NseOHXOP+/3+sM73nfXr15vGjRub+Ph406RJE7N+/XrTqlUr069fP9O3b18TGRlp3nnnnbDO6DiOueOOO0xGRkbQ5jiOufvuu01GRobp06dPWGdMSkoyX3/9tTHGmC+++MJ4vV7j9XpNZmamadOmjYmLizOffvppWGc0xpg777zTbNmyxRhjzMsvv2yio6PN008/bRYtWmRycnJM8+bNzeLFi8M643e/Z1JTU82cOXNMaWlpWOe5mN/85jcmJibGDBs2zHi9XjNnzhzTsmVL8/zzz5u8vDzTqlUr80//9E/hHtP07NnT5ObmureXL19uunXrZowx5ptvvjF33HGHefrpp8M1XpATJ06Y3//+92bMmDHm/vvvN9nZ2WbMmDHm5ZdfNidOnAj3eFfk9/vNrFmzwj2GMcaYkpISU1VVdcH+mpoas23bths2x00bKG+++eZlt/nz54c1AIYMGWIGDBhg/vd//9ccOnTIDBw40KSkpJgvv/zSGGNPoHTv3t3MnDnTGGPMa6+9Zlq0aGFmzJjhHp8xY4bJzMwM13jGGGPy8vJMSkrKBaEUGRlpDhw4EKapgjmOY/7yl78YY4x5+OGHTUZGhjl58qQxxpjTp0+bAQMGmF/84hfhHNEYY0zTpk3d78E777zT/Pu//3vQ8VdffdV06tQpHKO5HMcxmzdvNr/85S9NQkKCiYqKMoMGDTJr1641tbW1YZ3tOz/5yU/M66+/bow5/4+hiIgIs2LFCvf46tWrTYcOHcI1nis6Otp8/vnn7u3a2loTFRVl/H6/McaYTZs2GZ/PF67xXAcOHDA+n8/ccsstZvDgweYf//EfzeOPP24GDx5sbrnlFvNXf/VX1vxev5Rw/6PYGGOOHTtm7r77btOoUSMTERFhHnvssaBQudF/79y0gfLdv7Icx7nkFs5vltatW5u9e/cG7Rs/frxp27at+fzzz60JlNjYWHPo0CFjzPk/vCIjI83u3bvd4/v27TOJiYnhGs/1wQcfmFtvvdVMmTLF1NTUGGPsDZSLxdSOHTtMmzZtwjFakJYtW5pdu3YZY85/j+7Zsyfo+OHDh010dHQ4RnN9/79lTU2NWbVqlenfv7+JiIgwPp/PzJgxw/2eDZfo6Gg39IwxJioqyuzfv9+9feTIEdO0adNwjBakXbt2pqioyL197Ngx4ziOOXXqlDHGmOLiYtOkSZNwjefKyMgwDz/8sAkEAhccCwQC5pFHHjEZGRlhmOz/ffzxx5fdVq1aFfY/0x977DFzzz33mJ07d5rCwkLTtWtXk56ebr755htjzPlAcRznhs1z0waKz+cza9asueTxjz76KKzfLDExMeaTTz65YP/EiRNNmzZtzHvvvRf2b2ZjggPFGGOaN28e9C+uI0eOWPEHmDHGVFVVmccee8x06dLF7N2710RFRVkVKGVlZcaY89+b3//LypjzfxF4PJ5wjBbk0UcfNePGjTPGGPPQQw+ZX//610HH8/LyTOfOncMxmuv7gfJ9X375pXnuuedMu3btwv57JyUlxaxfv94YY8xnn31mGjVqZP7whz+4x9etW2fat28frvFcv/zlL01aWppZv3692bJli+nTp0/QX/QbNmwwf/3Xfx3GCc+Ljo6+7O/lffv2WRHOl/pH8Xf7w/196fP5zH//93+7t0+fPm0GDx5s7rjjDnP8+PEb/g/jm/ZVPOnp6frwww81ZMiQix53HCesL0P92c9+5j5B7fvy8/NljNGgQYPCNFmw9u3b6/Dhw+rQoYMk6b/+67/Utm1b93hJSYmSkpLCNV6Q5s2ba9myZSooKFBmZqZqa2vDPVKQvn37KjIyUpWVlfrss8902223uce++uorJSQkhHG681588UX17NlTvXv3VteuXfXSSy9p69at6tixow4ePKgdO3ZozZo14R7zotq2bavc3Fw999xz2rx5c1hnGTlypB577DENHjxY77zzjp555hlNnTpVx48fl+M4euGFF/SLX/wirDNK0vPPP6/S0lINHDhQtbW16t69u1asWOEedxxHs2fPDuOE57Vo0UKHDh1Sp06dLnr88OHDatGixQ2eKljLli314osvqm/fvhc9fuDAAQ0cOPAGTxWsoqIi6L+Tx+PRf/7nf+qhhx5Snz59gv7f3wg3baD86le/0smTJy95vEOHDnr33Xdv4ETBHnzwQb322msaNWrUBccWLlyoc+fO6d/+7d/CMFmwp556Kugv+rS0tKDj69ev13333Xejx7qshx9+WL169dLu3bvD9unZP/Tcc88F3W7atGnQ7bVr1+ree++9kSNdlM/n00cffaQ5c+Zo7dq1Msbogw8+UElJiXr27Kn3339fXbt2DeuM7dq1u+xLXx3HUWZm5g2c6EKzZs1SdHS0duzYoSeeeELPPPOMunTpomnTpunUqVMaOHCg/vmf/zmsM0rno37VqlU6ffq0zp49q+bNmwcdz8rKCtNkwR5//HGNHj1av/71r5WZmanExEQ5jiO/36/CwkLl5eUpJycnrDOmp6fr2LFjl/wz59tvvw37ezP95Cc/0d69e5Wamurui4yM1B//+Ec99NBDGjBgwA2dh08zBgDUey+++KJ+97vfye/3y3EcSeffjNHr9SonJ0fTpk0L63xr1qzRyZMn9eijj170eHl5ud566y2NHj36Bk/2/5555hnt2bNHGzduvODY2bNnNWzYMK1du1bnzp27IfMQKACABqO4uFh+v1+S5PV6lZKSEuaJ6o+zZ8/q1KlTio2Nvejx2tpaHT169IZdeeaN2gAADUZKSoq6d++u7t27u3FiwxtvXokNM0ZGRl4yTiTp2LFjmjVr1g2bhysoAIAG7eOPP9Zdd91l3RPjv48ZL3TTPkkWANAwvPXWW5c9/sUXX9ygSS6NGeuOKygAgHqtUaNGV3xrCMdxwnp1ghmvYp4bci8AAFwnSUlJev3113Xu3LmLbh9++GG4R2TGq0CgAADqte/eePNSwv3GmxIzXg2egwIAqNdsf+NNiRmvBs9BAQAA1uFHPAAAwDoECgAAsA6BAgAArEOgAAAA6xAoABoMx3H0xhtvhHsMACFAoAC4ZmPGjJHjOHryyScvODZ+/Hg5jqMxY8aE7P5yc3N1xx13hOx8AOxDoAAIieTkZBUUFKi6utrdd/r0ab322mtq27ZtGCcDUB8RKABC4q677lLbtm21evVqd9/q1auVnJysO++8090XCAT09NNPq3Xr1mrSpIl69eqlnTt3use3bt0qx3H0zjvvqGvXrmratKl69OihgwcPSpKWLl2qWbNm6eOPP5bjOHIcR0uXLnW//uuvv9aDDz6opk2bKjU19YofgAbATgQKgJD5+7//ey1ZssS9/R//8R8aO3Zs0Jpp06bp9ddf17Jly/Thhx+qQ4cO6t+/v7755pugdTNnztRLL72kXbt2KTIy0j3PiBEjNGXKFN12220qLS1VaWmpRowY4X7drFmzNHz4cO3du1d/+7d/q7/7u7+74NwA7EegAAiZUaNGqaioSEeOHNGXX36p999/X48++qh7/OTJk1q0aJF++9vfKjs7W506ddLLL7+s6OhoLV68OOhcL7zwgnr37q1OnTrp2Wef1fbt23X69GlFR0erefPmioyMlNfrldfrVXR0tPt1Y8aM0SOPPKIOHTooLy9PJ0+e1AcffHDD/hsACA0+iwdAyCQkJOiBBx7QsmXLZIzRAw88oISEBPf4559/rjNnzqhnz57uvqioKP3N3/yNPv3006BzdenSxf11UlKSJKmsrOyKz2f5/tc1a9ZMMTExKisru6bHBeDGI1AAhNTYsWM1ceJESdK//Mu/BB377qO/HMe5YP8P90VFRbm//u7YuXPnrnj/3/+67772x3wdALvwIx4AIXX//ferpqZGNTU16t+/f9CxDh06qHHjxioqKnL3nTlzRrt27VLHjh1/9H00btxYtbW1IZsZgH24ggIgpCIiItwf10RERAQda9asmZ566in96le/Unx8vNq2bau5c+fq1KlTGjdu3I++j/bt26u4uFh79uxRmzZtFBMTI4/HE9LHASC8CBQAIRcbG3vJY3PmzNG5c+c0atQoVVVVqWvXrtq4caNatGjxo88/bNgwrV69Wn369NG3336rJUuWhPSN4ACEn2O++6EwAACAJXgOCgAAsA6BAgAArEOgAAAA6xAoAADAOgQKAACwDoECAACsQ6AAAADrECgAAMA6BAoAALAOgQIAAKxDoAAAAOv8H/YOI3XvcDVmAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')\n", + "plt.ylabel = 'Pumpkin Price'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01b2bb81-287d-4919-8f43-d80472c5f4b8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/2-Regression/3-Linear/translations/.ipynb_checkpoints/README.zh-cn-checkpoint.md b/2-Regression/3-Linear/translations/.ipynb_checkpoints/README.zh-cn-checkpoint.md new file mode 100644 index 00000000..da5e02ad --- /dev/null +++ b/2-Regression/3-Linear/translations/.ipynb_checkpoints/README.zh-cn-checkpoint.md @@ -0,0 +1,341 @@ +# 使用 Scikit-learn 构建回归模型:两种方式的回归 + +![线性与多项式回归信息图](../images/linear-polynomial.png) +> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) + +## [课前测](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) + +### 介绍 + +到目前为止,你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用 Matplotlib 对其进行了可视化。 + +现在你已准备好深入研究 ML 的回归。 在本课中,你将详细了解两种类型的回归:_基本线性回归_ 和 _多项式回归_,以及这些技术背后的一些数学知识。 + +> 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。 + +### 前提 + +你现在应该熟悉我们正在检查的南瓜数据的结构。你可以在本课的 _notebook.ipynb_ 文件中找到它。 在这个文件中,南瓜的价格显示在一个新的 dataframe 中。确保可以在 Visual Studio Code 代码的内核中运行这些 notebooks。 + +### 准备 + +提醒一下,你正在加载此数据以提出问题。 + +- 什么时候买南瓜最好? +- 一箱微型南瓜的价格是多少? +- 我应该买半蒲式耳还是 1 1/9 蒲式耳? + +让我们继续深入研究这些数据。 + +在上一课中,你创建了一个 Pandas dataframe 并用原始数据集的一部分填充它,按蒲式耳标准化定价。但是,通过这样做,你只能收集大约 400 个数据点,而且只能收集秋季月份的数据。 + +看看我们在本课随附的 notebook 中预加载的数据。数据已预加载,并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。 + +## 线性回归线 + +正如你在第 1 课中学到的,线性回归练习的目标是能够绘制一条线以便: + +- **显示变量关系**。 显示变量之间的关系 +- **作出预测**。 准确预测新数据点与该线的关系。 + +绘制这种类型的线是**最小二乘回归**的典型做法。术语“最小二乘法”意味着将回归线周围的所有数据点平方,然后相加。理想情况下,最终和尽可能小,因为我们希望错误数量较少,或“最小二乘法”。 + +我们这样做是因为我们想要对一条与所有数据点的累积距离最小的线进行建模。我们还在添加它们之前对这些项进行平方,因为我们关心的是它的大小而不是它的方向。 + +> **🧮 数学知识** +> +> 这条线称为 _最佳拟合线_,可以用[一个等式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: +> +> ``` +> Y = a + bX +> ``` +> +> `X` 是“解释变量”。`Y` 是“因变量”。直线的斜率是 `b`,`a` 是 y 轴截距,指的是 `X = 0` 时 `Y` 的值。 +> +>![计算斜率](../images/slope.png) +> +> 首先,计算斜率 `b`。作者 [Jen Looper](https://twitter.com/jenlooper) +> +> 换句话说,参考我们的南瓜数据的原始问题:“按月预测每蒲式耳南瓜的价格”,`X` 指的是价格,`Y` 指的是销售月份。 +> +> ![完成等式](../images/calculation.png) +> +> 计算 Y 的值。如果你支付大约 4 美元,那一定是四月!作者 [Jen Looper](https://twitter.com/jenlooper) +> +> 计算直线的数学必须证明直线的斜率,这也取决于截距,或者当 `X = 0` 时 `Y` 所在的位置。 +> +> 你可以在 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。 + +## 相关性 + +另一个需要理解的术语是给定 X 和 Y 变量之间的**相关系数**。使用散点图,你可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性,但数据点散布在 X 和 Y 之间的图具有低相关性。 + +一个好的线性回归模型将是一个用最小二乘回归法与直线回归得到的高(更接近于 1)相关系数的模型。 + +✅ 运行本课随附的 notebook 并查看 City to Price 散点图。根据你对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性? + +## 为回归准备数据 + +现在你已经了解了本练习背后的数学原理,可以创建一个回归模型,看看你是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。 + +由于你将使用 Scikit-learn,因此没有理由手动执行此操作(尽管你可以!)。在课程 notebook 的主要数据处理块中,从 Scikit-learn 添加一个库以自动将所有字符串数据转换为数字: + +```python +from sklearn.preprocessing import LabelEncoder + +new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) +``` + +如果你现在查看 new_pumpkins dataframe,你会看到所有字符串现在都是数字。这让你更难阅读,但对 Scikit-learn 来说更容易理解! + +现在,你可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。 + +尝试在数据的两点之间找到良好的相关性,以构建良好的预测模型。事实证明,城市和价格之间只有微弱的相关性: + +```python +print(new_pumpkins['City'].corr(new_pumpkins['Price'])) +0.32363971816089226 +``` + +然而,包装和它的价格之间有更好的相关性。这是有道理的,对吧?通常,农产品箱越大,价格越高。 + +```python +print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) +0.6061712937226021 +``` + +对这些数据提出的一个很好的问题是:“我可以期望给定的南瓜包装的价格是多少?” + +让我们建立这个回归模型 + +## 建立线性模型 + +在构建模型之前,再对数据进行一次整理。删除任何空数据并再次检查数据的样子。 + +```python +new_pumpkins.dropna(inplace=True) +new_pumpkins.info() +``` + +然后,从这个最小集合创建一个新的 dataframe 并将其打印出来: + +```python +new_columns = ['Package', 'Price'] +lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + +lin_pumpkins +``` + +```output + Package Price +70 0 13.636364 +71 0 16.363636 +72 0 16.363636 +73 0 15.454545 +74 0 13.636364 +... ... ... +1738 2 30.000000 +1739 2 28.750000 +1740 2 25.750000 +1741 2 24.000000 +1742 2 24.000000 +415 rows × 2 columns +``` + +1. 现在你可以分配 X 和 y 坐标数据: + + ```python + X = lin_pumpkins.values[:, :1] + y = lin_pumpkins.values[:, 1:2] + ``` + +✅ 这里发生了什么?你正在使用 [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) 来创建数组来填充 `X` 和 `y`。 + +2. 接下来,开始回归模型构建例程: + + ```python + from sklearn.linear_model import LinearRegression + from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error + from sklearn.model_selection import train_test_split + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + lin_reg = LinearRegression() + lin_reg.fit(X_train,y_train) + + pred = lin_reg.predict(X_test) + + accuracy_score = lin_reg.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + 因为相关性不是特别好,所以生成的模型不是非常准确。 + + ```output + Model Accuracy: 0.3315342327998987 + ``` + +3. 你可以将过程中绘制的线条可视化: + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, pred, color='blue', linewidth=3) + + plt.xlabel('Package') + plt.ylabel('Price') + + plt.show() + ``` + + ![散点图显示包装与价格的关系](../images/linear.png) + +4. 针对假设的品种测试模型: + + ```python + lin_reg.predict( np.array([ [2.75] ]) ) + ``` + + 这个神话般的品种的价格是: + + ```output + array([[33.15655975]]) + ``` + +如果回归线的逻辑成立,这个数字是有意义的。 + +🎃 恭喜你,你刚刚创建了一个模型,可以帮助预测几个南瓜品种的价格。你的节日南瓜地会很漂亮的。但是你可以创造一个更好的模型! + +## 多项式回归 + +另一种线性回归是多项式回归。虽然有时变量之间存在线性关系——南瓜的体积越大,价格就越高——但有时这些关系不能绘制成平面或直线。 + +✅ 这里有可以使用多项式回归数据的[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8) + +再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,你可以尝试多项式回归。 + +✅ 多项式是可能由一个或多个变量和系数组成的数学表达式 + +多项式回归创建一条曲线以更好地拟合非线性数据。 + +1. 让我们重新创建一个填充了原始南瓜数据片段的 dataframe: + + ```python + new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] + poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + + poly_pumpkins + ``` + +可视化 dataframe 中数据之间相关性的一种好方法是将其显示在“coolwarm”图表中: + +2. 使用 `Background_gradient()` 方法和 `coolwarm` 作为其参数值: + + ```python + corr = poly_pumpkins.corr() + corr.style.background_gradient(cmap='coolwarm') + ``` + + 这段代码创建了一个热图: + ![显示数据相关性的热图](../images/heatmap.png) + +查看此图表,你可以直观地看到 Package 和 Price 之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。 + +### 创建管道 + +Scikit-learn 包含一个用于构建多项式回归模型的有用 API - `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)。 创建了一个“管道”,它是一个估计器链。在这种情况下,管道包括多项式特征或形成非线性路径的预测。 + +1. 构建 X 和 y 列: + + ```python + X=poly_pumpkins.iloc[:,3:4].values + y=poly_pumpkins.iloc[:,4:5].values + ``` + +2. 通过调用 `make_pipeline()` 方法创建管道: + + ```python + from sklearn.preprocessing import PolynomialFeatures + from sklearn.pipeline import make_pipeline + + pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + pipeline.fit(np.array(X_train), y_train) + + y_pred=pipeline.predict(X_test) + ``` + +### 创建序列 + +此时,你需要使用_排序好的_数据创建一个新的 dataframe ,以便管道可以创建序列。 + +添加以下代码: + + ```python + df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) + df.sort_values(by='x',inplace = True) + points = pd.DataFrame(df).to_numpy() + + plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) + plt.xlabel('Package') + plt.ylabel('Price') + plt.scatter(X,y, color="black") + plt.show() + ``` + +你通过调用 `pd.DataFrame` 创建了一个新的 dataframe。然后通过调用 `sort_values()` 对值进行排序。最后你创建了一个多项式图: + +![显示包装与价格关系的多项式图](../images/polynomial.png) + +你可以看到更适合你的数据的曲线。 + +让我们检查模型的准确性: + + ```python + accuracy_score = pipeline.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + 瞧! + + ```output + Model Accuracy: 0.8537946517073784 + ``` + +这样好多了!试着预测一个价格: + +### 做个预测 + +我们可以输入一个新值并得到一个预测吗? + +调用 `predict()` 进行预测: + + ```python + pipeline.predict( np.array([ [2.75] ]) ) + ``` + + 你会得到这样的预测: + + ```output + array([[46.34509342]]) + ``` + +参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算! + +🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。 + +--- + +## 🚀挑战 + +在此 notebook 中测试几个不同的变量,以查看相关性与模型准确性的对应关系。 + +## [课后测](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) + +## 复习与自学 + +在本课中,我们学习了线性回归。还有其他重要的回归类型。了解 Stepwise、Ridge、Lasso 和 Elasticnet 技术。学习更多信息的好课程是 [斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) + +## 任务 + +[构建模型](./assignment.zh-cn.md) diff --git a/2-Regression/3-Linear/translations/README.es.md b/2-Regression/3-Linear/translations/README.es.md deleted file mode 100644 index ecc3a95e..00000000 --- a/2-Regression/3-Linear/translations/README.es.md +++ /dev/null @@ -1,342 +0,0 @@ -# Construye un modelo de regresión usando Scikit-learn: regresión de dos formas - -![Infografía de regresión lineal vs polinomial](./images/linear-polynomial.png) -> Infografía de [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Examen previo a la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13?loc=es) - -> ### [¡Esta lección está disponible en R!](../solution/R/lesson_3-R.ipynb) - -### Introducción - -Hasta ahora has explorado qué es la regresión con datos obtenidos del conjunto de datos de los precios de las calabazas que usaremos en esta lección. También los has visualizado usando Matplotlib. - -Ahora estás listo para profundizar en la regresión para el aprendizaje automático. En esta lección, aprenderás más acerca de dos tipos de regresión: _regresión básica lineal_ y _regresión polinomial_, junto con algo de matemáticas fundamental a estas técnicas. - -> A lo largo de este plan de estudios, asumimos un conocimiento mínimo de matemáticas, y buscamos hacerlo accesible para los estudiantes provenientes de otros campos, así que pon atención a las notas, 🧮 llamados, diagramas, y otras herramientas de estudio para ayudar en la comprensión. - -### Prerrequisitos - -Ahora, debes estar familiarizado con la estructura de los datos de las calabazas que ya examinamos. Puedes encontrarlos precargados y pre-limpiados en el archivo _notebook.ipynb_ de esta lección. En el archivo, el precio de la calabaza se muestra por fanega en un nuevo dataframe. Asegúrate que puedas ejecutar estos notebooks en kernels en Visual Studio Code. - -### Preparación - -Como recordatorio, estás cargando estos datos para hacer preguntas aceca de estos. - -- ¿Cuándo es el mejor momento para comprar calabazas? -- ¿Qué precio puedo esperar para el caso de calabazas miniatura? -- ¿Debería comprarlas en cestos de media fanega o por caja de 1 1/9 de fanega? - -Sigamos profundizando en estos datos. - -En la lección anterior, creaste un dataframe de Pandas y lo poblaste con parte del conjunto de datos original, estandarizando el precio de la fanega. Haciéndolo, sólo fuiste capaz de reunir alrededor de 400 puntos de datos y sólo para los meses de otoño. - -Da un vistazo a los datos que fueron precargados en el notebook que acompaña a esta lección. Los datos están precargados con un gráfico de dispersión inicial para mostrar datos mensuales. Quizá podamos obtener un poco más de detalle acerca de la naturaleza de los datos limpiándolos más. - -## Un línea de regresión lineal - -Como aprendiste en la lección 1, el objetivo de un ejercicio de regresión lineal es ser capaz de graficar una línea para: - -- **Mostrar la relación de las variables**. Mostrar la relación entre las variables -- **Realizar predicciones**. Hacer predicciones precisas en donde un nuevo punto de datos caería en relación a esa línea. - -Es típico de la **regresión de mínimos cuadrados** el dibujar este tipo de línea. El término 'mínimos cuadrados' significa que todos los puntos de datos rodeando la línea de regresión se elevan al cuadrado y luego se suman. Idealmente, la suma final es tan pequeña como sea posible, porque queremos un número bajo de errores, o `mínimos cuadrados`. - -Lo hacemos así ya que queremos modelar una línea que tiene la menor distancia acumulada de todos nuestros puntos de datos. También elevamos al cuadrado los términos antes de sumarlos ya que nos interesa su magnitud en lugar de su dirección. - -> **🧮 Muéstrame las matemáticas** -> -> Esta línea, llamada la _línea de mejor ajuste_ puede ser expresada por [una ecuación](https://en.wikipedia.org/wiki/Simple_linear_regression): -> -> ``` -> Y = a + bX -> ``` -> -> `X` es la 'variable explicativa'. `Y` es la 'variable dependiente'. La pendiente de la línea es `b` y `a` es la intercepción en y, la cual se refiere a el valor de `Y` cuando `X = 0`. -> ->![Calcula la pendiente](../images/slope.png) -> -> Primero, calcula la pendiente `b`. Infografía de [Jen Looper](https://twitter.com/jenlooper) -> -> En otras palabras, y refiriéndose a nuestra pregunta original de los datos de las calabazas: "predice el precio de una calabaza por fanega por mes", `X` se referiría al precio e `Y` a el mes de venta. -> ->![Completa la ecuación](../images/calculation.png) -> -> Calcula el valor de Y. ¡Si estás pagando alrededor de $4, debe ser Abril! Infografía de [Jen Looper](https://twitter.com/jenlooper) -> -> Las matemáticas que calculan la línea deben demostrar la pendiente de la línea, la cual también depende de la intercepción, o dónde `Y` se sitúa cuando `X = 0`. -> -> Puedes observar el método de cálculo para estos valores en el sitio web [las matemáticas son divertidas](https://www.mathsisfun.com/data/least-squares-regression.html). También visita esta [calculadora de mínimos cuadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver cómo los valores de los números impactan la línea. - -## Correlación - -Un término más a entender es el **coeficiente de correlación** entre las variables dadas X e Y. Usando un gráfico de dispersión, puedes visualizar rápidamente este coeficiente. Un gráfico con puntos de datos dispersos en una línea ordenada tienen alta correlación, pero un gráfico con puntos de datos dispersos por todas partes entre X e Y tienen baja correlación. - -Un buen modelo de regresión lineal será aquél que tenga un alto Coeficiente de Correlación (más cercano a 1 que a 0) usando el métro de regresión de mínimos cuadrados con una línea de regresión. - -✅ Ejecuta el notebook que acompaña esta lección y mira el gráfico de Ciudad a Precio. ¿Los datos asociados de Ciudad a Precio para las ventas de calabaza parecen tener correlación alta o baja, de acuerdo a tu interpretación visual del gráfico de dispersión? - -## Prepara tus datos para la regresión - -Ahora que tienes conocimiento de las matemáticas detrás de este ejercicio, crea un modelo de regresión para ver si puedes predecir cuál de los paquetes de calabazas tendrá los mejores precios. Alguien comprando calabazas para una parcela de calabazas en días festivos quisiera esta información para ser capaz de optimizar sus compras de paquetes de calabazas para la parcela. - -Ya que usarás Scikit-learn, no hay razón para hacer esto a mano (¡aunque podrías!). En el bloque principal de procesamientos de datos de tu notebook de lección, agrega una biblioteca de Scikit-learn para convertir automáticamente todos los datos de cadena a números: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -Si ahora miras el nuevo dataframe `new_pumpkins`, ves que todas las cadenas ahora son numéricas. ¡Esto te dificulta el leer pero lo hace más comprensible para Scikit-learn! -Ahora puedes tomar decisiones más informadas (no sólo basado en un gráfico de dispersión) acerca de los datos que mejor se ajustan a la regresión. - -Intenta encontrar una buena correlación entre dos puntos de tus datos para construir potencialmente un buen modelo predictivo. Como resultado, sólo hay correlación débil entre la Ciudad y el Precio. - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -Sin embargo, existe una correlación un poco mejor entre el Paquete y su Precio. Esto tiene sentido, ¿cierto? Normalmente, entre más grande sea la caja producida, mayor será el precio. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -Una buena pregunta a realizar de estos datos, sería: '¿Qué precio puedo esperar de un paquete de calabazas dado?' - -Construyamos este modelo de regresión - -## Construyendo un modelo lineal - -Antes de construir tu modelo, haz una limpieza más a tus datos. Elimina cualquier dato nulo y verifica una vez cómo lucen los datos. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -Luego, crea un dataframe nuevo de este conjunto mínimo e imprímelo: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. Ahora puedes asignar tus datos de coodenadas X e Y: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` - -✅ ¿Qué está pasando aquí? Estás usando [notación slice de Python](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) para crear arreglos y así poblar `X` e `Y`. - -2. Lo siguiente es, iniciar las rutinas de construcción del modelo de regresión: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Debido a que la correlación nos es particularmente buena, el modelo producido no es terriblemente preciso. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. Puedes visualziar la línea dibujada en el proceso: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - - ![Un gráfico de dispersión mostrando la relación paquete a precio](../images/linear.png) - -4. Prueba el modelo contra una variedad hipotética: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - El precio devuelto para esta Variedad mitológica es: - - ```output - array([[33.15655975]]) - ``` - -Ese número hace sentido, si la lógica de la regresión lineal es cierta. - -🎃 Felicidades, acabas de crear un modelo que puede ayudara predecir el precio de unas pocas variedades de calabazas. Tu parcela de calabazas de días festivos serán hermosas. ¡Pero probablemente puedes crear un mejor modelo! - -## Regresión polinomial - -Otro tipo de regresión lineal es la regresión polinomial. Mientras algunas veces existe una relación lineal entre las variables - entre más grande el volumen de la calabaza, mayor el precio - algunas veces estas relaciones no pueden ser graficadas como un plano o línea recta. - -✅ Aquí hay [más ejemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de los datos que podrían usar regresión polinomial. - -Da un vistazo más a la relación entre Variedad a Precio en la gráfica anterior. ¿Parece que el gráfico de dispersión debería ser analizado necesariamente por una línea recta? Quizá no. En este caso, puedes probar la regresión polinomial. - -✅ Los polinomios son expresiones matemáticas que pueden consistir en una o más variables y coeficientes. - -La regresión polinomial crea una línea curva para ajustar mejor los datos no lineales. - -1. Recreemos un dataframe poblado con un segmento de los datos originales de las calabazas: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -Una buena forma de visualizar las correlaciones entre los datos en los dataframes es mostrarlos en una gráfica 'coolwarm': - -2. Usa el método `Background_gradient()` con `coolwarm` como valor de su argumento: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - - Este código crea un mapa de calor: - ![Un mapa de calor mostrando correlación de datos](../images/heatmap.png) - -Viendo esta gráfica, puedes visualizar la buena correlación entre Paquete y Precio. Así que deberías ser capaz de crear un modelo algo mejor que el anterior. - -### Crea un pipeline - -Scikit-learn incluye una API útil para crear modelos de regresión polinomail - la [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Se crea un 'pipeline' que es una cadena de estimadores. En este caso, el pipeline incluye características polinomiales, o predicciones que forman un camino no lineal. - -1. Construye las columnas X e Y: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. Crea el pipeline llamando al método `make_pipeline()`: - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### Crea una secuencia - -En este punto, necesitas crear un nuevo dataframe con datos _ordenados_ para que así el pipeline pueda crear una secuencia. - -Agrega el siguiente código: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -Creaste un nuevo dataframe llamando `pd.DataFrame`. Luego ordenaste los valores al llamar `sort_values()`. Finalmente creaste un gráfico polinomial: - -![Un gráfico polinomial mostrando la relación paquete a precio](../images/polynomial.png) - -Puedes ver una línea curva que se ajusta mejor a tus datos. - -Revisemos la precisión del modelo: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - ¡Y voila! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -¡Es mejor! Intenta predecir un precio: - -### Haz un predicción - -¿Podemos ingresar un nuevo valor y obtener una predicción? - -Llama a `predict()` para hacer una predicción: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - - Se te presenta esta predicción: - - ```output - array([[46.34509342]]) - ``` - -¡Hace sentido, dado el gráfico! Y, si este es un mejor modelo que el anterior, viendo los mismos datos, ¡necesitas presupuestar para estas calabazas más caras! - -🏆 ¡Bien hecho! Creaste dos modelos de regresión en una lección. En la sección final de regresión, aprenderás acerca de la regresión logística para determinar categorías. - ---- - -## 🚀Desafío - -Prueba variables diferentes en este notebook para ver cómo la correlación corresponde a la precisión del modelo. - -## [Examen posterior a la lección](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14?loc=es) - -## Revisión y auto-estudio - -En esta lección aprendimos acerca de la regresión lineal. Existen otros tipos importantes de regresión. Lee acerca de las técnicas paso a paso (Stepwise), cresta (Ridge), Lazo y red elástica (Lasso and Elasticnet). Un buen curso para estudiar para aprender más es el [Curso de aprendizaje estadístico de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) - -## Asignación - -[Construye un modelo](assignment.es.md) diff --git a/2-Regression/3-Linear/translations/README.id.md b/2-Regression/3-Linear/translations/README.id.md deleted file mode 100644 index 66c8908b..00000000 --- a/2-Regression/3-Linear/translations/README.id.md +++ /dev/null @@ -1,335 +0,0 @@ -# Bangun sebuah model regresi dengan Scikit-learn: regresi dua arah - -![Infografik regresi linear vs polinomial](../images/linear-polynomial.png) -> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kuis pra-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) -### Pembukaan - -Selama ini kamu telah menjelajahi apa regresi itu dengan data contoh yang dikumpulkan dari *dataset* harga labu yang kita akan gunakan terus sepanjang pelajaran ini. Kamu juga telah memvisualisasikannya dengan Matplotlib. - -Sekarang kamu sudah siap terjun ke dalam regresi untuk ML. Dalam pelajaran ini, kamu akan belajar lebih tentang dua jenis regresi: _regresi linear sederhana_ dan _regresi polinomial_ serta sedikit matematika yang mendasari kedua teknik ini. - -> Sepanjang kurikulum ini, kami mengasumsi kamu punya pengetahuan matematika yang minim dan ingin tetap membuat pelajaran ini terjangkau bagi murid-murid dari bidang-bidang lain. Jadi perhatikan catatan, 🧮 info, diagram, dan alat-alat belajar lainnya untuk membantu pemahaman. - -### Prasyarat - -Kamu harusnya sudah terbiasa sekarang dengan struktur data labu yang kita sedang teliti. Datanya harusnya sudah dimuat dan dibersihkan dalam file _notebook.ipynb_ pelajaran ini. Dalam file ini, harga labu ditampilkan per bushel dalam *dataframe* yang bari. Pastikan kamu bisa menjalankan *notebook-notebook* ini di *kernels* di Visual Studio Code. - -### Persiapan - -Ingat, kamu sedang memuat data ini untuk menanyakan pertanyaan darinya. - -- Kapankah waktu terbaik untuk membeli labu? -- Saya kira-kira harus bayar berapa untuk satu kotak labu mini? -- Apa saya sebaiknya membelinya dalam keranjang-keranjang setengah bushel atau kardus-kardus 1 1/9 bushel? -Ayo terjun lebih lagi ke dalam data ini. - -Dalam pelajaran sebelumnya, kamu membuat sebuah *dataframe* Pandas, mengisinya dengan sebagian *dataset* orisinal, dan menstandarisasi harganya per bushel. Tetapi, dengan begitu, kamu hanya dapat mengumpul sekitar 400 titik data dan itupun hanya untuk bulan-bulan musim gugur. - -Lihatlah data yang kita sudah muat dalam *notebook* yang terlampir pelajaran ini. Data telah di muat dan sebuah petak sebar inisial telah digambar untuk menunjukkan data per bulan. Mungkin kita bisa dapat lebih banyak detail tentang sifat datanya dengan membersih-bersihkannya lebih lagi. - -## Sebuah garis regresi linear - -Seperti yang kamu telah belajar dalam Pelajaran 1, tujuan sebuah latihan regresi linear adalah untuk dapat menggambar sebuah garis untuk: - -- **Menunjukkan hubungan antar-variabel**. Menunjukkan hubungan antara variabel-variabel. -- **Membuat prediksi**. Membuat prediksi akurat tentang di mana sebuah titik data baru akan terletak berhubungan dengan garis tersebut. - -Dalam kasus **Regresi Kuadrat Terkecil (_Least-Squares Regression_)**, biasanya garis seperti ini digambar. Istilah 'kuadrat terkecil' berarti semua titik data yang mengitari garis regresi dikuadratkan dan dijumlahkan. Secara ideal, harusnya jumlah akhirnya sekecil mungkin, karena kita ingin kesalahan (error) terkecil, alias `kuadrat terkecil`. - -Kita melakukan itu sebab kita ingin memodelkan sebuah garis yang jarak kumulatifnya dari semua titik data itu sekecil mungkin. Kita juga mengkuadratkan setiap suku sebelum dijumlahkan karena kita fokus pada besarannya daripada arahnya. - -> **🧮 Tunjukkan matematikanya kepadaku** -> -> Garis ini, dipanggil _garis yang paling cocok_, dapat diekspresikan dalam [sebuah persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): -> -> ``` -> Y = a + bX -> ``` -> -> `X` adalah 'variabel penerang'. `Y` adalah 'variabel dependen'. Gradien garisnya adalah `b`, dan `a` adalah titik potong sumbu y yaitu nilai `Y` saat `X = 0`. -> ->![hitunglah gradiennya](../images/slope.png) -> -> Pertama, hitunglah gradien `b`. Infografik oleh [Jen Looper](https://twitter.com/jenlooper) -> -> Dalam kata lain, dan berhubungan pula dengan pertanyaan awal data labu kita "prediksikan harga satu bushel labu setiap bulan", `X` merujuk pada harganya, sedangkan `Y` akan merujuk pada bulan penjualan. -> ->![lengkapilah persamaan ini](../images/calculation.png) -> -> Hitunglah nilai Y. Kalau harganya $4, artinya pasti April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper) -> -> Matematika yang mengkalkulasi garis ini harus mendemonstrasikan gradien garisnya yang juga tergantung pada titik potongnya pada sumbu y, alias apa `Y`-nya saat `X = 0`. -> -> Kamu bisa melihat metode menghitung nilai-nilai ini di situs internet [*Math is Fun* (Matematika Itu Menyenangkan)](https://www.mathsisfun.com/data/least-squares-regression.html). Kunjungi [kalkulator kuadrat terkecil ini](https://www.mathsisfun.com/data/least-squares-calculator.html) juga untuk melihat bagaimana nomor-nomor ini mengubah garisnya. - -## Korelasi - -Satu lagi yang harus dipahami adalah **Koefisien Korelasi** antara variabel X dan Y yang tersedia. Menggunakan sebuah petak sebar, kamu bisa memvisualisasi korelasi ini dengan cepat. Sebuah grafik dengan titik-titik data yang tersebar rapi seperti sebuah garis mempunyai korelasi yang tinggi. Namun, sebuah grafik dengan titik-titik data yang tersebar di mana-mana antara X dan Y mempunyai korelasi yang rendah. - -Sebuah model regresi linear yang bagus akan mempunyai Koefisien Korelasi yang tinggi (lebih dekat ke 1 daripada ke 0) menggunakan metode Regresi Kuadrat Terkecil dengan sebuah garis regresi. - -✅ Jalankan *notebook* yang terlampir dalam pelajaran ini dan lihatlah petak sebar City (Kota) ke Price (Harga). Apa data yang menghubungkan City ke Price untuk penjualan labu mempunyai korelasi yang tinggi atau rendah kelihatannya? - - -## Siapkan datamu untuk regresi - -Sekarang dengan pemahamanmu mengenai matematika di balik latihan ini, buatlah sebuah model regresi untuk melihat apa kamu bisa memprediksi paket labu yang mana yang harganya paling baik. Seorang pembeli labu akan ingin mengetahui informasi ini untuk mengoptimasi pembelian labu mereka. - -Karena kamu akan menggunakan Scikit-learn, tidak usah mengerjakan ini dengan tangan (walaupun bisa sih!). Dalam blok memrosesan data utama *notebook*-mu untuk pelajaran ini, tambahlah sebuah *library* dari Scikit-learn untuk mengkonversi semua data *string* menjadi nomor secara otomatis: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -Kalau kamu sekarang simak *dataframe* new_punkins, kamu akan lihat bahwa semua *string* sudah dijadikan nomor. Ini lebih susah untuk kita baca, tetapi jauh lebih mudah untuk Scikit-learn! -Sekarang kamu bisa membuat lebih banyak keputusan berakal (tidak hanya tebak-tebak dari petak sebarnya) tentang data yang paling cocok untuk regresi. - -Coba cari sebuah korelasi bagus antara dua titik data yang berpotensi untuk membangun sebuah model prediksi yang baik. Ternyata, hanya ada korelasi yang lemah antara City dan Price: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -Meskipun begitu, ada korelasi yang sedikit lebih baik antara Package (Paket) dan Price (Harga). Masuk akal juga kan? Biasanya, lebih besar kardusnya, lebih mahal harganya. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -Sebuah pertanyaan bagus untuk ditanyakan dari data ini adalah "Kira-kira harga sebuah paket labu berapa?" - -Mari membangun sebuah model regresi - -## Membangun sebuah model linear - -Sebelum membangun modelmu, rapikanlah datamu sekali lagi. Buanglah sebuah data nil (null) dan periksalah sekali lagi datanya kelihatannya seperti apa. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -Lalu, buatlah sebuah *dataframe* baru dari set minimal ini dan *print*: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. Sekarang kamu bisa menetapkan data koordinat X dan y-mu: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -✅ Apa yang sedang terjadi di sini? Kamu sedang menggunakan [notasi perpotongan Python (*Python slice notation*)](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) untuk membuat dua *array* untuk mengisi `X` dan `y`. - -1. Selanjutnya, mulailah rutin pembangunan model: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Karena korelasinya tidak begitu baik, model yang didapatkan tidak terlalu akurat. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -2. Kamu bisa memvisualisasi garis yang digambarkan dalam proses ini: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - ![Sebuah petak sebar yang menunjukkan hubungan antara paket dan harga](../images/linear.png) - -3. Ujilah modelnya dengan sebuah jenis labu hipotetis: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - Harga yang dihasilkan untuk jenis labu mitologis ini adalah: - - ```output - array([[33.15655975]]) - ``` - -Nomor itu masuk akal jikalau logika garis regresinya benar. - -🎃 Selamat, kamu baru saja membuat sebuah model yang bisa membantu memprediksi harga beberapa jenis labu. Namun, kamu masih bisa membuatnya lebih baik! - -## Regresi polinomial - -Jenis lain regresi linear adalah regresi polinomial. Walaupun kadangkali ada hubungan linear antara variabel-variabel — lebih besar volume labunya, lebih tinggi harganya — kadangkali hubungan-hubungan ini tidak bisa digambarkan sebagai sebuah bidang atau garis lurus. - -✅ Ini ada [beberapa contoh data lain](https://online.stat.psu.edu/stat501/lesson/9/9.8) yang bisa menggunakan regresi polinomial - -Tengok kembali hubungan antara Variety (Jenis) dan Price (Harga) dalam grafik sebelumnya. Apa petak sebar ini terlihat seperti harus dianalisis dengan sebuah garis lurus? Mungkin tidak. Kali ini, kamu bisa mencoba regresi polinomial. - -✅ Polinomial adalah sebuah pernyataan matematika yang mempunyai satu atau lebih variabel dan koefisien disusun menjadi suku-suku. - -Regresi polinomial menghasilkan sebuah garis lengkung supaya lebih cocok dengan data non-linear. - -1. Mari kita membuat sebuah *dataframe* yang diisi sebuah segmen dari data orisinal labu: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -Sebuah cara bagus untuk memvisualisasi korelasi-korelasi antara data dalam *dataframe-dataframe* adalah untuk menampilkannya dalam sebuah peta '*coolwarm*' (panas-dingin): - -2. Gunakan fungsi `Background_gradient()` dengan `coolwarm` sebagai argumennya: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - This code creates a heatmap: - Kode ini membuat sebuah peta panas - ![Sebuah peta panas yang menunjukkan korelasi data](../images/heatmap.png) - -Melihat peta ini, kamu bisa memvisualisasikan korelasi yang baik antara Package dan Price. Jadi kamu seharusnya bisa membuat sebuah model yang lebih baik daripada yang sebelumnya. - -### Buatlah sebuah *pipeline* - -Scikit-learn mempunyai sebuah API yang berguna untuk membangun model regresi polinomial — [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Sebuah '*pipeline*' adalah sebuah rantai penaksir. Dalam kasus ini, *pipeline* ini mempunyai fitur-fitur polinomial, atau prediksi-prediksi yang membuat garis non-linear. - -1. Bangunlah kolom X dan y: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. Buatlah *pipeline*-nya dengan fungsi `make_pipeline()`: - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### Buatlah sebuah barisan - -Di sini, kamu harus membuat sebuah *dataframe* baru dengan data yang _berurutan_ supaya *pipeline*-nya bisa membuat sebuah barisan. - -Tambahlah kode ini: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -Kamu membuat sebuah *dataframe* baru dengan fungsi `pd.DataFrame`. Lalu kamu mengurutkan isinya dengan fungsi `sort_values()`. Akhirnya kamu membuat sebuah bagan polinomial: - -![Sebuah bagan polinomial yang menunjukkan hubungan antara paket dan harga](../images/polynomial.png) - -Kamu bisa melihat garis lengkungnya yang lebih cocok terhadap datamu. - -Ayo periksa akurasi modelnya: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Nah! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -Itu bagus! Coba memprediksi harga: - -### Buatlah sebuah prediksi - -Apa kita bisa memberi input dan dapat sebuah prediksi? - -Pakai fungsi `predict()` untuk membuat prediksi: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - Kamu diberi prediksi ini: - - ```output - array([[46.34509342]]) - ``` - -Itu sangat masuk akal dengan bagan sebelumnya! Selain itu, jika ini model lebih baik daripada yang sebelumnya dengan data ini, kamu bisa siap untuk labu-labu yang lebih mahal ini! - -🏆 Mantap sekali! Kamu membuat dua model regresi dalam satu pelajaran. Dalam bagian terakhir mengenai regresi, kamu akan belajar tentang regresi logistik untuk pengkategorisasian. - ---- -## 🚀 Tantangan - -Coba-cobalah variabel-variabel yang lain di *notebook* ini untuk melihat bagaimana korelasi berhubungan dengan akurasi model. - -## [Kuis pasca-ceramah](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) - -## Review & Pembelajaran Mandiri - -Dalam pelajaran ini kita belajar tentang regresi linear. Ada banyak jenis regresi lain yang penting pula. Bacalah tentang teknik *Stepwise*, *Ridge*, *Lasso*, dan *Elasticnet*. [Kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) juga baik untuk belajar lebih lanjut. - -## Tugas - -[Buatlah sebuah model](../assignment.md) diff --git a/2-Regression/3-Linear/translations/README.it.md b/2-Regression/3-Linear/translations/README.it.md deleted file mode 100644 index dce65d9a..00000000 --- a/2-Regression/3-Linear/translations/README.it.md +++ /dev/null @@ -1,339 +0,0 @@ -# Costruire un modello di regressione usando Scikit-learn: regressione in due modi - -![Infografica di regressione lineare e polinomiale](../images/linear-polynomial.png) -> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [Quiz pre-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/?loc=it) - -### Introduzione - -Finora si è esplorato cos'è la regressione con dati di esempio raccolti dall'insieme di dati relativo ai prezzi della zucca, che verrà usato in questa lezione. Lo si è anche visualizzato usando Matplotlib. - -Ora si è pronti per approfondire la regressione per machine learning. In questa lezione si imparerà di più su due tipi di regressione: _regressione lineare di base_ e _regressione polinomiale_, insieme ad alcuni dei calcoli alla base di queste tecniche. - -> In questo programma di studi, si assume una conoscenza minima della matematica, e si cerca di renderla accessibile agli studenti provenienti da altri campi, quindi si faccia attenzione a note, 🧮 didascalie, diagrammi e altri strumenti di apprendimento che aiutano la comprensione. - -### Prerequisito - -Si dovrebbe ormai avere familiarità con la struttura dei dati della zucca che si sta esaminando. Lo si può trovare precaricato e prepulito nel file _notebook.ipynb_ di questa lezione. Nel file, il prezzo della zucca viene visualizzato per bushel (staio) in un nuovo dataframe. Assicurasi di poter eseguire questi notebook nei kernel in Visual Studio Code. - -### Preparazione - -Come promemoria, si stanno caricando questi dati in modo da porre domande su di essi. - -- Qual è il momento migliore per comprare le zucche? -- Che prezzo ci si può aspettare da una cassa di zucche in miniatura? -- Si devono acquistare in cestini da mezzo bushel o a scatola da 1 1/9 bushel? Si continua a scavare in questi dati. - -Nella lezione precedente, è stato creato un dataframe Pandas e si è popolato con parte dell'insieme di dati originale, standardizzando il prezzo per lo bushel. In questo modo, tuttavia, si sono potuti raccogliere solo circa 400 punti dati e solo per i mesi autunnali. - -Si dia un'occhiata ai dati precaricati nel notebook di accompagnamento di questa lezione. I dati sono precaricati e viene tracciato un grafico a dispersione iniziale per mostrare i dati mensili. Forse si può ottenere qualche dettaglio in più sulla natura dei dati pulendoli ulteriormente. - -## Una linea di regressione lineare - -Come si è appreso nella lezione 1, l'obiettivo di un esercizio di regressione lineare è essere in grado di tracciare una linea per: - -- **Mostrare le relazioni tra variabili**. -- **Fare previsioni**. Fare previsioni accurate su dove cadrebbe un nuovo punto dati in relazione a quella linea. - -È tipico della **Regressione dei Minimi Quadrati** disegnare questo tipo di linea. Il termine "minimi quadrati" significa che tutti i punti dati che circondano la linea di regressione sono elevati al quadrato e quindi sommati. Idealmente, quella somma finale è la più piccola possibile, perché si vuole un basso numero di errori, o `minimi quadrati`. - -Lo si fa perché si vuole modellare una linea che abbia la distanza cumulativa minima da tutti i punti dati. Si esegue anche il quadrato dei termini prima di aggiungerli poiché interessa la grandezza piuttosto che la direzione. - -> **🧮 Mostrami la matematica** -> -> Questa linea, chiamata _linea di miglior adattamento_ , può essere espressa da [un'equazione](https://en.wikipedia.org/wiki/Simple_linear_regression): -> -> ``` -> Y = a + bX -> ``` -> -> `X` è la "variabile esplicativa". `Y` è la "variabile dipendente". La pendenza della linea è `b` e `a` è l'intercetta di y, che si riferisce al valore di `Y` quando `X = 0`. -> -> ![calcolare la pendenza](../images/slope.png) -> -> Prima, calcolare la pendenza `b`. Infografica di [Jen Looper](https://twitter.com/jenlooper) -> -> In altre parole, facendo riferimento alla domanda originale per i dati sulle zucche: "prevedere il prezzo di una zucca per bushel per mese", `X` si riferisce al prezzo e `Y` si riferirisce al mese di vendita. -> -> ![completare l'equazione](../images/calculation.png) -> -> Si calcola il valore di Y. Se si sta pagando circa $4, deve essere aprile! Infografica di [Jen Looper](https://twitter.com/jenlooper) -> -> La matematica che calcola la linea deve dimostrare la pendenza della linea, che dipende anche dall'intercetta, o dove `Y` si trova quando `X = 0`. -> -> Si può osservare il metodo di calcolo per questi valori sul sito web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) . Si visiti anche [questo calcolatore dei minimi quadrati](https://www.mathsisfun.com/data/least-squares-calculator.html) per vedere come i valori dei numeri influiscono sulla linea. - -## Correlazione - -Un altro termine da comprendere è il **Coefficiente di Correlazione** tra determinate variabili X e Y. Utilizzando un grafico a dispersione, è possibile visualizzare rapidamente questo coefficiente. Un grafico con punti dati sparsi in una linea ordinata ha un'alta correlazione, ma un grafico con punti dati sparsi ovunque tra X e Y ha una bassa correlazione. - -Un buon modello di regressione lineare sarà quello che ha un Coefficiente di Correlazione alto (più vicino a 1 rispetto a 0) utilizzando il Metodo di Regressione dei Minimi Quadrati con una linea di regressione. - -✅ Eseguire il notebook che accompagna questa lezione e guardare il grafico a dispersione City to Price. I dati che associano la città al prezzo per le vendite di zucca sembrano avere una correlazione alta o bassa, secondo la propria interpretazione visiva del grafico a dispersione? - - -## Preparare i dati per la regressione - -Ora che si ha una comprensione della matematica alla base di questo esercizio, si crea un modello di regressione per vedere se si può prevedere quale pacchetto di zucche avrà i migliori prezzi per zucca. Qualcuno che acquista zucche per una festa con tema un campo di zucche potrebbe desiderare che queste informazioni siano in grado di ottimizzare i propri acquisti di pacchetti di zucca per il campo. - -Dal momento che si utilizzerà Scikit-learn, non c'è motivo di farlo a mano (anche se si potrebbe!). Nel blocco di elaborazione dati principale del notebook della lezione, aggiungere una libreria da Scikit-learn per convertire automaticamente tutti i dati di tipo stringa in numeri: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -Se si guarda ora il dataframe new_pumpkins, si vede che tutte le stringhe ora sono numeriche. Questo rende più difficile la lettura per un umano ma molto più comprensibile per Scikit-learn! -Ora si possono prendere decisioni più consapevoli (non solo basate sull'osservazione di un grafico a dispersione) sui dati più adatti alla regressione. - -Si provi a trovare una buona correlazione tra due punti nei propri dati per costruire potenzialmente un buon modello predittivo. A quanto pare, c'è solo una debole correlazione tra la città e il prezzo: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -Tuttavia, c'è una correlazione leggermente migliore tra il pacchetto e il suo prezzo. Ha senso, vero? Normalmente, più grande è la scatola dei prodotti, maggiore è il prezzo. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -Una buona domanda da porre a questi dati sarà: "Che prezzo posso aspettarmi da un determinato pacchetto di zucca?" - -Si costruisce questo modello di regressione - -## Costruire un modello lineare - -Prima di costruire il modello, si esegue un altro riordino dei dati. Si eliminano tutti i dati nulli e si controlla ancora una volta che aspetto hanno i dati. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -Quindi, si crea un nuovo dataframe da questo set minimo e lo si stampa: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. Ora si possono assegnare i dati delle coordinate X e y: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` - -Cosa sta succedendo qui? Si sta usando [la notazione slice Python](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) per creare array per popolare `X` e `y`. - -2. Successivamente, si avvia le routine di creazione del modello di regressione: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Poiché la correlazione non è particolarmente buona, il modello prodotto non è molto accurato. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. Si può visualizzare la linea tracciata nel processo: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - - ![Un grafico a dispersione che mostra il rapporto tra pacchetto e prezzo](../images/linear.png) - -4. Si testa il modello contro una varietà ipotetica: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - Il prezzo restituito per questa varietà mitologica è: - - ```output - array([[33.15655975]]) - ``` - -Quel numero ha senso, se la logica della linea di regressione è vera. - -🎃 Congratulazioni, si è appena creato un modello che può aiutare a prevedere il prezzo di alcune varietà di zucche. La zucca per le festività sarà bellissima. Ma probabilmente si può creare un modello migliore! - -## Regressione polinomiale - -Un altro tipo di regressione lineare è la regressione polinomiale. Mentre a volte c'è una relazione lineare tra le variabili - più grande è il volume della zucca, più alto è il prezzo - a volte queste relazioni non possono essere tracciate come un piano o una linea retta. - -✅ Ecco [alcuni altri esempi](https://online.stat.psu.edu/stat501/lesson/9/9.8) di dati che potrebbero utilizzare la regressione polinomiale - -Si dia un'altra occhiata alla relazione tra Varietà e Prezzo nel tracciato precedente. Questo grafico a dispersione deve essere necessariamente analizzato da una linea retta? Forse no. In questo caso, si può provare la regressione polinomiale. - -✅ I polinomi sono espressioni matematiche che possono essere costituite da una o più variabili e coefficienti - -La regressione polinomiale crea una linea curva per adattare meglio i dati non lineari. - -1. Viene ricreato un dataframe popolato con un segmento dei dati della zucca originale: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -Un buon modo per visualizzare le correlazioni tra i dati nei dataframe è visualizzarli in un grafico "coolwarm": - -2. Si usa il metodo `Background_gradient()` con `coolwarm` come valore dell'argomento: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - - Questo codice crea una mappa di calore: - ![Una mappa di calore che mostra la correlazione dei dati](../images/heatmap.png) - -Guardando questo grafico, si può visualizzare la buona correlazione tra Pacchetto e Prezzo. Quindi si dovrebbe essere in grado di creare un modello un po' migliore dell'ultimo. - -### Creare una pipeline - -Scikit-learn include un'API utile per la creazione di modelli di regressione polinomiale: l'[API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Viene creata una 'pipeline' che è una catena di stimatori. In questo caso, la pipeline include caratteristiche polinomiali o previsioni che formano un percorso non lineare. - -1. Si costruiscono le colonne X e y: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. Si crea la pipeline chiamando il metodo `make_pipeline()` : - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### Creare una sequenza - -A questo punto, è necessario creare un nuovo dataframe con dati _ordinati_ in modo che la pipeline possa creare una sequenza. - -Si aggiunge il seguente codice: - -```python -df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) -df.sort_values(by='x',inplace = True) -points = pd.DataFrame(df).to_numpy() - -plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) -plt.xlabel('Package') -plt.ylabel('Price') -plt.scatter(X,y, color="black") -plt.show() -``` - -Si è creato un nuovo dataframe chiamato `pd.DataFrame`. Quindi si sono ordinati i valori chiamando `sort_values()`. Alla fine si è creato un grafico polinomiale: - -![Un grafico polinomiale che mostra la relazione tra pacchetto e prezzo](../images/polynomial.png) - -Si può vedere una linea curva che si adatta meglio ai dati. - -Si verifica la precisione del modello: - -```python -accuracy_score = pipeline.score(X_train,y_train) -print('Model Accuracy: ', accuracy_score) -``` - -E voilà! - -```output -Model Accuracy: 0.8537946517073784 -``` - -Ecco, meglio! Si prova a prevedere un prezzo: - -### Fare una previsione - -E possibile inserire un nuovo valore e ottenere una previsione? - -Si chiami `predict()` per fare una previsione: - -```python -pipeline.predict( np.array([ [2.75] ]) ) -``` - -Viene data questa previsione: - -```output -array([[46.34509342]]) -``` - -Ha senso, visto il tracciato! Se questo è un modello migliore del precedente, guardando gli stessi dati, si deve preventivare queste zucche più costose! - -Ben fatto! Sono stati creati due modelli di regressione in una lezione. Nella sezione finale sulla regressione, si imparerà a conoscere la regressione logistica per determinare le categorie. - ---- - -## 🚀 Sfida - -Testare diverse variabili in questo notebook per vedere come la correlazione corrisponde all'accuratezza del modello. - -## [Quiz post-lezione](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/?loc=it) - -## Revisione e Auto Apprendimento - -In questa lezione si è appreso della regressione lineare. Esistono altri tipi importanti di regressione. Leggere le tecniche Stepwise, Ridge, Lazo ed Elasticnet. Un buon corso per studiare per saperne di più è il [corso Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) - -## Compito - -[Costruire un modello](assignment.it.md) diff --git a/2-Regression/3-Linear/translations/README.ja.md b/2-Regression/3-Linear/translations/README.ja.md deleted file mode 100644 index 8a99b71a..00000000 --- a/2-Regression/3-Linear/translations/README.ja.md +++ /dev/null @@ -1,334 +0,0 @@ -# Scikit-learnを用いた回帰モデルの構築: 回帰を行う2つの方法 - -![線形回帰 vs 多項式回帰 のインフォグラフィック](../images/linear-polynomial.png) -> [Dasani Madipalli](https://twitter.com/dasani_decoded) によるインフォグラフィック -## [講義前のクイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) -### イントロダクション - -これまで、このレッスンで使用するカボチャの価格データセットから集めたサンプルデータを使って、回帰とは何かを探ってきました。また、Matplotlibを使って可視化を行いました。 - -これで、MLにおける回帰をより深く理解する準備が整いました。このレッスンでは、2種類の回帰について詳しく説明します。基本的な線形回帰 (_basic linear regression_)と多項式回帰 (_polynomial regression_)の2種類の回帰について、その基礎となる数学を学びます。 - -> このカリキュラムでは、最低限の数学の知識を前提とし、他の分野の学生にも理解できるようにしていますので、理解を助けるためのメモ、🧮吹き出し、図などの学習ツールをご覧ください。 - -### 事前確認 - -ここでは、パンプキンデータの構造について説明しています。このレッスンの_notebook.ipynb_ファイルには、事前に読み込まれ、整形されたデータが入っています。このファイルでは、カボチャの価格がブッシェル単位で新しいデータフレームに表示されています。 これらのノートブックを、Visual Studio Codeのカーネルで実行できることを確認してください。 - -### 準備 - -忘れてはならないのは、データを読み込んだら問いかけを行うことです。 - -- カボチャを買うのに最適な時期はいつですか? -- ミニカボチャ1ケースの価格はどのくらいでしょうか? -- 半ブッシェルのバスケットで買うべきか、1 1/9ブッシェルの箱で買うべきか。 - -データを掘り下げていきましょう。 - -前回のレッスンでは、Pandasのデータフレームを作成し、元のデータセットの一部を入力して、ブッシェル単位の価格を標準化しました。しかし、この方法では、約400のデータポイントしか集めることができず、しかもそれは秋の期間のものでした。 - -このレッスンに付属するノートブックで、あらかじめ読み込んでおいたデータを見てみましょう。データが事前に読み込まれ、月毎のデータが散布図として表示されています。データをもっと綺麗にすることで、データの性質をもう少し知ることができるかもしれません。 - -## 線形回帰 - -レッスン1で学んだように、線形回帰の演習では、以下のような線を描けるようになることが目標です。 - -- **変数間の関係を示す。** -- **予測を行う。** 新しいデータポイントが、その線のどこに位置するかを正確に予測することができる。 - -このような線を描くことは、**最小二乗回帰 (Least-Squares Regression)** の典型的な例です。「最小二乗」という言葉は、回帰線を囲むすべてのデータポイントとの距離が二乗され、その後加算されることを意味しています。理想的には、最終的な合計ができるだけ小さくなるようにします。これはエラーの数、つまり「最小二乗」の値を小さくするためです。 - -これは、すべてのデータポイントからの累積距離が最小となる直線をモデル化したいためです。また、方向ではなく大きさに注目しているので、足す前に項を二乗します。 - -> **🧮 Show me the math** -> -> この線は、_line of best fit_ と呼ばれ、[方程式](https://en.wikipedia.org/wiki/Simple_linear_regression) で表すことができます。 -> -> ``` -> Y = a + bX -> ``` -> -> `X`は「説明変数」です。`Y`は「目的変数」です。`a`は切片で`b`は直線の傾きを表します。`X=0`のとき、`Y`の値は切片`a`となります。 -> ->![傾きの計算](../images/slope.png) -> -> はじめに、傾き`b`を計算してみます。[Jen Looper](https://twitter.com/jenlooper) によるインフォグラフィック。 -> -> カボチャのデータに関する最初の質問である、「月毎のブッシェル単位でのカボチャの価格を予測してください」で言い換えてみると、`X`は価格を、`Y`は販売された月を表しています。 -> ->![方程式の計算](../images/calculation.png) -> -> Yの値を計算してみましょう。$4前後払っているなら、4月に違いありません![Jen Looper](https://twitter.com/jenlooper) によるインフォグラフィック。 -> -> 直線を計算する数学は、直線の傾きを示す必要がありますが、これは切片、つまり「X = 0」のときに「Y」がどこに位置するかにも依存します。 -> -> これらの値の計算方法は、[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) というサイトで見ることができます。また、[this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) では、値が線にどのような影響を与えるかを見ることができます。 - -## 相関関係 - -もう一つの理解すべき用語は、与えられたXとYの変数間の**相関係数 (Correlation Coefficient)** です。散布図を使えば、この係数をすぐに可視化することができます。データポイントがきれいな直線上に散らばっているプロットは、高い相関を持っていますが、データポイントがXとYの間のあらゆる場所に散らばっているプロットは、低い相関を持っています。 - -良い線形回帰モデルとは、最小二乗法によって求めた回帰線が高い相関係数 (0よりも1に近い)を持つものです。 - -✅ このレッスンのノートを開いて、「都市と価格」の散布図を見てみましょう。散布図の視覚的な解釈によると、カボチャの販売に関する「都市」と「価格」の関連データは、相関性が高いように見えますか、それとも低いように見えますか? - -## 回帰に用いるデータの準備 - -この演習の背景にある数学を理解したので、回帰モデルを作成して、どのパッケージのカボチャの価格が最も高いかを予測できるかどうかを確認してください。休日のパンプキンパッチ用にパンプキンを購入する人は、パッチ用のパンプキンパッケージの購入を最適化するために、この情報を必要とするかもしれません。 - -ここではScikit-learnを使用するので、手作業で行う必要はありません。レッスンノートのメインのデータ処理ブロックに、Scikit-learnのライブラリを追加して、すべての文字列データを自動的に数字に変換します。 - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -new_pumpkinsデータフレームを見ると、すべての文字列が数値になっているのがわかります。これにより、人が読むのは難しくなりましたが、Scikit-learnにとってはとても分かりやすくなりました。 -これで、回帰に最も適したデータについて、(散布図を見ただけではなく)より高度な判断ができるようになりました。 - -良い予測モデルを構築するために、データの2点間に良い相関関係を見つけようとします。その結果、「都市」と「価格」の間には弱い相関関係しかないことがわかりました。 - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -しかし、パッケージと価格の間にはもう少し強い相関関係があります。これは理にかなっていると思いますか?通常、箱が大きければ大きいほど、価格は高くなります。 - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -このデータに対する良い質問は、次のようになります。「あるカボチャのパッケージの価格はどのくらいになるか?」 - -この回帰モデルを構築してみましょう! - -## 線形モデルの構築 - -モデルを構築する前に、もう一度データの整理をしてみましょう。NULLデータを削除し、データがどのように見えるかをもう一度確認します。 - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -そして、この最小セットから新しいデータフレームを作成し、それを出力します。 - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. これで、XとYの座標データを割り当てることができます。 - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -✅ ここでは何をしていますか? Pythonの[スライス記法](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) を使って、`X`と`y`の配列を作成しています。 - -2. 次に、回帰モデル構築のためのルーチンを開始します。 - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - 相関関係があまり良くないので、生成されたモデルもあまり正確ではありません。 - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. 今回の過程で描かれた線を可視化します。 - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - ![パッケージと価格の関係を表す散布図](../images/linear.png) - -4. 架空の値に対してモデルをテストする。 - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - この架空の値に対して、以下の価格が返されます。 - - ```output - array([[33.15655975]]) - ``` - -回帰の線が正しく引かれていれば、その数字は理にかなっています。 - -🎃 おめでとうございます!数種類のカボチャの価格を予測するモデルを作成しました。休日のパンプキンパッチは美しいものになるでしょう。でも、もっと良いモデルを作れるかもしれません。 - -## 多項式回帰 - -線形回帰のもう一つのタイプは、多項式回帰です。時には変数の間に直線的な関係 (カボチャの量が多いほど、価格は高くなる)があることもありますが、これらの関係は、平面や直線としてプロットできないこともあります。 - -✅ 多項式回帰を使うことができる、[いくつかの例](https://online.stat.psu.edu/stat501/lesson/9/9.8) を示します。 - -先ほどの散布図の「品種」と「価格」の関係をもう一度見てみましょう。この散布図は、必ずしも直線で分析しなければならないように見えますか?そうではないかもしれません。このような場合は、多項式回帰を試してみましょう。 - -✅ 多項式とは、1つ以上の変数と係数で構成される数学的表現である。 - -多項式回帰では、非線形データをよりよく適合させるために曲線を作成します。 - -1. 元のカボチャのデータの一部を入力したデータフレームを作成してみましょう。 - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -データフレーム内のデータ間の相関関係を視覚化するには、「coolwarm」チャートで表示するのが良いでしょう。 - -2. `Background_gradient()` メソッドの引数に `coolwarm` を指定して使用します。 - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - -  このコードはヒートマップを作成します。 - ![データの相関関係を示すヒートマップ](../images/heatmap.png) - -このチャートを見ると、「パッケージ」と「価格」の間に正の相関関係があることが視覚化されています。つまり、前回のモデルよりも多少良いモデルを作ることができるはずです。 - -### パイプラインの作成 - -Scikit-learnには、多項式回帰モデルを構築するための便利なAPIである`make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) が用意されています。「パイプライン」は推定量の連鎖で作成されます。今回の場合、パイプラインには多項式の特徴量、非線形の経路を形成する予測値が含まれます。 - -1. X列とy列を作ります。 - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. `make_pipeline()` メソッドを呼び出してパイプラインを作成します。 - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### 系列の作成 - -この時点で、パイプラインが系列を作成できるように、ソートされたデータで新しいデータフレームを作成する必要があります。 - -以下のコードを追加します。 - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -`pd.DataFrame` を呼び出して新しいデータフレームを作成しました。次に`sort_values()` を呼び出して値をソートしました。最後に多項式のプロットを作成しました。 - -![パッケージと価格の関係を示す多項式のプロット](../images/polynomial.png) - -よりデータにフィットした曲線を確認することができます。 - -モデルの精度を確認してみましょう。 - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - これで完成です! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -いい感じです!価格を予測してみましょう。 - -### 予測の実行 - -新しい値を入力し、予測値を取得できますか? - -`predict()` メソッドを呼び出して、予測を行います。 - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - 以下の予測結果が得られます。 - - ```output - array([[46.34509342]]) - ``` - -プロットを見てみると、納得できそうです!そして、同じデータを見て、これが前のモデルよりも良いモデルであれば、より高価なカボチャのために予算を組む必要があります。 - -🏆 お疲れ様でした!1つのレッスンで2つの回帰モデルを作成しました。回帰に関する最後のセクションでは、カテゴリーを決定するためのロジスティック回帰について学びます。 - ---- -## 🚀チャレンジ - -このノートブックでいくつかの異なる変数をテストし、相関関係がモデルの精度にどのように影響するかを確認してみてください。 - -## [講義後クイズ](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) - -## レビュー & 自主学習 - -このレッスンでは、線形回帰について学びました。回帰には他にも重要な種類があります。Stepwise、Ridge、Lasso、Elasticnetなどのテクニックをご覧ください。より詳しく学ぶには、[Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) が良いでしょう。 - -## 課題 - -[モデル構築](./assignment.ja.md) diff --git a/2-Regression/3-Linear/translations/README.ko.md b/2-Regression/3-Linear/translations/README.ko.md deleted file mode 100644 index de898562..00000000 --- a/2-Regression/3-Linear/translations/README.ko.md +++ /dev/null @@ -1,338 +0,0 @@ -# Scikit-learn을 사용한 regression 모델 만들기: regression 2가지 방식 - -![Linear vs polynomial regression infographic](.././images/linear-polynomial.png) -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) - -### 소개 - -지금까지 이 강의에서 사용할 호박 가격 데이터셋에서 모은 샘플 데이터로 regression이 무엇인지 찾아보았습니다. Matplotlib을 사용하여 시각화했습니다. - -이제 ML의 regression에 대하여 더 깊게 파고 들 준비가 되었습니다. 이 강의에서, 2가지 타입의 regression에 대해 배웁니다: 이 기술의 기반이 되는 수학의 일부와 함께, _basic linear regression_ 과 _polynomial regression_. - - -> 이 커리큘럼 대부분에 걸쳐서, 수학에 대한 최소한의 지식을 가정하고, 다른 필드에서 온 학생들이 수학에 접근할 수 있도록 노력하므로, 이해를 돕기 위하여 노트, 🧮 callouts, 다이어그램과 기타 학습 도구를 찾아보세요. - -### 필요한 조건 - -지금즈음 조사하고 있던 호박 데이터의 구조에 익숙해집니다. 이 강의의 _notebook.ipynb_ 파일에서 preloaded와 pre-cleaned된 것을 찾을 수 있습니다. 파일에서, 호박 가격은 새로운 데이터프레임에서 bushel per로 보여집니다. Visual Studio Code의 커널에서 이 노트북을 실행할 수 있는 지 확인합니다. - -### 준비하기 - -참고하자면, 이러한 질문을 물어보기 위해서 이 데이터를 불러오고 있습니다. - -- 호박을 사기 좋은 시간은 언제인가요? -- 작은 호박 케이스의 가격은 얼마인가요? -- half-bushel 바구니 또는 1 1/9 bushel 박스로 사야 하나요? - -이 데이터로 계속 파봅시다. - -이전 강의에서, Pandas 데이터프레임을 만들고 원본 데이터셋의 일부를 채웠으며, bushel로 가격을 표준화했습니다. 그렇게 했지만, 가을에만 400개의 데이터 포인트를 모을 수 있었습니다. - -이 강의에 첨부된 notebook에서 미리 불러온 데이터를 봅시다. 데이터를 미리 불러오고 초기 scatterplot(산점도)이 월 데이터를 보여주도록 차트로 만듭니다. 더 정리하면 데이터의 특성에 대하여 조금 더 자세히 알 수 있습니다. - -## Linear regression 라인 - -1 강의에서 배웠던 것처럼, linear regression 연습의 목표는 라인을 그릴 수 있어야 합니다: - -- **변수 관계 보이기**. 변수 사이 관게 보이기 -- **예상하기**. 새로운 데이터 포인트가 라인과 관련해서 어디에 있는지 정확하게 예측합니다. - -이런 타입의 선을 그리는 것은 **Least-Squares Regression** 의 전형적입니다. 'least-squares'이라는 말은 regression 라인을 두른 모든 데이터 포인트가 제곱된 다음에 더하는 것을 의미합니다. 이상적으로, 적은 수의 오류, 또는 `least-squares`를 원하기 때문에, 최종 합계는 가능한 작아야 합니다. - -모든 데이터 포인트에서 누적 거리가 가장 짧은 라인을 모델링하기 원합니다. 방향보다 크기에 관심있어서 항을 더하기 전에 제곱합니다. - -> **🧮 Show me the math** -> -> _line of best fit_ 이라고 불리는 이 선은, [an equation](https://en.wikipedia.org/wiki/Simple_linear_regression)으로 표현할 수 있습니다: -> -> ``` -> Y = a + bX -> ``` -> -> `X` 는 '독립(설명) 변수'입니다. `Y`는 '종속 변수'입니다. 라인의 기울기는 `b`이고 `a`는 y-절편이며, `X = 0`일 떄 `Y`의 값을 나타냅니다. -> ->![calculate the slope](../images/slope.png) -> -> 우선, 기울기 `b`를 구합니다. Infographic by [Jen Looper](https://twitter.com/jenlooper) -> -> 즉, 호박의 원본 질문을 참조해봅니다 : "predict the price of a pumpkin per bushel by month", `X`는 가격을 나타내고 `Y`는 판매한 달을 나타냅니다. -> ->![complete the equation](../images/calculation.png) -> -> Y의 값을 구합니다. 만약 4달러 정도 준다면, 4월만 가능합니다! Infographic by [Jen Looper](https://twitter.com/jenlooper) -> -> 라인을 구하는 수학은 절편, 또는 `X = 0`일 때 `Y`가 위치한 곳에 따라, 달라지는 라인의 기울기를 볼 수 있어야 합니다. -> -> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 웹사이트에서 값을 구하는 방식을 지켜볼 수 있습니다. 그리고 [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html)를 찾아가서 숫자 값이 라인에 어떤 영향을 주는 지 볼 수 있습니다. - -## 상관 관계 - -이해할 하나의 용어는 주어진 X와 Y 변수 사이의 **Correlation Coefficient**입니다. scatterplot(산점도)를 사용해서, 이 계수를 빠르게 시각화할 수 있습니다. 데이터 포인트를 깔끔한 라인으로 흩어 둔 plot은 상관 관계가 높지만, 데이터 포인트가 X와 Y 사이 어디에나 흩어진 plot은 상관 관계가 낮습니다. - -좋은 linear regression 모델은 regression 라인과 같이 Least-Squares Regression 방식을 사용하여 (0 보다 1에 가까운) 높은 상관 계수를 가집니다. - -✅ 이 강위에서 같이 주는 노트북을 실행하고 City to Price의 scatterplot (산점도)를 봅니다. scatterplot (산점도)의 시각적 해석에 따르면, 호박 판매를 도시와 가격에 연관지으면 데이터가 높거나 낮은 상관 관계를 보이는 것 같나요? - - -## Regression를 위한 데이터 준비하기 - -지금부터 연습에 기반한 수학을 이해했으므로, Regression 모델을 만들어서 호박 가격이 괜찮은 호박 패키지를 예측할 수 있는 지 봅니다. holiday pumpkin patch를 위해서 호박을 사는 사람은 이 정보로 패치용 호박 패키지를 최적으로 사고 싶습니다. - -Scikit-learn을 사용할 예정이기 때문에, (할 수 있지만) 손으로 직접 할 필요가 없습니다. 수업 노트북의 주 데이터-처리 블록에서, Scikit-learn의 라이브러리를 추가하여 모든 문자열 데이터를 숫자로 자동 변환합니다: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -new_pumpkins 데이터프레임을 보면, 모든 문자열은 이제 숫자로 보입니다. 직접 읽기는 힘들지만 Scikit-learn은 더욱 더 이해하기 쉽습니다! -지금부터 regression에 잘 맞는 데이터에 대하여 (scatterplot(산점도) 지켜보는 것 말고도) 교육적인 결정을 할 수 있습니다. - -잠재적으로 좋은 예측 모델을 만드려면 데이터의 두 포인트 사이 좋은 상관 관계를 찾아야 합니다. 도시와 가격 사이에는 약한 상관 관계만 있다는, 사실이 밝혀졌습니다: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -하지만 패키지와 가격 사이에는 조금 더 큰 상관 관계가 있습니다. 이해가 되나요? 일반적으로, 농산물 박스가 클수록, 가격도 높습니다. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -데이터에 물어보기 좋은 질문은 이렇습니다: 'What price can I expect of a given pumpkin package?' - -regression 모델을 만들어봅니다 - -## linear 모델 만들기 - -모델을 만들기 전에, 데이터를 다시 정리합니다. Null 데이터를 드랍하고 데이터가 어떻게 보이는 지 다시 확인합니다. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -그러면, 최소 셋에서 새로운 데이터프레임을 만들고 출력합니다: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. 이제 X와 Y 좌표 데이터를 대입합니다: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -✅ 어떤 일이 생기나요? [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)으로 `X` 와 `y`를 채울 배열을 생성합니다. - -2. 다음으로, regression model-building 루틴을 시작합니다: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - 상관 관계가 좋지 못해서, 만들어진 모델은 딱히 정확하지 않습니다. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. 프로세스에서 그려진 라인을 시각화할 수 있습니다: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - ![A scatterplot showing package to price relationship](.././images/linear.png) - -4. 가상의 Variety에 대하여 모델을 테스트합니다: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - 전설적 Variety의 반품된 가격입니다: - - ```output - array([[33.15655975]]) - ``` - -regression 라인의 로직이 사실이라면, 숫자는 의미가 있습니다. - -🎃 축하드립니다. 방금 전에 몇 호박 종의 가격 예측하는 모델을 만들었습니다. holiday pumpkin patch는 아릅답습니다. 하지만 더 좋은 모델을 만들 수 있습니다! - -## Polynomial regression - -linear regression의 또 다른 타입은 polynomial regression 입니다. 때때로 변수 사이 linear 관계가 있지만 - 호박 볼륨이 클수록, 가격이 높아지는 - 이런 관계를 평면 또는 직선으로 그릴 수 없습니다. - -✅ polynomial regression을 사용할 수 있는 데이터의 [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8)입니다. - -이전 plot에서 다양성과 가격 사이 관계를 봅니다. scatterplot(산점도)이 반드시 직선으로 분석되어야 하는 것처럼 보이나요? 아마 아닐겁니다. 이 케이스에서, polynomial regression을 시도할 수 있습니다. - -✅ Polynomials는 하나 또는 더 많은 변수와 계수로 이루어 질 수 있는 수학적 표현식입니다. - -Polynomial regression은 nonlinear 데이터에 더 맞는 곡선을 만듭니다. - -1. 원본 호박 데이터의 세그먼트로 채워진 데이터프레임을 다시 만듭니다: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -데이터프레임의 데이터 사이 상관 관계를 시각화하는 좋은 방식은 'coolwarm' 차트에 보여주는 것입니다: - -2. 인수 값으로 `coolwarm`을 `Background_gradient()` 메소드에 사용합니다: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - 이 코드로 heatmap을 만듭니다: - ![A heatmap showing data correlation](.././images/heatmap.png) - -이 차트를 보고 있으면, 패키지와 가격 사이 좋은 상관 관계를 시각화할 수 있습니다. 그래서 이전의 모델보다 약간 좋게 만들 수 있어야 합니다. - -### 파이프라인 만들기 - -Scikit-learn에는 polynomial regression 모델을 만들 때 도움을 받을 수 있는 API가 포함되어 있습니다 - the `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). 추정량의 체인인 'pipeline'이 만들어집니다. 이 케이스는, 파이프라인에 polynomial features, 또는 nonlinear 경로를 만들 예측이 포함됩니다. - -1. X 와 y 열을 작성합니다: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. `make_pipeline()` 메소드를 불러서 파이프라인을 만듭니다: - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### 시퀀스 만들기 - -이 지점에서, 파이프라인이 시퀀스를 만들 수 있도록 _sorted_ 데이터로 새로운 데이터프레임을 만들 필요가 있습니다. - -해당 코드를 추가합니다: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -`pd.DataFrame`을 불러서 새로운 데이터프레임을 만듭니다. 그러면 `sort_values()`도 불러서 값을 정렬합니다. 마지막으로 polynomial plot을 만듭니다: - -![A polynomial plot showing package to price relationship](.././images/polynomial.png) - -데이터에 더 맞는 곡선을 볼 수 있습니다. - -모델의 정확도를 확인합시다: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - 그리고 짠! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -더 좋습니다! 가격을 예측해봅시다: - -### 예측하기 - -새로운 값을 넣고 예측할 수 있나요? - -`predict()`를 불러서 예측합니다: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - - 이렇게 예측됩니다: - - ```output - array([[46.34509342]]) - ``` - -주어진 plot에서, 의미가 있습니다! 그리고, 이전보다 모델이 더 좋아졌다면, 같은 데이터를 보고, 더 비싼 호박을 위한 예산이 필요합니다! - -🏆 좋습니다! 이 강의에서 두가지 regression 모델을 만들었습니다. regression의 마지막 섹션에서, 카테고리를 결정하기 위한 logistic regression에 대하여 배우게 됩니다. - ---- -## 🚀 도전 - -노트북에서 다른 변수를 테스트하면서 상관 관계가 모델 정확도에 어떻게 대응되는 지 봅니다. - -## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) - -## 검토 & 자기주도 학습 - -이 강의에서 Linear Regression에 대하여 배웠습니다. Regression의 다른 중요 타입이 있습니다. Stepwise, Ridge, Lasso 와 Elasticnet 기술에 대하여 읽어봅니다. 더 배우기 위해서 공부하기 좋은 코스는 [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)입니다. - -## 과제 - -[Build a Model](../assignment.md) \ No newline at end of file diff --git a/2-Regression/3-Linear/translations/README.pt-br.md b/2-Regression/3-Linear/translations/README.pt-br.md deleted file mode 100644 index fe3deadc..00000000 --- a/2-Regression/3-Linear/translations/README.pt-br.md +++ /dev/null @@ -1,342 +0,0 @@ -# Construindo um modelo de regressão usando Scikit-learn: regressão em dois modos - -![Infográfico de regressão linear versus polinomial](../images/linear-polynomial.png) - -> Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Questionário inicial](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13?loc=ptbr) - - -> ### [Esta liçao está disponível em R!](../solution/R/lesson_3-R.ipynb) - -### Introdução - -Até agora, você viu o que é regressão com dados de amostra coletados do conjunto de dados de preços de abóboras, usaremos esse conjunto de dados ao longo desta lição. Você também o visualizou usando Matplotlib. - -Você está pronto para mergulhar mais fundo na regressão para ML. Nesta lição, você aprenderá mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, junto com um pouco da matemática que fundamenta essas duas técnicas. - -> Ao longo deste curso, assumimos um conhecimento mínimo de matemática e procuramos torná-lo acessível para alunos vindos de outras áreas, portanto, preste atenção às notas, 🧮 legendas, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão. - -### Pré-requisito - -Você já deve saber mais ou menos como é a estrutura do conjunto de dados de abóboras que estávamos examinando. Você pode encontrá-lo já tratado no arquivo _notebook.ipynb_ desta lição. No arquivo, o preço da abóbora é exibido por bushel (aquela unidade de medida 😅) em um novo _dataframe_. Certifique-se de que você pode executar os _notebooks_ no Visual Studio Code. - -### Preparação - -Lembre-se de que você está carregando esses dados para produzir questionamentos a partir deles. - -- Qual é a melhor época para comprar abóboras? -- Que preço posso esperar de uma caixa de abóboras pequenas? -- Devo comprar abóboras em caixas de 1/2 bushel ou de 1 1/9? - -Vamos continuar investigando esses dados. - -Na lição anterior, você criou um _dataframe_ Pandas e o preencheu com parte do conjunto de dados original, padronizando o preço por bushel. Porém, ao fazer isso só foi possível reunir cerca de 400 pontos de dados e apenas para os meses de outono. - -Dê uma olhada nos dados que pré-carregamos no _notebook_ que acompanha esta lição. Os dados são pré-carregados e um gráfico de dispersão inicial é traçado para mostrar os dados do mês. Talvez possamos obter mais detalhes sobre a natureza dos dados fazendo uma limpeza. - -## Linha de regressão linear - -Como você aprendeu na [Lição 1](../../1-Tools/translations/README.pt-br.md), o objetivo de um exercício de regressão linear é ser capaz de traçar uma linha para: - -- **Mostrar relações entre variáveis**. -- **Fazer previsões**. Previsões sobre onde um novo ponto de dados ficaria em relação a linha. - -É típico da **Regressão de Mínimos Quadrados** traçar esse tipo de linha. O termo 'mínimos quadrados' significa que todos os pontos de dados ao redor da linha de regressão são quadrados e somados. Idealmente, essa soma final é a menor possível, porque queremos um baixo número de erros, ou `mínimos quadrados`. - -Fazemos isso porque queremos modelar uma linha que tenha a menor distância cumulativa de todos os nossos pontos de dados. Também elevamos os termos ao quadrado antes de adicioná-los, pois estamos preocupados com sua magnitude e não com sua direção. - -> **🧮 Me mostre a matemática** -> -> Esta linha, chamada de _linha de melhor ajuste_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression): -> -> ``` -> Y = a + bX -> ``` -> -> `X` é a 'variável explanatória'. `Y` é a 'variável dependente'. `b` é a inclinação da linha e `a` é a interseção de y, que se refere ao valor de `Y` quando `X = 0`. -> ->![Cálculo da inclinação](../images/slope.png) -> -> Primeiro, calculamos a inclinação `b` (Infográfico por [Jen Looper](https://twitter.com/jenlooper)). -> -> Em outras palavras, e se referindo à pergunta original sobre os dados das abóboras: "prever o preço mensal de uma abóbora por bushel", `X` seria o preço e `Y` o mês de venda. -> ->![Completando a equação](../images/calculation.png) -> -> Agora calcule o valor de `Y`. Se você está pagando cerca de US $ 4, então deve ser abril! (Infográfico por [Jen Looper](https://twitter.com/jenlooper)). -> -> Esse cálculo deve demonstrar a inclinação da linha, que também depende da interseção, ou onde `Y` está situado quando `X = 0`. -> -> Você pode observar o cálculo desses valores no site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) (Matemática é divertida). Visite também [esta calculadora de mínimos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para observar como os valores dos números afetam a linha. - -## Correlação - -Mais um termo a ser entendido é o **Coeficiente de correlação** entre as variáveis `X` e `Y` fornecidas. Usando um gráfico de dispersão, você pode visualizar rapidamente esse coeficiente. Um gráfico com pontos de dados espalhados quase no mesmo formato da linha tem alta correlação, mas um gráfico com pontos de dados espalhados por toda parte entre `X` e `Y` tem uma correlação baixa. - -Um bom modelo de regressão linear será aquele que tiver um coeficiente de correlação alto (mais próximo de 1 do que 0) usando o método de regressão por mínimos quadrados com uma linha de regressão. - -✅Execute o _notebook_ desta lição e observe o gráfico de dispersão usando as colunas City (cidade) e Price (preço). Os dados que associam a cidade ao preço para vendas de abóboras parecem ter alta ou baixa correlação? - - -## Prepare seus dados para regressão - -Usando a matemática por trás deste exercício, crie um modelo de regressão para prever qual melhor preço de caixa de abóbora. Um comprador de abóbora vai querer saber desse tipo de informação para otimizar suas compras. - -Como você usará o Scikit-learn, não há razão para fazer isso manualmente (mas você pode!). No bloco principal do seu _notebook_, adicione a biblioteca do Scikit-learn para converter automaticamente todos os dados string em números: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -Se você olhar para o _dataframe_ `new_pumpkins` agora, verá que todas as strings são números. Isso torna a leitura mais difícil, mas muito mais simples para o Scikit-learn! -Você pode tomar decisões robustas (não apenas com base em um gráfico de dispersão) sobre os melhores dados para a regressão. - -Tente encontrar uma boa correlação entre dois pontos de seus dados para construir um bom modelo preditivo. Vemos que há uma correlação baixa entre City e Price: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -Porém, há uma correlação um pouco melhor entre Package (pacote) e Price. Isso faz sentido, né? Normalmente, quanto maior a caixa de produtos, mais alto é o preço. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -Uma boa pergunta sobre esses dados seria: 'Que preço posso esperar de uma determinada caixa de abóbora?'. - -Vamos construir o modelo de regressão. - -## Construindo um modelo linear - -Antes de construir seu modelo, vamos tratar os dados mais uma vez. Elimine quaisquer dados nulos e verifique os dados mais uma vez. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -Em seguida, crie um novo _dataframe_ a partir desse conjunto e imprima-o: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. Atribua seu X e y: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -✅ Mas o que é isso? Você está usando a [notação slice](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) para criar _arrays_ e populá-los nas variáveis `X` and `y`. - -2. Comece as rotinas de construção do modelo de regressão: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Como a correlação não é tão boa, o modelo não é muito preciso. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. Para visualizar a linha, use o código abaixo: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - ![Um gráfico de dispersão mostrando a relação do preço e caixa de abóboras](../images/linear.png) - -4. Teste o modelo com um valor hipotético de variedade (coluna Variety): - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - O preço devolvido é: - - ```output - array([[33.15655975]]) - ``` - -O número faz sentido se a lógica da linha de regressão estiver correta. - -🎃 Parabéns, você acabou de criar um modelo que pode ajudar a prever o preço de uma caixa (ou outro tipo de medida) de abóboras. -Já vai ter decoração de halloween até o do ano que vem ou já pode aprimorar seu histórico de receitas que levam abóbora. - -Lembre-se que sempre tem como melhorar o seu modelo! - -## Regressão polinomial - -Outro tipo de regressão linear é a regressão polinomial. Embora às vezes haja uma relação linear entre as variáveis - quanto maior o volume da abóbora, mais alto é o preço -, às vezes essas relações não podem ser representadas como um plano ou uma linha reta. - -✅ Aqui estão [mais exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que podem usar regressão polinomial. - -Dê uma outra olhada na relação entre Variety e Price no gráfico anterior. Este gráfico de dispersão parece que deve ser analisado por uma linha reta? Talvez não. Nesse caso, você pode tentar a regressão polinomial. - -✅ Polinômios são expressões matemáticas que podem consistir em uma ou mais variáveis e coeficientes. - -A regressão polinomial cria uma linha curva para ajustar melhor os dados não lineares. - -1. Vamos recriar um _dataframe_ preenchido com um segmento dos dados originais: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -Uma boa forma de visualizar as correlações entre os dados em _dataframes_ é exibi-los em um gráfico '_coolwarm_': - -2. Use o método `Background_gradient()` com `coolwarm` como parâmetro: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - Este código cria um mapa de calor: - - ![Um mapa de calor mostrando a correlação dos dados](../images/heatmap.png) - -Este gráfico mostra a boa correlação entre Package e Price. Portanto, você pode criar um modelo melhor que o anterior. - -### Criando um _pipeline_ - -Scikit-learn inclui uma API para construir modelos de regressão polinomial - a [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. É criado um _pipeline_ que consiste em uma cadeia de estimadores. Nesse caso, o _pipeline_ inclui recursos polinomiais ou previsões que formam um caminho não linear. - -1. Populamos X e y: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. Criamos um _pipeline_ chamando a função `make_pipeline()`: - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### Criando uma sequência - -Neste momento, você precisa criar um novo _dataframe_ com dados _classificados_ para que o _pipeline_ possa criar uma sequência. - -Adicione o código abaixo: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -Você criou um novo _dataframe_ chamando `pd.DataFrame`. Em seguida, classificou os valores chamando `sort_values()`. Finalmente, você criou um gráfico polinomial: - -![Um gráfico polinomial que mostra a relação entre caixa e preço](../images/polynomial.png) - -Você pode ver uma linha curva que se ajusta melhor aos seus dados. - -Vamos verificar a acurácia do modelo: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Tcharam! ✨ - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -### Fazendo previsões - -Podemos inserir um novo valor e obter uma previsão? - -Chame `predict()` para pedir uma previsão: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - E conseguimos: - - ```output - array([[46.34509342]]) - ``` - -Agora faz sentido! -E se esse modelo for melhor que o anterior usando o mesmo conjunto de dados, você já pode fazer orçamentos para abóboras mais caras! 😂 - -🏆 Muito bem! Você criou dois modelos de regressão em uma lição. Na lição final, você aprenderá sobre regressão logística para determinar categorias 🤩. - ---- -## 🚀Desafio - -Teste variáveis diferentes neste _notebook_ para ver como a correlação corresponde à acurácia do modelo. - -## [Questionário para fixação](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14?loc=ptbr) - -## Revisão e Auto Aprendizagem - -Nesta lição, aprendemos sobre regressão linear. Existem outros tipos importantes de regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para um estudo mais aprofundado é o [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) (Curso de aprendizagem estatística de Stanford). - -## Tarefa - -[Construa um modelo](assignment.pt-br.md). diff --git a/2-Regression/3-Linear/translations/README.pt.md b/2-Regression/3-Linear/translations/README.pt.md deleted file mode 100644 index c778e031..00000000 --- a/2-Regression/3-Linear/translations/README.pt.md +++ /dev/null @@ -1,332 +0,0 @@ -# Crie um modelo de regressão utilizando o Scikit-learning: regressão de dois modos - -![Regressão linear vs polinomial infográfica](./images/linear-polynomial.png) -> Infográfico de [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Questionário pré-seleção](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) - -> ### [Esta lição está disponível em R!](./solution/R/lesson_3-R.ipynb) -### Introdução - -Até agora, vocês exploraram o que é a regressão com os dados de exemplo recolhidos a partir do conjunto de dados de preços da abóbora que vamos usar ao longo desta lição. Também o visualizaram utilizando Matplotlib. - -Agora está preparado para mergulhar mais profundamente na regressão para o ML. Nesta lição, você vai aprender mais sobre dois tipos de regressão: _regressão linear básica_ e _regressão polinomial_, juntamente com alguma da matemática subjacente a estas técnicas. - -> Ao longo deste currículo, assumimos um conhecimento mínimo de matemática, e procuramos torná-lo acessível a estudantes provenientes de outras áreas, por isso, procuremos notas, notas de 🧮, diagramas e outras ferramentas de aprendizagem para ajudar na compreensão. - -### Pré-requisitos - -Já devem conhecer a estrutura dos dados relativos à abóbora que estamos a analisar. Pode encontrá-lo pré-carregado e previamente limpo no ficheiro _notebook.ipynb_ desta lição. No ficheiro, o preço da abóbora é apresentado por defeito num novo dataframe. Certifique-se de que pode executar estes blocos de notas em kernels no Código do Visual Studio. - -### Preparação - -Como lembrete, está a carregar estes dados para fazer perguntas sobre os mesmos. - -- Quando é o melhor momento para comprar abóboras? -- Que preço posso esperar de um caso de abóbora miniatura? -- Devo comprá-los em cestos de meia-bushel ou pela caixa de bushel 1 1/9? -Vamos continuar a investigar estes dados. - -Na lição anterior, você criou um dataframe Pandas e o preencheu com parte do conjunto de dados original, padronizando os preços pelo bushel. Ao fazer isso, no entanto, você só conseguiu reunir cerca de 400 datapops e apenas nos meses de outono. - -Dê uma vista de olhos aos dados que pré-carregámos no bloco de notas que acompanha esta lição. Os dados são pré-carregados e um gráfico de dispersão inicial é desenhado para mostrar os dados do mês. Talvez possamos obter um pouco mais de detalhe sobre a natureza dos dados limpando-os mais. - -## Uma linha de regressão linear - -Como aprenderam na lição 1, o objetivo de um exercício de regressão linear é conseguir desenhar uma linha para: - -- **Mostrar relações de variáveis***. Mostrar a relação entre variáveis -- **Faça previsões**. Faça previsões precisas sobre onde um novo ponto de dados cairia em relação a essa linha. - -É típico de **Regressão dos Quadrados Menos** desenhar este tipo de linha. O termo 'menos quadrados' significa que todos os pontos de dados em torno da linha de regressão são são quadrados e depois adicionados. Idealmente, essa soma final é o mais pequena possível, porque queremos um número reduzido de erros, ou `menos quadrados` . - -Fazemo-lo porque queremos modelar uma linha que tenha a menor distância cumulativa de todos os nossos pontos de dados. Nós também fazemos o quadrado dos termos antes de os adicionarmos, uma vez que estamos preocupados com a sua magnitude e não com a sua direção. - -> ** 🧮 Mostrar a matemática** -> -> Esta linha, denominada a _linha de best fit_, pode ser expressa por [uma equação](https://en.wikipedia.org/wiki/Simple_linear_regression): -> -> ``` -> Y = a + bX -> ``` -> -> `X` é a "variável explicativa". `Y` é a 'variável dependente'. O declive da linha é `b` e `a` é a interceção y, que se refere ao valor de `Y` quando `X = 0`. -> ->![calcule o declive](images/slope.png) -> -> Primeiro, calcular o declive `b`. Infográfico por [Jen Looper](https://twitter.com/jenlooper) -> -> Por outras palavras, e referindo-se à pergunta original dos nossos dados de abóbora: "prever o preço de uma abóbora por bordel por mês", `X` referiria-se ao preço e `Y` referiria-se ao mês de venda. -> ->![complete a equação](images/calculation.png) -> -> Calcular o valor de Y. Se você está pagando por volta de $4, deve ser abril! Infográfico por [Jen Looper](https://twitter.com/jenlooper) -> -> A matemática que calcula a linha deve demonstrar o declive da linha, que também depende da interceção, ou onde `Y` está situado quando `X = 0`. -> -> Pode observar o método de cálculo destes valores no Web site [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Visite também [esta calculadora de Menos quadrados](https://www.mathsisfun.com/data/least-squares-calculator.html) para ver como os valores dos números têm impacto na linha. - -## Correlação - -Mais um termo a compreender é o **Coeficiente de Correlação** entre as variáveis X e Y fornecidas. Usando um gráfico de dispersão, você pode visualizar rapidamente este coeficiente. Um desenho com pontos de dados dispersos numa linha reta tem uma correlação elevada, mas um desenho com pontos de dados dispersos por todo o lado entre X e Y tem uma correlação baixa. - -Um bom modelo de regressão linear será aquele que tem um Coeficiente de Correlação elevado (mais perto de 1 que 0) utilizando o método de Regressão dos Menos Quadrados com uma linha de regressão. - -✅ Executar o bloco de notas que acompanha esta lição e olhar para o gráfico de distribuição City to Price. Os dados que associam a cidade ao preço das vendas de abóbora parecem ter uma correlação alta ou baixa, de acordo com a sua interpretação visual da distribuição? - - -## Preparar os dados para regressão - -Agora que têm uma compreensão da matemática por detrás deste exercício, criem um modelo de Regressão para ver se conseguem prever que pacote de abóbora terá os melhores preços de abóbora. Alguém que adquira abóbora para uma correção de abóbora de férias poderá querer que esta informação seja capaz de otimizar as suas compras de pacotes de abóbora para a correção. - -Já que você vai usar o Scikit-learning, não há razão para fazer isso à mão (embora você pudesse!). No bloco principal de processamento de dados do bloco de notas de lição, adicione uma biblioteca do Scikit-learning para converter automaticamente todos os dados de cadeia em números: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -Se olharem para o dataframe new_bompkins, veem que todas as cadeias são agora numéricas. Isto torna mais difícil para você ler, mas muito mais inteligível para o Scikit - aprender! -Agora, pode tomar decisões mais educadas (não apenas com base no aparecimento de um gráfico de dispersão) sobre os dados que melhor se adequam à regressão. - -Tente encontrar uma boa correlação entre dois pontos dos seus dados para criar, potencialmente, um bom modelo preditivo. Acontece que há apenas uma correlação fraca entre a Cidade e o Preço: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -No entanto, há uma correlação um pouco melhor entre o Pacote e o seu Preço. Isso faz sentido, certo? Normalmente, quanto maior for a caixa de produção, maior será o preço. - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -Uma boa pergunta a fazer sobre estes dados será: 'Que preço posso esperar de um determinado pacote de abóbora?' - -Vamos construir este modelo de regressão - -## A criar um modelo linear - -Antes de criar o seu modelo, faça mais uma arrumação dos seus dados. Remova todos os dados nulos e verifique novamente como são os dados. - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -Em seguida, crie um novo dataframe a partir deste conjunto mínimo e imprima-o: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. Agora, pode atribuir os seus dados de coordenadas X e y: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -✅ O que está acontecendo aqui? Está a utilizar [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) para criar matrizes para povoar ‘X’ e ‘y’. - -2. Em seguida, inicie as rotinas de construção de modelos de regressão: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - Porque a correlação não é particularmente boa, o modelo produzido não é terrivelmente preciso. - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. Pode visualizar a linha desenhada no processo: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - ![Um gráfico de dispersão que mostra a relação preço/pacote](./images/linear.png) - -4. Teste o modelo contra uma variedade hipotética: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - O preço devolvido por esta Variedades mitológicas é: - - ```output - array([[33.15655975]]) - ``` - -Esse número faz sentido, se a lógica da linha de regressão se mantiver verdadeira. - -🎃 Parabéns, criaram um modelo que pode ajudar a prever o preço de algumas variedades de abóbora. A sua mancha de abóbora de férias será bonita. Mas é provável que se possa criar um modelo melhor! -## Regressão polinomial - -Outro tipo de regressão linear é a regressão polinomial. Embora por vezes haja uma relação linear entre variáveis - quanto maior é o volume da abóbora, maior é o preço - por vezes estas relações não podem ser desenhadas como um plano ou uma linha reta. - -✅ Aqui estão [mais alguns exemplos](https://online.stat.psu.edu/stat501/lesson/9/9.8) de dados que podem utilizar regressão polinomial - -Vejam outra vez a relação entre Varity e Price no desenho anterior. Parece que este gráfico de dispersão deve ser necessariamente analisado por uma linha reta? Talvez não. Neste caso, pode-se tentar uma regressão polinomial. - -✅ Polinomiais são expressões matemáticas que podem ser compostas por uma ou mais variáveis e coeficientes - -A regressão polinomial cria uma linha curvada para ajustar melhor os dados não lineares. - -1. Vamos recriar um dataframe povoado com um segmento dos dados originais da abóbora: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -Uma boa maneira de visualizar as correlações entre os dados nos dataframes é exibi-los em um gráfico 'colorido': - -2. Utilize o método `Background_gradient()` com o valor de argumento `colarm`: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - Este código cria um mapa de calor: -![Um mapa de calor que mostra a correlação de dados](./images/heatmap.png) - -Olhando para este gráfico, pode visualizar a boa correlação entre Pacote e Preço. Portanto, deveriam ser capazes de criar um modelo um pouco melhor do que o último. -### Criar um pipeline - -Scikit-learning inclui uma API útil para a construção de modelos de regressão polinomial - o `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). É criado um "pipeline" que é uma cadeia de estimadores. Neste caso, o pipeline inclui funcionalidades polinomiais ou previsões que formam um caminho não linear. - -1. Criar as colunas X e y: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. Crie o pipeline chamando o método "make_pipeline()": - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### Criar uma sequência - -Neste ponto, é necessário criar um novo dataframe com dados _sorted_ para que o pipeline possa criar uma sequência. - -Adicionar o seguinte código: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -Criou um novo dataframe chamando `pd.DataFrame`. Em seguida, ordenou os valores chamando `sort_values()`. Finalmente criou um desenho polinomial: - -![Um desenho polinomial que mostra a relação pacote/preço](./images/polynomial.png) - -Pode ver uma linha curvada que se adapta melhor aos seus dados. - -Vamos verificar a precisão do modelo: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - E voilá! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -Isso é melhor! Tente prever um preço: - -### Efetuar uma previsão - -Podemos introduzir um novo valor e obter uma previsão? - -Chame `predict()` para fazer uma previsão: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - É-lhe dada esta previsão: - - ```output - array([[46.34509342]]) - ``` - -Faz sentido, dado o enredo! E, se este é um modelo melhor do que o anterior, olhando para os mesmos dados, é preciso orçar para estas abrigas mais caras! - -🏆 Parabéns! Criaram dois modelos de regressão numa lição. Na última secção sobre regressão, irá obter informações sobre regressão logística para determinar categorias. - -— -## 🚀 desafio - -Teste várias variáveis diferentes neste bloco de notas para ver como a correlação corresponde à precisão do modelo. -##[Questionário pós-palestra](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) - -## Revisão e Estudo Automático - -Nesta lição, aprendemos sobre a Regressão Linear. Há outros tipos importantes de Regressão. Leia sobre as técnicas Stepwise, Ridge, Lasso e Elasticnet. Um bom curso para estudar para aprender mais é o [curso de Aprendizagem Estatística de Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) - -## Atribuição - -[Criar um Modelo](assignment.md) diff --git a/2-Regression/3-Linear/translations/README.zh-tw.md b/2-Regression/3-Linear/translations/README.zh-tw.md deleted file mode 100644 index b57e4a90..00000000 --- a/2-Regression/3-Linear/translations/README.zh-tw.md +++ /dev/null @@ -1,342 +0,0 @@ -# 使用 Scikit-learn 構建回歸模型:兩種方式的回歸 - -![線性與多項式回歸信息圖](../images/linear-polynomial.png) - -> 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded) - -## [課前測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/) - -### 介紹 - -到目前為止,你已經通過從我們將在本課程中使用的南瓜定價數據集收集的樣本數據探索了什麽是回歸。你還使用 Matplotlib 對其進行了可視化。 - -現在你已準備好深入研究 ML 的回歸。 在本課中,你將詳細了解兩種類型的回歸:_基本線性回歸_ 和 _多項式回歸_,以及這些技術背後的一些數學知識。 - -> 在整個課程中,我們假設數學知識最少,並試圖讓來自其他領域的學生也能接觸到它,因此請使用筆記、🧮標註、圖表和其他學習工具以幫助理解。 - -### 前提 - -你現在應該熟悉我們正在檢查的南瓜數據的結構。你可以在本課的 _notebook.ipynb_ 文件中找到它。 在這個文件中,南瓜的價格顯示在一個新的 dataframe 中。確保可以在 Visual Studio Code 代碼的內核中運行這些 notebooks。 - -### 準備 - -提醒一下,你正在加載此數據以提出問題。 - -- 什麽時候買南瓜最好? -- 一箱微型南瓜的價格是多少? -- 我應該買半蒲式耳還是 1 1/9 蒲式耳? - -讓我們繼續深入研究這些數據。 - -在上一課中,你創建了一個 Pandas dataframe 並用原始數據集的一部分填充它,按蒲式耳標準化定價。但是,通過這樣做,你只能收集大約 400 個數據點,而且只能收集秋季月份的數據。 - -看看我們在本課隨附的 notebook 中預加載的數據。數據已預加載,並繪製了初始散點圖以顯示月份數據。也許我們可以通過更多地清理數據來獲得更多關於數據性質的細節。 - -## 線性回歸線 - -正如你在第 1 課中學到的,線性回歸練習的目標是能夠繪製一條線以便: - -- **顯示變量關系**。 顯示變量之間的關系 -- **作出預測**。 準確預測新數據點與該線的關系。 - -繪製這種類型的線是**最小二乘回歸**的典型做法。術語「最小二乘法」意味著將回歸線周圍的所有數據點平方,然後相加。理想情況下,最終和盡可能小,因為我們希望錯誤數量較少,或「最小二乘法」。 - -我們這樣做是因為我們想要對一條與所有數據點的累積距離最小的線進行建模。我們還在添加它們之前對這些項進行平方,因為我們關心的是它的大小而不是它的方向。 - -> **🧮 數學知識** -> -> 這條線稱為 _最佳擬合線_,可以用[一個等式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: -> -> ``` -> Y = a + bX -> ``` -> -> `X` 是「解釋變量」。`Y` 是「因變量」。直線的斜率是 `b`,`a` 是 y 軸截距,指的是 `X = 0` 時 `Y` 的值。 -> ->![計算斜率](../images/slope.png) -> -> 首先,計算斜率 `b`。作者 [Jen Looper](https://twitter.com/jenlooper) -> -> 換句話說,參考我們的南瓜數據的原始問題:「按月預測每蒲式耳南瓜的價格」,`X` 指的是價格,`Y` 指的是銷售月份。 -> -> ![完成等式](../images/calculation.png) -> -> 計算 Y 的值。如果你支付大約 4 美元,那一定是四月!作者 [Jen Looper](https://twitter.com/jenlooper) -> -> 計算直線的數學必須證明直線的斜率,這也取決於截距,或者當 `X = 0` 時 `Y` 所在的位置。 -> -> 你可以在 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 網站上觀察這些值的計算方法。另請訪問[這個最小二乘計算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以觀察數字的值如何影響直線。 - -## 相關性 - -另一個需要理解的術語是給定 X 和 Y 變量之間的**相關系數**。使用散點圖,你可以快速可視化該系數。數據點散布在一條直線上的圖具有高相關性,但數據點散布在 X 和 Y 之間的圖具有低相關性。 - -一個好的線性回歸模型將是一個用最小二乘回歸法與直線回歸得到的高(更接近於 1)相關系數的模型。 - -✅ 運行本課隨附的 notebook 並查看 City to Price 散點圖。根據你對散點圖的視覺解釋,將南瓜銷售的城市與價格相關聯的數據似乎具有高相關性或低相關性? - -## 為回歸準備數據 - -現在你已經了解了本練習背後的數學原理,可以創建一個回歸模型,看看你是否可以預測哪個南瓜包裝的南瓜價格最優惠。為節日購買南瓜的人可能希望此信息能夠優化他們如何購買南瓜包裝。 - -由於你將使用 Scikit-learn,因此沒有理由手動執行此操作(盡管你可以!)。在課程 notebook 的主要數據處理塊中,從 Scikit-learn 添加一個庫以自動將所有字符串數據轉換為數字: - -```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) -``` - -如果你現在查看 new_pumpkins dataframe,你會看到所有字符串現在都是數字。這讓你更難閱讀,但對 Scikit-learn 來說更容易理解! - -現在,你可以對最適合回歸的數據做出更有根據的決策(不僅僅是基於觀察散點圖)。 - -嘗試在數據的兩點之間找到良好的相關性,以構建良好的預測模型。事實證明,城市和價格之間只有微弱的相關性: - -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` - -然而,包裝和它的價格之間有更好的相關性。這是有道理的,對吧?通常,農產品箱越大,價格越高。 - -```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 -``` - -對這些數據提出的一個很好的問題是:「我可以期望給定的南瓜包裝的價格是多少?」 - -讓我們建立這個回歸模型 - -## 建立線性模型 - -在構建模型之前,再對數據進行一次整理。刪除任何空數據並再次檢查數據的樣子。 - -```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() -``` - -然後,從這個最小集合創建一個新的 dataframe 並將其打印出來: - -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - -lin_pumpkins -``` - -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows × 2 columns -``` - -1. 現在你可以分配 X 和 y 坐標數據: - - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` - -✅ 這裏發生了什麽?你正在使用 [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) 來創建數組來填充 `X` 和 `y`。 - -2. 接下來,開始回歸模型構建例程: - - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) - - pred = lin_reg.predict(X_test) - - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - 因為相關性不是特別好,所以生成的模型不是非常準確。 - - ```output - Model Accuracy: 0.3315342327998987 - ``` - -3. 你可以將過程中繪製的線條可視化: - - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) - - plt.xlabel('Package') - plt.ylabel('Price') - - plt.show() - ``` - - ![散點圖顯示包裝與價格的關系](../images/linear.png) - -4. 針對假設的品種測試模型: - - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - 這個神話般的品種的價格是: - - ```output - array([[33.15655975]]) - ``` - -如果回歸線的邏輯成立,這個數字是有意義的。 - -🎃 恭喜你,你剛剛創建了一個模型,可以幫助預測幾個南瓜品種的價格。你的節日南瓜地會很漂亮的。但是你可以創造一個更好的模型! - -## 多項式回歸 - -另一種線性回歸是多項式回歸。雖然有時變量之間存在線性關系——南瓜的體積越大,價格就越高——但有時這些關系不能繪製成平面或直線。 - -✅ 這裏有可以使用多項式回歸數據的[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8) - -再看一下上圖中品種與價格之間的關系。這個散點圖看起來是否應該用一條直線來分析?也許不是。在這種情況下,你可以嘗試多項式回歸。 - -✅ 多項式是可能由一個或多個變量和系數組成的數學表達式 - -多項式回歸創建一條曲線以更好地擬合非線性數據。 - -1. 讓我們重新創建一個填充了原始南瓜數據片段的 dataframe: - - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') - - poly_pumpkins - ``` - -可視化 dataframe 中數據之間相關性的一種好方法是將其顯示在「coolwarm」圖表中: - -2. 使用 `Background_gradient()` 方法和 `coolwarm` 作為其參數值: - - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - - 這段代碼創建了一個熱圖: - ![顯示數據相關性的熱圖](../images/heatmap.png) - -查看此圖表,你可以直觀地看到 Package 和 Price 之間的良好相關性。所以你應該能夠創建一個比上一個更好的模型。 - -### 創建管道 - -Scikit-learn 包含一個用於構建多項式回歸模型的有用 API - `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)。 創建了一個「管道」,它是一個估計器鏈。在這種情況下,管道包括多項式特征或形成非線性路徑的預測。 - -1. 構建 X 和 y 列: - - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` - -2. 通過調用 `make_pipeline()` 方法創建管道: - - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline - - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - - pipeline.fit(np.array(X_train), y_train) - - y_pred=pipeline.predict(X_test) - ``` - -### 創建序列 - -此時,你需要使用_排序好的_數據創建一個新的 dataframe ,以便管道可以創建序列。 - -添加以下代碼: - - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() - - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` - -你通過調用 `pd.DataFrame` 創建了一個新的 dataframe。然後通過調用 `sort_values()` 對值進行排序。最後你創建了一個多項式圖: - -![顯示包裝與價格關系的多項式圖](../images/polynomial.png) - -你可以看到更適合你的數據的曲線。 - -讓我們檢查模型的準確性: - - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` - - 瞧! - - ```output - Model Accuracy: 0.8537946517073784 - ``` - -這樣好多了!試著預測一個價格: - -### 做個預測 - -我們可以輸入一個新值並得到一個預測嗎? - -調用 `predict()` 進行預測: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - - 你會得到這樣的預測: - - ```output - array([[46.34509342]]) - ``` - -參照圖像,這確實有道理!而且,如果這是一個比前一個更好的模型,看同樣的數據,你需要為這些更昂貴的南瓜做好預算! - -🏆 幹得不錯!你在一節課中創建了兩個回歸模型。在回歸的最後一節中,你將了解邏輯回歸以確定類別。 - ---- - -## 🚀挑戰 - -在此 notebook 中測試幾個不同的變量,以查看相關性與模型準確性的對應關系。 - -## [課後測](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/) - -## 復習與自學 - -在本課中,我們學習了線性回歸。還有其他重要的回歸類型。了解 Stepwise、Ridge、Lasso 和 Elasticnet 技術。學習更多信息的好課程是 [斯坦福統計學習課程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) - -## 任務 - -[構建模型](./assignment.zh-tw.md) diff --git a/2-Regression/3-Linear/translations/assignment.es.md b/2-Regression/3-Linear/translations/assignment.es.md deleted file mode 100644 index d09471ca..00000000 --- a/2-Regression/3-Linear/translations/assignment.es.md +++ /dev/null @@ -1,11 +0,0 @@ -# Crea un modelo de regresión - -## Instrucciones - -En esta lección viste cómo construir un modelo usando tanto la regresión lineal como polinomial. Usando este conocimiento, encuentra un conjunto de datos o usa uno de los conjuntos de datos incorporados de Scikit-learn, para construir un modelo nuevo. Explica en tu notebook por qué elegiste dicha técnica y demuestra la precisión de tu modelo. Si este no es preciso explica por qué. - -## Rúbrica - -| Criterio | Ejemplar | Adecuado | Necesita mejorar | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | Presenta un notebook completo con la solución bien documentada. | La solución se encuentra incompleta. | La solución es defectuosa o tiene errores. | diff --git a/2-Regression/3-Linear/translations/assignment.it.md b/2-Regression/3-Linear/translations/assignment.it.md deleted file mode 100644 index e5aaaa77..00000000 --- a/2-Regression/3-Linear/translations/assignment.it.md +++ /dev/null @@ -1,11 +0,0 @@ -# Creare un Modello di Regressione - -## Istruzioni - -In questa lezione è stato mostrato come costruire un modello utilizzando sia la Regressione Lineare che Polinomiale. Usando questa conoscenza, trovare un insieme di dati o utilizzare uno degli insiemi integrati di Scikit-Learn per costruire un modello nuovo. Spiegare nel proprio notebook perché si è scelto una determinata tecnica e dimostrare la precisione del modello. Se non è accurato, spiegare perché. - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | presenta un notebook completo con una soluzione ben documentata | La soluzione è incompleta | La soluzione è difettosa o contiene bug | diff --git a/2-Regression/3-Linear/translations/assignment.ja.md b/2-Regression/3-Linear/translations/assignment.ja.md deleted file mode 100644 index d0f8a4c5..00000000 --- a/2-Regression/3-Linear/translations/assignment.ja.md +++ /dev/null @@ -1,11 +0,0 @@ -# 回帰モデルの作成 - -## 課題の指示 - -このレッスンでは、線形回帰と多項式回帰の両方を使ってモデルを構築する方法を紹介しました。この知識をもとに、自分でデータセットを探すか、Scikit-learnのビルトインセットの1つを使用して、新しいモデルを構築してください。手法を選んだ理由をノートブックに書き、モデルの精度を示してください。精度が十分でない場合は、その理由も説明してください。 - -## ルーブリック - -| 指標 | 模範的 | 適切 | 要改善 | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | ドキュメント化されたソリューションを含む完全なノートブックを提示する。 | 解決策が不完全である。 | 解決策に欠陥またはバグがある。 | diff --git a/2-Regression/3-Linear/translations/assignment.ko.md b/2-Regression/3-Linear/translations/assignment.ko.md deleted file mode 100644 index 5c7f7c5b..00000000 --- a/2-Regression/3-Linear/translations/assignment.ko.md +++ /dev/null @@ -1,11 +0,0 @@ -# 회귀 모델을 만들어 봅시다 - -## 설명 - -이번 수업에서는 선형 회귀와 다항 회귀로 어떻게 모델을 만드는지 알아보았습니다. 이 과제에서는 직접 데이터세트를 찾거나 Scikit-learn에서 기본으로 제공하는 데이터세트로 새로 배운 지식을 적용해 새로운 모델을 만들어보시기 바랍니다. 그리고 어떠한 기법을 사용해 모델을 만들었는지 설명하고, 모델의 정확도를 노트북(Jupyter Notebook)에 기재하시기 바랍니다. 만약 정확도가 낮다면 왜 낮은지 해석해보세요. - -## 평가기준표 - -| 평가기준 | 모범 | 적절 | 향상 필요 | -| -------- | ----------------------------- | -------------------------- | ----------------------- | -| | 완성된 노트북에 해법을 잘 설명함 | 미완성 해법을 제시함 | 결점이 있는 해법을 제시함 | diff --git a/2-Regression/3-Linear/translations/assignment.pt-br.md b/2-Regression/3-Linear/translations/assignment.pt-br.md deleted file mode 100644 index d262b121..00000000 --- a/2-Regression/3-Linear/translations/assignment.pt-br.md +++ /dev/null @@ -1,11 +0,0 @@ -# Construa um modelo de regressão - -## Instruções - -Nesta lição, mostramos como construir um modelo usando regressão linear e polinomial. Usando o que aprendeu, encontre um conjunto de dados ou use um dos conjuntos integrados a Scikit-Learn para construir um novo modelo. Explique em seu _notebook_ porque você escolheu uma técnica particular e demonstre a acurácia do modelo. E se a acurácia não for boa, explique por quê. - -## Critérios de avaliação - -| Critério | Exemplar | Adequado | Precisa melhorar | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | Apresenta um _notebook_ completo e bem documentado | A solução está incompleta | A solução possui _bugs_ | diff --git a/2-Regression/3-Linear/translations/assignment.pt.md b/2-Regression/3-Linear/translations/assignment.pt.md deleted file mode 100644 index 0bf93e65..00000000 --- a/2-Regression/3-Linear/translations/assignment.pt.md +++ /dev/null @@ -1,11 +0,0 @@ -# Criar um modelo de regressão - -## Instruções - -Nesta lição foi-lhe mostrado como construir um modelo usando a Regressão Linear e Polinomial. Utilizando este conhecimento, encontre um conjunto de dados ou use um dos conjuntos incorporados da Scikit-learn para construir um novo modelo. Explique no seu caderno porque escolheu a técnica que escolheu e demonstre a precisão do seu modelo. Se não for preciso, explique porquê. - -## Rubrica - -| Critérios | exemplares | Adequado | Necessidades de Melhoria | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | apresenta um caderno completo com uma solução bem documentada | a solução está incompleta| a solução é imperfeita ou buggy | diff --git a/2-Regression/3-Linear/translations/assignment.zh-tw.md b/2-Regression/3-Linear/translations/assignment.zh-tw.md deleted file mode 100644 index dd6a9afc..00000000 --- a/2-Regression/3-Linear/translations/assignment.zh-tw.md +++ /dev/null @@ -1,11 +0,0 @@ -# 創建自己的回歸模型 - -## 說明 - -在這節課中你學到了如何用線性回歸和多項式回歸建立一個模型。利用這些只是,找到一個你感興趣的數據集或者是 Scikit-learn 內置的數據集來建立一個全新的模型。用你的 notebook 來解釋為什麽用了這種技術來對這個數據集進行建模,並且證明出你的模型的準確度。如果它沒你想象中準確,請思考一下並解釋一下原因。 - -## 評判標準 - -| 標準 | 優秀 | 中規中矩 | 仍需努力 | -| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- | -| | 提交了一個完整的 notebook 工程文件,其中包含了解集,並且可讀性良好 | 不完整的解集 | 解集是有缺陷或者有錯誤的 |