pull/483/head
ariannemacena 5 years ago
commit 9bf8968da1

@ -0,0 +1,21 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.203.0/containers/python-3/.devcontainer/base.Dockerfile
# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
ARG VARIANT="3.10-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
# COPY requirements.txt /tmp/pip-tmp/
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
# && rm -rf /tmp/pip-tmp
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1

@ -0,0 +1,50 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.203.0/containers/python-3
{
"name": "Python 3",
"runArgs": ["--init"],
"build": {
"dockerfile": "Dockerfile",
"context": "..",
"args": {
// Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6
// Append -bullseye or -buster to pin to an OS version.
// Use -bullseye variants on local on arm64/Apple Silicon.
"VARIANT": "3",
// Options
"NODE_VERSION": "none"
}
},
// Set *default* container specific settings.json values on container create.
"settings": {
"python.pythonPath": "/usr/local/bin/python",
"python.languageServer": "Pylance",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "pip3 install --user -r requirements.txt",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
}

2
.gitignore vendored

@ -3,6 +3,8 @@
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
dist
# User-specific files
*.rsuser
*.suo

@ -1,12 +1,16 @@
# Introduction to machine learning
<!--
Watch the video, then take the pre-lesson quiz
-->
[![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?")
> 🎥 Click the image above for a video discussing the difference between machine learning, AI, and deep learning.
## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/1/)
***
---
Welcome to this course on classical machine learning for beginners! Whether you're completely new to this topic, or an experienced ML practitioner looking to brush up on an area, we're happy to have you join us! We want to create a friendly launching spot for your ML study and would be happy to evaluate, respond to, and incorporate your [feedback](https://github.com/microsoft/ML-For-Beginners/discussions).
@ -14,7 +18,8 @@ Welcome to this course on classical machine learning for beginners! Whether you'
> 🎥 Click the image above for a video: MIT's John Guttag introduces machine learning
# Getting started with machine learning
---
## Getting started with machine learning
Before starting with this curriculum, you need to have your computer set up and ready to run notebooks locally.
@ -24,42 +29,52 @@ Before starting with this curriculum, you need to have your computer set up and
- **Create a GitHub account**. Since you found us here on [GitHub](https://github.com), you might already have an account, but if not, create one and then fork this curriculum to use on your own. (Feel free to give us a star, too 😊)
- **Explore Scikit-learn**. Familiarize yourself with [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), a set of ML libraries that we reference in these lessons.
# What is machine learning?
---
## What is machine learning?
The term 'machine learning' is one of the most popular and frequently used terms of today. There is a nontrivial possibility that you have heard this term at least once if you have some sort of familiarity with technology, no matter what domain you work in. The mechanics of machine learning, however, are a mystery to most people. For a machine learning beginner, the subject can sometimes feel overwhelming. Therefore, it is important to understand what machine learning actually is, and to learn about it step by step, through practical examples.
# The hype curve
---
## The hype curve
![ml hype curve](images/hype.png)
> Google Trends shows the recent 'hype curve' of the term 'machine learning'
# A mysterious universe
---
## A mysterious universe
We live in a universe full of fascinating mysteries. Great scientists such as Stephen Hawking, Albert Einstein, and many more have devoted their lives to searching for meaningful information that uncovers the mysteries of the world around us. This is the human condition of learning: a human child learns new things and uncovers the structure of their world year by year as they grow to adulthood.
# The child's brain
---
## The child's brain
A child's brain and senses perceive the facts of their surroundings and gradually learn the hidden patterns of life which help the child to craft logical rules to identify learned patterns. The learning process of the human brain makes humans the most sophisticated living creature of this world. Learning continuously by discovering hidden patterns and then innovating on those patterns enables us to make ourselves better and better throughout our lifetime. This learning capacity and evolving capability is related to a concept called [brain plasticity](https://www.simplypsychology.org/brain-plasticity.html). Superficially, we can draw some motivational similarities between the learning process of the human brain and the concepts of machine learning.
# The human brain
---
## The human brain
The [human brain](https://www.livescience.com/29365-human-brain.html) perceives things from the real world, processes the perceived information, makes rational decisions, and performs certain actions based on circumstances. This is what we called behaving intelligently. When we program a facsimile of the intelligent behavioral process to a machine, it is called artificial intelligence (AI).
# Some terminology
---
## Some terminology
Although the terms can be confused, machine learning (ML) is an important subset of artificial intelligence. **ML is concerned with using specialized algorithms to uncover meaningful information and find hidden patterns from perceived data to corroborate the rational decision-making process**.
# AI, ML, Deep Learning
---
## AI, ML, Deep Learning
![AI, ML, deep learning, data science](images/ai-ml-ds.png)
> A diagram showing the relationships between AI, ML, deep learning, and data science. Infographic by [Jen Looper](https://twitter.com/jenlooper) inspired by [this graphic](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)
# Concepts to cover
---
## Concepts to cover
In this curriculum, we are going to cover only the core concepts of machine learning that a beginner must know. We cover what we call 'classical machine learning' primarily using Scikit-learn, an excellent library many students use to learn the basics. To understand broader concepts of artificial intelligence or deep learning, a strong fundamental knowledge of machine learning is indispensable, and so we would like to offer it here.
# In this course you will learn:
---
## In this course you will learn:
- core concepts of machine learning
- the history of ML
@ -72,7 +87,8 @@ In this curriculum, we are going to cover only the core concepts of machine lear
- reinforcement learning
- real-world applications for ML
# What we will not cover
---
## What we will not cover
- deep learning
- neural networks
@ -80,7 +96,8 @@ In this curriculum, we are going to cover only the core concepts of machine lear
To make for a better learning experience, we will avoid the complexities of neural networks, 'deep learning' - many-layered model-building using neural networks - and AI, which we will discuss in a different curriculum. We also will offer a forthcoming data science curriculum to focus on that aspect of this larger field.
# Why study machine learning?
---
## Why study machine learning?
Machine learning, from a systems perspective, is defined as the creation of automated systems that can learn hidden patterns from data to aid in making intelligent decisions.
@ -88,11 +105,13 @@ This motivation is loosely inspired by how the human brain learns certain things
✅ Think for a minute why a business would want to try to use machine learning strategies vs. creating a hard-coded rules-based engine.
# Applications of machine learning
---
## Applications of machine learning
Applications of machine learning are now almost everywhere, and are as ubiquitous as the data that is flowing around our societies, generated by our smart phones, connected devices, and other systems. Considering the immense potential of state-of-the-art machine learning algorithms, researchers have been exploring their capability to solve multi-dimensional and multi-disciplinary real-life problems with great positive outcomes.
# Examples of applied ML
---
## Examples of applied ML
**You can use machine learning in many ways**:
@ -103,7 +122,8 @@ Applications of machine learning are now almost everywhere, and are as ubiquitou
Finance, economics, earth science, space exploration, biomedical engineering, cognitive science, and even fields in the humanities have adapted machine learning to solve the arduous, data-processing heavy problems of their domain.
# Conclusion
---
## Conclusion
Machine learning automates the process of pattern-discovery by finding meaningful insights from real-world or generated data. It has proven itself to be highly valuable in business, health, and financial applications, among others.
@ -116,12 +136,14 @@ Sketch, on paper or using an online app like [Excalidraw](https://excalidraw.com
# [Post-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/)
---
# Review & Self Study
To learn more about how you can work with ML algorithms in the cloud, follow this [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa).
Take a [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa) about the basics of ML.
---
# Assignment
[Get up and running](assignment.md)

@ -8,7 +8,7 @@
### Introducción
Te damos la bienvenida a este curso acerca del machine learning (ML) clásico para principiantes! Así se trate de tu primera incursión en 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).
¡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")
@ -21,24 +21,24 @@ Antes de comenzar con este currículum, debes tener tu computadora configurada y
- **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-15963-cxa), 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 en libertad de regalarnos una estrella, también 😊)
- **Explora Scikit-learn**. Familiarízate con [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), un juego de bibliotecas de ML que referenciamos en estas lecciones.
- **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 sentirse 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.
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 más reciente "curva de interés" para el término "machine learning"
> 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 con año conforme se convierten en adultos.
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 de un niño y sus sentidos 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 vuelve 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 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 un subconjunto 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**.
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)
@ -46,12 +46,12 @@ Aunque los términos se suelen confundir, machine learning (ML) es un subconjunt
## 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 conteptos 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 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 de ML
- la historia del ML
- la justicia y el ML
- técnicas de regresión en ML
- técnicas de clasificación en ML
@ -67,19 +67,19 @@ En este curso aprenderás:
- 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 este campo.
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?
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.
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 vs. programar un motor basado en reglas.
✅ 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 estado del arte de machine learning, investigadores han estado explorando su capacidad de resolver problemas multidimensionales y multidisciplinarios de la vida real con resultados muy positivos.
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**:
@ -88,19 +88,19 @@ Las aplicaciones del machine learning hoy en día están casi en todas partes, y
- 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 los problemas más arduos y pesados en cuanto al procesamiento de datos.
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 desde el mundo real o datos generados. Machine learning ha demostrado ser muy valioso en las aplicaciones del sector salud, negocios y finanzas, entre otros.
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 alta adopción.
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/), como tú entiendes las diferencias entre inteligencia artificial, ML, deep learning, y la ciencia de datos. Agrega algunas ideas o problemas que cada una de estas técnicas son buenas en resolver.
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 conferencia](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/)
## [Cuestionario después de la lección](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/)
## Revisión y autoestudio
@ -108,6 +108,6 @@ Para aprender más sobre como puedes trabajar con algoritmos de ML en la nube, s
Toma esta [Ruta de Aprendizaje](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa) sobre las bases de ML.
## Asignación
## Tarea
[Ponte en marcha](assignment.md)

@ -17,37 +17,37 @@
이 커리큘럼을 시작하기 전, 컴퓨터를 세팅하고 노트북을 로컬에서 실행할 수 있게 준비해야 합니다.
- **이 영상으로 컴퓨터 세팅하기**. [set of videos](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)에서 컴퓨터를 세팅하는 방법에 대하여 자세히 알아봅니다.
- **이 영상으로 컴퓨터 세팅하기**. [영상 플레이리스트](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)에서 컴퓨터를 세팅하는 방법에 대하여 자세히 알아봅니다.
- **Python 배우기**. 이 코스에서 사용할 데이터 사이언티스트에게 유용한 프로그래밍 언어인 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa)에 대한 기본적인 이해를 해야 좋습니다.
- **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 주셔도 됩니다 😊)
- **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'로 보여줍니다
> Google Trends의 '머신러닝' 용어의 최근 'hype curve' 입니다.
우리는 매우 신비한 우주에 살고 있습니다. Stephen Hawking, Albert Einstein과 같은 위대한 과학자들은 주변 세계의 신비를 밝혀낼 의미있는 정보를 찾는 데 일생을 바쳤습니다. 이건 사람의 학습 조건입니다: 아이는 자라면서 해마다 새로운 것을 배우고 세계 구조를 발견합니다.
우리는 매우 신비한 우주에 살고 있습니다. Stephen Hawking, Albert Einstein과 같은 위대한 과학자들은 주변 세계의 신비를 밝혀낼 의미있는 정보를 찾는 데 일생을 바쳤습니다. 이건 사람의 학습 조건이죠. 아이는 성인이 되면서 해마다 새로운 것을 배우고 세계의 구조들을 발견합니다.
어린이의 뇌와 센스는 주변의 사실을 인식하고 점차 숨겨진 생활 패턴을 학습하여 학습된 패턴을 식별할 논리 규칙을 만드는 데 도움을 줍니다. 뇌의 논리 프로세스는 사람을 가장 정교한 생명체로 만듭니다. 숨겨진 패턴을 발견하고 개선하여 지속해서 학습하면 평생 발전할 수 있습니다. 이런 학습 능력과 진화력은 [brain plasticity](https://www.simplypsychology.org/brain-plasticity.html)로 불리는 컨셉과 관련있습니다. 표면적으로, 뇌의 학습 과정과 머신러닝의 개념 사이에 motivational similarities를 그릴 수 있습니다.
아이의 뇌와 감각은 주변 환경의 사실들을 인지하고 학습된 패턴을 식별하기 위한 논리적인 규칙을 만드는 패턴을 점차적으로 배웁니다. 인간의 두뇌의 학습 과정은 인간을 세상에서 가장 정교한 생명체로 만듭니다. 숨겨진 패턴을 발견하고 그 패턴을 혁신함으로써 지속적으로 학습하는 것은 우리가 일생 동안 점점 더 나은 자신을 만들 수 있게 해줍니다. 이러한 학습 능력과 발전하는 능력은 [brain plasticity 뇌의 가소성](https://www.simplypsychology.org/brain-plasticity.html)이라고 불리는 개념과 관련이 있습니다. 피상적으로, 우리는 인간의 두뇌의 학습 과정과 기계 학습의 개념 사이에 동기부여의 유사성을 끌어낼 수 있습니다.
[human brain](https://www.livescience.com/29365-human-brain.html)은 실제 세계에서 사물을 인식하고, 인식된 정보를 처리하며, 합리적인 결정과, 상황에 따른 행동을 합니다. 이걸 지능적으로 행동한다고 합니다. 기계에 지능적인 행동 복사본를 프로그래밍할 때, 인공 지능 (AI)라고 부릅니다.
[인간의 뇌](https://www.livescience.com/29365-human-brain.html)는 현실 세계의 것들을 인식하고, 인식된 정보를 처리하고, 합리적인 결정을 내리고, 상황에 따라 특정한 행동을 합니다. 이것이 우리가 지적 행동이라고 부르는 것입니다. 우리가 지능적인 행동 과정의 팩시밀리를 기계에 프로그래밍 할 때, 그것은 인공지능(AI)이라고 불립니다.
용어가 햇갈릴 수 있지만, 머신러닝(ML)은 중요한 인공 지능의 서브넷입니다. **ML은 특수한 알고리즘을 써서 의미있는 정보를 찾고 인식한 데이터에서 숨겨진 패턴을 찾아 합리적으로 판단할 프로세스를 확실하게 수행하는 것에 관심있습니다**.
용어가 헷갈릴 수 있지만, 머신러닝(ML)은 중요한 인공 지능의 한 부분입니다. **ML은 특수한 알고리즘을 써서 의미있는 정보를 찾고 인식한 데이터에서 숨겨진 패턴을 찾아 합리적으로 판단할 프로세스를 확실하게 수행하는 것에 집중하고 있다고 할 수 있습니다**.
![AI, ML, deep learning, data science](../images/ai-ml-ds.png)
> AI, ML, 딥러닝, 그리고 데이터 사이언티스트 간의 관계를 보여주는 다이어그램. [this graphic](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)에서 영감을 받은 [Jen Looper](https://twitter.com/jenlooper)의 인포그래픽
> 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'이라고 부르는 것을 다룹니다. 인공 지능 또는 딥러닝의 대략적인 개념을 이해하려면, 머신러닝에 대한 강력한 기초 지식이 꼭 필요하므로, 여기에서 제공하고자 합니다.
이 커리큘럼에서는 입문자가 반드시 알아야 할 머신러닝의 핵심적인 개념만 다룰 것입니다. 많은 학생들이 기초를 배우기 위해 사용하는 훌륭한 라이브러리인, Scikit-learn으로 'classical machine learning'이라고 부르는 것을 다룹니다. 인공 지능 또는 딥러닝의 대략적인 개념을 이해하려면 머신러닝에 대한 강력한 기초 지식이 꼭 필요하므로, 해당 내용을 본 강의에서 제공하고자 합니다.
이 코스에서 다음 사항을 배웁니다:
## 이 코스에서 다루는 것:
- 머신러닝의 핵심 컨셉
- ML 의 역사
@ -60,24 +60,25 @@
- 강화 학습
- real-world 애플리케이션 for ML
## 다루지 않는 것
## 다루지 않는 것:
- 딥러닝
- 신경망
- AI
더 좋은 학습 환경을 만들기 위해서, 신경망, '딥러닝' - many-layered model-building using neural networks - 과 AI의 복잡도를 피할 것이며, 다른 커리큘럼에서 논의할 것입니다. 또한 더 큰 필드에 초점을 맞추기 위하여 향후 데이터 사이언스 커리큘럼을 제공할 예정입니다.
우리는 더 나은 학습 경험을 만들기 위해 본 코스에서는 신경망, 신경망을 이용한 다층 모델 구축인 '딥러닝', 그리고 AI는 논의하지 않을 것입니다. 또한, 더 큰 필드에 초점을 맞추기 위하여 향후 데이터 사이언스 커리큘럼을 제공할 예정입니다.
## 왜 머신러닝을 배우나요?
시스템 관점에서 보는 머신러닝은, 지능적인 결정하도록 데이터에서 숨겨진 패턴을 학습할 수 있는 자동화 시스템 생성으로 정의합니다.
시스템 관점에서 머신러닝은 데이터의 숨겨진 패턴을 학습하여 현명한 의사결정을 지원하는 자동화된 시스템을 만드는 것으로 정의됩니다.
동기 부여는 뇌가 다른 세계에서 보는 데이터를 기반으로 특정한 무언가들을 학습하는 방식에서 살짝 영감을 받았습니다.
이것은 인간의 두뇌가 외부로부터 인지하는 데이터를 바탕으로 어떻게 특정한 것들을 배우는지에 의해 어느 정도 영감을 받았습니다.
✅ 비지니스에서 머신러닝 전략 대신 하드-코딩된 룰-베이스 엔진을 만드려는 이유를 잠시 생각해봅시다.
✅ 하드 코딩된 규칙 기반 엔진을 만드는 것보다 기계 학습 전략을 사용하는 이유를 잠시 생각해 봅시다.
### 머신러닝의 애플리케이션
머신러닝의 애플리케이션은 이제 거의 모든 곳에서, 스마트 폰, 연결된 기기, 그리고 다른 시스템에 의하여 생성된 주변의 흐르는 데이터만큼 어디에나 존재합니다. 첨단 머신러닝 알고리즘의 큰 잠재력을 고려한, 연구원들은 긍정적인 결과로 multi-dimensional과 multi-disciplinary적인 실-생활 문제를 해결하는 능력을 찾고 있습니다.
머신러닝의 응용은 이제 거의 모든 곳에 있으며, 우리의 스마트폰, 연결된 기기, 그리고 다른 시스템들에 의해 생성된 우리 사회의 방대한 데이터만큼 어디에나 존재합니다. 최첨단 머신러닝 알고리즘의 엄청난 잠재력을 고려하여 연구원들은 다차원적이고 다분야적인 실제 문제를 큰 긍정적인 결과로 해결할 수 있는 능력을 탐구하고 있습니다.
**다양한 방식으로 머신러닝을 사용할 수 있습니다**:
@ -86,11 +87,13 @@
- 문장의 감정을 이해합니다.
- 가짜 뉴스를 감지하고 선동을 막습니다.
금융, 경제학, 지구 과학, 우주 탐험, 생물 공학, 인지 과학, 그리고 인문학까지 머신러닝을 적용하여 힘들고, 데이터 처리가 버거운 이슈를 해결했습니다.
금융, 경제학, 지구 과학, 우주 탐험, 생물 공학, 인지 과학, 그리고 인문학까지 머신러닝을 적용하여 어렵고, 데이터 처리가 버거운 이슈를 해결했습니다.
**결론**:
머신러닝은 실제-환경이거나 생성된 데이터에서 의미를 찾아 패턴-발견하는 프로세스를 자동화합니다. 비즈니스, 건강과 금용 애플리케이션에서 높은 가치가 있다고 증명되었습니다.
머신러닝은 실제 또는 생성된 데이터에서 의미 있는 패턴을 찾는 프로세스를 자동화합니다. 무엇보다도 비즈니스, 건강 및 재무 애플리케이션에서 높은 가치를 지닌다는 것이 입증되었습니다.
가까운 미래에, 머신러닝의 기본을 이해하는 건 광범위한 선택으로 인하여 모든 분야의 사람들에게 필수적으로 다가올 것 입니다.
가까운 미래에, 머신러닝의 광범위한 채택으로 모든 분야의 사람들이 머신러닝의 기본을 이해하는 것이 필수적이 될 것입니다.
---
## 🚀 도전
@ -101,9 +104,9 @@
## 리뷰 & 자기주도 학습
클라우드에서 ML 알고리즘을 어떻게 사용하는 지 자세히 알아보려면, [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa)를 따릅니다.
클라우드에서 ML 알고리즘을 어떻게 사용하는 지 자세히 알아보려면, [학습 경로](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa)를 따릅니다.
ML의 기초에 대한 [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa)를 봅니다.
ML의 기초에 대한 [학습 경로](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa)를 봅니다.
## 과제

@ -0,0 +1,149 @@
# Введение в машинное обучение
<!--
Посмотрите видео, а затем пройдите предварительную викторину
-->
[![ML, AI, глубокое обучение - в чем разница?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, глубокое обучение - в чем разница?")
> 🎥 Нажмите на изображение выше, чтобы просмотреть видео, в котором обсуждается разница между машинным обучением, искусственным интеллектом и глубоким обучением.
## [Тест перед лекцией](https://white-water-09ec41f0f.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-15963-cxa), языке программирования, полезном для специалистов по данным, который мы используем в этом курсе.
- **Изучите 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://white-water-09ec41f0f.azurestaticapps.net/quiz/2/)
---
# Обзор и самообучение
Чтобы узнать больше о том, как вы можете работать с алгоритмами машинного обучения в облаке, следуйте курсу [Learning Path](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa).
Пройдите курс [Learning Path](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-15963-cxa) по основам машинного обучения.
---
# Задание
[Подготовьте среду разработки](assignment.ru.md)

@ -0,0 +1,9 @@
# Настройте среду разработки
## Инструкции
Это задание не оценивается. Вы должны освежить в памяти Python и настроить свою среду, чтобы она могла запускать ноутбуки.
Воспользуйтесь этим курсом [Python Learning Path](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa), а затем настройте свою систему, просмотрев эти вводные видео:
https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6

@ -5,41 +5,55 @@
## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3/)
---
In this lesson, we will walk through the major milestones in the history of machine learning and artificial intelligence.
The history of artificial intelligence (AI) as a field is intertwined with the history of machine learning, as the algorithms and computational advances that underpin ML fed into the development of AI. It is useful to remember that, while these fields as distinct areas of inquiry began to crystallize in the 1950s, important [algorithmic, statistical, mathematical, computational and technical discoveries](https://wikipedia.org/wiki/Timeline_of_machine_learning) predated and overlapped this era. In fact, people have been thinking about these questions for [hundreds of years](https://wikipedia.org/wiki/History_of_artificial_intelligence): this article discusses the historical intellectual underpinnings of the idea of a 'thinking machine.'
---
## Notable discoveries
- 1763, 1812 [Bayes Theorem](https://wikipedia.org/wiki/Bayes%27_theorem) and its predecessors. This theorem and its applications underlie inference, describing the probability of an event occurring based on prior knowledge.
- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) by French mathematician Adrien-Marie Legendre. This theory, which you will learn about in our Regression unit, helps in data fitting.
- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain), named after Russian mathematician Andrey Markov, is used to describe a sequence of possible events based on a previous state.
- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) is a type of linear classifier invented by American psychologist Frank Rosenblatt that underlies advances in deep learning.
---
- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) is an algorithm originally designed to map routes. In an ML context it is used to detect patterns.
- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) is used to train [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network).
- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) are artificial neural networks derived from feedforward neural networks that create temporal graphs.
✅ Do a little research. What other dates stand out as pivotal in the history of ML and AI?
---
## 1950: Machines that think
Alan Turing, a truly remarkable person who was voted [by the public in 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) as the greatest scientist of the 20th century, is credited as helping to lay the foundation for the concept of a 'machine that can think.' He grappled with naysayers and his own need for empirical evidence of this concept in part by creating the [Turing Test](https://www.bbc.com/news/technology-18475646), which you will explore in our NLP lessons.
---
## 1956: Dartmouth Summer Research Project
"The Dartmouth Summer Research Project on artificial intelligence was a seminal event for artificial intelligence as a field," and it was here that the term 'artificial intelligence' was coined ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
> 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.
---
The lead researcher, mathematics professor John McCarthy, hoped "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." The participants included another luminary in the field, Marvin Minsky.
The workshop is credited with having initiated and encouraged several discussions including "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"
From the 1950s through the mid '70s, optimism ran high in the hope that AI could solve many problems. In 1967, Marvin Minsky stated confidently that "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 research flourished, search was refined and made more powerful, and the concept of 'micro-worlds' was created, where simple tasks were completed using plain language instructions.
---
Research was well funded by government agencies, advances were made in computation and algorithms, and prototypes of intelligent machines were built. Some of these machines include:
* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot), who could maneuver and decide how to perform tasks 'intelligently'.
@ -47,21 +61,26 @@ Research was well funded by government agencies, advances were made in computati
![Shakey, an intelligent robot](images/shakey.jpg)
> Shakey in 1972
---
* Eliza, an early 'chatterbot', could converse with people and act as a primitive 'therapist'. You'll learn more about Eliza in the NLP lessons.
![Eliza, a bot](images/eliza.png)
> A version of Eliza, a chatbot
---
* "Blocks world" was an example of a micro-world where blocks could be stacked and sorted, and experiments in teaching machines to make decisions could be tested. Advances built with libraries such as [SHRDLU](https://wikipedia.org/wiki/SHRDLU) helped propel language processing forward.
[![blocks world with SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU")
> 🎥 Click the image above for a video: Blocks world with SHRDLU
---
## 1974 - 1980: "AI Winter"
By the mid 1970s, it had become apparent that the complexity of making 'intelligent machines' had been understated and that its promise, given the available compute power, had been overblown. Funding dried up and confidence in the field slowed. Some issues that impacted confidence included:
---
- **Limitations**. Compute power was too limited.
- **Combinatorial explosion**. The amount of parameters needed to be trained grew exponentially as more was asked of computers, without a parallel evolution of compute power and capability.
- **Paucity of data**. There was a paucity of data that hindered the process of testing, developing, and refining algorithms.
@ -69,8 +88,11 @@ By the mid 1970s, it had become apparent that the complexity of making 'intellig
- Turing tests came into question by means, among other ideas, of the 'chinese room theory' which posited that, "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/))
- The ethics of introducing artificial intelligences such as the "therapist" ELIZA into society was challenged.
---
At the same time, various AI schools of thought began to form. A dichotomy was established between ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) practices. _Scruffy_ labs tweaked programs for hours until they had the desired results. _Neat_ labs "focused on logic and formal problem solving". ELIZA and SHRDLU were well-known _scruffy_ systems. In the 1980s, as demand emerged to make ML systems reproducible, the _neat_ approach gradually took the forefront as its results are more explainable.
---
## 1980s Expert systems
As the field grew, its benefit to business became clearer, and in the 1980s so did the proliferation of 'expert systems'. "Expert systems were among the first truly successful forms of artificial intelligence (AI) software." ([source](https://wikipedia.org/wiki/Expert_system)).
@ -79,18 +101,23 @@ This type of system is actually _hybrid_, consisting partially of a rules engine
This era also saw increasing attention paid to neural networks.
---
## 1987 - 1993: AI 'Chill'
The proliferation of specialized expert systems hardware had the unfortunate effect of becoming too specialized. The rise of personal computers also competed with these large, specialized, centralized systems. The democratization of computing had begun, and it eventually paved the way for the modern explosion of big data.
---
## 1993 - 2011
This epoch saw a new era for ML and AI to be able to solve some of the problems that had been caused earlier by the lack of data and compute power. The amount of data began to rapidly increase and become more widely available, for better and for worse, especially with the advent of the smartphone around 2007. Compute power expanded exponentially, and algorithms evolved alongside. The field began to gain maturity as the freewheeling days of the past began to crystallize into a true discipline.
---
## Now
Today machine learning and AI touch almost every part of our lives. This era calls for careful understanding of the risks and potentials effects of these algorithms on human lives. As Microsoft's Brad Smith has stated, "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/)).
---
It remains to be seen what the future holds, but it is important to understand these computer systems and the software and algorithms that they run. We hope that this curriculum will help you to gain a better understanding so that you can decide for yourself.
[![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")
@ -103,6 +130,7 @@ Dig into one of these historical moments and learn more about the people behind
## [Post-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/)
---
## Review & Self Study
Here are items to watch and listen to:
@ -111,6 +139,8 @@ Here are items to watch and listen to:
[![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")
---
## Assignment
[Create a timeline](assignment.md)

@ -1,54 +1,54 @@
# Historia del machine learning
![Resumen de la historoia del machine learning en un boceto](../../sketchnotes/ml-history.png)
![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://white-water-09ec41f0f.azurestaticapps.net/quiz/3/)
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 se incorporaron al desarrollo de la inteligencia artificial. Es útil recordar que, si bien, estos campos como áreas distintas de investigación comenzaron a cristalizar en la década de 1950, importantes [desubrimientos algorítmicos, estadísticos, matemáticos, computacionales y técnicos](https://wikipedia.org/wiki/Timeline_of_machine_learning) predecieronn y superpusieron 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.'
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://wikipedia.org/wiki/Bayes%27_theorem) 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 concimiento previo.
- 1805 [Teoría de mínimos cuadrados](https://wikipedia.org/wiki/Least_squares) por el matemático francés Adrien-Marie Legendre. Esta teoría, que aprenderá en nuestra unidad de Regresión, ayuda en el data fitting.
- 1913 [Cadenas de Markov](https://wikipedia.org/wiki/Markov_chain) el nombre del matemático ruso Andrey Markov es utilizado para describir una secuencia de eventos basados en su estado anterior.
- 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://wikipedia.org/wiki/Nearest_neighbor) es un algoritmo diseñado originalmente para trazar rutas. En un contexto de ML, se utiliza para detectar patrones.
- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) es usado para entrenar [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network).
- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) son redes neuronales artificiales derivadas de redes neuronales feedforward que crean grafos temporales.
- 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, se le atribuye haber ayudado a sentar las bases del concepto de una 'máquina que puede pensar.' Lidió con los detractores y 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 NLP.
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 fuer un evento fundamental para la inteligencia artificial como campo," y fue aquí donde el se acuñó el término 'inteligencia artificial' ([fuente](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
"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 que cada aspecto del aprendizaje o cualquier otra característica de la inteligencia pueden, en principio, describirse con tanta precición que se se puede hacer una máquina para simularlos." Los participantes, incluyeron otra luminaria en el campo, Marvin Minsky.
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, systemas en dominios limitados (primeros sistemas expertos), y sistemas deductivos versus sistemas inductivos." ([fuente](https://wikipedia.org/wiki/Dartmouth_workshop)).
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' se resolverá sustancialemte." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
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-worlds' fue creado, donde se completaban tareas simples utilizando instrucciones en lenguaje sencillo.
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 financiado 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:
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 tares de forma 'inteligente'.
* [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, 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
@ -57,7 +57,7 @@ La investigación estuvo bien financiado por agencias gubernamentales, se realiz
[![blocks world con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world con SHRDLU")
> 🎥 Haga click en la imagen de arriba para ver un video: 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"
@ -66,11 +66,11 @@ A mediados de la década de 1970, se hizo evidente que la complejidad de la fabr
- **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 aproches:
- Las pruebas de Turing se cuestionaron por medio, entre otras ideas, de la 'teoría de la habitación china' que postulaba que "progrmar 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/))
- **¿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 varia 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 systemas _scruffy_ bien 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 medidad que sus resultados eran más explicables.
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
@ -82,27 +82,27 @@ En esta era también se prestó mayor atención a las redes neuronales.
## 1987 - 1993: AI 'Chill'
La prolifercaió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.
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 habían sido causados anteriormente for la falta de datos y 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 un verdadera disciplina.
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 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 para el desarrollo de normas sobre usos aceptables" ([fuente](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
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 algortimos que ejecutan. Esperamos que este plan de estudios le ayude a comprender mejor para que pueda decidir por si mismo.
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 Click en la imagen de arriba para ver un video: Yann LeCun analiza la historia del deep learning en esta conferencia
> 🎥 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 se creó ningún descubrimiento científico en un vacío cultural. ¿Qué descubres?
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 conferencia](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/)
## [Cuestionario posterior a la lección](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/)
## Revisión y autoestudio
@ -112,6 +112,6 @@ Aquí hay elementos para ver y escuchar:
[![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")
## Asignación
## Tarea
[Crea un timeline](assignment.md)

@ -0,0 +1,146 @@
# История машинного обучения
![Краткое изложение истории машинного обучения в заметке](../../../sketchnotes/ml-history.png)
> Заметка [Томоми Имура](https://www.twitter.com/girlie_mac)
## [Тест перед лекцией](https://white-water-09ec41f0f.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://white-water-09ec41f0f.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)

@ -73,7 +73,7 @@ Alan Turing,一个真正杰出的人,[在 2019 年被公众投票选出](htt
## 1980s 专家系统
随着这个领域的发展,它对商业的好处变得越来越明显,在 20 世纪 80 年代,‘专家系统’的泛滥也是如此。“专家系统是首批真正成功的人工智能 (AI) 软件形式之一。” ([来源](https://wikipedia.org/wiki/Expert_system))。
随着这个领域的发展,它对商业的好处变得越来越明显,在 20 世纪 80 年代,‘专家系统’也开始广泛流行起来。“专家系统是首批真正成功的人工智能 (AI) 软件形式之一。” ([来源](https://wikipedia.org/wiki/Expert_system))。
这种类型的系统实际上是混合系统,部分由定义业务需求的规则引擎和利用规则系统推断新事实的推理引擎组成。

@ -0,0 +1,11 @@
# 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 |

@ -0,0 +1,11 @@
# Создайте временную шкалу
## Инструкции
Используя [этот репозиторий](https://github.com/Digital-Humanities-Toolkit/timeline-builder), создайте временную шкалу какого-либо аспекта истории алгоритмов, математики, статистики, искусственного интеллекта или ML или их комбинации. Вы можете сосредоточиться на одном человеке, одной идее или на длительном промежутке времени. Обязательно добавьте мультимедийные элементы.
## Рубрика
| Критерии | Образцовый | Адекватный | Нуждается в улучшении |
| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- |
| | Развернутая временная шкала представлена в виде страницы GitHub | Код неполон и не развернут | Временная шкала неполная, недостаточно изучена и не развернута |

@ -0,0 +1,211 @@
# Justicia en el Aprendizaje Automático
![Resumen de justicia en el aprendizaje automático en un sketchnote](../../../sketchnotes/ml-fairness.png)
> Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Examen previo a la lección](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/)
## Introducción
En esta sección, comenzarás a descubrir como el aprendizaje automático puede y está impactando nuestra vida diaria. Incluso ahora mismo, hay sistemas y modelos involucrados en tareas diarias de toma de decisiones, como los diagnósticos del cuidado de la salud o detección del fraude. Es importante que estos modelos funcionen correctamente con el fin de proveer resultados justos para todos.
Imagina que podría pasar si los datos que usas para construir estos modelos carecen de cierta demografía, como es el caso de raza, género, punto de vista político, religión, o representan desproporcionadamente estas demografías. ¿Qué pasa cuando los resultados del modelo son interpretados en favor de alguna demografía? ¿Cuál es la consecuencia para la aplicación?
En esta lección, será capaz de:
- Tomar conciencia de la importancia de la justicia en el aprendizaje automático.
- Aprender acerca de daños relacionados a la justicia.
- Aprender acerca de la evaluación de la justicia y mitigación.
## Prerrequisitos
Como un prerrequisito, por favor toma la ruta de aprendizaje "Responsible AI Principles" y mira el vídeo debajo sobre el tema:
Aprende más acerca de la AI responsable siguiendo este [curso](https://docs.microsoft.com/es-es/learn/modules/responsible-ai-principles/?WT.mc_id=academic-15963-cxa)
[![Enfonque de Microsoft para la AI responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Enfoque de Microsoft para la AI responsable")
> 🎥 Haz clic en imagen superior para el vídeo: Enfoque de Microsoft para la AI responsable
## Injusticia en los datos y algoritmos
> "Si torturas los datos lo suficiente, estos confesarán cualquier cosa" - Ronald Coase
Esta oración suena extrema, pero es cierto que los datos pueden ser manipulados para soportar cualquier conclusión. Dicha manipulación puede ocurrir a veces de forma no intencional. Como humanos, todos tenemos sesgos, y muchas veces es difícil saber conscientemente cuando estás introduciendo un sesgo en los datos.
El garantizar la justicia en la AI y aprendizaje automático sigue siendo un desafío socio-tecnológico complejo. Esto quiere decir que no puede ser afrontado desde una perspectiva puramente social o técnica.
### Daños relacionados con la justicia
¿Qué quieres decir con injusticia? "injusticia" engloba impactos negativos, o "daños", para un grupo de personas, como aquellos definidos en términos de raza, género, edad o estado de discapacidad.
Los principales daños relacionados a la justicia pueden ser clasificados como de:
- **Asignación**, si un género o etnia, por ejemplo, se favorece sobre otro.
- **Calidad del servicio**. Si entrenas los datos para un escenario específico pero la realidad es mucho más compleja, esto conlleva a servicio de bajo rendimiento.
- **Estereotipo**. El asociar un cierto grupo con atributos preasignados.
- **Denigrado**. Criticar injustamente y etiquetar algo o alguien.
- **Sobre- o sub- representación** La idea es que un cierto grupo no es visto en una cierta profesión, y cualquier servicio o función que sigue promocionándolo está contribuyendo al daño.
Demos un vistazo a los ejemplos.
### Asignación
Considerar un sistema hipotético para seleccionar solicitudes de préstamo. El sistema tiende a seleccionar a hombres blancos como mejores candidatos por encima de otros grupos. Como resultado, los préstamos se retienen para ciertos solicitantes.
Otro ejemplo sería una herramienta experimental de contratación desarrollada por una gran corporación para seleccionar candidatos. La herramienta discriminó sistemáticamente un género de otro usando los modelos entrenados para preferir palabras asociadas con otras, lo cual resultó en candidatos penalizados cuyos currículos contienen palabras como "equipo de rugby femenino".
✅ Realiza una pequeña investigación para encontrar un ejemplo del mundo real de algo como esto.
### Calidad del servicio
Los investigadores encontraron que varios clasificadores de género comerciales tenían altas tasas de error en las imágenes de mujeres con tonos de piel más oscuros, al contrario que con imágenes de hombres con tonos de piel más claros. [Referencia](https://www.media.mit.edu/publications/gender-shades-intersectional-accuracy-disparities-in-commercial-gender-classification/)
Otro ejemplo infame es el dispensador de jabón para manos que parece no ser capaz de detectar a la gente con piel de color oscuro. [Referencia](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
### Estereotipo
La vista de género estereotipada fue encontrada en una traducción automática. Cuando se tradujo “Él es un enfermero y ella es una doctora” al turco, se encontraron los problemas. El turco es un idioma sin género el cual tiene un pronombre "o" para comunicar el singular de la tercera persona, pero al traducir nuevamente la oración del turco al inglés resulta la frase estereotipada e incorrecta de “Ella es una enfermera y él es un doctor”.
![Traducción al turco](../images/gender-bias-translate-en-tr.png)
![Traducción de nuevo al inglés](../images/gender-bias-translate-tr-en.png)
### Denigración
Una tecnología de etiquetado de imágenes horriblemente etiquetó imágenes de gente con color oscuro de piel como gorilas. El etiquetado incorrecto es dañino no solo porque el sistema cometió un error, sino porque específicamente aplicó una etiqueta que tiene una larga historia de ser usada a propósito para denigrar a la gente negra.
[![AI: ¿No soy una mujer?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, ¿No soy una mujer?")
> 🎥 Da clic en la imagen superior para el video: AI, ¿No soy una mujer? - un espectáculo que muestra el daño causado por la denigración racista de una AI.
### Sobre- o sub- representación
Los resultados de búsqueda de imágenes sesgados pueden ser un buen ejemplo de este daño. Cuando se buscan imágenes de profesiones con un porcentaje igual o mayor de hombres que de mujeres, como en ingeniería, o CEO, observa que los resultados están mayormente inclinados hacia un género dado.
![Búsqueda de CEO en Bing](../images/ceos.png)
> Esta búsqueda en Bing para 'CEO' produce resultados bastante inclusivos
Estos cinco tipos principales de daños no son mutuamente exclusivos, y un solo sistema puede exhibir más de un tipo de daño. Además, cada caso varía en severidad. Por ejemplo, etiquetar injustamente a alguien como un criminal es un daño mucho más severo que etiquetar incorrectamente una imagen. Es importante, sin embargo, el recordar que aún los daños relativamente no severos pueden hacer que la gente se sienta enajenada o señalada y el impacto acumulado puede ser extremadamente opresivo.
✅ **Discusión**: Revisa algunos de los ejemplos y ve si estos muestran diferentes daños.
| | Asignación | Calidad del servicio | Estereotipo | Denigrado | Sobre- o sub- representación |
| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: |
| Sistema de contratación automatizada | x | x | x | | x |
| Traducción automática | | | | | |
| Etiquetado de fotos | | | | | |
## Detectando injusticias
Hay varias razones por las que un sistema se comporta injustamente. Los sesgos sociales, por ejemplo, pueden ser reflejados en los conjutos de datos usados para entrenarlos. Por ejemplo, la injusticia en la contratación puede ser exacerbada por la sobre dependencia en los datos históricos. Al emplear patrones elaborados a partir de currículos enviados a la compañía en un período de 10 años, el modelo determinó que los hombres estaban más calificados porque la mayoría de los currículos provenían de hombres, reflejo del pasado dominio masculino en la industria tecnológica.
Los datos inadecuados acerca de cierto grupo de personas pueden ser la razón de la injusticia. Por ejemplo, los clasificadores de imágenes tienes una tasa de error más alta para imágenes de gente con piel oscura porque los tonos de piel más oscura fueron sub-representados en los datos.
Las suposiciones erróneas hechas durante el desarrollo también causan injusticia. Por ejemplo, un sistema de análisis facial intentó predecir quién cometerá un crimen basado en imágenes de los rostros de personas que pueden llevar a supuestos dañinos. Esto podría llevar a daños substanciales para las personas clasificadas erróneamente.
## Entiende tus modelos y construye de forma justa
A pesar de los muchos aspectos de justicia que no son capturados en métricas cuantitativas justas, y que no es posible borrar totalmente el sesgo de un sistema para garantizar la justicia, eres responsable de detectar y mitigar problemas de justicia tanto como sea posible.
Cuando trabajas con modelos de aprendizaje automático, es importante entender tus modelos asegurando su interpretabilidad y evaluar y mitigar injusticias.
Usemos el ejemplo de selección de préstamos para aislar el caso y averiguar el nivel de impacto de cada factor en la predicción.
## Métodos de evaluación
1. **Identifica daños (y beneficios)**. El primer paso es identificar daños y beneficios. Piensa en cómo las acciones y decisiones pueden afectar tanto a clientes potenciales como al negocio mismo.
2. **Identifica los grupos afectados**. Una vez que entendiste qué clase de daños o beneficios pueden ocurrir, identifica los grupos que podrían ser afectados. ¿Están estos grupos definidos por género, etnicidad, o grupo social?
3. **Define métricas de justicia**. Finalmente, define una métrica para así tener algo con qué medir en tu trabajo para mejorar la situación.
### Identifica daños (y beneficios)
¿Cuáles son los daños y beneficios asociados con el préstamo? Piensa en escenarios con falsos negativos y falsos positivos:
**Falsos negativos** (rechazado, pero Y=1) - en este caso, un solicitante que sería capaz de pagar un préstamo es rechazado. Esto es un evento adverso porque los recursos de los préstamos se retienen a los solicitantes calificados.
**Falsos positivos** (aceptado, pero Y=0) - en este caso, el solicitante obtiene un préstamo pero eventualmente incumple. Como resultado, el caso del solicitante será enviado a la agencia de cobro de deudas lo cual puede afectar en sus futuras solicitudes de préstamo.
### Identifica los grupos afectados
Los siguientes pasos son determinar cuales son los grupos que suelen ser afectados. Por ejemplo, en caso de una solicitud de tarjeta de crédito, un modelo puede determinar que las mujeres deberían recibir mucho menor límite de crédito comparado con sus esposos con los cuales comparten ingreso familiar. Una demografía entera, definida por género, es de este modo afectada.
### Define métricas de justicia
Has identificado los daños y un grupo afectado, en este caso, delimitado por género. Ahora, usa los factores cuantificados para desagregar sus métricas. Por ejemplo, usando los datos abajo, puedes ver que las mujeres tienen la tasa de falso positivo más grande y los hombres tienen la más pequeña, y que lo opuesto es verdadero para los falsos negativos.
✅ En una lección futura de Clustering, verás como construir esta 'matriz de confusión' en código
| | Tasa de falso positivo | Tasa de falso negativo | contador |
| ---------- | ------------------- | ------------------- | ----- |
| Mujeres | 0.37 | 0.27 | 54032 |
| Hombres | 0.31 | 0.35 | 28620 |
| No-binario | 0.33 | 0.31 | 1266 |
Esta tabla nos dice varias cosas. Primero, notamos que hay comparativamente pocas personas no-binarias en los datos. Los datos están sesgados, por lo que necesitas ser cuidadoso en cómo interpretas estos números.
En este caso, tenemos 3 grupos y 2 métricas. En el caso de cómo nuestro sistema afecta a los grupos de clientes con sus solicitantes de préstamo, esto puede ser suficiente, pero cuando quieres definir grupos mayores, querrás reducir esto a conjuntos más pequeños de resúmenes. Para hacer eso, puedes agregar más métricas, como la mayor diferencia o la menor tasa de cada falso negativo y falso positivo.
✅ Detente y piensa: ¿Qué otros grupos es probable se vean afectados a la hora de solicitar un préstamo?
## Mitigando injusticias
Para mitigar injusticias, explora el modelo para generar varios modelos mitigados y compara las compensaciones que se hacen entre la precisión y justicia para seleccionar el modelo más justo.
Esta lección introductoria no profundiza en los detalles de mitigación algorítmica de injusticia, como los enfoques de post-procesado y de reducciones, pero aquí tienes una herramiento que podrías probar:
### Fairlearn
[Fairlearn](https://fairlearn.github.io/) es un paquete Python de código abierto que te permite evaluar la justicia de tus sistemas y mitigar injusticias.
La herramienta te ayuda a evaluar cómo unos modelos de predicción afectan a diferentes grupos, permitiéndote comparar múltiples modelos usando métricas de rendimiento y justicia, y provee un conjunto de algoritmos para mitigar injusticia en regresión y clasificación binaria.
- Aprende cómo usar los distintos componentes revisando el repositorio de [GitHub](https://github.com/fairlearn/fairlearn/) de Fairlearn.
- Explora la [guía de usuario](https://fairlearn.github.io/main/user_guide/index.html), [ejemplos](https://fairlearn.github.io/main/auto_examples/index.html)
- Prueba algunos [notebooks de ejemplo](https://github.com/fairlearn/fairlearn/tree/master/notebooks).
- Aprende a [cómo activar evaluación de justicia](https://docs.microsoft.com/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa) de los modelos de aprendizaje automático en Azure Machine Learning.
- Revisa estos [notebooks de ejemplo](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness) para más escenarios de evaluaciones de justicia en Azure Machine Learning.
---
## 🚀 Desafío
Para prevenir que los sesgos sean introducidos en primer lugar, debemos:
- Tener una diversidad de antecedentes y perspectivas entre las personas trabajando en los sistemas.
- Invertir en conjuntos de datos que reflejen la diversidad de nuestra sociedad.
- Desarrollar mejores métodos para la detección y corrección de sesgos cuando estos ocurren.
Piensa en escenarios de la vida real donde la injusticia es evidente en la construcción y uso de modelos. ¿Qué más debemos considerar?
## [Cuestionario posterior a la lección](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/)
## Revisión y autoestudio
En esta lección has aprendido algunos de los conceptos básicos de justicia e injusticia en el aprendizaje automático.
Mira este taller para profundizar en estos temas:
- YouTube: [Daños relacionados con la justicia en sistemas de AI: Ejemplos, evaluaciones, y mitigación - YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k) por Hanna Wallach y Miro Dudik
También lee:
- Centro de recursos de Microsoft RAI: [Recursos de AI responsable – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Grupo de investigación de Microsoft FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
Explorar la caja de herramientas de Fairlearn
[Fairlearn](https://fairlearn.org/)
Lee acerca de las herramientas de Azure Machine Learning para asegurar justicia
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa)
## Tarea
[Explora Fairlearn](../translations/assignment.es.md)

@ -0,0 +1,212 @@
# Equité dans le Machine Learning
![Résumé de l'équité dans le Machine Learning dans un sketchnote](../../sketchnotes/ml-fairness.png)
> Sketchnote par [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Quiz préalable](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/?loc=fr)
## Introduction
Dans ce programme, nous allons découvrir comment le Machine Learning peut avoir un impact sur notre vie quotidienne. Encore aujourd'hui, les systèmes et les modèles sont impliqués quotidiennement dans les tâches de prise de décision, telles que les diagnostics de soins ou la détection de fraudes. Il est donc important que ces modèles fonctionnent bien afin de fournir des résultats équitables pour tout le monde.
Imaginons ce qui peut arriver lorsque les données que nous utilisons pour construire ces modèles manquent de certaines données démographiques, telles que la race, le sexe, les opinions politiques, la religion ou représentent de manière disproportionnée ces données démographiques. Qu'en est-il lorsque la sortie du modèle est interprétée pour favoriser certains éléments démographiques ? Quelle est la conséquence pour l'application l'utilisant ?
Dans cette leçon, nous :
- Sensibiliserons à l'importance de l'équité dans le Machine Learning.
- Apprenderons sur les préjudices liés à l'équité.
- Apprenderons sur l'évaluation et l'atténuation des injustices.
## Prérequis
En tant que prérequis, veuillez lire le guide des connaissances sur les "Principes de l'IA responsable" et regarder la vidéo sur le sujet suivant :
En apprendre plus sur l'IA responsable en suivant ce [guide des connaissances](https://docs.microsoft.com/fr-fr/learn/modules/responsible-ai-principles/?WT.mc_id=academic-15963-cxa)
[![L'approche de Microsoft sur l'IA responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
> 🎥 Cliquez sur l'image ci-dessus pour la vidéo : Microsoft's Approach to Responsible AI
## Injustices dans les données et les algorithmes
> "Si vous torturez les données assez longtemps, elles avoueront n'importe quoi" - Ronald Coase
Cette affirmation semble extrême, mais il est vrai que les données peuvent être manipulées pour étayer n'importe quelle conclusion. Une telle manipulation peut parfois se produire involontairement. En tant qu'êtres humains, nous avons tous des biais, et il est souvent difficile de savoir consciemment quand nous introduisons des biais dans les données.
Garantir l'équité dans l'IA et le Machine Learning reste un défi sociotechnique complexe. Cela signifie qu'il ne peut pas être abordé d'un point de vue purement social ou technique.
### Dommages liés à l'équité
Qu'entendons-nous par injustice ? Le terme « injustice » englobe les impacts négatifs, ou « dommages », pour un groupe de personnes, tels que ceux définis en termes de race, de sexe, d'âge ou de statut de handicap.
Les principaux préjudices liés à l'équité peuvent être classés comme suit :
- **Allocation**, si un sexe ou une ethnicité par exemple est favorisé par rapport à un autre.
- **Qualité de service**. Si vous entraînez les données pour un scénario spécifique mais que la réalité est plus complexe, cela résulte à de très mauvaises performances du service.
- **Stéréotypes**. Associer à un groupe donné des attributs pré-assignés.
- **Dénigration**. Critiquer et étiqueter injustement quelque chose ou quelqu'un.
- **Sur- ou sous- représentation**. L'idée est qu'un certain groupe n'est pas vu dans une certaine profession, et tout service ou fonction qui continue de promouvoir cette représentation contribue, in-fine, à nuire à ce groupe.
Regardons quelques exemples :
### Allocation
Envisageons un système hypothétique de filtrage des demandes de prêt : le système a tendance à choisir les hommes blancs comme de meilleurs candidats par rapport aux autres groupes. En conséquence, les prêts sont refusés à certains demandeurs.
Un autre exemple est un outil de recrutement expérimental développé par une grande entreprise pour sélectionner les candidats. L'outil discriminait systématiquement un sexe en utilisant des modèles qui ont été formés pour préférer les mots associés à d'autres. Cela a eu pour effet de pénaliser les candidats dont les CV contiennent des mots tels que « équipe féminine de rugby ».
✅ Faites une petite recherche pour trouver un exemple réel de ce type d'injustice.
### Qualité de Service
Les chercheurs ont découvert que plusieurs classificateurs commerciaux de sexe avaient des taux d'erreur plus élevés autour des images de femmes avec des teins de peau plus foncés par opposition aux images d'hommes avec des teins de peau plus clairs. [Référence](https://www.media.mit.edu/publications/gender-shades-intersectional-accuracy-disparities-in-commercial-gender-classification/)
Un autre exemple tristement célèbre est un distributeur de savon pour les mains qui ne semble pas capable de détecter les personnes ayant une couleur de peau foncée. [Référence](https://www.journaldugeek.com/2017/08/18/quand-un-distributeur-automatique-de-savon-ne-reconnait-pas-les-couleurs-de-peau-foncees/)
### Stéréotypes
Une vision stéréotypée du sexe a été trouvée dans la traduction automatique. Lors de la traduction de « il est infirmier et elle est médecin » en turc, des problèmes ont été rencontrés. Le turc est une langue sans genre et possède un pronom « o » pour transmettre une troisième personne du singulier. Cependant, la traduction de la phrase du turc à l'anglais donne la phrase incorrecte et stéréotypée suivante : « elle est infirmière et il est médecin ».
![Traduction en turc](images/gender-bias-translate-en-tr.png)
![Traduction en anglais de nouveau](images/gender-bias-translate-tr-en.png)
### Dénigration
Une technologie d'étiquetage d'images a notoirement mal étiqueté les images de personnes à la peau foncée comme des gorilles. L'étiquetage erroné est nocif, non seulement parce que le système fait des erreurs mais surtout car il a spécifiquement appliqué une étiquette qui a pour longtemps été délibérément détournée pour dénigrer les personnes de couleurs.
[![IA : Ne suis-je pas une femme ?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, Ain't I a Woman?")
> 🎥 Cliquez sur l'image ci-dessus pour la vidéo : AI, Ain't I a Woman - une performance montrant le préjudice causé par le dénigrement raciste par l'IA
### Sur- ou sous- représentation
Les résultats de recherche d'images biaisés peuvent être un bon exemple de ce préjudice. Lorsque nous recherchons des images de professions avec un pourcentage égal ou supérieur d'hommes que de femmes, comme l'ingénierie ou PDG, nous remarquons des résultats qui sont plus fortement biaisés en faveur d'un sexe donné.
![Recherche Bing pour PDG](images/ceos.png)
> Cette recherche sur Bing pour « PDG » produit des résultats assez inclusifs
Ces cinq principaux types de préjudices ne sont pas mutuellement exclusifs et un même système peut présenter plus d'un type de préjudice. De plus, chaque cas varie dans sa gravité. Par exemple, étiqueter injustement quelqu'un comme un criminel est un mal beaucoup plus grave que de mal étiqueter une image. Il est toutefois important de se rappeler que même des préjudices relativement peu graves peuvent causer une aliénation ou une isolation de personnes et l'impact cumulatif peut être extrêmement oppressant.
✅ **Discussion**: Revoyez certains des exemples et voyez s'ils montrent des préjudices différents.
| | Allocation | Qualité de service | Stéréotypes | Dénigration | Sur- or sous- représentation |
| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: |
| Système de recrutement automatisé | x | x | x | | x |
| Traduction automatique | | | | | |
| Étiquetage des photos | | | | | |
## Détecter l'injustice
Il existe de nombreuses raisons pour lesquelles un système donné se comporte de manière injuste. Les préjugés sociaux, par exemple, pourraient se refléter dans les ensembles de données utilisés pour les former. Par exemple, l'injustice à l'embauche pourrait avoir été exacerbée par une confiance excessive dans les données historiques. Ainsi, en utilisant les curriculum vitae soumis à l'entreprise sur une période de 10 ans, le modèle a déterminé que les hommes étaient plus qualifiés car la majorité des CV provenaient d'hommes, reflet de la domination masculine passée dans l'industrie de la technologie.
Des données inadéquates sur un certain groupe de personnes peuvent être la cause d'une injustice. Par exemple, les classificateurs d'images avaient un taux d'erreur plus élevé pour les images de personnes à la peau foncée, car les teins de peau plus foncés étaient sous-représentés dans les données.
Des hypothèses erronées faites pendant le développement causent également des injustices. Par exemple, un système d'analyse faciale destiné à prédire qui va commettre un crime sur la base d'images de visages peut conduire à des hypothèses préjudiciables. Cela pourrait entraîner des dommages substantiels pour les personnes mal classées.
## Comprendre vos modèles et instaurer l'équité
Bien que de nombreux aspects de l'équité ne soient pas pris en compte dans les mesures d'équité quantitatives et qu'il ne soit pas possible de supprimer complètement les biais d'un système pour garantir l'équité, nous sommes toujours responsable de détecter et d'atténuer autant que possible les problèmes d'équité.
Lorsque nous travaillons avec des modèles de Machine Learning, il est important de comprendre vos modèles en garantissant leur interprétabilité et en évaluant et en atténuant les injustices.
Utilisons l'exemple de sélection de prêt afin de déterminer le niveau d'impact de chaque facteur sur la prédiction.
## Méthodes d'évaluation
1. **Identifier les préjudices (et les avantages)**. La première étape consiste à identifier les préjudices et les avantages. Réfléchissez à la façon dont les actions et les décisions peuvent affecter à la fois les clients potentiels et l'entreprise elle-même.
1. **Identifier les groupes concernés**. Une fois que vous avez compris le type de préjudices ou d'avantages qui peuvent survenir, identifiez les groupes susceptibles d'être touchés. Ces groupes sont-ils définis par le sexe, l'origine ethnique ou le groupe social ?
1. **Définir des mesures d'équité**. Enfin, définissez une métrique afin d'avoir quelque chose à comparer dans votre travail pour améliorer la situation.
### Identifier les préjudices (et les avantages)
Quels sont les inconvénients et les avantages associés au prêt ? Pensez aux faux négatifs et aux faux positifs :
**Faux négatifs** (rejeter, mais Y=1) - dans ce cas, un demandeur qui sera capable de rembourser un prêt est rejeté. Il s'agit d'un événement défavorable parce que les prêts sont refusées aux candidats qualifiés.
**Faux positifs** (accepter, mais Y=0) - dans ce cas, le demandeur obtient un prêt mais finit par faire défaut. En conséquence, le dossier du demandeur sera envoyé à une agence de recouvrement de créances, ce qui peut affecter ses futures demandes de prêt.
### Identifier les groupes touchés
L'étape suivante consiste à déterminer quels groupes sont susceptibles d'être touchés. Par exemple, dans le cas d'une demande de carte de crédit, un modèle pourrait déterminer que les femmes devraient recevoir des limites de crédit beaucoup plus basses par rapport à leurs conjoints qui partagent les biens du ménage. Tout un groupe démographique, défini par le sexe, est ainsi touché.
### Définir les mesures d'équité
Nous avons identifié les préjudices et un groupe affecté, dans ce cas, défini par leur sexe. Maintenant, nous pouvons utiliser les facteurs quantifiés pour désagréger leurs métriques. Par exemple, en utilisant les données ci-dessous, nous pouvons voir que les femmes ont le taux de faux positifs le plus élevé et les hommes ont le plus petit, et que l'inverse est vrai pour les faux négatifs.
✅ Dans une prochaine leçon sur le clustering, nous verrons comment construire cette 'matrice de confusion' avec du code
| | Taux de faux positifs | Taux de faux négatifs | Nombre |
| ---------- | ------------------- | ------------------- | ----- |
| Femmes | 0.37 | 0.27 | 54032 |
| Hommes | 0.31 | 0.35 | 28620 |
| Non binaire | 0.33 | 0.31 | 1266 |
Ce tableau nous dit plusieurs choses. Premièrement, nous notons qu'il y a relativement peu de personnes non binaires dans les données. Les données sont faussées, nous devons donc faire attention à la façon dont nous allons interpréter ces chiffres.
Dans ce cas, nous avons 3 groupes et 2 mesures. Lorsque nous pensons à la manière dont notre système affecte le groupe de clients avec leurs demandeurs de prêt, cela peut être suffisant. Cependant si nous souhaitions définir un plus grand nombre de groupes, nous allons sûrement devoir le répartir en de plus petits ensembles de mesures. Pour ce faire, vous pouvez ajouter plus de métriques, telles que la plus grande différence ou le plus petit rapport de chaque faux négatif et faux positif.
✅ Arrêtez-vous et réfléchissez : Quels autres groupes sont susceptibles d'être affectés par la demande de prêt ?
## Atténuer l'injustice
Pour atténuer l'injustice, il faut explorer le modèle pour générer divers modèles atténués et comparer les compromis qu'il fait entre précision et équité afin de sélectionner le modèle le plus équitable.
Cette leçon d'introduction ne plonge pas profondément dans les détails de l'atténuation des injustices algorithmiques, telles que l'approche du post-traitement et des réductions, mais voici un outil que vous voudrez peut-être essayer.
### Fairlearn
[Fairlearn](https://fairlearn.github.io/) est un package Python open source qui permet d'évaluer l'équité des systèmes et d'atténuer les injustices.
L'outil aide à évaluer comment les prédictions d'un modèle affectent différents groupes, en permettant de comparer plusieurs modèles en utilisant des mesures d'équité et de performance, et en fournissant un ensemble d'algorithmes pour atténuer les injustices dans la classification binaire et la régression.
- Apprenez à utiliser les différents composants en consultant la documentation Fairlearn sur [GitHub](https://github.com/fairlearn/fairlearn/)
- Explorer le [guide utilisateur](https://fairlearn.github.io/main/user_guide/index.html), et les [exemples](https://fairlearn.github.io/main/auto_examples/index.html)
- Essayez quelques [notebooks d'exemples](https://github.com/fairlearn/fairlearn/tree/master/notebooks).
- Apprenez [comment activer les évaluations d'équités](https://docs.microsoft.com/fr-fr/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa) des modèles de machine learning sur Azure Machine Learning.
- Jetez un coup d'oeil aux [notebooks d'exemples](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness) pour plus de scénarios d'évaluation d'équités sur Azure Machine Learning.
---
## 🚀 Challenge
Pour éviter que des biais ne soient introduits en premier lieu, nous devrions :
- Avoir une diversité d'expériences et de perspectives parmi les personnes travaillant sur les systèmes
- Investir dans des ensembles de données qui reflètent la diversité de notre société
- Développer de meilleures méthodes pour détecter et corriger les biais lorsqu'ils surviennent
Pensez à des scénarios de la vie réelle où l'injustice est évidente dans la construction et l'utilisation de modèles. Que devrions-nous considérer d'autre ?
## [Quiz de validation des connaissances](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/?loc=fr)
## Révision et auto-apprentissage
Dans cette leçon, nous avons appris quelques notions de base sur les concepts d'équité et d'injustice dans le machine learning.
Regardez cet atelier pour approfondir les sujets :
- YouTube : Dommages liés à l'équité dans les systèmes d'IA : exemples, évaluation et atténuation par Hanna Wallach et Miro Dudik [Fairness-related harms in AI systems: Examples, assessment, and mitigation - YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k)
Lectures supplémentaires :
- Centre de ressources Microsoft RAI : [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/fr-fr/ai/responsible-ai-resources?activetab=pivot1:primaryr4&rtc=1)
- Groupe de recherche Microsoft FATE : [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
Explorer la boite à outils Fairlearn
[Fairlearn](https://fairlearn.org/)
Lire sur les outils Azure Machine Learning afin d'assurer l'équité
- [Azure Machine Learning](https://docs.microsoft.com/fr-fr/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa)
## Devoir
[Explorer Fairlearn](assignment.fr.md)

@ -8,4 +8,4 @@ En esta lección, aprendió sobre Fairlearn, un "proyecto open-source impulsado
| Criterios | Ejemplar | Adecuado | Necesita mejorar |
| -------- | --------- | -------- | ----------------- |
| | Un documento o presentación powerpoint es presentado discutiendo los sistemas de Fairlearn, el cuadernos que fue ejecutado, y las conclusiones extraídas al ejecutarlo | Un documento es presentado sin conclusiones | No se presenta ningún documento |
| | Un documento o presentación powerpoint es presentado discutiendo los sistemas de Fairlearn, el cuaderno que fue ejecutado, y las conclusiones extraídas al ejecutarlo | Un documento es presentado sin conclusiones | No se presenta ningún documento |

@ -0,0 +1,11 @@
# Explorez le Fairlearn
## Instructions
Dans cette leçon, vous avez découvert le concept de Fairlearn, un « projet open source géré par la communauté pour aider les data scientists à améliorer l'équité des systèmes d'IA ». Pour ce devoir, explorez l'un des [carnets de Fairlearn](https://fairlearn.org/v0.6.2/auto_examples/index.html) et rapportez vos découvertes dans un article ou une présentation.
## Rubrique
| Critères | Exemplaire | Adéquat | Besoin d'amélioration |
| -------- | --------- | -------- | ----------------- |
| | Une présentation papier ou powerpoint est présentée sur les systèmes de Fairlearn, le bloc-notes qui a été exécuté et les conclusions tirées de son exécution. | Un article est présenté sans conclusions | Aucun papier n'est présenté |

@ -1,6 +1,6 @@
# 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:
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'
@ -13,43 +13,43 @@ A un alto nivel, el arte de crear procesos de machine learning (ML) se compone d
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 experimetación.
4. **Entrena el model**. 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.
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 utlizados para entrenarl 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.
## Que pregunta hacer
## 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 basado en condicionales. Dada una tarea actuarial, por ejemplo, un científico de datos podría construir reglas artesanales sobre la mortalidad de los fumadores frente a los no fumadores.
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, cuandos 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 meteorólogicas 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.
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/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 comletar. Para probar su pregunta y formar una hipótesis basada en las predicciones de su modelo, debe identificar y configurar varios elementos.
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 cualquier tipo de certeza, necesita una buena cantidad de datos del tipo correcto.
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 aleotizarlo y mezclarlo, según sus técnicas de entrenamiento.
- **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.
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.
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 mayor 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))
🎓 **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
@ -57,22 +57,22 @@ Un aspecto importante del conjunto de herramientas del científico de datos es e
### Divide tu conjunto de datos
Antes del entrenamiento, debe dividir su conjunto de datos en dos o más partes de tamaño desigual que aún represente bien los 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 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)).
- **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, usando 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.
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. Pasando por 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 custión.
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á el código '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`).
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
@ -82,9 +82,9 @@ Una vez que se completa el proceso de entrenamiento (puede tomar muchas iteracio
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 sobreajustadoo (overfitting) predice demasiado bien los datos de entrenamiento porque ha aprendido demasiado bien los detalles de los datos y el ruido. Un modelo insuficentemente ajustado (Underfitting) es es preciso, ya que ni puede analizar con precisión sus datos de entrenamiento ni los datos que aún no ha 'visto'.
🎓 **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'.
![overfitting model](images/overfitting.png)
![Sobreajuste de un modelo](images/overfitting.png)
> Infografía de [Jen Looper](https://twitter.com/jenlooper)
## Ajuste de parámetros
@ -93,7 +93,7 @@ Una vez que haya completado su entrenamiento inicial, observe la calidad del mod
## 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 aplicada, donde está creando activos web para usar el modelo en producción, este proceo 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.
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'.
---
@ -105,7 +105,7 @@ Dibuje un diagrama de flujos que refleje los pasos de practicante de ML. ¿Dónd
## Revisión & Autoestudio
Busque en línea entrevistas con científicos de datos que analicen su trabajo diario. Aquí está [uno](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
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

@ -0,0 +1,11 @@
# 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 |

@ -1,6 +1,6 @@
# Introducción al machine learning
En esta sección del plan de estudios, se le presentarán los conceptos básicos que subyacen al campo del "machine learning", lo que es, y aprenderá sobre su historia y las técnicas que los investigadores utilizan para trabajar con él. ¡Exploremos juntos este nuevo mundo de ML!
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 <a href="https://unsplash.com/@bill_oxford?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Bill Oxford</a> on <a href="https://unsplash.com/s/photos/globe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>

@ -0,0 +1,28 @@
# मशीन लर्निंग का परिचय
पाठ्यक्रम के इस भाग में, आपको मशीन लर्निंग के क्षेत्र में अंतर्निहित बुनियादी अवधारणाओं से परिचित कराया जाएगा, यह क्या है, इसका इतिहास क्या है और इसके साथ काम करने के लिए शोधकर्ताओं द्वारा उपयोग की जाने वाली तकनीकों के बारे में जानेंगे। आइए एक साथ मशीन लर्निंग की इस नई दुनिया को एक्सप्लोर करें!
![ग्लोब](../images/globe.jpg)
> <a href="https://unsplash.com/@bill_oxford?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">बिल ऑक्सफ़ोर्ड</a> द्वारा तस्वीर <a href="https://unsplash.com/s/photos/globe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">अनस्पेलश </a> पर
### पाठ
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) द्वारा ♥ से लिखा गया

@ -5,13 +5,14 @@
![地球](../images/globe.jpg)
> <a href="https://unsplash.com/s/photos/globe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>の<a href="https://unsplash.com/@bill_oxford?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Bill Oxford</a>による写真
### Lessons
### レッスン
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)
### Credits
### クレジット
"機械学習への導入 "は、[Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan)、[Ornella Altunyan](https://twitter.com/ornelladotcom)、[Jen Looper](https://twitter.com/jenlooper)などのチームによって制作されました。

@ -7,7 +7,7 @@
## [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 coasa, asegúrese de tener las herramientas adecuadas para comenzar el proceso!
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:
@ -47,9 +47,9 @@ En esta carpeta, encontrará el archivo _notebook.ipynb_.
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 agrege un poco de _markdown_, y el siguiente texto **# Welcome to your notebook**.
1. Seleccione el icono `md` y agregue un poco de _markdown_, y el siguiente texto **# Welcome to your notebook**.
A continuación, agrege algo de código Python.
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.
@ -72,7 +72,7 @@ Ahora que Python está configurado en un entorno local, y se siente cómo con lo
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 leraning tradicional'. Hemos evitado deliberadamente las redes neuronales y el _deep learning_, ya que se tratartán mejor en nuestro próximo plan de estudios 'IA para principiantes'.
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.
@ -80,11 +80,11 @@ Scikit-learn hace que sea sencillo construir modelos y evaluarlos para su uso. S
> 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, borre todas las celdas presionando el icono 'papelera'.
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 combinanciones de varibales. 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.
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 utlilizarí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 puede hacer a los datos y cuáles de estos métodos sería más apropiado.
✅ 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.
@ -117,7 +117,7 @@ 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 esta podrían excluir a ciertas partes de una población de los tratamientos.
✅ 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.
@ -144,9 +144,9 @@ En una nueva celda de código, cargue el conjunto de datos de diabetes llamando
-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 regersió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?
✅ 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 utilizar una regresión lineal para generar una línea entre los valores de estos datos, según un patrón que determine.
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]
@ -175,7 +175,7 @@ En una nueva celda de código, cargue el conjunto de datos de diabetes llamando
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 prediccíón para dibujar una línea en el lugar más apropiado, entre las agrupaciones de datos del modelo.
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')

File diff suppressed because one or more lines are too long

@ -1,9 +1,9 @@
# 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?
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 cuadernos con una exploración/visualización | No se envía un cuaderno |
| | 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 |

@ -0,0 +1,11 @@
# 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. |

@ -8,13 +8,13 @@ En América del Norte, las calabazas se tallan a menudo con caras aterradoras pa
## Lo que vas a aprender
Las lecciones de esta sección cubren los tipos de regressión en el contexto de machine learning. Los modelos de regresión pueden ayudar a determinar la _relación_ entre variables. Este tipo de modelos puede predecir valores como la longitud, la temperatura o la edad, descubriendo así relaciones entre variables a medida que analiza puntos de datos.
Las lecciones de esta sección cubren los tipos de regresión en el contexto de machine learning. Los modelos de regresión pueden ayudar a determinar la _relación_ entre variables. Este tipo de modelos puede predecir valores como la longitud, la temperatura o la edad, descubriendo así relaciones entre variables a medida que analiza puntos de datos.
En esta serie de lecciones, descubrirá la diferencia entre la regresión lineal y la logística, y cuándo debe usar una u otra.
En este grupo de lecciones, se preparará para comenzar las tares de machine learning, incluida la configuración de Visual Studio Code para manejar los cuadernos, el entorno común para los científicos de datos. Descubrirá Scikit-learn, una librería para machine learning, y creará sus primeros modelos, centrándose en los modelos de Regresión en este capítulo.
En este grupo de lecciones, se preparará para comenzar las tareas de machine learning, incluida la configuración de Visual Studio Code para manejar los cuadernos, el entorno común para los científicos de datos. Descubrirá Scikit-learn, una librería para machine learning, y creará sus primeros modelos, centrándose en los modelos de Regresión en este capítulo.
> Existen herramientas útiles _low-code_ que pueden ayudarlo a aprender a trabjar con modelos de regresión. Pruebe [Azure ML para esta tarea](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)
> Existen herramientas útiles _low-code_ que pueden ayudarlo a aprender a trabajar con modelos de regresión. Pruebe [Azure ML para esta tarea](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)
### Lecciones
@ -30,4 +30,4 @@ En este grupo de lecciones, se preparará para comenzar las tares de machine lea
♥️ Los contribuyentes del cuestionario incluyen: [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan) y [Ornella Altunyan](https://twitter.com/ornelladotcom)
El _dataset_ de calabaza es sugerido por [este proyecto en Kaggle](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) y sus datos provienen de [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuido por el Departamento de Agricultura de los Estados Unidos. Hemos agragado algunos puntos alrededor color basados en la variedad para normalizar la distribución. Estos datos son de dominio público.
El _dataset_ de calabaza es sugerido por [este proyecto en Kaggle](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) y sus datos provienen de [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuido por el Departamento de Agricultura de los Estados Unidos. Hemos agregado algunos puntos alrededor del color basados en la variedad para normalizar la distribución. Estos datos son de dominio público.

@ -25,7 +25,7 @@ There are many questions you need to ask:
- **Where will the model reside?** In the cloud or locally?
- **Offline support.** Does the app have to work offline?
- **What technology was used to train the model?** The chosen technology may influence the tooling you need to use.
- **Using Tensor flow.** If you are training a model using TensorFlow, for example, that ecosystem provides the ability to convert a TensorFlow model for use in a web app by using [TensorFlow.js](https://www.tensorflow.org/js/).
- **Using TensorFlow.** If you are training a model using TensorFlow, for example, that ecosystem provides the ability to convert a TensorFlow model for use in a web app by using [TensorFlow.js](https://www.tensorflow.org/js/).
- **Using PyTorch.** If you are building a model using a library such as [PyTorch](https://pytorch.org/), you have the option to export it in [ONNX](https://onnx.ai/) (Open Neural Network Exchange) format for use in JavaScript web apps that can use the [Onnx Runtime](https://www.onnxruntime.ai/). This option will be explored in a future lesson for a Scikit-learn-trained model.
- **Using Lobe.ai or Azure Custom Vision.** If you are using an ML SaaS (Software as a Service) system such as [Lobe.ai](https://lobe.ai/) or [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) to train a model, this type of software provides ways to export the model for many platforms, including building a bespoke API to be queried in the cloud by your online application.
@ -281,7 +281,7 @@ Now you can build a Flask app to call your model and return similar results, but
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -281,7 +281,7 @@ Ora si può creare un'app Flask per chiamare il modello e restituire risultati s
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -281,7 +281,7 @@ print(model.predict([[50,44,-12]]))
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -281,7 +281,7 @@ print(model.predict([[50,44,-12]]))
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -0,0 +1,348 @@
# Crie um aplicativo Web para usar um modelo de ML
Nesta lição, você treinará um modelo de ML em um conjunto de dados que está fora deste mundo: _avistamentos de OVNIs no século passado_, obtidos do banco de dados do NUFORC.
Você vai aprender:
- Como 'pickle' um modelo treinado
- Como usar esse modelo em uma aplicação Flask
Continuaremos nosso uso de notebooks para limpar dados e treinar nosso modelo, mas você pode levar o processo um passo adiante, explorando o uso de um modelo 'em estado selvagem', por assim dizer: em um aplicativo web.
Para fazer isso, você precisa construir um aplicativo da web usando o Flask.
## [Teste pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17?loc=br)
## Construindo um aplicativo
Existem inúmeras maneiras de criar aplicativos web para consumir modelos de machine learning (aprendizado de máquina). Sua arquitetura web pode influenciar a maneira como seu modelo é treinado. Imagine que você está trabalhando em uma empresa em que o grupo de ciência de dados treinou um modelo que eles desejam que você use em um aplicativo.
### Considerações
Existem muitas perguntas que você precisa fazer:
- **É um aplicativo web ou um aplicativo mobile?** Se você estiver criando um aplicativo mobile ou precisar usar o modelo em um contexto de IoT, poderá usar o [TensorFlow Lite](https://www.tensorflow.org/lite/) e usar o modelo em um aplicativo Android ou iOS.
- **Onde o modelo residirá?** Na nuvem ou localmente?
- **Suporte offline.** O aplicativo precisa funcionar offline??
- **Qual tecnologia foi usada para treinar o modelo?** A tecnologia escolhida pode influenciar o ferramental que você precisa usar.
- **Usando o fluxo do Tensor.** Se você estiver treinando um modelo usando o TensorFlow, por exemplo, esse ecossistema oferece a capacidade de converter um modelo do TensorFlow para uso em um aplicativo da web usando [TensorFlow.js](https://www.tensorflow.org/js/).
- **Usando o PyTorch.** Se você estiver construindo um modelo usando uma biblioteca como [PyTorch](https://pytorch.org/), você tem a opção de exportá-lo em formato [ONNX](https://onnx.ai/) (Troca de rede neural aberta (Open Neural Network Exchange)) para uso em aplicativos web JavaScript que podem usar o [Onnx Runtime](https://www.onnxruntime.ai/). Esta opção será explorada em uma lição futura para um modelo treinado para aprender com Scikit.
- **Usando Lobe.ai ou Azure Custom Vision.** Se você estiver usando um sistema ML SaaS (Software as a Service), como [Lobe.ai](https://lobe.ai/) ou [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) para treinar um modelo, este tipo de software fornece maneiras de exportar o modelo para muitas plataformas, incluindo a construção de uma API sob medida para ser consultada na nuvem por seu aplicativo online.
Você também tem a oportunidade de construir um aplicativo web Flask inteiro que seria capaz de treinar o próprio modelo em um navegador da web. Isso também pode ser feito usando TensorFlow.js em um contexto JavaScript.
Para nossos propósitos, já que estamos trabalhando com notebooks baseados em Python, vamos explorar as etapas que você precisa seguir para exportar um modelo treinado de tal notebook para um formato legível por um aplicativo web construído em Python.
## Ferramenta
Para esta tarefa, você precisa de duas ferramentas: Flask e Pickle, ambos executados em Python.
✅ O que é [Flask](https://palletsprojects.com/p/flask/)? Definido como um 'micro-framework' por seus criadores, o Flask fornece os recursos básicos de estruturas web usando Python e um mecanismo de modelagem para construir páginas web. Dê uma olhada [neste módulo de aprendizagem](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-15963-cxa) para praticar a construção com Flask.
✅ O que é [Pickle](https://docs.python.org/3/library/pickle.html)? Pickle 🥒 é um módulo Python que serializa e desserializa a estrutura de um objeto Python. Quando você 'pickle' um modelo, serializa ou aplaina sua estrutura para uso na web. Tenha cuidado: pickle não é intrinsecamente seguro, então tome cuidado se for solicitado para ser feito um 'un-pickle' em um arquivo. Um arquivo tem o sufixo `.pkl`.
## Exercício - limpe seus dados
Nesta lição, você usará dados de 80.000 avistamentos de OVNIs, coletados pelo [NUFORC](https://nuforc.org) (Centro Nacional de Relatos de OVNIs). Esses dados têm algumas descrições interessantes de avistamentos de OVNIs, por exemplo:
- **Exemplo de descrição longa.** "Um homem emerge de um feixe de luz que brilha em um campo gramado à noite e corre em direção ao estacionamento da Texas Instruments".
- **Exemplo de descrição curta.** "as luzes nos perseguiram".
A planilha [ufos.csv](../data/ufos.csv) inclui colunas sobre a `city`, `state` e `country` onde o avistamento ocorreu, a `shape` do objeto e sua `latitude` e `longitude`.
_nota da tradução: city é a coluna referente a cidade, state é a coluna referente ao estado e country é a coluna referente ao país._
Em um [notebook](../notebook.ipynb) branco incluído nesta lição:
1. importe as bibliotecas `pandas`, `matplotlib`, e `numpy` como você fez nas lições anteriores e importe a planilha ufos. Você pode dar uma olhada em um conjunto de dados de amostra:
```python
import pandas as pd
import numpy as np
ufos = pd.read_csv('./data/ufos.csv')
ufos.head()
```
2. Converta os dados ufos em um pequeno dataframe com títulos novos. Verifique os valores únicos no campo `Country`.
```python
ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})
ufos.Country.unique()
```
3. Agora, você pode reduzir a quantidade de dados com os quais precisamos lidar, descartando quaisquer valores nulos e importando apenas avistamentos entre 1 a 60 segundos:
```python
ufos.dropna(inplace=True)
ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)]
ufos.info()
```
4. Importe a biblioteca `LabelEncoder` do Scikit-learn para converter os valores de texto de países em um número:
✅ LabelEncoder encodes data alphabetically
```python
from sklearn.preprocessing import LabelEncoder
ufos['Country'] = LabelEncoder().fit_transform(ufos['Country'])
ufos.head()
```
Seus dados devem ser assim:
```output
Seconds Country Latitude Longitude
2 20.0 3 53.200000 -2.916667
3 20.0 4 28.978333 -96.645833
14 30.0 4 35.823889 -80.253611
23 60.0 4 45.582778 -122.352222
24 3.0 3 51.783333 -0.783333
```
## Exercício - construa seu modelo
Agora você pode se preparar para treinar um modelo, dividindo os dados no grupo de treinamento e teste.
1. Selecione os três recursos que deseja treinar como seu vetor X, e o vetor y será o `Country`. Você quer ser capaz de inserir `Seconds`, `Latitude` e `Longitude` e obter um id de país para retornar.
_nota da tradução: seconds são os segundos e country são os países._
```python
from sklearn.model_selection import train_test_split
Selected_features = ['Seconds','Latitude','Longitude']
X = ufos[Selected_features]
y = ufos['Country']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
2. Treine seu modelo usando regressão logística:
```python
from sklearn.metrics import accuracy_score, classification_report
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(classification_report(y_test, predictions))
print('Predicted labels: ', predictions)
print('Accuracy: ', accuracy_score(y_test, predictions))
```
A precisão não é ruim **(cerca de 95%)**, o que não é surpresa, já que `Country` e `Latitude/Longitude` se correlacionam.
O modelo que você criou não é muito revolucionário, pois você deve ser capaz de inferir um `País` de sua `Latitude` e `Longitude`, mas é um bom exercício tentar treinar a partir de dados brutos que você limpou, exportou e, em seguida, use este modelo em um aplicativo da web.
## Exercício - 'pickle' seu modelo
Agora, é hora de _pickle_ seu modelo! Você pode fazer isso em algumas linhas de código. Depois de _pickled_, carregue seu modelo pickled e teste-o em uma matriz de dados de amostra contendo valores para segundos, latitude e longitude,
```python
import pickle
model_filename = 'ufo-model.pkl'
pickle.dump(model, open(model_filename,'wb'))
model = pickle.load(open('ufo-model.pkl','rb'))
print(model.predict([[50,44,-12]]))
```
O modelo retorna **'3'**, que é o código do país para o Reino Unido. Maneiro! 👽
## Exercício - construir um aplicativo Flask
Agora você pode construir uma aplicação Flask para chamar seu modelo e retornar resultados semelhantes, mas de uma forma visualmente mais agradável.
1. Comece criando uma pasta chamada **web-app** ao lado do arquivo _notebook.ipynb_ onde o arquivo _ufo-model.pkl_ reside.
2. Nessa pasta, crie mais três pastas: **static**, com uma pasta **css** dentro dela, e **templates**. Agora você deve ter os seguintes arquivos e diretórios::
```output
web-app/
static/
css/
templates/
notebook.ipynb
ufo-model.pkl
```
✅ Consulte a pasta da solução para uma visão da aplicação concluído
3. O primeiro arquivo a ser criado na pasta _web-app_ é o arquivo **requirements.txt**. Como _package.json_ em uma aplicação JavaScript, este arquivo lista as dependências exigidas pela aplicação. Em **requirements.txt**, adicione as linhas:
```text
scikit-learn
pandas
numpy
flask
```
4. Agora, execute este arquivo navegando até o _web-app_:
```bash
cd web-app
```
5. Em seu terminal, digite `pip install`, para instalar as bibliotecas listadas em _requirements.txt_:
```bash
pip install -r requirements.txt
```
6. Agora, você está pronto para criar mais três arquivos para finalizar o aplicativo:
1. Crie **app.py** na raiz do projeto.
2. Crie **index.html** no diretório _templates_.
3. Crie **styles.css** no diretório _static/css_.
7. Construa o arquivo _styles.css_ com alguns estilos:
```css
body {
width: 100%;
height: 100%;
font-family: 'Helvetica';
background: black;
color: #fff;
text-align: center;
letter-spacing: 1.4px;
font-size: 30px;
}
input {
min-width: 150px;
}
.grid {
width: 300px;
border: 1px solid #2d2d2d;
display: grid;
justify-content: center;
margin: 20px auto;
}
.box {
color: #fff;
background: #2d2d2d;
padding: 12px;
display: inline-block;
}
```
8. Em seguida, crie o arquivo _index.html_:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>🛸 Predição de aparência de OVNIs! 👽</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
</head>
<body>
<div class="grid">
<div class="box">
<p>De acordo com o número de segundos, latitude e longitude, que país provavelmente relatou ter visto um OVNI?</p>
<form action="{{ url_for('predict')}}" method="post">
<input type="number" name="seconds" placeholder="Seconds" required="required" min="0" max="60" />
<input type="text" name="latitude" placeholder="Latitude" required="required" />
<input type="text" name="longitude" placeholder="Longitude" required="required" />
<button type="submit" class="btn">Preveja o país onde o OVNI vai ser visto</button>
</form>
<p>{{ prediction_text }}</p>
</div>
</div>
</body>
</html>
```
Dê uma olhada no modelo neste arquivo. Observe a sintaxe do 'mustache' em torno das variáveis que serão fornecidas pelo aplicativo, como o texto de previsão: `{{}}`. Há também um formulário que posta uma previsão para a rota `/predict`.
Finalmente, você está pronto para construir o arquivo python que direciona o consumo do modelo e a exibição de previsões:
9. Em `app.py` adicione:
```python
import numpy as np
from flask import Flask, request, render_template
import pickle
app = Flask(__name__)
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")
def home():
return render_template("index.html")
@app.route("/predict", methods=["POST"])
def predict():
int_features = [int(x) for x in request.form.values()]
final_features = [np.array(int_features)]
prediction = model.predict(final_features)
output = prediction[0]
countries = ["Australia", "Canada", "Germany", "UK", "US"]
return render_template(
"index.html", prediction_text="Likely country: {}".format(countries[output])
)
if __name__ == "__main__":
app.run(debug=True)
```
> 💡 Dica: quando você adiciona [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) enquanto executa o aplicativo da web usando o Flask, todas as alterações feitas em seu aplicativo será refletido imediatamente, sem a necessidade de reiniciar o servidor. Cuidado! Não ative este modo em um aplicativo de produção.
Se você executar `python app.py` ou `python3 app.py` - seu servidor web inicializa, localmente, e você pode preencher um pequeno formulário para obter uma resposta à sua pergunta candente sobre onde OVNIs foram avistados!
Antes de fazer isso, dê uma olhada nas partes do `app.py`:
1. Primeiro, as dependências são carregadas e o aplicativo é iniciado.
2. Em seguida, o modelo é importado.
3. Em seguida, index.html é renderizado na rota inicial.
Na rota `/predict`, várias coisas acontecem quando o formulário é postado:
1. As variáveis do formulário são reunidas e convertidas em um array numpy. Eles são então enviados para o modelo e uma previsão é retornada.
2. Os países que desejamos exibir são renderizados novamente como texto legível de seu código de país previsto e esse valor é enviado de volta para index.html para ser renderizado no modelo.
Usar um modelo dessa maneira, com o Flask e um modelo em conserva, é relativamente simples. O mais difícil é entender qual é o formato dos dados que devem ser enviados ao modelo para se obter uma previsão. Tudo depende de como o modelo foi treinado. Este possui três pontos de dados a serem inseridos a fim de obter uma previsão.
Em um ambiente profissional, você pode ver como uma boa comunicação é necessária entre as pessoas que treinam o modelo e aqueles que o consomem em um aplicativo da web ou móvel. No nosso caso, é apenas uma pessoa, você!
---
## 🚀 Desafio
Em vez de trabalhar em um notebook e importar o modelo para o aplicativo Flask, você pode treinar o modelo diretamente no aplicativo Flask! Tente converter seu código Python no notebook, talvez depois que seus dados forem limpos, para treinar o modelo de dentro do aplicativo em uma rota chamada `train`. Quais são os prós e os contras de seguir esse método?
## [Teste pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18?loc=br)
## Revisão e autoestudo
Existem muitas maneiras de construir um aplicativo da web para consumir modelos de ML. Faça uma lista das maneiras pelas quais você pode usar JavaScript ou Python para construir um aplicativo da web para alavancar o aprendizado de máquina. Considere a arquitetura: o modelo deve permanecer no aplicativo ou na nuvem? Nesse último caso, como você acessaria? Desenhe um modelo arquitetônico para uma solução da Web de ML aplicada.
## Tarefa
[Experimente um modelo diferente](assignment.pt-br.md)

@ -283,7 +283,7 @@ Finalmente, você está pronto para construir o arquivo python que direciona o c
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -281,7 +281,7 @@ print(model.predict([[50,44,-12]]))
app = Flask(__name__)
model = pickle.load(open("../ufo-model.pkl", "rb"))
model = pickle.load(open("./ufo-model.pkl", "rb"))
@app.route("/")

@ -0,0 +1,11 @@
# Experimente um modelo diferente
## Instruções
Agora que você construiu um aplicativo da web usando um modelo de regressão treinado, use um dos modelos de uma lição anterior de regressão para refazer este aplicativo da web. Você pode manter o estilo ou projetá-lo de maneira diferente para refletir os dados da abóbora. Tenha o cuidado de alterar as entradas para refletir o método de treinamento do seu modelo.
## Rubrica
| Critérios | Exemplar | Adequado | Precisa Melhorar |
| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------- |
| | O aplicativo da web é executado conforme o esperado e é implantado na nuvem | O aplicativo da web contém falhas ou exibe resultados inesperados | O aplicativo da web não funciona corretamente |

@ -0,0 +1,20 @@
## अपने एमएल मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं
पाठ्यक्रम के इस खंड में, आपको एक लागू एम.एल विषय से परिचित कराया जाएगा: अपने सैकिट-लर्न मॉडल को एक फ़ाइल के रूप में कैसे सहेजा जाए जिसका उपयोग वेब एप्लिकेशन के भीतर पूर्वानुमान लगाने के लिए किया जा सकता है। मॉडल सहेजे जाने के बाद, आप सीखेंगे कि फ्लास्क में निर्मित वेब ऐप में इसका उपयोग कैसे करें। आप पहले कुछ डेटा का उपयोग करके एक मॉडल तैयार करेंगे जो कि यू.एफ.ओ देखे जाने के बारे में है! फिर, आप एक वेब ऐप तैयार करेंगे जो आपको अक्षांश और देशांतर मान के साथ सेकंड इनपुट करने देगा ताकि यह अनुमान लगाया जा सके कि किस देश ने यू.एफ.ओ देखने की सूचना दी है।
![यू.एफ.ओ पार्किंग](../images/ufo.jpg)
> <a href="https://unsplash.com/@mdherren?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">माइकल हेरेन </a> द्वारा तस्वीर <a href="https://unsplash.com/s/photos/ufo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">अनस्पेलश </a> पर
### पाठ
- [वेब ऐप बनाएं](../1-Web-App/README.md)
### क्रेडिट
- "वेब ऐप बनाएं" [जेन लूपर ](https://twitter.com/jenlooper) द्वारा ♥ से लिखा गया
- प्रश्नोत्तरी रोहन राज वारा ♥ से लिखा गया
- डाटासेट [कागल](https://www.kaggle.com/NUFORC/ufo-sightings) से लिया गया था
- वेब ऐप आर्किटेक्चर अभिनव सागर द्वारा [इस लेख](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) और [इस रेपो](https://github.com/abhinavsagar/machine-learning-deployment) से प्रेरित है

@ -0,0 +1,21 @@
# Crie um aplicativo da web para usar seu modelo de ML
Nesta seção do curso, você será apresentado a um tópico de ML aplicado: como salvar seu modelo Scikit-learn como um arquivo que pode ser usado para fazer previsões dentro de uma aplicação web. Depois que o modelo for salvo, você aprenderá como usá-lo em uma aplicação web integrada no Flask. Primeiro, você criará um modelo usando alguns dados sobre avistamentos de OVNIs! Em seguida, você construirá um aplicativo web que permitirá que você insira um número de segundos com um valor de latitude e longitude para prever qual país relatou ter visto um OVNI.
![Estacionamento de OVNI](../images/ufo.jpg)
Foto por <a href="https://unsplash.com/@mdherren?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Michael Herren</a> em <a href="https://unsplash.com/s/photos/ufo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Lições
1. [Crie um aplicativo Web](../1-Web-App/translations/README.pt-br.md)
## Créditos
"Crie um aplicativo Web" foi escrito com ♥ por [Jen Looper](https://twitter.com/jenlooper).
♥️ Os questionários foram escritos por Rohan Raj.
O conjunto de dados é originado do [Kaggle](https://www.kaggle.com/NUFORC/ufo-sightings).
A arquitetura do aplicativo da web foi sugerida em parte por [esse artigo](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4) e [esse repositório](https://github.com/abhinavsagar/machine-learning-deployment) do Abhinav Sagar.

@ -0,0 +1,22 @@
# 构建一个 Web 应用程序来使用您的机器学习模型
课程的本章节将为您介绍机器学习的应用:如何保存您的 Scikit-learn 模型为文件以便在 Web 应用程序中使用该模型进行预测。模型保存后,您将学习如何在一个由 Flask 构建的 Web 应用程序中使用它。首先,您将会使用一些 UFO 目击事件的数据去创建一个模型!然后,您将构建一个 Web 应用程序,这个应用程序能让您输入秒数,经度,纬度来预测哪个国家会报告 UFO 目击事件。
![UFO Parking](../images/ufo.jpg)
图片由 <a href="https://unsplash.com/@mdherren?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Michael Herren</a> 拍摄,来自 <a href="https://unsplash.com/s/photos/ufo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## 教程
1. [构建一个 Web 应用程序](../1-Web-App/translations/README.zh-cn.md)
## 致谢
"构建一个 Web 应用程序" 由 [Jen Looper](https://twitter.com/jenlooper) 用 ♥ 编写️
测验由 Rohan Raj 用 ♥️ 编写
数据集来自 [Kaggle](https://www.kaggle.com/NUFORC/ufo-sightings)
Web 应用程序的架构一部分参考了 Abhinav Sagar 的[文章](https://towardsdatascience.com/how-to-easily-deploy-machine-learning-models-using-flask-b95af8fe34d4)和[仓库](https://github.com/abhinavsagar/machine-learning-deployment)

@ -125,7 +125,7 @@ Let's see if we can reason our way through different approaches given the constr
We will be using Scikit-learn to analyze our data. However, there are many ways to use logistic regression in Scikit-learn. Take a look at the [parameters to pass](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Essentially there are two important parameters `multi_class` and `solver`, that we need to specify, when we ask Scikit-learn to perform a logistic regression. The `multi_class` value applies a certain behavior. The value of the solver is what algorithm to use. Not all solvers can be paired with all `multi_class` values.
Essentially there are two important parameters - `multi_class` and `solver` - that we need to specify, when we ask Scikit-learn to perform a logistic regression. The `multi_class` value applies a certain behavior. The value of the solver is what algorithm to use. Not all solvers can be paired with all `multi_class` values.
According to the docs, in the multiclass case, the training algorithm:

@ -0,0 +1,11 @@
# 学习不同的 solvers
## 说明
在本课程,您学习了众多将算法与机器学习过程结合在一起来产生精确模型的 solvers 。回顾本课程中列出的所有 solvers 并挑选两个,用您自己的语言比较和对比这两个 solver。它们解决了什么样的问题?它们如何处理各种数据结构?您为什么要选择某个 solver 而不是另一个?
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| ---- | --- | -------- | ------- |
| | 提交了一份有两个段落的 .doc 文件,每个段落描述一个 solver, 并详细比较它们间的异同 | 提交了一份仅有一个段落的 .doc 文件 | 没有完成 |

@ -176,7 +176,7 @@ Let's try for a little better accuracy with a Support Vector Classifier.
Let's follow the path to the very end, even though the previous test was quite good. Let's try some 'Ensemble Classifiers, specifically Random Forest and AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```

@ -0,0 +1,235 @@
# 菜品分类器 2
在第二节课程中,您将探索更多方法来对数值数据进行分类。您还将了解选择不同的分类器所带来的结果。
## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/23/)
### 先决条件
我们假设您已经完成了前面的课程,并且在本次课程文件夹根路径下的 `data` 文件夹中有一个经过清洗的名为 cleaned_cuisines.csv 数据集。
### 准备工作
我们已经将清洗过的数据集加载进您的 _notebook.ipynb_ 文件,并分为 X 和 Y dataframe,为模型构建过程做好准备。
## 分类学习路线图
在此之前,您已经了解使用 Microsoft 速查表对数据进行分类时可以使用到的各种选项。Scikit-learn 提供了一个类似的,但更细粒度的速查表,可以进一步帮助您调整估计器(分类器的另一个术语):
![来自 Scikit-learn 的机器学习路线图 ](../images/map.png)
> 提示:[在线查看路线图](https://scikit-learn.org/stable/tutorial/machine_learning_map/)并沿着路线阅读文档。
### 计划
一旦您清楚了解了您的数据,这张路线图就非常有用,因为您可以沿着路线并做出决定:
- 我们有超过 50 个样本
- 我们想要预测一个类别
- 我们有标记过的数据
- 我们的样本数少于 100000
- ✨ 我们可以选择线性 SVC
- 如果那不起作用,既然我们有数值数据
- 我们可以尝试 ✨ K-近邻分类器
- 如果那不起作用,试试 ✨ SVC 和 ✨ 集成分类器
这是一条非常有用的线索。
## 练习 - 拆分数据
按照这个路线,我们应该从导入一些要使用的库来开始。
1. 导入需要的库:
```python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve
import numpy as np
```
2. 拆分您的训练数据和测试数据:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## 线性 SVC 分类器
支持向量分类(SVC)是机器学习方法支持向量机家族中的一个子类(参阅下方内容,学习更多相关知识)。用这种方法您可以选择一个 kernel 去决定如何聚类标签。C 参数指的是“正则化”,它将参数的影响正则化。kernel 可以是[其中](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)的一项;这里我们将 kernel 设置为 linear 来使用线性 SVC。probability 默认为 false,这里我们将其设置为 true 来收集概率估计。我们还将 random_state 设置为 0 去打乱数据来获得概率。
### 练习 - 使用线性 SVC
我们通过创建一个分类器数组来开始。在我们测试时您可以逐步向这个数组中添加分类器。
1. 从一个线性 SVC 开始:
```python
C = 10
# 创建不同的分类器
classifiers = {
'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
}
```
2. 使用线性 SVC 训练您的模型并打印报告:
```python
n_classifiers = len(classifiers)
for index, (name, classifier) in enumerate(classifiers.items()):
classifier.fit(X_train, np.ravel(y_train))
y_pred = classifier.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))
print(classification_report(y_test,y_pred))
```
结果看上去不错:
```output
Accuracy (train) for Linear SVC: 78.6%
precision recall f1-score support
chinese 0.71 0.67 0.69 242
indian 0.88 0.86 0.87 234
japanese 0.79 0.74 0.76 254
korean 0.85 0.81 0.83 242
thai 0.71 0.86 0.78 227
accuracy 0.79 1199
macro avg 0.79 0.79 0.79 1199
weighted avg 0.79 0.79 0.79 1199
```
## K-近邻分类器
K-近邻是机器学习方法最近邻家族的一部分,可以用来进行有监督和无监督学习。这种方法创建了预定个数的点,并且数据被聚集在这些点的四周,这样数据的大致标签可以被预测出来。
### 练习 - 使用 K-近邻分类器
前面的分类器都很不错,并且能在数据集上起作用,但是我们可能需要更好的精度。来试试 K-近邻分类器。
1. 给您的分类器数组添加一行(在线性 SVC 分类器后添加逗号):
```python
'KNN classifier': KNeighborsClassifier(C),
```
结果有点糟糕:
```output
Accuracy (train) for KNN classifier: 73.8%
precision recall f1-score support
chinese 0.64 0.67 0.66 242
indian 0.86 0.78 0.82 234
japanese 0.66 0.83 0.74 254
korean 0.94 0.58 0.72 242
thai 0.71 0.82 0.76 227
accuracy 0.74 1199
macro avg 0.76 0.74 0.74 1199
weighted avg 0.76 0.74 0.74 1199
```
✅ 了解 [K-近邻](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support Vector 分类器
Support-Vector 分类器是机器学习方法[支持向量机](https://wikipedia.org/wiki/Support-vector_machine)家族的一部分,被用于分类和回归任务。为了最大化两个类别之间的距离,支持向量机将“训练样例映射为空间中不同的点”。然后数据被映射为距离,所以它们的类别可以得到预测。
### 练习 - 使用 Support Vector 分类器
为了更好的精度,我们尝试 Support Vector 分类器。
1. 在 K-近邻分类器后添加逗号,然后添加下面一行:
```python
'SVC': SVC(),
```
结果相当不错!
```output
Accuracy (train) for SVC: 83.2%
precision recall f1-score support
chinese 0.79 0.74 0.76 242
indian 0.88 0.90 0.89 234
japanese 0.87 0.81 0.84 254
korean 0.91 0.82 0.86 242
thai 0.74 0.90 0.81 227
accuracy 0.83 1199
macro avg 0.84 0.83 0.83 1199
weighted avg 0.84 0.83 0.83 1199
```
✅ 了解 [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## 集成分类器
尽管之前的测试结果相当不错,我们还是沿着路线走到最后吧。我们来尝试一些集成分类器,特别是随机森林和 AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
结果非常好,尤其是随机森林方法的:
```output
Accuracy (train) for RFST: 84.5%
precision recall f1-score support
chinese 0.80 0.77 0.78 242
indian 0.89 0.92 0.90 234
japanese 0.86 0.84 0.85 254
korean 0.88 0.83 0.85 242
thai 0.80 0.87 0.83 227
accuracy 0.84 1199
macro avg 0.85 0.85 0.84 1199
weighted avg 0.85 0.84 0.84 1199
Accuracy (train) for ADA: 72.4%
precision recall f1-score support
chinese 0.64 0.49 0.56 242
indian 0.91 0.83 0.87 234
japanese 0.68 0.69 0.69 254
korean 0.73 0.79 0.76 242
thai 0.67 0.83 0.74 227
accuracy 0.72 1199
macro avg 0.73 0.73 0.72 1199
weighted avg 0.73 0.72 0.72 1199
```
✅ 学习[集成分类器](https://scikit-learn.org/stable/modules/ensemble.html)
这种机器学习方法"组合了各种基本估计器的预测"来提高模型质量。在我们的示例中,我们使用随机森林和 AdaBoost。
- [随机森林](https://scikit-learn.org/stable/modules/ensemble.html#forest)是一种平均化方法,它建立了一个注入了随机性的“决策树森林”以避免过度拟合。n_estimators 参数设置了随机森林中树的数量。
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) 在数据集上拟合一个分类器,然后在同一数据集上拟合分类器的额外副本。它关注并调整错误分类实例的权重,以便后续的分类器更多地关注和修正。
---
## 🚀挑战
这些技术方法每个都有很多能够让您微调的参数。研究每一个的默认参数,并思考调整这些参数对模型质量有何意义。
## [课后测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/24/)
## 回顾与自学
课程中出现了很多术语,花点时间浏览[术语表](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-15963-cxa)来复习一下它们吧!
## 作业
[玩转参数](../translations/assignment.zh-cn.md)

@ -0,0 +1,11 @@
# 玩转参数
## 说明
在使用分类器时,有很多被默认设置了的参数。Vs Code 中的 Intellisense 可以帮助您深入了解它们。选用本课程中机器学习分类方法中的一个,调整各种参数,重新训练模型。构建一个 notebook 工程来解释为什么有些参数改变有助于提高模型质量,而其他改变会降低模型质量。请在您的回答中详细介绍。
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| ---- | --- | -------- | ------- |
| | 提交了一个 notebook 工程文件,构建了一个完整且参数调整过的分类器,并对参数改变进行解释 | 提交了一个不完整的或没有详细解释的 notebook 工程文件 | notebook 工程文件有错误或者有缺陷 |

@ -270,7 +270,6 @@ You can use your model directly in a web app. This architecture also allows you
let checked = testCheckboxes()
if (checked) {
try {
// create a new session and load the model.
@ -291,7 +290,6 @@ You can use your model directly in a web app. This architecture also allows you
}
}
else alert("Please check an ingredient")
}
init();
@ -303,7 +301,7 @@ In this code, there are several things happening:
1. You created an array of 380 possible values (1 or 0) to be set and sent to the model for inference, depending on whether an ingredient checkbox is checked.
2. You created an array of checkboxes and a way to determine whether they were checked in an `init` function that is called when the application starts. When a checkbox is checked, the `ingredients` array is altered to reflect the chosen ingredient.
3. You created a `testCheckboxes` function that checks whether any checkbox was checked.
4. You use that function when the button is pressed and, if any checkbox is checked, you start inference.
4. You use `startInference` function when the button is pressed and, if any checkbox is checked, you start inference.
5. The inference routine includes:
1. Setting up an asynchronous load of the model
2. Creating a Tensor structure to send to the model

@ -0,0 +1,333 @@
# 构建一个美食推荐 Web 应用程序
在本节课程中,您将使用您在之前课程中学习到的一些方法和本系列课程用到的美食数据集来构建一个分类模型。此外,您还会使用 Onnx Web 运行时构建一个小的 Web 应用程序去使用保存的模型。
机器学习最有用的实际运用之一就是构建推荐系统,今天您可以朝这个方向迈出第一步了!
[![推荐系统介绍](https://img.youtube.com/vi/giIXNoiqO_U/0.jpg)](https://youtu.be/giIXNoiqO_U "Recommendation Systems Introduction")
> 🎥 点击上面的图片查看视频:吴恩达(Andrew Ng)介绍推荐系统设计
## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/25/)
本节课程中您将会学习:
- 如何构建模型并将它保存为 Onnx 模型
- 如何使用 Netron 去检查模型
- 如何在 Web 应用程序中使用您的模型去进行推理
## 构建您的模型
建立应用机器学习系统是让这些技术赋能您的业务系统的一个重要部分。通过使用 Onnx 您可以在 Web 应用程序中使用模型(如果需要可以离线使用它们)。
[之前的课程](../../../3-Web-App/1-Web-App/translations/README.zh-cn.md)中,您构建并 “pickled” 了一个 UFO 目击事件的回归模型,并在一个 Flask 应用程序中使用。虽然了解它的架构会很有用,但这是一个全栈 Python 应用程序,您的需求可能包括使用 JavaScript 应用程序。
在本节课程中,您可以构建一个基于 JavaScript 的基础系统进行推理。不过无论如何,首先您需要训练一个模型并将其转换给 Onnx 使用。
## 练习 - 训练分类模型
首先,使用之前我们使用的清洗后的菜品数据集来训练一个分类模型。
1. 从导入库开始:
```python
!pip install skl2onnx
import pandas as pd
```
您需要 [skl2onnx](https://onnx.ai/sklearn-onnx/) 来帮助您将 Scikit-learn 模型转换为 Onnx 格式。
2. 然后使用 `read_csv()` 读取一个 CSV 文件,按照您在之前课程中用的相同方式处理您的数据:
```python
data = pd.read_csv('../data/cleaned_cuisines.csv')
data.head()
```
3. 删除前两列无用的列,将其余的数据保存为 X:
```python
X = data.iloc[:,2:]
X.head()
```
4. 保存标签为 y:
```python
y = data[['cuisine']]
y.head()
```
### 开始训练
我们将使用有着不错精度的 SVC 库。
1. 从 Scikit-learn 导入一些合适的库:
```python
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report
```
2. 拆分训练数据和测试数据:
```python
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
```
3. 像您在之前课程中所做的一样,构建一个 SVC 分类器模型:
```python
model = SVC(kernel='linear', C=10, probability=True,random_state=0)
model.fit(X_train,y_train.values.ravel())
```
4. 现在,调用 `predict()` 测试您的模型:
```python
y_pred = model.predict(X_test)
```
5. 打印分类报告来检查模型质量:
```python
print(classification_report(y_test,y_pred))
```
如我们之前看见的,精度挺好:
```output
precision recall f1-score support
chinese 0.72 0.69 0.70 257
indian 0.91 0.87 0.89 243
japanese 0.79 0.77 0.78 239
korean 0.83 0.79 0.81 236
thai 0.72 0.84 0.78 224
accuracy 0.79 1199
macro avg 0.79 0.79 0.79 1199
weighted avg 0.79 0.79 0.79 1199
```
### 将您的模型转换到 Onnx
请确保使用正确的张量进行转换。数据集列出了 380 种原料,因此您需要在 `FloatTensorType` 中标记这个数字:
1. 设置张量数为 380 来进行转换。
```python
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
initial_type = [('float_input', FloatTensorType([None, 380]))]
options = {id(model): {'nocl': True, 'zipmap': False}}
```
2. 创建 onx 并保存为文件 **model.onnx**:
```python
onx = convert_sklearn(model, initial_types=initial_type, options=options)
with open("./model.onnx", "wb") as f:
f.write(onx.SerializeToString())
```
> 注意,您可以给您的转换脚本传入[选项](https://onnx.ai/sklearn-onnx/parameterized.html)。在这种情况下,我们传入设为 True 的 `nocl` 参数和设为 False 的 `zipmap` 参数。由于这是一个分类模型,您可以选择删除产生字典列表的 ZipMap(不必要)。`nocl` 指模型中包含的类别信息。通过将 `nocl` 设置为 True 来减小模型的大小。
运行完整的 notebook 工程文件现在将会构建一个 Onnx 模型并保存到此文件夹中。
## 查看您的模型
在 Visual Studio Code 中,Onnx 模型的结构不是很清晰。但有一个非常好的免费软件,很多研究员用它做模型可视化以保证模型被正确构建。下载 [Netron](https://github.com/lutzroeder/Netron) 然后打开您的 model.onnx 文件。您能看到您的简单模型被可视化了,其中列举有传入的参数 `380` 和分类器:
![Netron 可视化](../images/netron.png)
Netron 是查看您模型的有用工具。
现在您准备好了在 Web 应用程序中使用这个简洁的模型。我们来构建一个应用程序,当您查看冰箱时它会派上用场,并试图找出您可以使用哪种剩余食材组合来烹饪给定的菜肴,这由您的模型决定。
## 构建一个推荐器 Web 应用程序
您可以在 Web 应用程序中直接使用您的模型。这种架构允许您在本地运行,如果需要的话甚至可以离线运行。我们从在您保存 `model.onnx` 文件的相同目录下创建一个 `index.html` 文件开始。
1. 在 _index.html_ 文件中,添加以下标签:
```html
<!DOCTYPE html>
<html>
<header>
<title>Cuisine Matcher</title>
</header>
<body>
...
</body>
</html>
```
2. 现在在 `body` 标签内,添加一些标签来展示代表一些配料的 checkbox 列表:
```html
<h1>Check your refrigerator. What can you create?</h1>
<div id="wrapper">
<div class="boxCont">
<input type="checkbox" value="4" class="checkbox">
<label>apple</label>
</div>
<div class="boxCont">
<input type="checkbox" value="247" class="checkbox">
<label>pear</label>
</div>
<div class="boxCont">
<input type="checkbox" value="77" class="checkbox">
<label>cherry</label>
</div>
<div class="boxCont">
<input type="checkbox" value="126" class="checkbox">
<label>fenugreek</label>
</div>
<div class="boxCont">
<input type="checkbox" value="302" class="checkbox">
<label>sake</label>
</div>
<div class="boxCont">
<input type="checkbox" value="327" class="checkbox">
<label>soy sauce</label>
</div>
<div class="boxCont">
<input type="checkbox" value="112" class="checkbox">
<label>cumin</label>
</div>
</div>
<div style="padding-top:10px">
<button onClick="startInference()">What kind of cuisine can you make?</button>
</div>
```
注意,每个 checkbox 都给定了一个值,它反映了根据数据集可以找到对应配料的索引。例如,在这个按字母顺序排列的列表中,Apple 在第五列,由于我们从 0 开始计数,因此它的值是 4 。您可以查阅[配料表格](../../data/ingredient_indexes.csv)来查找给定配料的索引。
继续您在 index.htlm 文件中的工作,在最后一个闭合的 `</div>` 后添加一个脚本代码块去调用模型。
3. 首先,导入 [Onnx Runtime](https://www.onnxruntime.ai/):
```html
<script src="https://cdn.jsdelivr.net/npm/onnxruntime-web@1.9.09/dist/ort.min.js"></script>
```
> Onnx Runtime 用于在多种硬件平台上运行 Onnx 模型,包括优化和使用的 API。
4. 一旦 Runtime 就位,您可以调用它:
```javascript
<script>
const ingredients = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
const checks = [].slice.call(document.querySelectorAll('.checkbox'));
// 使用 async context 去调用 onnxruntime 方法
function init() {
checks.forEach(function (checkbox, index) {
checkbox.onchange = function () {
if (this.checked) {
var index = checkbox.value;
if (index !== -1) {
ingredients[index] = 1;
}
console.log(ingredients)
}
else {
var index = checkbox.value;
if (index !== -1) {
ingredients[index] = 0;
}
console.log(ingredients)
}
}
})
}
function testCheckboxes() {
for (var i = 0; i < checks.length; i++)
if (checks[i].type == "checkbox")
if (checks[i].checked)
return true;
return false;
}
async function startInference() {
let checked = testCheckboxes()
if (checked) {
try {
// 创建一个新的 session 并加载模型。
const session = await ort.InferenceSession.create('./model.onnx');
const input = new ort.Tensor(new Float32Array(ingredients), [1, 380]);
const feeds = { float_input: input };
// 传入 feeds 并运行。
const results = await session.run(feeds);
// 读取结果。
alert('You can enjoy ' + results.label.data[0] + ' cuisine today!')
} catch (e) {
console.log(`failed to inference ONNX model: ${e}.`);
}
}
else alert("Please check an ingredient")
}
init();
</script>
```
在这段代码中,发生了这些事情:
1. 您创建了一个由 380 个可能值( 1 或 0 )组成的数组,这些值被发送给模型进行推理,具体取决于是否选中了配料的 checkbox。
2. 您创建了一个 checkbox 数组并在应用程序启动时调用的 `init` 方法中确定它们是否被选中。选中 checkbox 后,`ingredients` 数组会发生变化来反映所选的配料。
3. 您创建了一个 `testCheckboxes` 方法检查是否有 checkbox 被选中。
4. 当按钮被点击将会使用 `startInference` 方法,如果有任一 checkbox 被选中,该方法会开始推理。
5. 推理过程包括:
1. 设置异步加载模型
2. 创建了一个要传入模型的张量结构
3. 创建 `feeds`,它反映了您在训练模型时创建的 `float_input` 输入(您可以使用 Netron 来验证具体名称)
4. 发送 `feeds` 到模型并等待返回结果
## 测试您的应用程序
在 Visual Studio Code 中,从您的 index.html 文件所在的文件夹打开一个终端。请确保您已经全局安装了 [http-server](https://www.npmjs.com/package/http-server),按提示输入 `http-server`,一个 localhost 页面将会打开,您可以浏览您的 Web 应用程序。检查一下给出不同的配料会有什么菜品会被推荐:
![菜品配料 web 应用程序](../images/web-app.png)
祝贺您已经创建了一个包含几个字段的 “推荐” Web 应用程序。花点时间来构建这个系统吧!
## 🚀挑战
您的 Web 应用程序还很小巧,所以继续使用[配料索引](../../data/ingredient_indexes.csv)中的配料数据和索引数据来构建它吧。用什么样的口味组合才能创造出一道特定的民族菜肴?
## [课后测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/26/)
## 回顾与自学
虽然本课程只讨论了创建一个菜品配料推荐系统的效果,但机器学习的应用程序领域有非常丰富的示例。阅读了解这些系统是如何构建的:
- https://www.sciencedirect.com/topics/computer-science/recommendation-engine
- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/
- https://www.technologyreview.com/2015/03/23/168831/everything-is-a-recommendation/
## 作业
[构建一个推荐器](../translations/assignment.zh-CN.md)

@ -0,0 +1,11 @@
# 构建一个推荐器
## 说明
根据本课程中的练习,您现在了解了如何使用 Onnx Runtime 和转换后的 Onnx 模型构建基于 JavaScript 的 Web 应用程序。尝试使用课程中的数据或其他来源(请添加致谢)的数据来构建一个新的推荐器。您可以根据不同的个性属性构建一个宠物推荐器,或者根据人的情绪创建音乐流派推荐器。要有创意!
## 评判标准
| 标准 | 优秀 | 中规中矩 | 仍需努力 |
| ---- | --- | -------- | ------- |
| | 提交了一个 Web 应用程序和 notebook 工程文件,两者的注释说明充分并且能正常运行 | 其中一个没提交或者有缺陷 | 两个都没提交或者都有缺陷 |

@ -9,7 +9,7 @@ In Asia and India, food traditions are extremely diverse, and very delicious! Le
## What you will learn
In this section, you will build on the skills you learned in the first part of this curriculum all about regression to learn about other classifiers you can use that will help you learn about your data.
In this section, you will build on your earlier study of Regression and learn about other classifiers that you can use to better understand the data.
> There are useful low-code tools that can help you learn about working with classification models. Try [Azure ML for this task](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)
@ -22,6 +22,6 @@ In this section, you will build on the skills you learned in the first part of t
## Credits
"Getting started with classification" was written with ♥️ by [Cassie Breviu](https://www.twitter.com/cassieview) and [Jen Looper](https://www.twitter.com/jenlooper)
"Getting started with classification" was written with ♥️ by [Cassie Breviu](https://www.twitter.com/cassiebreviu) and [Jen Looper](https://www.twitter.com/jenlooper)
The delicious cuisines dataset was sourced from [Kaggle](https://www.kaggle.com/hoandan/asian-and-indian-cuisines).

@ -0,0 +1,27 @@
# Introducción a la clasificación
## Tema regional: Deliciosas cocinas asiáticas e indias 🍜
En Asia y la India, las tradiciones alimentarias son muy diversas, ¡y muy deliciosas!. Veamos los datos sobre las cocinas regionales para intentar comprender sus ingredientes.
![Vendedor de comida tailandesa](./images/thai-food.jpg)
> Photo by <a href="https://unsplash.com/@changlisheng?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Lisheng Chang</a> on <a href="https://unsplash.com/s/photos/asian-food?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Lo que aprenderás
Esta sección, se basará en el estudio anterior de la Regresión y aprenderás sobre otros clasificadores que puedes usar para entender mejor los datos.
Hay herramientas "low code" útiles que pueden ayudarte a aprender a trabajar con modelos de clasificación. Prueba [Azure ML para esta tarea](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)
## Lecciones
1. [Introducción a la clasificación](../1-Introduction/README.es.md)
2. [Más clasificadores](../2-Classifiers-1/README.md)
3. [Otros clasificadores](../3-Classifiers-2/README.md)
4. [ML aplicado: construir una aplicación web](../4-Applied/README.md)
## Créditos
"Getting started with classification" fue escrito con ♥️ por [Cassie Breviu](https://www.twitter.com/cassiebreviu) y [Jen Looper](https://www.twitter.com/jenlooper)
El conjunto de datos de cocinas deliciosas se obtuvo de [Kaggle](https://www.kaggle.com/hoandan/asian-and-indian-cuisines).

@ -0,0 +1,28 @@
# वर्गीकरण के साथ शुरुआत
## क्षेत्रीय विषय: स्वादिष्ट एशियाई और भारतीय व्यंजन
एशिया और भारत में खाद्य परंपराएं बेहद विविध हैं, और बहुत स्वादिष्ट हैं! आइए क्षेत्रीय व्यंजनों का डेटा (data) देखकर उनकी सामग्री को समझने का प्रयास करें।
![थाई भोजन विक्रेता](../images/thai-food.jpg)
> <a href="https://unsplash.com/@changlisheng?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">लीशेंग चैंग (Lisheng Chang)</a> द्वारा <a href="https://unsplash.com/s/photos/asian-food?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">अनस्प्लैश (unsplash)</a> पर चित्र
## आप क्या सीखेंगे
इस खंड में आप इस पाठ्यक्रम के पूर्व भाग में सीखे गए प्रतिगमन (regression) के कौशल पर निर्माण करेंगे, और अन्य वर्गीकारकों (classifiers) के बारे में जानेंगे। इन वर्गीकारकों का उपयोग करके आप डेटा (data) को बेहतर ढंग से समझ सकते हैं।
> कई उपकरण हैं जिनकी सहयता से आप न्यूनतम कोड के माध्यम से वर्गीकरण मॉडलों के साथ काम करना सीख सकते हैं। [इस कार्य के लिए अज़ौर म. ल. (Azure ML) का उपयोग करें।](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)
## पाठ
1. [वर्गीकरण से परिचय](../1-Introduction/README.md)
2. [और वर्गीकारक](../2-Classifiers-1/README.md)
3. [और भी अनेक वर्गीकारक](../3-Classifiers-2/README.md)
4. [व्यावहारिक म. ल. (ML): वेब अनुप्रयोग का निर्माण](../4-Applied/README.md)
## श्रेय
"वर्गीकरण के साथ शुरुआत" [कैसी ब्रेवियू](https://twitter.com/cassiebreviu) और [जेन लूपर](https://www.twitter.com/jenlooper) द्वारा ♥️ के साथ लिखा गया था।
स्वादिष्ट व्यंजनों का डेटासेट (dataset) [कैगल (Kaggle)](https://www.kaggle.com/hoandan/asian-and-indian-cuisines) से प्राप्त किया गया था।

File diff suppressed because one or more lines are too long

@ -0,0 +1,173 @@
# Introdução ao Processamento de Linguagem Natural
Esta aula cobre uma breve história, bem como conceitos importantes do *processamento de linguagem natural*, uma subárea da *Linguística computacional*.
## [Teste pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/31?loc=br)
## Introdução
O Processamento de Linguagem Natural (PLN) ou, em inglês, Natural Language Processing (NLP), como é geralmente conhecido, é um dos campos mais conhecidos onde o aprendizado de máquina (machine learning) tem sido aplicado e usado na produção de software.
✅ Você consegue pensar em algum software que você usa todo dia e que provavelmente tem algum PLN integrado? E em programas de processamento de palavras ou aplicativos mobile que você usa com frequência?
Você vai aprender sobre:
- **A noção de linguagens**. Como as linguagens se desenvolveram e quais são as principais áreas de estudo.
- **Definição e conceitos**. Você também vai aprender definições e conceitos relacionados com o modo como os computadores processam texto, incluindo análise sintática (parsing), gramática e identificação de substantivos e verbos. Existem algumas tarefas de programação nesta aula, juntamente com a introdução de muitos conceitos importantes, os quais você irá aprender a programar nas próximas aulas.
## Linguística computacional
Linguística computacional é uma área de pesquisa e desenvolvimento que vem aumentando ao longo das décadas e estuda como computadores podem trabalhar e comunicar com linguagens, traduzir, e até entendê-las. O processamento de linguagem natural (PLN) é um campo relacionado à linguística computacional que foca em como computadores podem processar linguagens 'naturais' ou humanas.
### Exemplo - transcrição de voz no celular
Se você já usou o recurso de transcrição de voz ao invés de escrever ou fez uma pergunta para uma assistente virtual, sua fala foi convertida para o formato textual e então ela foi processada ou *parseada* (teve a sintaxe analisada). As palavras-chave detectadas então são processadas em um formato que o celular ou a assistente possa entender e agir.
![compreensão](../images/comprehension.png)
> Compreensão de linguagem de verdade é difícil! Imagem por [Jen Looper](https://twitter.com/jenlooper)
> Tradução:
> Mulher: Mas o que você quer? Frango? Peixe? Patê?
> Gato: Miau
### Como essa tecnologia é possível?
Ela é possível porque alguém escreveu um programa de computador para fazer isto. Algumas décadas atrás, escritores de ficção científica previram que as pessoas iriam falar majoritariamente com seus computadores, e que computadores sempre conseguiriam entender exatamente o que elas queriam dizer. Infelizmente, isto mostrou-se mais difícil do que muitos imaginavam, e apesar de hoje ser um problema muito melhor compreendido, ainda existem desafios significativos para alcançar o processamento de linguagem natural 'perfeito' no que tange a entender o significado de uma frase/oração. Este é um problema particularmente difícil quando é preciso entender humor ou detectar emoções como sarcasmo em uma frase.
Agora, você pode estar se lembrando das aulas da escola onde o professor fala sobre a gramática de uma oração. Em alguns países, estudantes aprendem gramática e linguística em uma matéria dedicada, mas, em muitos, estes tópicos são incluídos como parte do aprendizado da linguagem: ou sua primeira linguagem na pré-escola (aprendendo a ler e escrever) e talvez a segunda linguagem no ensino fundamental ou médio. Contudo, não se preocupe se você não é experiente em diferenciar substantivos de verbos ou advérbios de adjetivos!
Se você tem dificuldade com a diferença entre o *presente do indicativo* e o *gerúndio*, você não está sozinho(a). Esta é uma tarefa desafiadora para muitas pessoas, mesmo falantes nativos de uma língua. A boa notícia é que computadores são ótimos em aplicar regras formais, e você vai aprender a escrever código que pode *parsear* (analisar a sintaxe) uma frase tão bem quanto um humano. A maior dificuldade que você irá encontrar é entender o *significado* e o *sentimento* de uma frase.
## Pré-requisitos
Para esta aula, o pré-requisito principal é conseguir ler e entender a linguagem. Não existem equações ou problemas da matemática para resolver. Enquanto o autor original escreveu esta aula em inglês, ela também será traduzida em outras línguas (como em português!), então você pode estar lendo uma tradução. Existem exemplos onde diferentes linguagens são usadas (como comparar regras gramaticais entre diferentes linguagens). Elas *não* são traduzidas, mas o texto que as explica sim, então o significado fica claro.
Para as tarefas de programação, você irá usar Python. Os exemplos a seguir usam Python 3.8.
Nesta seção, você vai precisar:
- **Entender Python 3**. Entender a linguagem Python 3, esta aula usa input (entrada), loops (iteração), leitura de arquivos, arrays (vetores).
- **Visual Studio Code + extensão**. Nós iremos utilizar o Visual Studio Code e sua extensão de Python, mas você pode usar a IDE Python de sua preferência.
- **TextBlob**. [TextBlob](https://github.com/sloria/TextBlob) é uma biblioteca de processamento de texto simplificada para Python. Siga as instruções no site do TextBlob para instalá-lo no seu sistema (instale o corpora também, como mostrado abaixo):
```bash
pip install -U textblob
python -m textblob.download_corpora
```
> 💡 Dica: Você pode rodar Python diretamente nos ambientes (environments) do VS Code. Veja a [documentação](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-15963-cxa) para mais informações.
## Falando com máquinas
A história de tentar fazer computadores entender a linguagem humana é de décadas atrás, e um dos primeiros cientistas a considerar o processamento de linguagem natural foi *Alan Turing*.
### O 'Teste de Turing'
Quando Turing estava pesquisando *inteligência artificial* na década de 1950, ele imaginou um caso onde um teste de conversação digitada que poderia ser dado para um humano e um computador, onde o humano na conversa não conseguiria ter certeza de que ele estava falando com outro humano ou um computador.
Se o humano não pudesse determinar se as respostas foram dadas por um computador ou não depois de um certo período de conversa, poderíamos dizer que computador está *pensando*?
### A inspiração - 'o jogo da imitação'
A ideia do teste veio de um jogo de festa chamado *O Jogo da Imitação* (The Imitation Game), onde um interrogador está sozinho em um cômodo e tem a tarefa de determinar qual de duas pessoas (em outro cômodo) é o homem e qual é a mulher. O interrogador pode mandar notas, e precisa tentar pensar em questões onde as respostas escritas revelam o gênero da pessoa misteriosa. Obviamente, os jogadores na outra sala estão tentando enganar o interrogador ao responder questões de forma confusa/enganosa, ao mesmo tempo em que aparentam dar respostas sinceras.
### Desenvolvendo Eliza
Nos anos 1960, um cientista do MIT chamado *Joseph Weizenbaum* desenvolveu [*Eliza*](https://wikipedia.org/wiki/ELIZA), um computador 'terapeuta' que fazia perguntas ao humano e aparentava entender suas respostas. No entanto, enquanto Eliza conseguia parsear e identificar certas construções gramaticais e palavras-chave para conseguir responder de forma razoável, não podemos dizer que ele conseguia *entender* a frase. Se Eliza fosse apresentado com uma sequência de sentenças seguindo o formato "**Eu estou** <u>triste</u>" ele podia rearranjar e substituir palavras na sentença para formar a resposta "Há quanto tempo **você está** <u>triste</u>?".
Isso dá a impressão de que Eliza entendeu a afirmação e fez uma pergunta subsequente, enquanto na realidade, o computador mudou a conjugação verbal e adicionou algumas palavras. Se Eliza não conseguisse identificar uma palavra-chave que já tem uma resposta pronta, ele daria uma resposta aleatória que pode ser aplicada em diversas afirmações do usuário. Eliza podia ser facilmente enganado, por exemplo, quando um usuário escrevia "**Você é** uma <u>bicicleta</u>", a resposta dada poderia ser "Há quanto tempo **eu sou** uma <u>bicicleta</u>?", ao invés de uma resposta mais razoável.
[![Conversando com Eliza](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "Chatting with Eliza")
> 🎥 Clique na imagem abaixo para ver um video sobre o programa original ELIZA
> Nota: Você pode ler a descrição original de [Eliza](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) publicada em 1966 se você tem uma conta ACM. Alternativamente, leia sobre Eliza na [wikipedia](https://wikipedia.org/wiki/ELIZA)
## Exercício - programando um bot de conversação básico
Um bot de conversação, como Eliza, é um programa que obtém o input do usuário e parece entender e responder de forma inteligente. Diferentemente de Eliza, nosso bot não vai ter diversas regras dando a aparência de uma conversação inteligente. Ao invés disso, nosso bot tem uma única habilidade, a de continuar a conversação com respostas aleatórias que podem funcionar em qualquer conversação trivial.
### O plano
Seus passos quando estiver construindo um bot de conversação:
1. Imprima instruções indicando como o usuário pode interagir com o bot
2. Comece um loop (laço)
1. Aceite o input do usuário
2. Se o usuário pedir para sair, então sair
3. Processar o input do usuário e determinar resposta (neste caso, a resposta é uma escolha aleatória de uma lista de possíveis respostas genéricas)
4. Imprima a resposta
3. Voltar para o passo 2 (continuando o loop/laço)
### Construindo o bot
Agora, vamos criar o bot. Iremos começar definindo algumas frases.
> Nota da tradutora: em função da política de contribuição da Microsoft, todos os códigos foram mantidos em inglês. No entanto, é possível encontrar traduções abaixo deles para ajudar no entendimento. Para não estender muito o arquivo, somente algumas partes foram traduzidas, então sintam-se convidados a pesquisar em tradutores/dicionários.
1. Crie este bot em Python com as seguintes respostas:
```python
random_responses = ["That is quite interesting, please tell me more.",
"I see. Do go on.",
"Why do you say that?",
"Funny weather we've been having, isn't it?",
"Let's change the subject.",
"Did you catch the game last night?"]
```
> A lista de respostas genéricas inclui frases como "Isso é bem interessante, por favor me conte mais." e "O tempo esses dias está bem doido, né?"
Aqui estão alguns outputs de exemplo para te guiar (as entradas do usuário se iniciam com `>`):
```output
Hello, I am Marvin, the simple robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am good thanks
That is quite interesting, please tell me more.
> today I went for a walk
Did you catch the game last night?
> I did, but my team lost
Funny weather we've been having, isn't it?
> yes but I hope next week is better
Let's change the subject.
> ok, lets talk about music
Why do you say that?
> because I like music!
Why do you say that?
> bye
It was nice talking to you, goodbye!
```
> O bot se apresenta e dá instruções de como o usuário deve interagir. A conversa é iniciada pelo bot, que pergunta "Como você está hoje?". O usuário diz "Estou bem, valeu", ao que o bot responde "Isso é bem interessante, por favor me conte mais.". A conversa continua por mais alguns diálogos.
Uma solução possível para a tarefa está [aqui](../solution/bot.py)
✅ Pare e pense
1. Você acha que respostas aleatórias seriam capazes de fazer uma pessoa achar que o bot realmente entendeu que ela disse?
2. Quais recursos/funções o bot precisaria ter para ser mais convincente?
3. Se um bot pudesse 'entender' facilmente o significado de uma frase, ele também precisaria se 'lembrar' do significado de frases anteriores?
---
## 🚀Desafio
Escolha um dos elementos do "pare e considere" acima e tente implementá-lo em código ou escreva uma solução no papel usando pseudocódigo.
Na próxima aula, você irá aprender sobre algumas outras abordagens de análise sintática de linguagem natural e de aprendizado de máquina.
## [Teste pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/32?loc=br)
## Revisão & Autoestudo
Dê uma olhada nas referências abaixo e talvez até as considere como oportunidade de leitura futura.
### Referências
1. Schubert, Lenhart, "Computational Linguistics", *The Stanford Encyclopedia of Philosophy* (Spring 2020 Edition), Edward N. Zalta (ed.), URL = <https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/>.
2. Princeton University "About WordNet." [WordNet](https://wordnet.princeton.edu/). Princeton University. 2010.
## Tarefa
[Procure por um bot](assignment.pt-br.md)

@ -0,0 +1,11 @@
# Procure por um bot
## Instruções
Bots estão em todos os lugares. Sua tarefa: encontrar um e analisá-lo! Você pode encontrá-los em web sites, aplicações de bancos, e no celular, por exemplo, quando entra em contato com bancos em busca de ajuda ou informação sobre sua conta. Analise o bot e veja se você consegue confundi-lo. Se você conseguir, por qual motivo você acha que isto aconteceu? Escreva um pequeno artigo sobre sua experiência.
## Rubrica
| Critério | Exemplar | Adequado | Precisa melhorar |
| -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------------- |
| | Um artigo de uma página completa foi escrito, explicando a suposta arquitetura do bot e resumindo sua experiência com ele | O artigo está incompleto ou mal pesquisado | Nenhum artigo foi feito |

@ -0,0 +1,220 @@
# Técnicas e tarefas frequentes do Processamento de Linguagem Natural
Para a maioria das tarefas de *processamento de linguagem natural*, o texto a ser processado precisa ser quebrado em partes e examinado, e os resultados precisam ser guardados ou cruzados com regras e data sets. Estas tarefas permitem que o programador obtenha _significado_, _intencionalidade_ ou a _frequência_ de termos e palavras em um texto.
## [Teste pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/33?loc=br)
Vamos descobrir técnicas frequentemente usadas no processamento de texto. Combinadas com aprendizado de máquina, estas técnicas ajudam você a analisar grandes quantidades de texto com eficiência. Contudo, antes de aplicar o aprendizado de máquina para estas tarefas, vamos entender os problemas enfrentados por um especialista de PLN (ou NLP).
## Tarefas frequentes para o PLN
Existem diferentes formas de analisar um texto em que você está trabalhando. Existem algumas tarefas que você pode executar e através destas você pode obter um entendimento melhor do texto e chegar a conclusões. Você geralmente as realiza em uma sequência.
### Tokenização
Provavelmente a primeira coisa que a maioria dos algoritmos de PLN precisa é fazer um split (quebra) do texto em tokens, que, na prática, são palavras. Apesar de parecer simples, considerar pontuação e delimitadores de palavras e orações de diferentes linguagens pode ser trabalhoso. Você pode ter que usar vários métodos para determinar os delimitadores.
![tokenização](../images/tokenization.png)
> Tokenizando uma frase de **Orgulho e preconceito**. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
### Embeddings
[Word embeddings](https://wikipedia.org/wiki/Word_embedding) (em português, podemos dizer vetores de palavras - apesar de o termo mais comum ser word embeddings) são uma forma de converter seus dados textuais em dados numéricos. Os embeddings são feitos de tal forma que as palavras com significado parecido ou palavras usadas em conjunto ficam agrupadas em clusters.
![word embeddings](../images/embedding.png)
> "I have the highest respect for your nerves, they are my old friends." - Word embeddings de uma frase em **Orgulho e Preconceito**. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
✅ Tente esta [ferramenta interessante](https://projector.tensorflow.org/) para experimentar com word embeddings. Clicar em uma palavra mostra o cluster (agrupamento) de palavras parecidas: 'brinquedo' está agrupado com 'disney', 'lego', 'playstation', e 'console'.
### Parsing & Marcação de Partes da Fala (Part of Speech Tagging - POS)
Toda palavra tokenizada pode ser marcada como parte da fala - um substantivo, verbo, ou adjetivo. A frase `A rápida raposa pula por cima do preguiçoso cão marrom` pode ser marcada com partes da fala da seguinte forma: raposa = substantivo, pula = verbo.
![parsing/análise sintática](../images/parse.png)
> Parseando/analisando sintaticamente uma frase de **Orgulho e Preconceito**. Infográfico por [Jen Looper](https://twitter.com/jenlooper)
Parsear é reconhecer quais palavras se relacionam entre si em uma frase - por exemplo, `A rápida raposa pula` é uma sequência com adjetivo-substantivo-verbo que difere da sequência `preguiçoso cão marrom`.
### Frequência de palavras e frases
Um procedimento útil ao analisar um texto grande é construir um dicionário com toda palavra/frase de interesse e com a frequência ela aparece. A frase `A rápida raposa pula por cima do preguiçoso cão marrom` tem uma frequência de 1 para a palavra raposa.
Vamos observar um exemplo de texto onde contamos a frequência de palavras. O poema The Winners de Rudyard Kipling contém o seguinte verso:
> O poema não foi traduzido, porém, basta observar as frequências.
```output
What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
```
Dependendo do caso, pode ser necessário que a frequência de expressões considere variações de letras maiúsculas e minúsculas (case sensitive) ou não (case insensitive). Se desconsiderarmos a diferença entre maiúsculas e minúsculas, a expressão `a friend` possui frequência de 2 no poema e `the` tem frequência de 6, e a de `travels` é 2.
### N-gramas
Um texto pode ser dividido em sequências de palavras de certo tamanho, uma única palavra (unigrama), duas palavras (bigrama), três palavras (trigrama) ou qualquer número de palavras (n-gramas).
Por exemplo, `A rápida raposa pula por cima do preguiçoso cão marrom` com um n-grama de tamanho 2 produz os seguintes n-gramas:
1. a rápida
2. rápida raposa
3. raposa pula
4. pula por
5. por cima
6. cima do
7. do preguiçoso
8. preguiçoso cão
9. cão marrom
Pode ser mais fácil visualizar o n-grama como uma caixa que desliza sobre a frase. Aqui está um exemplo dos n-gramas de 3 palavras, o n-grama está em negrito em cada frase:
A rápida raposa pula por cima do preguiçoso cão marrom
1. <u>**A rápida raposa**</u> pula por cima do preguiçoso cão marrom
2. A **<u>rápida raposa pula</u>** por cima do preguiçoso cão marrom
3. A rápida **<u>raposa pula por</u>** cima do preguiçoso cão marrom
4. A rápida raposa **<u>pula por cima</u>** do preguiçoso cão marrom
5. A rápida raposa pula **<u>por cima do</u>** preguiçoso cão marrom
6. A rápida raposa pula por **<u>cima do preguiçoso</u>** cão marrom
7. A rápida raposa pula por cima **<u>do preguiçoso cão</u>** marrom
8. A rápida raposa pula por cima do **<u>preguiçoso cão marrom</u>**
![janela deslizante do n-gramas](../images/n-grams.gif)
> N-grama de tamanho 3: Infográfico por [Jen Looper](https://twitter.com/jenlooper)
### Extração de sujeito e objeto
Na maioria das frases, existe um substantivo que é o sujeito ou o objeto da oração. Em português (e em inglês também), geralmente é possível identificá-los por serem precedidos por palavras como "a(s)" e "o(s)". Identificar o sujeito ou o objeto de uma oração é uma tarefa comum em PLN quando o objetivo é entender o significado de uma frase.
✅ Nas frases "Não sei precisar a hora, ou o lugar, ou o olhar, ou as palavras que lançaram as bases. Faz muito tempo. Eu já estava no meio antes de me dar conta de que havia começado.", você consegue identificar os sujeitos e os objetos?
Na frase `A rápida raposa pula por cima do preguiçoso cão marrom` existem dois substantivos **raposa** e **cão**, que, respectivamente, são sujeito e objeto.
### Análise de sentimento
Uma frase ou texto pode ser analisado para encontrar sentimento, ou avaliar o quão *positivo* ou *negativo* é. Sentimento é medido em *polaridade* e *objetividade/subjetividade*. Polaridade é medida de -1.0 a 1.0 (negativo a positivo) e objetividade/subjetividade é medida de 0.0 a 1.0 (mais objetivo a mais subjetivo).
✅ Mais tarde você irá aprender que existem diferentes formas de se determinar sentimento usando aprendizado de máquina (machine learning), mas um jeito de fazer é ter uma lista de palavras e frases categorizadas como positivas ou negativas por um especialista humano e aplicar este modelo ao texto para calcular a pontuação da polaridade. Você consegue perceber como isso poderia funcionar melhor em alguns casos e pior em outros?
### Inflexão/flexão
A inflexão/flexão é a variação de uma palavra. Exemplos incluem flexão de número (singular/plural), gênero (feminino/masculino) e grau (aumentativo/diminutivo).
### Lematização
Um *lema* é uma palavra (ou conjunto de palavras) que é raiz ou termo base, como, por exemplo, *voa*, *voou*, *voando* são variações (lexemas) do verbo *voar*.
Também existem databases úteis disponíveis para pesquisadores de PLN, particularmente:
### WordNet
[WordNet](https://wordnet.princeton.edu/) é uma database de palavras, sinônimos, antônimos e muitos outros detalhes para todas as palavras em muitas linguagens diferentes. É incrivelmente útil quando estamos tentando construir tradutores, verificadores de ortografia ou ferramentas de linguagem de qualquer tipo.
## Bibliotecas de PLN
Por sorte, você não precisa criar estas técnicas por si só, já que existem excelentes bibliotecas de Python disponíveis, que tornam o PLN muito mais acessível para desenvolvedores que não são especializados em processamento de linguagem natural ou machine learning. As próximas aulas incluem mais exemplos delas, mas aqui você irá aprender alguns exemplos úteis para te ajudar na próxima tarefa.
### Exercício - usando a biblioteca `TextBlob`
Iremos utilizar uma biblioteca chamada TextBlob, pois ela contém APIs convenientes para lidar com esse tipo de tarefa. O TextBlob "se apoia nos ombros dos gigantes [NLTK](https://nltk.org) e [pattern](https://github.com/clips/pattern), e funciona bem com ambos". Existe uma quantidade considerável de aprendizado de máquina embutido em sua API.
> Nota: Um guia inicial ([Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart)) está disponível para o TextBlob e é recomendado para desenvolvedores Python.
Quando estiver tentando identificar *sujeitos e objetos*, o TextBlob oferece diversas opções de extratores para encontrar ambos.
1. Obeserve o `ConllExtractor`.
```python
from textblob import TextBlob
from textblob.np_extractors import ConllExtractor
# import and create a Conll extractor to use later
extractor = ConllExtractor()
# later when you need a noun phrase extractor:
user_input = input("> ")
user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified
np = user_input_blob.noun_phrases
```
> O que está acontecendo aqui? O [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) é "um extrator de sujeito e objeto que usa parsing/análise sintática de chunks, e é treinado com o ConLL-2000 training corpus." O nome ConLL-2000 é em referência à conferência 2000 Conference on Computational Natural Language Learning. Todo ano a conferência sedia um workshop para lidar com um problema difícil de NLP e, em 2000, foi o noun phrase chunking (divisão da frase em subcomponentes - como substantivos e verbos). Um modelo foi treinado no Wall Street Journal, com "seções 15-18 como dados de treino (211727 tokens) e a seção 20 como dados de teste (47377 tokens)". Você pode ver os procedimentos utilizados [aqui](https://www.clips.uantwerpen.be/conll2000/chunking/) e os resultados [aqui](https://ifarm.nl/erikt/research/np-chunking.html).
### Desafio - melhorando seu bot com PLN
Na aula anterior você construiu um bot de perguntas e respostas bastante simples. Agora, você vai fazer Marvin um pouco mais simpático ao analisar seu input em busca do sentimento e imprimindo a resposta de forma a combinar com ele. Você também vai precisar identificar um `sujeito ou objeto` e perguntar sobre.
Seus passos quando estiver construindo um bot de conversação são:
1. Imprima instruções indicando como o usuário pode interagir com o bot
2. Comece um loop (laço)
1. Aceite o input do usuário
2. Se o usuário pedir para sair, então sair
3. Processar o input do usuário e determinar resposta adequada de acordo com o sentimento expressado no input
4. Se um sujeito ou objeto for identificado no sentimento, torne o bot mais variado e pergunte por mais inputs sobre aquele tópico
5. Imprima a resposta
3. Voltar para o passo 2 (continuando o loop/laço)
Aqui está um trecho de código que determina o sentimento usando TextBlob. Note que só existem quatro *gradientes* de resposta a sentimento (você pode ter mais, se quiser):
> É feita uma divisão por valor de polaridade. Se estiver no intervalo, retorna respostas correspondentes: "Nossa, isso parece terrível", "Hmm, isso não parece muito bom", "Bom, isso parece positivo" e "Uau, isso soa ótimo"
```python
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
```
Aqui estão alguns outputs de exemplo para te guiar (input do usuário está nas linhas que começam com >):
```output
Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!
```
Uma possível resposta para a tarefa está [aqui](../solution/bot.py)
✅ Checagem de conhecimento
1. Você acha que respostas simpáticas conseguiriam convencer uma pessoa a achar que o bot realmente entendeu o que ela disse?
2. Será que identificar sujeito e objeto tornam o bot mais convincente?
3. Porque você acha que extrair o sujeito e o objeto de uma oração é algo útil a se fazer?
---
## 🚀Desafio
Implemente o bot discutido acima da seção checagem de conhecimento e teste-o em amigos. O bot consegue enganá-los? Você consegue fazer seu bot mais convincente?
## [Teste pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/34?loc=br)
## Revisão & Autoestudo
Nas próximas aulas você vai aprender mais sobre análise de sentimento. Pesquise sobre esta técnica interessante em artigos como estes no [KDNuggets](https://www.kdnuggets.com/tag/nlp).
## Tarefa
[Faça um bot responder](assignment.pt-br.md)

@ -0,0 +1,11 @@
# Faça um bot responder
## Instruções
Nas últimas aulas, você programou um simples bot de conversação. Ele retorna mensagens aleatórias até você dizer 'bye' (tchau). Você consegue fazer as respostas menos aleatórias e acionar certas respostas se você disser coisas específicas, como 'porque' ou 'como'? Pense um pouco sobre como o machine learning pode fazer este tipo de tarefa menos manual enquanto você melhora seu bot. Você pode usar as bibliotecas NLTK ou TextBlob para fazer seu trabalho mais fácil.
## Rubrica
| Critério | Exemplar | Adequado | Precisa melhorar |
| -------- | --------------------------------------------- | ------------------------------------------------ | ----------------------- |
| | Um novo arquivo bot.py foi apresentado e documentado | Um novo arquivo com bot foi apresentado, porém, contém bugs | Nenhum arquivo foi criado |

@ -0,0 +1,11 @@
# एक बॉट के लिए खोजें
## निर्देश
बॉट हर जगह हैं। आपका कार्य: एक ढूंढो और उसे अपनाओ! आप उन्हें वेब साइटों पर, बैंकिंग अनुप्रयोगों में और फोन पर पा सकते हैं, उदाहरण के लिए जब आप वित्तीय सेवा कंपनियों को सलाह या खाता जानकारी के लिए कॉल करते हैं। बॉट का विश्लेषण करें और देखें कि क्या आप इसे भ्रमित कर सकते हैं। यदि आप बॉट को भ्रमित कर सकते हैं, तो आपको क्या लगता है कि ऐसा क्यों हुआ? अपने अनुभव के बारे में एक संक्षिप्त लेख लिखें।
## रूब्रिक
| मानदंड | अनुकरणीय | पर्याप्त | सुधार की जरूरत |
| -------- | -------------------------------------------------- -------------------------------------------------- ------------- | ------------------------------------------- | --------------------- |
| | एक पूर्ण पृष्ठ का पेपर लिखा जाता है, जो अनुमानित बॉट आर्किटेक्चर की व्याख्या करता है और इसके साथ आपके अनुभव को रेखांकित करता है | एक पेपर अधूरा है या अच्छी तरह से शोध नहीं किया गया है | कोई पेपर सबमिट नहीं किया गया |

@ -0,0 +1,24 @@
# Iniciando com Processamento de Linguagem Natural
O processamento de Linguagem Natural (PLN) ou, em inglês, Natural Language Processing (NLP) é a habilidade de um programa de computador entender linguagem humana da maneira falada e escrita -- o que são referidas como linguagem natural. É um componente da inteligência artificial (IA). O PLN já existe há mais de 50 anos e possui raízes no campo da linguística, que é todo direcionado a ajudar máquinas a entender e processar a linguagem humana. Isto pode então ser usado para realizar tarefas como verificação de ortografia ou tradução. Existe uma variedade de aplicações do mundo real em muitos campos, como em pesquisa médica, ferramentas de busca e inteligência de negócio.
## Tópico regional: línguas europeias e literatura, e hotéis da Europa ❤️
Nesta seção do currículo, você vai aprender mais sobre uma das formas mais difundidas do aprendizado de máquina (machine learning): Processamento de Linguagem Natural (PLN). Vinda da linguística computacional, esta categoria de inteligência artificial é a ponte entre humanos e máquinas através de comunicação de voz ou textual.
Nessas aulas, iremos aprender os fundamentos do PLN ao construir simples bots de conversação para entender como o aprendizado de máquina ajuda a tornar essas conversas mais e mais 'inteligentes'. Você vai viajar para o passado, conversando com Elizabeth Bennett e Mr. Darcy do livro clássico de Jane Austen, **Orgulho e Preconceito**, publicado em 1813. Então, você aumentará seu conhecimento ao aprender sobre análise de sentimentos por meio de avaliações de hotéis da Europa.
![Livro Orgulho e Preconceito, e chá](../images/p&p.jpg)
> Foto por <a href="https://unsplash.com/@elaineh?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Elaine Howlin</a> em <a href="https://unsplash.com/s/photos/pride-and-prejudice?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Aulas
1. [Introdução ao Processamento de Linguagem Natural](../1-Introduction-to-NLP/translations/README.pt-br.md)
2. [Técnicas e tarefas frequentes do Processamento de Linguagem Natural](../2-Tasks/translations/README.pt-br.md)
3. [Translation and sentiment analysis with machine learning](../3-Translation-Sentiment/README.md) (ainda não traduzido)
4. [Preparing your data](../4-Hotel-Reviews-1/README.md) (ainda não traduzido)
5. [NLTK for Sentiment Analysis](../5-Hotel-Reviews-2/README.md) (ainda não traduzido)
## Créditos
Essas aulas de processamento de linguagem natural foram escritas com ☕ por [Stephen Howell](https://twitter.com/Howell_MSFT)

@ -2,7 +2,7 @@
## Instructions [^1]
Now that you have built an SVR model, build a new one with fresh data (try one of [these datasets from Duke](http://www2.stat.duke.edu/~mw/ts_data_sets.html). Annotate your work in a notebook, visualize the data and your model, and test its accuracy using appropriate plots and MAPE. Also try tweaking the different hyperparameters and also using different values for the timesteps.
Now that you have built an SVR model, build a new one with fresh data (try one of [these datasets from Duke](http://www2.stat.duke.edu/~mw/ts_data_sets.html)). Annotate your work in a notebook, visualize the data and your model, and test its accuracy using appropriate plots and MAPE. Also try tweaking the different hyperparameters and also using different values for the timesteps.
## Rubric [^1]
| Criteria | Exemplary | Adequate | Needs Improvement |

@ -0,0 +1,23 @@
# Introduction à la prévision des séries chronologiques
Qu'est-ce que la prévision des séries chronologiques ? Il s'agit de prédire des événements futurs en analysant les tendances du passé.
## Thème régional : consommation mondiale d'électricité ✨
Dans ces deux leçons, nous vous présenterons la prévision des séries temporelles, un domaine moins connu de l'apprentissage automatique qui est pourtant extrêmement précieux pour les applications industrielles et commerciales, entre autres. Bien que les réseaux neuronaux puissent être utilisés pour améliorer l'utilité de ces modèles, nous les étudierons dans le contexte de l'apprentissage automatique classique comme des modèles permettant de prédire les performances futures sur la base du passé.
Nous nous concentrons sur l'utilisation de l'électricité dans le monde, un ensemble de données intéressant pour apprendre à prévoir l'utilisation future de l'électricité sur la base des modèles de charge passés. Vous pouvez voir comment ce type de prévision peut être extrêmement utile dans un environnement commercial.
![réseau électrique](../images/electric-grid.jpg)
Photo par <a href="https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Peddi Sai hrithik</a> de poteaux électriques sur une route au Rajasthan, sur <a href="https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Leçons
1. [Introduction à la prévision des séries chronologiques](../1-Introduction/README.md)
2. [Construction de modèles de séries temporelles ARIMA](../2-ARIMA/README.md)
3. [Construction d'un régresseur à vecteur de support pour la prévision des séries temporelles](../3-SVR/README.md)
## Crédits
"Introduction à la prévision des séries chronologiques" a été écrit avec ⚡️ par [Francesca Lazzeri](https://twitter.com/frlazzeri) et [Jen Looper](https://twitter.com/jenlooper). Les notebooks ont été publiés pour la première fois en ligne dans le [Azure "Deep Learning For Time Series" repo](https://github.com/Azure/DeepLearningForTimeSeriesForecasting) écrit à l'origine par Francesca Lazzeri. La leçon sur les SVR a été rédigée par [Anirban Mukherjee](https://github.com/AnirbanMukherjeeXD)

@ -0,0 +1,24 @@
# समय श्रृंखला पूर्वानुमान से परिचय
समय श्रृंखला पूर्वानुमान (time series forecasting) क्या है? यह अतीत के रुझानों का विश्लेषण करके भविष्य की घटनाओं की भविष्यवाणी करने के बारे में है।
## क्षेत्रीय विषय: दुनिया भर में बिजली का उपयोग ✨
इन दो पाठों में आपको समय श्रृंखला पूर्वानुमान से परिचित कराया जाएगा। यह मशीन लर्निंग (machine learning) का कुछ कम ज्ञात क्षेत्र होने के बावजूद भी अन्य क्षेत्रों के साथ-साथ उद्योग और व्यावसायिक अनुप्रयोगों के लिए अत्यंत मूल्यवान है। जबकि इन मॉडलों की उपयोगिता को बढ़ाने के लिए न्यूरल नेटवर्क (neural networks) का उपयोग किया जा सकता है, हम इनका अध्ययन शास्त्रीय मशीन लर्निंग (machine learning) के संदर्भ में करेंगे, जहाँ मॉडल अतीत के आधार पर भविष्य के प्रदर्शन की भविष्यवाणी करने में मदद करते हैं।
हमारा क्षेत्रीय केंद्र दुनिया में बिजली का उपयोग है। यह पिछले विद्युत भार के प्रतिरूप के आधार पर भविष्य के बिजली के उपयोग का पूर्वानुमान करना सीखने के लिए एक दिलचस्प डेटासेट (dataset) है। आप भांप सकते हैं कि इस प्रकार का पूर्वानुमान व्यावसायिक वातावरण में किस प्रकार अत्यंत सहायक हो सकता है।
![विद्युत ग्रिड](../images/electric-grid.jpg)
> राजस्थान में एक सड़क पर बिजली के टावरों का <a href="https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">पेड्डी साई ऋतिक (Peddi Sai hrithik)</a> द्वारा Unsplash <a href="https://unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">अनस्प्लैश (Unsplash)</a> पर चित्र
## पाठ
1. [समय श्रृंखला पूर्वानुमान से परिचय](../1-Introduction/README.md)
2. [अरीमा (ARIMA) समय श्रृंखला मॉडलों का निर्माण](../2-ARIMA/README.md)
3. [समय श्रृंखला पूर्वानुमान के लिए समर्थन वेक्टर प्रतिगामी (Support Vector Regressor) का निर्माण](../3-SVR/README.md)
## श्रेय
"समय श्रृंखला पूर्वानुमान से परिचय" ⚡️ के साथ [फ्रैंचेस्का लज़ैरी (Francesca Lazzeri)](https://twitter.com/frlazzeri) और [जेन लूपर (Jen Looper)](https://twitter.com/jenlooper) द्वारा लिखा गया था। नोटबुकें पहली बार [अज़ौर "डीप लर्निंग फॉर टाइम सीरीज़" रिपॉजिटरी (Azure "Deep Learning For Time Series" repository)](https://github.com/Azure/DeepLearningForTimeSeriesForecasting) में ऑनलाइन दिखाई दी, जिसे मूल रूप से फ्रैंचेस्का लज़ैरी (Francesca Lazzeri) ने लिखा था। एस. वी. आर. (SVR) पाठ [अनिर्बान मुखर्जी (Anirban Mukherjee)](https://github.com/AnirbanMukherjeeXD) द्वारा लिखा गया था।

@ -0,0 +1,24 @@
# 时间序列预测简介
什么是时间序列预测?它通过分析过去的趋势来预测未来的事件。
## 区域主题:全球用电量✨
在这两节课中,你将了解时间序列预测,这是机器学习中一个鲜为人知的领域,但对工业和商业应用程序以及其他领域非常有价值。虽然神经网络可用于增强这些模型的实用性,但我们将在经典机器学习的背景下研究它们,因为模型有助于根据过去预测未来的表现。
我们的重点是世界上的用电量,这是一个有趣的数据集,可以根据过去的用电量负载来预测未来的用电量。你可以看到这种预测在商业环境中非常有用。
![电网](../images/electric-grid.jpg)
<a href="https://unsplash.com/@shutter_log?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Peddi Sai hrithik</a> 摄于 <a href="https: //unsplash.com/s/photos/electric-india?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## 课程
1.【时间序列预测介绍】(../1-Introduction/README.md)
2.【构建 ARIMA 时间序列模型】(../2-ARIMA/README.md)
3.【构建支持向量回归器的时间序列预测】(../3-SVR/README.md)
## 作者
“时间序列预测简介” 由 [Francesca Lazzeri](https://twitter.com/frlazzeri) 和 [Jen Looper](https://twitter.com/jenlooper) 用 ⚡️ 编写。笔记本首先出现在 [Azure“时间序列深度学习”存储库](https://github.com/Azure/DeepLearningForTimeSeriesForecasting) 最初由 Francesca Lazzeri 编写。SVR 课由 [Anirban Mukherjee](https://github.com/AnibanMukherjeeXD) 编写

@ -121,7 +121,7 @@ To see how the environment works, let's run a short simulation for 100 steps. At
## State discretization
In Q=Learning, we need to build Q-Table that defines what to do at each state. To be able to do this, we need state to be **discreet**, more precisely, it should contain finite number of discrete values. Thus, we need somehow to **discretize** our observations, mapping them to a finite set of states.
In Q-Learning, we need to build Q-Table that defines what to do at each state. To be able to do this, we need state to be **discreet**, more precisely, it should contain finite number of discrete values. Thus, we need somehow to **discretize** our observations, mapping them to a finite set of states.
There are a few ways we can do this:

@ -121,7 +121,7 @@ cartpole balancing 문제를 풀려면, 대상 환경을 초기화할 필요가
## State discretization
Q=Learning에서, 각 state에서 할 것을 정의하는 Q-Table을 만들 필요가 있습니다. 이렇게 하려면, state가 **discreet**으로 되어야하고, 더 정확해지면, 한정된 discrete 값 숫자를 포함해야 합니다. 그래서, 관측치를 어떻게든지 **discretize** 해서, 한정된 state 세트와 맵핑할 필요가 있습니다.
Q-Learning에서, 각 state에서 할 것을 정의하는 Q-Table을 만들 필요가 있습니다. 이렇게 하려면, state가 **discreet**으로 되어야하고, 더 정확해지면, 한정된 discrete 값 숫자를 포함해야 합니다. 그래서, 관측치를 어떻게든지 **discretize** 해서, 한정된 state 세트와 맵핑할 필요가 있습니다.
이렇게 할 수 있는 몇 방식이 있습니다:

@ -218,7 +218,7 @@ import random
- **计算平均累积奖励**,经过多次模拟。我们每 5000 次迭代打印一次进度,并计算这段时间内累积奖励的平均值。这意味着如果我们得到超过 195 分——我们可以认为问题已经解决,甚至比要求的质量更高。
- **计算最大平均累积结果**,`Qmax`,我们将存储与该结果对应的Q-Table。当你运行训练时,你会注意到有时平均累积结果开始下降,我们希望保留与训练期间观察到的最佳模型相对应的 Q-Table 值。
- **计算最大平均累积结果**,`Qmax`,我们将存储与该结果对应的 Q-Table。当你运行训练时,你会注意到有时平均累积结果开始下降,我们希望保留与训练期间观察到的最佳模型相对应的 Q-Table 值。
1. 在 `rewards` 向量处收集每次模拟的所有累积奖励,用于进一步绘图。(代码块 11)
@ -265,13 +265,13 @@ import random
- **接近我们的目标**。我们非常接近实现在连续 100 多次模拟运行中获得 195 个累积奖励的目标,或者我们可能真的实现了!即使我们得到更小的数字,我们仍然不知道,因为我们平均超过 5000 次运行,而在正式标准中只需要 100 次运行。
- **奖励开始下降**。有时奖励开始下降,这意味着我们可以"破坏" Q-Table 中已经学习到的值,这些值会使情况变得更糟。
- **奖励开始下降**。有时奖励开始下降,这意味着我们可以“破坏” Q-Table 中已经学习到的值,这些值会使情况变得更糟。
如果我们绘制训练进度图,则这种观察会更加清晰可见。
## 绘制训练进度
在训练期间,我们将每次迭代的累积奖励值收集到`rewards`向量中。以下是我们根据迭代次数绘制它时的样子:
在训练期间,我们将每次迭代的累积奖励值收集到 `rewards` 向量中。以下是我们根据迭代次数绘制它时的样子:
```python
plt.plot(reawrd)
@ -279,7 +279,7 @@ plt.plot(reawrd)
![原始进度](../images/train_progress_raw.png)
从这张图中,无法说明任何事情,因为由于随机训练过程的性​​质,训练课程的长度差异很大。为了更好地理解这个图,我们可以计算一系列实验的 **running average**,假设为 100。这可以使用 `np.convolve` 方便地完成:(代码块 12)
从这张图中,无法说明任何事情,因为由于随机训练过程的性质,训练课程的长度差异很大。为了更好地理解这个图,我们可以计算一系列实验的 **running average**,假设为 100。这可以使用 `np.convolve` 方便地完成:(代码块 12)
```python
def running_average(x,window):
@ -296,9 +296,9 @@ plt.plot(running_average(rewards,100))
- **对于学习率**,`alpha`,我们可以从接近 1 的值开始,然后不断减小参数。随着时间的推移,我们将在 Q-Table 中获得良好的概率值,因此我们应该稍微调整它们,而不是用新值完全覆盖。
- **增加epsilon**。我们可能希望缓慢增加`epsilon`,以便探索更少,开发更多。从`epsilon`的较低值开始,然后上升到接近 1 可能是有意义的。
- **增加 epsilon**。我们可能希望缓慢增加 `epsilon`,以便探索更少,开发更多。从 `epsilon` 的较低值开始,然后上升到接近 1 可能是有意义的。
> **任务 1**:玩转超参数值,看看是否可以获得更高的累积奖励。你超过195了吗?
> **任务 1**:玩转超参数值,看看是否可以获得更高的累积奖励。你超过 195 了吗?
> **任务 2**:要正式解决问题,你需要在 100 次连续运行中获得 195 的平均奖励。在培训期间衡量并确保你已经正式解决了问题!
@ -326,7 +326,7 @@ env.close()
## 🚀挑战
> **任务 3**:在这里,我们使用的是 Q-Table 的最终副本,它可能不是最好的。请记住,我们已将性能最佳的 Q-Table 存储到 `Qbest` 变量中!通过将`Qbest`复制到`Q`来尝试使用性能最佳的 Q-Table 的相同示例,看看你是否注意到差异。
> **任务 3**:在这里,我们使用的是 Q-Table 的最终副本,它可能不是最好的。请记住,我们已将性能最佳的 Q-Table 存储到 `Qbest` 变量中!通过将 `Qbest` 复制到 `Q` 来尝试使用性能最佳的 Q-Table 的相同示例,看看你是否注意到差异。
> **任务 4**:这里我们不是在每一步选择最佳动作,而是用相应的概率分布进行采样。始终选择具有最高 Q-Table 值的最佳动作是否更有意义?这可以通过使用 `np.argmax` 函数找出对应于较高 Q-Table 值的动作编号来完成。实施这个策略,看看它是否能改善平衡。

@ -1,7 +1,7 @@
# Postscript: Machine learning in the real world
![Summary of Machine learning in the real world in a sketchnote](../../sketchnotes/ml-realworld.png)
![Summary of machine learning in the real world in a sketchnote](../../sketchnotes/ml-realworld.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
In this curriculum, you have learned many ways to prepare data for training and create machine learning models. You built a series of classic regression, clustering, classification, natural language processing, and time series models. Congratulations! Now, you might be wondering what it's all for... what are the real world applications for these models?

@ -1,7 +1,7 @@
# 추신: 현실의 머신러닝
![Summary of Machine learning in the real world in a sketchnote](../../../sketchnotes/ml-realworld.png)
![Summary of machine learning in the real world in a sketchnote](../../../sketchnotes/ml-realworld.png)
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
이 커리큘럼에서, 훈련하기 위한 데이터를 준비하고 머신러닝 모델으로 만드는 다양한 방식을 배웠습니다. 일렬의 classic regression, clustering, classification, natural language processing과, time series 모델을 만들었습니다. 축하드립니다! 지금부터, 모두 어떤 것을 고려했는지 궁금할 수 있습니다... 이 모델로 어떤 현실 어플리케이션을 만들었나요?

@ -0,0 +1,13 @@
# Una búsqueda del tesoro con aprendizaje automático
## Instrucciones
En esta lección aprendiste acerca de muchos casos de uso en la vida real que fueron solucionados usando aprendizaje automático. Si bien, el uso del aprendizaje profundo, las nuevas técnicas y herramientas en la inteligencia artificial y el apoyo en las redes neuronales han ayudado a acelerar la producción de herramientas para ayudar a estos sectores, el aprendizaje automático clásico que usa las técnicas en este curso aún tienen gran valor.
Para esta asignación, imagina que estás participando en un hackatón. Usa lo que has aprendido en el curso para así proponer una solución mediante el uso de aprendizaje automático clásico y así resolver un problema en uno de los sectores discutidos en esta lección. Crea una una presentación donde discutes cómo implementarás tu idea. ¡Tendrás puntos adicionales si puedes reunir datos de prueba y construir un modelo de aprendizaje automático para soportar tu concepto!
## Rúbrica
| Criterio | Ejemplar | Adecuado | Necesita mejorar |
| -------- | ------------------------------------------------------------------- | ------------------------------------------------- | ---------------------- |
| | Entregó una presentación de PowerPoint - puntos adicionales si creó un modelo | Entregó una presentación básica nada innovadora | El trabajo está incompleto |

@ -0,0 +1,14 @@
# Postdata: Aplicaciones del mundo real de aprendizaje automático clásico
En esta sección del curso, presentaremos algunas aplicaciones del aprendizaje automático clásico en el mundo real. Hemos escrutinado el internet para encontrar documentos oficiales y artículos acerca de aplicaciones que han usado estas estrategias; evitando las redes neuronales, el aprendizaje profundo y la inteligencia artificial tanto como fue posible. Aprende cómo se usa el aprendizaje automático en los sistemas comerciales, las aplicaciones ecológicas, las finanzas, el arte y la cultura y más.
![ajedrez](../images/chess.jpg)
> Foto por <a href="https://unsplash.com/@childeye?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexis Fauvet</a> en <a href="https://unsplash.com/s/photos/artificial-intelligence?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Lección
1. [Aplicaciones del mundo real para el aprendizaje automático](../1-Applications/translations/README.es.md)
## Créditos
"Aplicaciones del mundo real" fue escrito por un equipo de personas, incluyendo a [Jen Looper](https://twitter.com/jenlooper) y [Ornella Altunyan](https://twitter.com/ornelladotcom).

@ -0,0 +1,15 @@
# Postscript: Applications réelles de l'apprentissage automatique classique
Dans cette section du cours, nous vous présenterons quelques applications réelles du ML classique. Nous avons parcouru l'Internet pour trouver des papiers de recherches et des articles sur des applications qui ont utilisé ces stratégies, en évitant autant que possible les réseaux neuronaux, l'apprentissage profond et l'IA. Découvrez comment le ML est utilisé dans les systèmes commerciaux, les applications écologiques, la finance, les arts et la culture, et plus encore.
![échecs](../images/chess.jpg)
> Photo par <a href="https://unsplash.com/@childeye?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexis Fauvet</a> sur <a href="https://unsplash.com/s/photos/artificial-intelligence?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Leçon
1. [Applications du monde réel pour le ML](../1-Applications/README.md)
## Crédits
"Applications du monde réel pour le ML" a été rédigé par une équipe de personnes, dont les suivantes [Jen Looper](https://twitter.com/jenlooper) et [Ornella Altunyan](https://twitter.com/ornelladotcom).

@ -0,0 +1,15 @@
# उपसंहार: शास्त्रीय मशीन लर्निंग (machine learning) के वास्तविक विश्व अनुप्रयोग
पाठ्यक्रम के इस खंड में आपको शास्त्रीय एम. एल. (ML) के कुछ वास्तविक-विश्व के अनुप्रयोगों से परिचित कराया जाएगा। हमने इंटरनेट को खंगालकर इन रणनीतियों का उपयोग करने वाले अनुप्रयोगों के बारे में श्वेतपत्र और लेख खोजे हैं। यह करते हुए, जितना संभव हुआ हमने न्यूरल नेटवर्क (neural networks), डीप लर्निंग (deep learning) और ए. आई. (AI) से बचने का प्रयास किया है। आईये जानें की एम. एल. का उपयोग व्यावसायिक प्रणालियों, पारिस्थितिक अनुप्रयोगों, वित्त, कला और संस्कृति आदि में कैसे किया जाता है।
![शतरंज](../images/chess.jpg)
> <a href="https://unsplash.com/@childeye?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">एलेक्सिस फॉवेट (Alexis Fauvet)</a> द्वारा <a href="https://unsplash.com/s/photos/artificial-intelligence?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">अनस्प्लैश (Unsplash)</a> पर चित्र
## पाठ
1. [एम. एल. (ML) के वास्तविक-विश्व अनुप्रयोग](../1-Applications/README.md)
## श्रेय
"वास्तविक विश्व अनुप्रयोग" को [जेन लूपर (Jen Looper)](https://twitter.com/jenlooper) और [ओर्नेला अल्टुन्यान (Ornella Altunyan)](https://twitter.com/ornelladotcom) सहित एक मित्रों की टोली द्वारा लिखा गया था।

@ -12,15 +12,15 @@
> 🌍 Travel around the world as we explore Machine Learning by means of world cultures 🌍
Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson (plus one!) curriculum all about **Machine Learning**. In this curriculum, you will learn about what is sometimes called **classic machine learning**, using primarily Scikit-learn as a library and avoiding deep learning, which is covered in our forthcoming 'AI for Beginners' curriculum. Pair these lessons with our ['Data Science for Beginners' curriculum](https://aka.ms/datascience-beginners), as well!
Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 26-lesson curriculum all about **Machine Learning**. In this curriculum, you will learn about what is sometimes called **classic machine learning**, using primarily Scikit-learn as a library and avoiding deep learning, which is covered in our forthcoming 'AI for Beginners' curriculum. Pair these lessons with our ['Data Science for Beginners' curriculum](https://aka.ms/datascience-beginners), as well!
Travel with us around the world as we apply these classic techniques to data from many areas of the world. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.
Travel with us around the world as we apply these classic techniques to data from many areas of the world. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment, and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.
**✍️ Hearty thanks to our authors** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, and Amy Boyd
**🎨 Thanks as well to our illustrators** Tomomi Imura, Dasani Madipalli, and Jen Looper
**🙏 Special thanks 🙏 to our Microsoft Student Ambassador authors, reviewers and content contributors**, notably Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, and Snigdha Agarwal
**🙏 Special thanks 🙏 to our Microsoft Student Ambassador authors, reviewers, and content contributors**, notably Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, and Snigdha Agarwal
**🤩 Extra gratitude to Microsoft Student Ambassador Eric Wanjau for our R lessons!**
@ -36,7 +36,7 @@ Travel with us around the world as we apply these classic techniques to data fro
- Take the post-lecture quiz.
- Complete the challenge.
- Complete the assignment.
- After completing a lesson group, visit the [Discussion board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling out the appropriate PAT rubric. A 'PAT' is a Progress Assessment Tool that is a rubric you fill out to further your learning. You can also react to other PATs so we can learn together.
- After completing a lesson group, visit the [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) and "learn out loud" by filling out the appropriate PAT rubric. A 'PAT' is a Progress Assessment Tool that is a rubric you fill out to further your learning. You can also react to other PATs so we can learn together.
> For further study, we recommend following these [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa) modules and learning paths.
@ -46,7 +46,9 @@ Travel with us around the world as we apply these classic techniques to data fro
## Meet the Team
[![Promo video](ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU "Promo video")
[![Promo video](ml.gif)](https://youtu.be/Tj1XWrDSYJU "Promo video")
**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 Click the image above for a video about the project and the folks who created it!
@ -56,7 +58,7 @@ Travel with us around the world as we apply these classic techniques to data fro
We have chosen two pedagogical tenets while building this curriculum: ensuring that it is hands-on **project-based** and that it includes **frequent quizzes**. In addition, this curriculum has a common **theme** to give it cohesion.
By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12 week cycle. This curriculum also includes a postscript on real-world applications of ML, which can be used as extra credit or as a basis for discussion.
By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12-week cycle. This curriculum also includes a postscript on real-world applications of ML, which can be used as extra credit or as a basis for discussion.
> Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), and [Translation](TRANSLATIONS.md) guidelines. We welcome your constructive feedback!
@ -73,12 +75,12 @@ By ensuring that the content aligns with projects, the process is made more enga
- assignment
- post-lecture quiz
> **A note about languages**: These lessons are primarily written in Python, but many are also available in R. To complete an R lesson, go to the `/solution` folder and look for R lessons. They include an .rmd extension that represents an **R Markdown** file which can be simply defined as an embedding of `code chunks` (of R or other languages) and a `YAML header` (that guides how to format outputs such as PDF) in a `Markdown document`. As such, it serves as an exemplary authoring framework for data science since it allows you to combine your code, its output and your thoughts by allowing you to write them down in Markdown. Moreover, R Markdown documents can be rendered to output formats such as PDF, HTML, or Word.
> **A note about languages**: These lessons are primarily written in Python, but many are also available in R. To complete an R lesson, go to the `/solution` folder and look for R lessons. They include an .rmd extension that represents an **R Markdown** file which can be simply defined as an embedding of `code chunks` (of R or other languages) and a `YAML header` (that guides how to format outputs such as PDF) in a `Markdown document`. As such, it serves as an exemplary authoring framework for data science since it allows you to combine your code, its output, and your thoughts by allowing you to write them down in Markdown. Moreover, R Markdown documents can be rendered to output formats such as PDF, HTML, or Word.
> **A note about quizzes**: All quizzes are contained [in this app](https://white-water-09ec41f0f.azurestaticapps.net/), for 50 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder.
> **A note about quizzes**: All quizzes are contained [in this app](https://white-water-09ec41f0f.azurestaticapps.net/), for 52 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder.
| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author |
|:-------------:|:----------------------------------------------------------:|:---------------------------------------------------:|---------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------:|:--------------:|
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | Introduction to machine learning | [Introduction](1-Introduction/README.md) | Learn the basic concepts behind machine learning | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | The History of machine learning | [Introduction](1-Introduction/README.md) | Learn the history underlying this field | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Fairness and machine learning | [Introduction](1-Introduction/README.md) | What are the important philosophical issues around fairness that students should consider when building and applying ML models? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
@ -88,9 +90,9 @@ By ensuring that the content aligns with projects, the process is made more enga
| 07 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build linear and polynomial regression models | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](2-Regression/3-Linear/solution/R/lesson_3-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 08 | North American pumpkin prices 🎃 | [Regression](2-Regression/README.md) | Build a logistic regression model | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | A Web App 🔌 | [Web App](3-Web-App/README.md) | Build a web app to use your trained model | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduction to classification | [Classification](4-Classification/README.md) | Clean, prep, and visualize your data; introduction to classification |<ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Introduction to classifiers |<ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | More classifiers |<ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 10 | Introduction to classification | [Classification](4-Classification/README.md) | Clean, prep, and visualize your data; introduction to classification | <ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Introduction to classifiers | <ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | More classifiers | <ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 13 | Delicious Asian and Indian cuisines 🍜 | [Classification](4-Classification/README.md) | Build a recommender web app using your model | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduction to clustering | [Clustering](5-Clustering/README.md) | Clean, prep, and visualize your data; Introduction to clustering | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 15 | Exploring Nigerian Musical Tastes 🎧 | [Clustering](5-Clustering/README.md) | Explore the K-Means clustering method | <ul><li> [Python](5-Clustering/2-K-Means/README.md)</li><li>[R](5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
@ -116,7 +118,7 @@ Find a pdf of the curriculum with links [here](https://microsoft.github.io/ML-Fo
## Help Wanted!
Would you like to contribute a translation? Please read our [translation guidelines](TRANSLATIONS.md) and add input [here](https://github.com/microsoft/ML-For-Beginners/issues/71).
Would you like to contribute a translation? Please read our [translation guidelines](TRANSLATIONS.md) and add a templated issue to manage the workload [here](https://github.com/microsoft/ML-For-Beginners/issues).
## Other Curricula

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -8,6 +8,7 @@
<meta name="description" content="Description">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="icon" type="image/png" href="images/favicon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
</head>

BIN
ml.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

File diff suppressed because it is too large Load Diff

@ -10,7 +10,7 @@
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11",
"vue-i18n": "^8.22.2",
"vue-i18n": "^8.26.5",
"vue-router": "^3.4.9"
},
"devDependencies": {

@ -4,10 +4,12 @@
<router-link class="navlink" to="/">Home</router-link>
<label for="locale">locale</label>
<select v-model="locale">
<option>br</option>
<option>en</option>
<option>tr</option>
<option>fr</option>
<option>it</option>
<option>ja</option>
<option>tr</option>
</select>
</nav>
<div id="app">

@ -22,7 +22,7 @@
]
},
{
"questionText": "Quelle est la différence technique entre le ml classique et le deep learning?",
"questionText": "Quelle est la différence technique entre le ML classique et le deep learning?",
"answerOptions": [
{
"answerText": "ML classique a été inventé en premier",
@ -73,7 +73,7 @@
"isCorrect": "true"
},
{
"answerText": "Des orangutans",
"answerText": "Des Orangs-outans",
"isCorrect": "false"
}
]
@ -90,7 +90,7 @@
"isCorrect": "false"
},
{
"answerText": "Des neural networks",
"answerText": "Des réseaux neuronaux",
"isCorrect": "false"
}
]
@ -99,7 +99,7 @@
"questionText": "Pourquoi tout le monde devrait-il apprendre les bases du ML?",
"answerOptions": [
{
"answerText": "L'apprentissage ml est amusant et accessible à tout le monde",
"answerText": "L'apprentissage ML est amusant et accessible à tout le monde",
"isCorrect": "false"
},
{
@ -122,7 +122,7 @@
"questionText": "Quand approximativement le terme 'intelligence artificielle' a-t-il été inventé ?",
"answerOptions": [
{
"answerText": "1980s",
"answerText": "années 1980",
"isCorrect": "false"
},
{
@ -153,7 +153,7 @@
]
},
{
"questionText": "Quelle est l'une des raisons pour lesquelles l'avancement de l'AI a ralenti dans les années 1970?",
"questionText": "Quelle est l'une des raisons pour lesquelles l'avancement de l'IA a ralenti dans les années 1970?",
"answerOptions": [
{
"answerText": "Puissance de calcul limitée",
@ -176,7 +176,7 @@
"title": "Historique du machine learning: Quiz de validation des connaissances",
"quiz": [
{
"questionText": "Qu'est-ce qu'un exemple de système d'IA \" Scruffy \" AI?",
"questionText": "Qu'est-ce qu'un exemple de système d'IA \" Scruffy \" ?",
"answerOptions": [
{
"answerText": "ELIZA",
@ -250,7 +250,7 @@
]
},
{
"questionText": "Le terme \" injustice \" en ml connotes:",
"questionText": "Le terme \" injustice \" en ML connotes:",
"answerOptions": [
{
"answerText": "Préjudices pour un groupe de personnees",
@ -358,13 +358,13 @@
"isCorrect": "false"
},
{
"answerText": "Tune Paramètres, puis formez votre modèle",
"answerText": "Régler les paramètres, puis entraîner votre modèle",
"isCorrect": "false"
}
]
},
{
"questionText": "Vos données ___ vont avoir une incidence sur la qualité de votre modèle ML",
"questionText": "Vos données de ___ vont avoir une incidence sur la qualité de votre modèle ML",
"answerOptions": [
{
"answerText": "Quantité",
@ -441,15 +441,15 @@
"questionText": "Une commande commune de démarrer le processus de formation dans diverses bibliothèques ML est la suivante:",
"answerOptions": [
{
"answerText": "Model.travel",
"answerText": "model.travel",
"isCorrect": "false"
},
{
"answerText": "Model.train",
"answerText": "model.train",
"isCorrect": "false"
},
{
"answerText": "Model.fit",
"answerText": "model.fit",
"isCorrect": "true"
}
]
@ -481,7 +481,7 @@
"questionText": "Laquelle de ces variables est une variable catégorique?",
"answerOptions": [
{
"answerText": "rythme cardiaque",
"answerText": "Rythme cardiaque",
"isCorrect": "false"
},
{
@ -603,7 +603,7 @@
"isCorrect": "false"
},
{
"answerText": "Un Train Test Splitn",
"answerText": "Un Train Test Split",
"isCorrect": "false"
}
]
@ -652,7 +652,7 @@
"questionText": "Laquelle de ces méthodes de traçage est utile lorsque vous souhaitez comprendre la propagation de différents groupes de fichiers de données de votre jeu de données?",
"answerOptions": [
{
"answerText": "Nuage de pointsn",
"answerText": "Nuage de points",
"isCorrect": "false"
},
{
@ -844,11 +844,11 @@
"isCorrect": "true"
},
{
"answerText": "linéaire",
"answerText": "Linéaire",
"isCorrect": "false"
},
{
"answerText": "cardinale",
"answerText": "Cardinale",
"isCorrect": "false"
}
]
@ -911,7 +911,8 @@
]
}
]
}, {
},
{
"id": 17,
"title": "Construire une application Web: Quiz préalable",
"quiz": [
@ -1494,11 +1495,11 @@
"questionText": "Les techniques de clustering peuvent être utilisées dans ces industries",
"answerOptions": [
{
"answerText": "Banking",
"answerText": "Les banques",
"isCorrect": "false"
},
{
"answerText": "e-commerce",
"answerText": "Le e-commerce",
"isCorrect": "false"
},
{
@ -2444,14 +2445,14 @@
]
},
{
"questionText": "Utilisez Sarimax pour",
"questionText": "Utilisez SARIMAX pour",
"answerOptions": [
{
"answerText": "Gérer les modèles d'ARIMA saisonniers",
"isCorrect": "true"
},
{
"answerText": "Gérer des modèles spéciaux Arima",
"answerText": "Gérer des modèles spéciaux ARIMA",
"isCorrect": "false"
},
{
@ -2478,7 +2479,8 @@
]
}
]
}, {
},
{
"id": 45,
"title": "Renforcement 1: Quiz préalable",
"quiz": [
@ -2530,7 +2532,8 @@
]
}
]
}, {
},
{
"id": 46,
"title": "Renforcement 1: Quiz de validation des connaissances",
"quiz": [
@ -2806,6 +2809,121 @@
]
}
]
},
{
"id": 51,
"title": "Séries temporelles SVR: Quiz préalable",
"quiz": [
{
"questionText": "SVM signifie",
"answerOptions": [
{
"answerText": "Statistical Vector Machine",
"isCorrect": "false"
},
{
"answerText": "Support Vector Machine",
"isCorrect": "true"
},
{
"answerText": "Statistical Vector Model",
"isCorrect": "false"
}
]
},
{
"questionText": "Laquelle de ces techniques ML est utilisée pour prédire des valeurs continues ?",
"answerOptions": [
{
"answerText": "Le Clustering",
"isCorrect": "false"
},
{
"answerText": "La classification",
"isCorrect": "false"
},
{
"answerText": "La régression",
"isCorrect": "true"
}
]
},
{
"questionText": "Lequel de ces modèles est couramment utilisé pour les prévisions de séries chronologiques ?",
"answerOptions": [
{
"answerText": "ARIMA",
"isCorrect": "true"
},
{
"answerText": "K-Means Clustering",
"isCorrect": "false"
},
{
"answerText": "Logistic Regression",
"isCorrect": "false"
}
]
}
]
},
{
"id": 52,
"title": "Séries temporelles SVR: Quiz de validation des connaissances",
"quiz": [
{
"questionText": "Par laquelle de ces méthodes un SVR apprend-il ?",
"answerOptions": [
{
"answerText": "Trouver le meilleur hyperplan d'ajustement qui a le nombre maximum de points de données",
"isCorrect": "true"
},
{
"answerText": "Apprentissage de la distribution de probabilité de l'ensemble de données",
"isCorrect": "false"
},
{
"answerText": "Recherche de clusters dans l'ensemble de données",
"isCorrect": "false"
}
]
},
{
"questionText": "À quoi sert un noyau dans les SVM ?",
"answerOptions": [
{
"answerText": "Pour mesurer la précision des prédictions du modèle",
"isCorrect": "false"
},
{
"answerText": "Pour transformer l'ensemble de données dans un espace de dimension supérieure",
"isCorrect": "true"
},
{
"answerText": "Pour standardiser les valeurs de l'ensemble de données",
"isCorrect": "false"
}
]
},
{
"questionText": "Lequel de ces modèles prend en compte la non-linéarité de l'ensemble de données ?",
"answerOptions": [
{
"answerText": "La régression linéaire simple",
"isCorrect": "false"
},
{
"answerText": "ARIMA",
"isCorrect": "false"
},
{
"answerText": "SVR utilisant le noyau RBF",
"isCorrect": "true"
}
]
}
]
}
]
}]
}
]

@ -10,17 +10,17 @@
# Machine Learning per Principianti - Un Programma di Studio
> 🌍 Viaggio intorno al mondo esplorando Machine Learning per mezzo delle culture mondiali 🌍
> 🌍 Fai il giro del mondo mentre esploriamo il Machine Learning attraverso le varie culture 🌍
Azure Cloud Advocates in Microsoft sono lieti di offrire un programma di studi di 12 settimane, 24 lezioni (più una!) tutto su **Machine Learning**. In questo programma di studi, si imparerà di ciò che a volte è chiamato **machine learning classico**, usando principalmente Scikit-learn come libreria ed evitando il deep learning, che è coperto nel nostro prossimo programma di studi "AI per principianti". Queste lezioni si accoppiano anche con il programma di studi di prossima uscita "Data Science per principianti"!
Gli Azure Cloud Advocates di Microsoft sono lieti di offrire un programma di studi di 12 settimane, articolato su 26 lezioni, interamente dedicato al **Machine Learning**. In questo programma di studi imparerai ciò che viene talvolta definito **machine learning classico**, usando principalmente Scikit-learn come libreria ed evitando il deep learning, che verrà coperto nel nostro prossimo programma di studi "AI per principianti". Queste lezioni si accoppiano anche con il programma di studi di prossima uscita "Data Science per principianti"!
Si viaggerà insieme in tutto il mondo mentre si applicano queste tecniche classiche ai dati da molte aree del mondo. Ogni lezione include quiz pre e post lezione, istruzioni scritte per completare la lezione, una soluzione, un compito e altro ancora. La pedagogia basata su progetto consente di imparare durante la costruzione, un modo comprovato per memorizzare nuove conoscenze.
Gira il mondo insieme a noi mentre applichiamo queste classiche tecniche ai dati di diverse aree del mondo. Ogni lezione include quiz pre- e post- lezione, istruzioni scritte per completare la lezione, una soluzione, un compito ed altro ancora. Il nostro metodo di insegnamento basato sui progetti consente di imparare strada facendo, un metodo comprovato per memorizzare le nuove conoscenze.
**✍️ Un grazie di cuore ai nostri autori** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Ornella Altunyan, e Amy Boyd
**🎨 Grazie anche ai nostri illustratori** Tomomi Imura, Dasani Madipalli, e Jen Looper
**🙏 Un ringraziamento speciale 🙏 agli autori di Microsoft Student Ambassador, revisori e collaboratori per i contenuti**, in particolare Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal
**🙏 Un ringraziamento speciale 🙏 agli autori di Microsoft Student Ambassador, ai revisori e ai collaboratori per i contenuti**, in particolare Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal
**🤩 Un grazie supplementare al Microsoft Student Ambassador Eric Wanjau per le nostre lezioni su R!**
@ -28,15 +28,15 @@ Si viaggerà insieme in tutto il mondo mentre si applicano queste tecniche class
# Per Iniziare
**Studenti**, per utilizzare questo programma di studi, eseguire il fork dell'intero repo sul proprio account GitHub e completare gli esercizi da soli o in gruppo:
**Studenti**, per utilizzare questo programma di studi, eseguite il fork dell'intera repo sul vostro account GitHub e completate gli esercizi da soli o con un gruppo:
- Iniziare con un quiz pre-lezione.
- Leggere la lezione e completare le attività, facendo una pausa di riflessione in ogni controllo della conoscenza.
- Provare a creare i progetti capendo le lezioni piuttosto che eseguire il codice della soluzione; comunque quel codice è disponibile nelle cartelle `/solution` in ogni lezione orientata al progetto.
- Fare il quiz post-lezione.
- Completare la sfida.
- Completare il compito.
- Dopo il completamento di un gruppo di lezioni, visitare il [Forum di discussione](https://github.com/microsoft/ML-For-Beginners/discussions) e imparare ad alta voce riempiendo la rubrica di Pat appropriata. Un 'PAT' è uno Strumento di valutazione del progresso che è una rubrica che si compila per promuovere il proprio apprendimento. Si può interagire anche in altri PAT in modo da imparare assieme.
- Iniziate con un quiz pre-lezione.
- Leggete la lezione e completate le attività, facendo una pausa e riflettendo ad ogni verifica della conoscenza.
- Provate a fare i progetti capendo le lezioni piuttosto che eseguendo il codice della soluzione; Quel codice è ad ogni modo disponibile nella cartella `/solution` presente in ogni lezione con progetto.
- Fate il quiz post-lezione.
- Completate la sfida.
- Completate il compito.
- Dopo il completamento di un gruppo di lezioni, visitate il [Forum di discussione](https://github.com/microsoft/ML-For-Beginners/discussions) e "learn out load" (imparare ad alta voce) riempiendo la rubrica Pat appropriata. 'PAT' è uno strumento di valutazione dei progressi che consiste in una rubrica da compilare per promuovere il proprio apprendimento. Si può anche interagire in altri PAT in modo da imparare assieme.
> Per ulteriori approfondimenti, si raccomanda di sequire i seguenti moduli e percorsi di apprendimento [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa).
@ -48,39 +48,39 @@ Si viaggerà insieme in tutto il mondo mentre si applicano queste tecniche class
[![Promo video](../ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU "Promo video")
> 🎥 Fare click sull'immagine qui sopra per un video sul progetto e sulle persone che lo hanno creato!
> 🎥 Clicca sull'immagine qui sopra per visualizzare un video sul progetto e su coloro che lo hanno creato!
---
## Pedagogia
Sono stati scelti due principi pedagogici durante la creazione di questo programma di studi: assicurandosi che sia pratico **basato su progetto** e che includa **quiz frequenti**. Inoltre, questo programma di studi ha un **tema** comune per conferirgli coesione.
Abbiamo scelto due principi pedagogici durante la creazione di questo programma di studi: assicurandoci che sia **basato su progetti** pratici e che includa **quiz frequenti**. Inoltre, questo programma di studi presenta un **tema** comune per conferirgli coerenza.
Assicurandosi che il contenuto si allinei con i progetti, il processo è reso più coinvolgente per gli studenti e la conservazione dei concetti sarà aumentata. Inoltre, un quiz di poca difficoltà prima di una lezione imposta l'intenzione dello studente verso l'apprendimento di un argomento, mentre un secondo quiz dopo la lezione garantisce ulteriore ritenzione. Questo programma di studi è stato progettato per essere flessibile e divertente e può essere seguito in tutto o in parte. I progetti iniziano piccoli e diventano sempre più complessi entro la fine del ciclo di 12 settimane. Questo programma di studi include anche un poscritto sulle applicazioni del mondo reale di ML, che può essere utilizzata come credito extra o come base per la discussione.
> Consultare Le linee guida del [Codice di Condotta](CODE_OF_CONDUCT.md), per [Collaborare](CONTRIBUTING.md), e [Tradurre](TRANSLATIONS.md). Un feedback costruttivo sarà accolto con piacere!
> Consultate Le linee guida del [Codice di Condotta](CODE_OF_CONDUCT.md), per [Collaborare](CONTRIBUTING.md), e [Tradurre](TRANSLATIONS.md). I feedback costruttivi saranno accolti con piacere!
## Ogni lezione include:
- sketchNote opzionale
- video supplementare opzionale
- quiz di riscaldamento pre-lezione
- lezione scritta
- per lezioni basate su progetto, guide passo-passo su come costruire il progetto
- controlli della conoscenza
- uno sketchNote opzionale
- un video supplementare opzionale
- un quiz di riscaldamento pre-lezione
- una lezione scritta
- per le lezioni basate sulla creazione di un progetto, guide passo-passo su come farlo
- verifiche della conoscenza
- una sfida
- lettura supplementare
- compito
- quiz post-lezione
- una lettura supplementare
- un compito
- un quiz post-lezione
> **Una nota sui quiz**: Tutti i quiz sono contenuti [in questa app](https://white-water-09ec41f0f.azurestaticapps.net/), per un totale di 50 quiz con tre domande ciascuno. Sono collegati all'interno delle lezioni ma l'app può essere eseguita localmente; seguire le istruzioni nella cartella `quiz-app`.
> **Una nota sui quiz**: Tutti i quiz sono contenuti [in questa app](https://white-water-09ec41f0f.azurestaticapps.net/), per un totale di 50 quiz con tre domande ciascuno. I link ai quiz sono presenti all'interno delle lezioni ma l'app può essere eseguita in locale seguendo le istruzioni contenute nella cartella `quiz-app`.
| Numero Lezione | Argomento | Gruppo Lezioni | Obiettivi di Apprendimento | Lezioni Collegate | Autore |
| :-----------: | :--------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------: | :------------: |
| 01 | Introduzione a machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Apprendere i concetti di base dietro machine learning | [lezione](../1-Introduction/1-intro-to-ML/translations/README.it.md) | Muhammad |
| 02 | La storia di machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Apprendere la storia alla base di questo campo | [lezione](../1-Introduction/2-history-of-ML/translations/README.it.md) | Jen e Amy |
| 03 | Equità e machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Quali sono gli importanti quesiti filosofici attorno all'equità che gli studenti dovrebbero prendere in considerazione quando si costruiscono e applicano i modelli ML? | [lezione](../1-Introduction/3-fairness/translations/README.it.md) | Tomomi |
| 04 | Tecniche di machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Quali tecniche usano i ricercatori ML per costruire modelli ML? | [lezione](../1-Introduction/4-techniques-of-ML/translations/README.it.md) | Chris e Jen |
| 01 | Introduzione a machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Apprendere i concetti di base dietro il machine learning | [lezione](../1-Introduction/1-intro-to-ML/translations/README.it.md) | Muhammad |
| 02 | La storia del machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Apprendere la storia alla base di questo campo | [lezione](../1-Introduction/2-history-of-ML/translations/README.it.md) | Jen e Amy |
| 03 | Equità e machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Quali sono gli importanti quesiti filosofici riguardanti l'etica che gli studenti dovrebbero prendere in considerazione quando si creano ed applicano i modelli di ML? | [lezione](../1-Introduction/3-fairness/translations/README.it.md) | Tomomi |
| 04 | Tecniche di machine learning | [Introduzione](../1-Introduction/translations/README.it.md) | Quali tecniche usano i ricercatori per costruire i modelli di ML? | [lezione](../1-Introduction/4-techniques-of-ML/translations/README.it.md) | Chris e Jen |
| 05 | Introduzione alla regressione | [Regressione](../2-Regression/translations/README.it.md) | Iniziare con Python e Scikit-learn per i modelli di regressione | [lezione](../2-Regression/1-Tools/translations/README.it.md) | Jen |
| 06 | Prezzi della zucca del Nord America 🎃 | [Regressione](../2-Regression/translations/README.it.md) | Visualizzare e pulire i dati in preparazione per ML | [lezione](../2-Regression/2-Data/translations/README.it.md) | Jen |
| 07 | Prezzi della zucca del Nord America 🎃 | [Regressione](../2-Regression/translations/README.it.md) | Costruire modelli di regressione lineare e polinomiale | [lezione](../2-Regression/3-Linear/translations/README.it.md) | Jen |
@ -105,19 +105,20 @@ Assicurandosi che il contenuto si allinei con i progetti, il processo è reso pi
## Accesso offline
Si può eseguire questa documentazione offline usando [Docsify](https://docsify.js.org/#/). Effettuare il fork di questo repo, [installare Docsify](https://docsify.js.org/#/quickstart) sulla propria macchina locale, quindi nella cartella radice di questo repo digitare `docsify serve`. Il sito web sarà servito sulla porta 3000 di localhost: `localhost:3000`.
Si può seguire questa documentazione offline usando [Docsify](https://docsify.js.org/#/). Effettuate il fork di questa repo, [installare Docsify](https://docsify.js.org/#/quickstart) sul proprio dispositivo e poi digitare `docsify serve` nella cartella radice della repo. Il sito web sarà servito sulla porta 3000 di localhost: `localhost:3000`.
## PDF
Si può trovare un pdf con il programma di studio e collegamenti [qui](pdf/readme.pdf).
È possibile trovare un pdf con il programma di studio ed i collegamenti [qui](pdf/readme.pdf).
## Cercasi aiuto!
Si vorrebbe contribuire a una traduzione? Per favore leggere le [linee guida di traduzione](TRANSLATIONS.md) e aggiungere eventuale input [qui](https://github.com/microsoft/ML-For-Beginners/issues/71).
Vorresti contribuire alla traduzione? Per favore leggi le [linee guida per la traduzione](TRANSLATIONS.md) e aggiungi una issue basata sul modello per gestire il carico di lavoro [qui](https://github.com/microsoft/ML-For-Beginners/issues/71).
## Altri Programmi di Studi\
## Altri Programmi di Studi
Il nostro team produce altri programmi di studi! Dare un occhiatat:
Il nostro team produce altri programmi di studi! Dai un'occhiata a:
- [Sviluppo Web per Principianti](https://aka.ms/webdev-beginners)
- [IoT per Principianti](https://aka.ms/iot-beginners)
- [Data Science for Beginners](https://aka.ms/datascience-beginners)

@ -12,9 +12,9 @@
> 🌍 세계의 문화로 머신러닝을 알아가면서 전 세계를 여행합니다 🌍
Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-주, 24-강의 (하나 더!) 커리큘럼을 제공해서 만족합니다. 이 커리큘럼에서는, 곧 만들어질 'AI for Beginners'에서 커버하지 않는 딥러닝을 제외한, **classic machine learning**이라고 불리는 것을 Scikit-learn 라이브러리 위주로 배우게 됩니다. 이 강의에서 곧 만들어질 'Data Science for Beginners' 커리큘럼과 같이 봅니다!
Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-주, 24-강의 (하나 더!) 커리큘럼을 제공하게 된 것을 기쁘게 생각합니다. 이 교육 과정에서는 주로 Scikit-learn을 라이브러리로 사용하고 향후에 다룰 딥 러닝을 제외한 **classic machine learning**에 대해 배우게 됩니다. 본 수업과 '입문자를 위한 데이터 과학' 커리큘럼과 연계하여 학습해도 좋습니다.
월드의 많은 영역에 데이터를 적용하면서 이러한 classic 기술로 전 세계를 여행합니다. 각 강의에는 강의 전과 후에 진행하는 퀴즈, 강의를 마치기 위한 설명, 솔루션, 과제 등 있습니다. 새로운 스킬을 'stick'할 수 있다고 증명된 프로젝트-기반 교육학에 의하여 만들면서 배울 수 있습니다.
이러한 고전적인 기술을 세계 여러 지역의 데이터에 적용하는 동안 우리와 함께 세계 여행을 떠나보십시오. 각 레슨에는 예습 및 복습 퀴즈, 레슨을 완료하기 위한 서면 지침, 해결책 및 과제가 포함됩니다. 프로젝트 기반 교육학을 통해 새로운 기술을 익힐 수 있는 검증된 방법으로 학습 할 수 있습니다.
**✍️ Hearty thanks to our authors** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Ornella Altunyan, and Amy Boyd
@ -28,11 +28,11 @@ Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-
# 시작하기
**학생**은, 이 커리큘럼을 사용하기 위해서, 전체 저장소를 자신의 GitHub 계정으로 포크하고 혼자하거나 그룹으로 같이 연습합니다:
**학생**은, 이 커리큘럼을 사용하기 위해서, 전체 저장소를 자신의 GitHub 계정으로 포크하고 혼자 또는 그룹으로 같이 학습합니다:
- 강의 전 퀴즈를 시작합니다.
- 강의를 읽고, 각 지식 점검에서 멈추고 습득해서 활동을 끝냅니다.
- 솔루션 코드를 실행하는 것보다 강의를 이해해서 프로젝트를 만들어봅니다; 그러나 코드는 각 프로젝트-지향 강의마다 `/solution` 폴더에 존재합니다.
- 솔루션 코드를 실행하는 것보다 강의를 이해해서 프로젝트를 만들어봅니다. 해답 코드는 각 프로젝트-지향 강의 별 `/solution` 폴더에 위치합니다.
- 강의 후 퀴즈를 해봅니다.
- 도전을 끝내봅니다.
- 과제를 끝내봅니다.
@ -40,7 +40,7 @@ Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-
> 더 배우기 위해서, [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa) 모듈과 학습 경로를 따르는 것을 추천합니다.
**선생님**은, 이 커리큘럼으로 사용하기 위해서 [included some suggestions](../for-teachers.md)를 준비했습니다.
**선생님**은, 이 커리큘럼의 사용 방법에 대해 [일부 제안사항](../for-teachers.md)이 있습니다.
---
@ -73,7 +73,8 @@ Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-
- 과제
- 강의 후 퀴즈
> **퀴즈 참고사항**: 모든 퀴즈는 [in this app](https://white-water-09ec41f0f.azurestaticapps.net/)에 묶여있으며, 각 3개 질문으로 총 50개 퀴즈가 있습니다. 강의에 연결되어 있지만 퀴즈 앱은 로컬에서 수행할 수 있습니다; `quiz-app` 폴더의 설명을 따릅니다.
> **퀴즈 참고사항**: 모든 퀴즈는 [이 앱](https://white-water-09ec41f0f.azurestaticapps.net/)에 포함되어 있으며, 각각 3문제씩 총 50개의 퀴즈가 있습니다. 퀴즈 앱은 교육 과정과 연결되어 있지만, 원하는 경우 따로 퀴즈 앱을 실행할 수도 있습니다. 자세한 사항은 퀴즈 앱 폴더 내의 지침을 따르십시오.
| 강의 번호 | 토픽 | 강의 그룹 | 학습 목표 | 연결 강의 | 저자 |
| :-----------: | :--------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------: | :------------: |
@ -103,13 +104,13 @@ Microsoft의 Azure Cloud Advocates는 **Machine Learning**에 대한 모든 12-
| 24 | 늑대를 피하는 Peter 도와주기! 🐺 | [Reinforcement learning](../8-Reinforcement/translations/README.ko.md) | Gym에서 Reinforcement learning | [강의](../8-Reinforcement/2-Gym/translations/README.ko.md) | Dmitry |
| Postscript | 실생활 ML 시나리오와 애플리케이션 | [야생의 ML](../9-Real-World/translations/README.ko.md) | classical ML의 흥미롭게 드러나는 현실 애플리케이션 | [강의](../9-Real-World/1-Applications/translations/README.ko.md) | Team |
## 오프라인 접근
## 오프라인 액세스
[Docsify](https://docsify.js.org/#/)에서 문서를 오프라인으로 실행할 수 있습니다. 저장소를 포크해서 로컬 머신에 [install Docsify](https://docsify.js.org/#/quickstart)히고, 이 저장소의 최상위 폴더에서, `docsify serve` 입력합니다. 웹 사이트는 로컬호스트로 3000 포트에서 서버가 켜집니다: `localhost:3000`.
[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인으로 실행할 수 있습니다. 이 repo를 포크하여 로컬 컴퓨터에 [Docsify (설치)](https://docsify.js.org/#/quickstart)를 설치한 다음 이 repo의 루트 폴더에 'docsify serve'를 입력하면 됩니다. 웹 사이트는 로컬 호스트의 포트 3000에서 제공됩니다: 'localhost:3000'.
## PDF
[here](../pdf/readme.pdf)에서 링크가 있는 커리큘럼의 PDF를 찾습니다.
[여기](../pdf/readme.pdf) 링크를 통해 커리큘럼의 PDF를 찾아보십시오.
## 도와주세요!

@ -0,0 +1,129 @@
[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
# Pembelajaran Mesin untuk Pemula - Kurikulum
> 🌍 Mengembara ke seluruh dunia semasa kita meneroka Pembelajaran Mesin melalui budaya dunia 🌍
Azure Cloud Advocates di Microsoft dengan senang hati menawarkan kurikulum 12-minggu, 24-pelajaran (ditambah satu!) Mengenai**Pembelajaran Mesin**. Dalam kurikulum ini, anda akan belajar tentang apa yang kadang-kadang disebut**pembelajaran mesin klasik**, menggunakan terutamanya Scikit-learning sebagai perpustakaan dan mengelakkan pembelajaran mendalam, yang dicakup dalam kurikulum 'AI for Beginners' yang akan datang. Pasangkan pelajaran ini dengan ['Data Science for Beginners' kurikulum](https://aka.ms/datascience-beginners) kami juga!
Perjalanan bersama kami di seluruh dunia kerana kami menerapkan teknik klasik ini ke data dari banyak kawasan di dunia. Setiap pelajaran merangkumi kuiz sebelum dan sesudah pelajaran, arahan bertulis untuk menyelesaikan pelajaran, penyelesaian, tugasan dan banyak lagi. Pedagogi berasaskan projek kami membolehkan anda belajar sambil membina, cara yang terbukti untuk kemahiran baru 'melekat'.
**✍️ Terima kasih kepada penulis kami**Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, dan Amy Boyd
**🎨 Terima kasih juga kepada ilustrator kami**Tomomi Imura, Dasani Madipalli, dan Jen Looper
**🙏 Terima kasih khas 🙏 kepada pengarang, pengulas dan penyumbang kandungan Duta Pelajar Microsoft kami**, terutamanya Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, dan Snigdha Agarwal
**🤩 Terima kasih yang tidak terhingga kepada Duta Pelajar Microsoft Eric Wanjau atas pelajaran R kami!**
---
# Bermula
**Pelajar**, untuk menggunakan kurikulum ini, garpu seluruh repo ke akaun GitHub anda sendiri dan selesaikan latihan anda sendiri atau bersama kumpulan:
- Mulakan dengan kuiz pra-kuliah.
- Baca kuliah dan selesaikan aktiviti, berhenti sebentar dan renungkan pada setiap pemeriksaan pengetahuan.
- Cuba buat projek dengan memahami pelajaran daripada menjalankan kod penyelesaian; namun kod itu terdapat di folder `/solution` dalam setiap pelajaran berorientasikan projek.
- Ikuti kuiz pasca kuliah.
- Selesaikan cabaran.
- Selesaikan tugasan.
- Setelah menyelesaikan kumpulan pelajaran, lawati [Discussion board](https://github.com/microsoft/ML-For-Beginners/discussions) dan "belajar dengan kuat" dengan mengisi rubrik PAT yang sesuai. 'PAT' adalah Alat Penilaian Kemajuan yang merupakan rubrik yang anda isi untuk melanjutkan pembelajaran anda. Anda juga boleh bertindak balas terhadap PAT lain sehingga kami dapat belajar bersama.
> Untuk kajian lebih lanjut, kami mengesyorkan mengikuti [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa) berikut dan jalan belajar.
**Guru**, kami telah [memasukkan beberapa cadangan](for-teachers.md) mengenai cara menggunakan kurikulum ini.
## Jumpa pasukan
[![Promo video](../ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU "Promo video")
> 🎥 Klik gambar di atas untuk video mengenai projek dan orang yang membuatnya!
---
## Pedagogi
Kami telah memilih dua prinsip pedagogi semasa membina kurikulum ini: memastikan bahawa ia adalah **berasaskan projek** dan merangkumi **kuiz yang kerap**. Di samping itu, kurikulum ini mempunyai **tema umum** untuk memberikannya kesatuan.
Dengan memastikan bahawa kandungan sesuai dengan projek, proses dibuat lebih menarik bagi pelajar dan pengekalan konsep akan ditambah. Di samping itu, kuiz bertaraf rendah sebelum kelas menetapkan niat pelajar untuk mempelajari sesuatu topik, sementara kuiz kedua selepas kelas memastikan pengekalan selanjutnya. Kurikulum ini dirancang agar fleksibel dan menyenangkan dan dapat diambil secara keseluruhan atau sebahagian. Projek bermula kecil dan menjadi semakin rumit pada akhir kitaran 12 minggu. Kurikulum ini juga termasuk skrip tulisan mengenai aplikasi ML dunia nyata, yang dapat digunakan sebagai kredit tambahan atau sebagai dasar perbincangan.
> Cari garis panduan [Kod Tingkah Laku](CODE_OF_CONDUCT.md) kami, [Menyumbang](CONTRIBUTING.md), dan [Terjemahan](TRANSLATIONS.md). Kami mengalu-alukan maklum balas yang membina!
## Setiap pelajaran merangkumi:
- nota lakaran pilihan
- video tambahan pilihan
- kuiz pemanasan sebelum kuliah
- pelajaran bertulis
- untuk pelajaran berasaskan projek, panduan langkah demi langkah bagaimana membina projek
- pemeriksaan pengetahuan
- satu cabaran
- bacaan tambahan
- tugasan
- kuiz pasca kuliah
> **Catatan mengenai bahasa**: Pelajaran ini terutama ditulis dalam Python, tetapi banyak juga tersedia dalam R. Untuk menyelesaikan pelajaran R, pergi ke folder `/solution` dan cari pelajaran R. Mereka termasuk pelanjutan .rmd yang mewakili fail **R Markdown** yang hanya dapat didefinisikan sebagai penyisipan `potongan kode '(dari R atau bahasa lain) dan` header YAML` (yang membimbing cara memformat output seperti PDF) dalam `Markdown document`. Oleh itu, ia berfungsi sebagai kerangka penulisan teladan bagi sains data kerana ia membolehkan anda menggabungkan kod, output dan pemikiran anda dengan membolehkan anda menuliskannya dalam Markdown. Lebih-lebih lagi, dokumen R Markdown dapat diberikan ke format output seperti PDF, HTML, atau Word.
> **Catatan mengenai kuiz**: Semua kuiz terkandung [dalam aplikasi ini](https://white-water-09ec41f0f.azurestaticapps.net/), untuk 50 keseluruhan kuiz masing-masing dari tiga soalan. Mereka dihubungkan dari dalam pelajaran tetapi aplikasi kuiz dapat dijalankan secara tempatan; ikuti arahan dalam folder `quiz-app`.
| Nombor Pelajaran | Topik | Pengumpulan Pelajaran | Objektif Pembelajaran | Pautan Pembelajaran | Pengarang |
|:-------------:|:--------------------------------------------------------------:|:--------------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------:|
| 01 | Pengenalan pembelajaran mesin | [Pengenalan](../1-Introduction/README.md) | Ketahui konsep asas di sebalik pembelajaran mesin | [Pelajaran](../1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Sejarah pembelajaran mesin | [Pengenalan](../1-Introduction/README.md) | Ketahui sejarah yang mendasari bidang ini | [Pelajaran](../1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Keadilan dan pembelajaran mesin | [Pengenalan](../1-Introduction/README.md) | Apakah masalah falsafah penting mengenai keadilan yang harus dipertimbangkan oleh pelajar semasa membina dan menggunakan model ML? | [Pelajaran](../1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Teknik untuk pembelajaran mesin | [Pengenalan](../1-Introduction/README.md) | Teknik apa yang digunakan oleh penyelidik ML untuk membina model ML? | [Pelajaran](../1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | Pengenalan regresi | [Regresi](../2-Regression/README.md) | Mulakan dengan Python dan Scikit-belajar untuk model regresi | <ul><li>[Python](../2-Regression/1-Tools/README.md)</li><li>[R](../2-Regression/1-Tools/solution/R/lesson_1-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 06 | Harga labu Amerika Utara 🎃 | [Regresi](../2-Regression/README.md) | Visualisasikan dan bersihkan data sebagai persediaan untuk ML | <ul><li>[Python](../2-Regression/2-Data/README.md)</li><li>[R](../2-Regression/2-Data/solution/R/lesson_2-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 07 | Harga labu Amerika Utara 🎃 | [Regresi](../2-Regression/README.md) | Membina model regresi linear dan polinomial | <ul><li>[Python](../2-Regression/3-Linear/README.md)</li><li>[R](../2-Regression/3-Linear/solution/R/lesson_3-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 08 | Harga labu Amerika Utara 🎃 | [Regresi](../2-Regression/README.md) | Bina model regresi logistik | <ul><li>[Python](../2-Regression/4-Logistic/README.md) </li><li>[R](../2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | Aplikasi Web 🔌 | [Aplikasi Web](../3-Web-App/README.md) | Bina aplikasi web untuk menggunakan model terlatih anda | [Python](../3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Pengenalan klasifikasi | [Pengelasan](../4-Classification/README.md) | Bersihkan, persiapkan, dan gambarkan data anda; pengenalan klasifikasi |<ul><li> [Python](../4-Classification/1-Introduction/README.md) </li><li>[R](../4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | Masakan Asia dan India yang lazat 🍜 | [Pengelasan](../4-Classification/README.md) | Pengenalan kepada pengelasan |<ul><li> [Python](../4-Classification/2-Classifiers-1/README.md)</li><li>[R](../4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | Masakan Asia dan India yang lazat 🍜 | [Pengelasan](../4-Classification/README.md) | Lebih banyak pengelasan |<ul><li> [Python](../4-Classification/3-Classifiers-2/README.md)</li><li>[R](../4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 13 | Masakan Asia dan India yang lazat 🍜 | [Pengelasan](../4-Classification/README.md) | Bina aplikasi web cadangan menggunakan model anda | [Python](../4-Classification/4-Applied/README.md) | Jen |
| 14 | Pengenalan pengelompokan | [Penggabungan](../5-Clustering/README.md) | Bersihkan, persiapkan, dan gambarkan data anda; Pengenalan pengelompokan | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](../5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 15 | Meneroka Selera Muzik Nigeria 🎧 | [Penggabungan](../5-Clustering/README.md) | Terokai kaedah pengelompokan K-Means | <ul><li> [Python](../5-Clustering/2-K-Means/README.md)</li><li>[R](../5-Clustering/2-K-Means/solution/R/lesson_15-R.ipynb) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 16 | Pengenalan pemprosesan bahasa semula jadi ☕️ | [Pemprosesan bahasa semula jadi](../6-NLP/README.md) | Ketahui asas mengenai NLP dengan membina bot sederhana | [Python](../6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Tugas NLP biasa ☕️ | [Pemprosesan bahasa semula jadi](../6-NLP/README.md) | Memperdalam pengetahuan NLP anda dengan memahami tugas-tugas umum yang diperlukan ketika berurusan dengan struktur bahasa | [Python](../6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Analisis terjemahan dan sentimen ♥ ️| [Pemprosesan bahasa semula jadi](../6-NLP/README.md) | Terjemahan dan analisis sentimen dengan Jane Austen | [Python](../6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Hotel romantis di Eropah ♥ ️| [Pemprosesan bahasa semula jadi](../6-NLP/README.md) | Analisis sentimen dengan ulasan hotel | [Python](../6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Hotel romantis di Eropah ♥ ️| [Pemprosesan bahasa semula jadi](../6-NLP/README.md) | Analisis sentimen dengan ulasan hotel 2 | [Python](../6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Pengenalan ramalan siri masa | [Siri masa](../7-TimeSeries/README.md) | Pengenalan ramalan siri masa | [Python](../7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan ARIMA | [Siri masa](../7-TimeSeries/README.md) | Ramalan siri masa dengan ARIMA | [Python](../7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | World️ Penggunaan Kuasa Dunia ⚡️ - ramalan siri masa dengan SVR | [Siri masa](../7-TimeSeries/README.md) | Ramalan siri masa dengan Regressor Vektor Sokongan | [Python](../7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Pengenalan pembelajaran pengukuhan | [Pembelajaran pengukuhan](../8-Reinforcement/README.md) | Pengenalan pembelajaran pengukuhan dengan Q-Learning | [Python](../8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Tolong Peter mengelakkan serigala! 🐺 | [Pembelajaran pengukuhan](../8-Reinforcement/README.md) | Gym pembelajaran pengukuhan | [Python](../8-Reinforcement/2-Gym/README.md) | Dmitry |
| Poskrip | Senario dan aplikasi ML Dunia Sebenar | [ML di Alam Nyata](../9-Real-World/README.md) | Aplikasi ML klasik yang menarik dan mendedahkan | [Pelajaran](../9-Real-World/1-Applications/README.md) | Pasukan |
## Akses luar talian
Anda boleh menjalankan dokumentasi ini di luar talian dengan menggunakan [Docsify](https://docsify.js.org/#/). 'Fork' repo ini, [pasang Docsify](https://docsify.js.org/#/quickstart) pada mesin tempatan anda, dan kemudian di folder root repo ini, ketik `docsify serve`. Laman web akan dilayan di port 3000 di localhost anda: `localhost: 3000`.
## PDF
Cari pdf kurikulum dengan pautan [di sini](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## Pertolongan diperlukan!
Adakah anda ingin menyumbang terjemahan? Sila baca [pedoman terjemahan](TRANSLATIONS.md) kami dan tambahkan input [di sini](https://github.com/microsoft/ML-For-Beginners/issues/71).
## Kurikulum Lain
Pasukan kami menghasilkan kurikulum lain! Lihat:
- [Peranti Web untuk Pemula](https://aka.ms/webdev-beginners)
- [IoT untuk Pemula](https://aka.ms/iot-beginners)
- [Sains Data untuk Pemula](https://aka.ms/datascience-beginners)

@ -81,11 +81,11 @@ Ao garantir que o conteúdo esteja alinhado com os projetos, o processo torna-se
| 02 | A História de machine learning | [Introdução](../1-Introduction/translations/README.pt-br.md) | Aprenda a história subjacente desta área | [Aula](../1-Introduction/2-history-of-ML/translations/README.pt-br.md) | Jen e Amy |
| 03 | Equidade e aprendizado de máquina | [Introdução](../1-Introduction/translations/README.pt-br.md) | Quais são as questões filosóficas importantes sobre justiça que os alunos devem considerar ao construir e aplicar modelos de ML? | [Aula](../1-Introduction/3-fairness/translations/README.pt-br.md) | Tomomi |
| 04 | Técnicas para machine learning | [Introdução](../1-Introduction/translations/README.pt-br.md) | Quais técnicas os pesquisadores de ML usam para construir modelos de ML? | [Aula](../1-Introduction/4-techniques-of-ML/translations/README.pt-br.md) | Chris e Jen |
| 05 | Introdução à regressão | [Regressão](../2-Regression/README.md) | Comece a usar Python e Scikit-learn para modelos de regressão | <ul><li>[Python](2-Regression/1-Tools/README.md)</li><li>[R](2-Regression/1-Tools/solution/R/lesson_1-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 06 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Visualize e limpe os dados em preparação para o ML | <ul><li>[Python](2-Regression/2-Data/README.md)</li><li>[R](2-Regression/2-Data/solution/R/lesson_2-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 07 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Construa modelos de regressão linear e polinomial | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](2-Regression/3-Linear/solution/R/lesson_3-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 08 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Construa um modelo de regressão logística | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | Uma Web App 🔌 | [Web App](../3-Web-App/README.md) | Crie um aplicativo web para usar seu modelo treinado | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 05 | Introdução à regressão | [Regressão](../2-Regression/translations/README.pt-br.md) | Comece a usar Python e Scikit-learn para modelos de regressão | <ul><li>[Python](2-Regression/1-Tools/translations/README.pt-br.md)</li><li>[R](../2-Regression/1-Tools/solution/R/lesson_1-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 06 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/translations/README.pt-br.md) | Visualize e limpe os dados em preparação para o ML | <ul><li>[Python](../2-Regression/2-Data/translations/README.pt-br.md)</li><li>[R](../2-Regression/2-Data/solution/R/lesson_2-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 07 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/translations/README.pt-br.md) | Construa modelos de regressão linear e polinomial | <ul><li>[Python](../2-Regression/3-Linear/translations/README.pt-br.md)</li><li>[R](../2-Regression/3-Linear/solution/R/lesson_3-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 08 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/translations/README.pt-br.md) | Construa um modelo de regressão logística | <ul><li>[Python](../2-Regression/4-Logistic/translations/README.pt-br.md) </li><li>[R](../2-Regression/4-Logistic/solution/R/lesson_4-R.ipynb)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | Uma Web App 🔌 | [Web App](../3-Web-App/translations/README.pt-br.md) | Crie um aplicativo web para usar seu modelo treinado | [Python](../3-Web-App/1-Web-App/translations/README.pt-br.md) | Jen |
| 10 | Introdução à classificação | [Classificação](../4-Classification/README.md) | Limpe, prepare e visualize seus dados; introdução à classificação |<ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](4-Classification/1-Introduction/solution/R/lesson_10-R.ipynb) | <ul><li>Jen e Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](../4-Classification/README.md) | Introdução aos classificadores |<ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](4-Classification/2-Classifiers-1/solution/R/lesson_11-R.ipynb) | <ul><li>Jen e Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](../4-Classification/README.md) | Mais classificadores |<ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](4-Classification/3-Classifiers-2/solution/R/lesson_12-R.ipynb) | <ul><li>Jen e Cassie</li><li>Eric Wanjau</li></ul> |

Loading…
Cancel
Save