Mansi Jain 4 years ago
commit b496cd23d9

@ -4,7 +4,7 @@
> 🎥 Fare clic sull'immagine sopra per un video che illustra la differenza tra machine learning, intelligenza artificiale (AI) e deep learning. > 🎥 Fare clic sull'immagine sopra per un video che illustra la differenza tra machine learning, intelligenza artificiale (AI) e deep learning.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/1/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/1/?loc=it)
### Introduzione ### Introduzione
@ -97,7 +97,7 @@ Nel prossimo futuro, comprendere le basi di machine learning sarà un must per l
Disegnare, su carta o utilizzando un'app online come [Excalidraw](https://excalidraw.com/), la propria comprensione delle differenze tra AI, ML, deep learning e data science. Aggiungere alcune idee sui problemi che ciascuna di queste tecniche è in grado di risolvere. Disegnare, su carta o utilizzando un'app online come [Excalidraw](https://excalidraw.com/), la propria comprensione delle differenze tra AI, ML, deep learning e data science. Aggiungere alcune idee sui problemi che ciascuna di queste tecniche è in grado di risolvere.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -8,20 +8,20 @@
### 介绍 ### 介绍
欢迎来到这个经典机器学习的初学者课程无论你是这个主题的新手还是一个有经验的ML从业者我们都很高兴你能加入我们我们希望为你的ML研究创建一个好的开始并很乐意评估、回应和接受你的[反馈](https://github.com/microsoft/ML-For-Beginners/discussions)。 欢迎来到这个经典机器学习的初学者课程!无论你是这个主题的新手,还是一个有经验的 ML 从业者,我们都很高兴你能加入我们!我们希望为你的 ML 研究创建一个好的开始,并很乐意评估、回应和接受你的[反馈](https://github.com/microsoft/ML-For-Beginners/discussions)。
[![机器学习简介](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML") [![机器学习简介](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Introduction to ML")
> 🎥 单击上图观看视频:麻省理工学院的 John Guttag 介绍机器学习 > 🎥 单击上图观看视频:麻省理工学院的 John Guttag 介绍机器学习
### 机器学习入门 ### 机器学习入门
在开始本课程之前你需要设置计算机能在本地运行Jupyter Notebooks。 在开始本课程之前,你需要设置计算机能在本地运行 Jupyter Notebooks。
- **按照这些视频里的讲解配置你的计算机**。了解有关如何在此[视频集](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)我们在本课程中使用的一种对数据科学家有用的编程语言,有一个基本的了解 - **学习 Python**。 还建议你对 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa) 有一个基本的了解。这是我们在本课程中使用的一种对数据科学家有用的编程语言。
- **学习Node.js和JavaScript**。在本课程中我们在构建web应用程序时也使用过几次JavaScript因此你需要有[node](https://nodejs.org)和[npm](https://www.npmjs.com/) 以及[Visual Studio Code](https://code.visualstudio.com/)用于Python和JavaScript开发。 - **学习 Node.js 和 JavaScript**。在本课程中,我们在构建 web 应用程序时也使用过几次 JavaScript因此你需要有 [Node.js](https://nodejs.org) 和 [npm](https://www.npmjs.com/) 以及 [Visual Studio Code](https://code.visualstudio.com/) 用于 Python 和 JavaScript 开发。
- **创建GitHub帐户**。既然你在[GitHub](https://github.com)上找到我们你可能已经有了一个帐户但如果没有请创建一个帐户然后fork此课程自己使用(也给我们一颗星星吧😊) - **创建 GitHub 帐户**。既然你在 [GitHub](https://github.com) 上找到我们,你可能已经有了一个帐户,但如果没有,请创建一个帐户,然后 fork 此课程自己使用(也给我们一颗星星吧😊)
- **探索Scikit-learn**. 熟悉[Scikit-learn]([https://scikit-learn.org/stable/user_guide.html)我们在这些课程中引用的一组ML库。 - **探索 Scikit-learn**. 熟悉 [Scikit-learn]([https://scikit-learn.org/stable/user_guide.html),我们在这些课程中引用的一组 ML 库。
### 什么是机器学习? ### 什么是机器学习?
@ -41,11 +41,11 @@
![人工智能、机器学习、深度学习、数据科学](../images/ai-ml-ds.png) ![人工智能、机器学习、深度学习、数据科学](../images/ai-ml-ds.png)
> 显示AI、ML、深度学习和数据科学之间关系的图表。图片作者[Jen Looper](https://twitter.com/jenlooper),灵感来自[这张图](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) > 显示 AI、ML、深度学习和数据科学之间关系的图表。图片作者 [Jen Looper](https://twitter.com/jenlooper),灵感来自[这张图](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)
## 你将在本课程中学到什么 ## 你将在本课程中学到什么
在本课程中,我们将仅涵盖初学者必须了解的机器学习的核心概念。 我们主要使用Scikit-learn来介绍我们所谓的“经典机器学习”这是一个许多学生用来学习基础知识的优秀库。要理解更广泛的人工智能或深度学习的概念机器学习的基础知识是必不可少的所以我们想在这里提供它。 在本课程中,我们将仅涵盖初学者必须了解的机器学习的核心概念。 我们主要使用 Scikit-learn 来介绍我们所谓的“经典机器学习”,这是一个许多学生用来学习基础知识的优秀库。要理解更广泛的人工智能或深度学习的概念,机器学习的基础知识是必不可少的,所以我们想在这里提供它。
在本课程中,你将学习: 在本课程中,你将学习:
@ -94,13 +94,13 @@
--- ---
## 🚀 挑战 ## 🚀 挑战
在纸上或使用[Excalidraw](https://excalidraw.com/)等在线应用程序绘制草图了解你对AI、ML、深度学习和数据科学之间差异的理解。添加一些关于这些技术擅长解决的问题的想法。 在纸上或使用 [Excalidraw](https://excalidraw.com/) 等在线应用程序绘制草图,了解你对 AI、ML、深度学习和数据科学之间差异的理解。添加一些关于这些技术擅长解决的问题的想法。
## [阅读后测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2?loc=zh-cn) ## [阅读后测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/2?loc=zh-cn)
## 复习与自学 ## 复习与自学
要了解有关如何在云中使用ML算法的更多信息请遵循以下[学习路径](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)。
## 任务 ## 任务

@ -1,118 +1,118 @@
# Storia di machine learning # Storia di machine learning
![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png) ![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png)
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) > Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3/?loc=it)
In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale. In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale.
La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence); questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante". La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence); questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante".
## Scoperte rilevanti ## Scoperte rilevanti
- 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente. - 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente.
- 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati. - 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati.
- 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente. - 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente.
- 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning. - 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning.
- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli. - 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli.
- 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward). - 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward).
- Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali. - Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali.
✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale? ✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale?
## 1950: Macchine che pensano ## 1950: Macchine che pensano
Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale). Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale).
## 1956: Progetto di Ricerca Estivo Dartmouth ## 1956: Progetto di Ricerca Estivo Dartmouth
"Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). "Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
> In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo. > In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo.
Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky. Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky.
Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)).
## 1956 - 1974: "Gli anni d'oro" ## 1956 - 1974: "Gli anni d'oro"
Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice. La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice.
La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono: La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono:
* [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente". * [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente".
![Shakey, un robot intelligente](../images/shakey.jpg) ![Shakey, un robot intelligente](../images/shakey.jpg)
> Shakey nel 1972 > Shakey nel 1972
* Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP. * Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP.
![Eliza, un bot](../images/eliza.png) ![Eliza, un bot](../images/eliza.png)
> Una versione di Eliza, un chatbot > Una versione di Eliza, un chatbot
* Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio. * Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio.
[![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU") [![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU")
> 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU > 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU
## 1974 - 1980: "L'inverno dell'AI" ## 1974 - 1980: "L'inverno dell'AI"
Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono: Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono:
- **Limitazioni**. La potenza di calcolo era troppo limitata. - **Limitazioni**. La potenza di calcolo era troppo limitata.
- **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo. - **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo.
- **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi. - **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi.
- **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci: - **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci:
- I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) - I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/))
- L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione. - L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione.
Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili. Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili.
## Sistemi esperti degli anni '80 ## Sistemi esperti degli anni '80
Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)). Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)).
Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti. Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti.
Questa era ha visto anche una crescente attenzione rivolta alle reti neurali. Questa era ha visto anche una crescente attenzione rivolta alle reti neurali.
## 1987 - 1993: AI 'Chill' ## 1987 - 1993: AI 'Chill'
La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data. La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data.
## 1993 - 2011 ## 1993 - 2011
Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina. Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina.
## Adesso ## Adesso
Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia. Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia.
[![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning") [![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning")
> 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione > 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione
--- ---
## 🚀 Sfida ## 🚀 Sfida
Approfondire uno di questi momenti storici e scoprire Approfondire uno di questi momenti storici e scoprire
di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto? di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/4/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento
Ecco gli elementi da guardare e ascoltare: Ecco gli elementi da guardare e ascoltare:
[Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739) [Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739)
[![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd") [![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd")
## Compito ## Compito
[Creare una sequenza temporale](assignment.it.md) [Creare una sequenza temporale](assignment.it.md)

@ -1,100 +1,100 @@
# 机器学习的历史 # 机器学习的历史
![机器学习历史概述](../../../sketchnotes/ml-history.png) ![机器学习历史概述](../../../sketchnotes/ml-history.png)
> 作者[Tomomi Imura](https://www.twitter.com/girlie_mac) > 作者 [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3?loc=zh-cn) ## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/3?loc=zh-cn)
在本课中,我们将走过机器学习和人工智能历史上的主要里程碑。 在本课中,我们将走过机器学习和人工智能历史上的主要里程碑。
人工智能AI作为一个领域的历史与机器学习的历史交织在一起因为支持机器学习的算法和计算能力的进步推动了AI的发展。记住虽然这些领域作为不同研究领域在20世纪50年代才开始具体化但重要的[算法、统计、数学、计算和技术发现](https://wikipedia.org/wiki/Timeline_of_machine_learning) 要早于和重叠了这个时代。 事实上,[数百年来](https://wikipedia.org/wiki/History_of_artificial_intelligence)人们一直在思考这些问题:本文讨论了“思维机器”这一概念的历史知识基础。 人工智能AI作为一个领域的历史与机器学习的历史交织在一起因为支持机器学习的算法和计算能力的进步推动了AI的发展。记住虽然这些领域作为不同研究领域在 20 世纪 50 年代才开始具体化,但重要的[算法、统计、数学、计算和技术发现](https://wikipedia.org/wiki/Timeline_of_machine_learning) 要早于和重叠了这个时代。 事实上,[数百年来](https://wikipedia.org/wiki/History_of_artificial_intelligence)人们一直在思考这些问题:本文讨论了“思维机器”这一概念的历史知识基础。
## 主要发现 ## 主要发现
- 1763, 1812 [贝叶斯定理](https://wikipedia.org/wiki/Bayes%27_theorem) 及其前身。该定理及其应用是推理的基础,描述了基于先验知识的事件发生的概率。 - 1763, 1812 [贝叶斯定理](https://wikipedia.org/wiki/Bayes%27_theorem) 及其前身。该定理及其应用是推理的基础,描述了基于先验知识的事件发生的概率。
- 1805 [最小二乘理论](https://wikipedia.org/wiki/Least_squares)由法国数学家Adrien-Marie Legendre提出。 你将在我们的回归单元中了解这一理论,它有助于数据拟合。 - 1805 [最小二乘理论](https://wikipedia.org/wiki/Least_squares)由法国数学家 Adrien-Marie Legendre 提出。 你将在我们的回归单元中了解这一理论,它有助于数据拟合。
- 1913 [马尔可夫链](https://wikipedia.org/wiki/Markov_chain)以俄罗斯数学家Andrey Markov的名字命名用于描述基于先前状态的一系列可能事件。 - 1913 [马尔可夫链](https://wikipedia.org/wiki/Markov_chain)以俄罗斯数学家 Andrey Markov 的名字命名,用于描述基于先前状态的一系列可能事件。
- 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美国心理学家Frank Rosenblatt发明的一种线性分类器是深度学习发展的基础。 - 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美国心理学家 Frank Rosenblatt 发明的一种线性分类器,是深度学习发展的基础。
- 1967 [最近邻](https://wikipedia.org/wiki/Nearest_neighbor)是一种最初设计用于映射路线的算法。 在ML中它用于检测模式。 - 1967 [最近邻](https://wikipedia.org/wiki/Nearest_neighbor)是一种最初设计用于映射路线的算法。 在 ML 中,它用于检测模式。
- 1970 [反向传播](https://wikipedia.org/wiki/Backpropagation)用于训练[前馈神经网络](https://wikipedia.org/wiki/Feedforward_neural_network)。 - 1970 [反向传播](https://wikipedia.org/wiki/Backpropagation)用于训练[前馈神经网络](https://wikipedia.org/wiki/Feedforward_neural_network)。
- 1982 [循环神经网络](https://wikipedia.org/wiki/Recurrent_neural_network) 是源自产生时间图的前馈神经网络的人工神经网络。 - 1982 [循环神经网络](https://wikipedia.org/wiki/Recurrent_neural_network) 是源自产生时间图的前馈神经网络的人工神经网络。
✅ 做点调查。在ML和AI的历史上还有哪些日期是重要的 ✅ 做点调查。在 ML AI 的历史上,还有哪些日期是重要的?
## 1950: 会思考的机器 ## 1950: 会思考的机器
Alan Turing一个真正杰出的人[在2019年被公众投票选出](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 作为20世纪最伟大的科学家他认为有助于为“会思考的机器”的概念打下基础。他通过创建 [图灵测试](https://www.bbc.com/news/technology-18475646)来解决反对者和他自己对这一概念的经验证据的需求,你将在我们的 NLP 课程中进行探索。 Alan Turing一个真正杰出的人[在 2019 年被公众投票选出](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 作为 20 世纪最伟大的科学家,他认为有助于为“会思考的机器”的概念打下基础。他通过创建 [图灵测试](https://www.bbc.com/news/technology-18475646)来解决反对者和他自己对这一概念的经验证据的需求,你将在我们的 NLP 课程中进行探索。
## 1956: 达特茅斯夏季研究项目 ## 1956: 达特茅斯夏季研究项目
“达特茅斯夏季人工智能研究项目是人工智能领域的一个开创性事件,”正是在这里,人们创造了“人工智能”一词([来源](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)) “达特茅斯夏季人工智能研究项目是人工智能领域的一个开创性事件,”正是在这里,人们创造了“人工智能”一词([来源](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)
> 原则上,学习的每个方面或智能的任何其他特征都可以被精确地描述,以至于可以用机器来模拟它。 > 原则上,学习的每个方面或智能的任何其他特征都可以被精确地描述,以至于可以用机器来模拟它。
首席研究员、数学教授John McCarthy希望“基于这样一种猜想即学习的每个方面或智能的任何其他特征原则上都可以如此精确地描述以至于可以制造出一台机器来模拟它。” 参与者包括该领域的另一位杰出人物Marvin Minsky。 首席研究员、数学教授 John McCarthy 希望“基于这样一种猜想,即学习的每个方面或智能的任何其他特征原则上都可以如此精确地描述,以至于可以制造出一台机器来模拟它。” 参与者包括该领域的另一位杰出人物 Marvin Minsky。
研讨会被认为发起并鼓励了一些讨论,包括“符号方法的兴起、专注于有限领域的系统(早期专家系统),以及演绎系统与归纳系统的对比。”([来源](https://wikipedia.org/wiki/Dartmouth_workshop)) 研讨会被认为发起并鼓励了一些讨论,包括“符号方法的兴起、专注于有限领域的系统(早期专家系统),以及演绎系统与归纳系统的对比。”[来源](https://wikipedia.org/wiki/Dartmouth_workshop)
## 1956 - 1974: “黄金岁月” ## 1956 - 1974: “黄金岁月”
从20世纪50年代到70年代中期乐观情绪高涨希望人工智能能够解决许多问题。1967Marvin Minsky自信地说“一代人之内。。。创造人工智能的问题将得到实质性的解决。”MinskyMarvin1967《计算有限和无限机器》新泽西州恩格伍德克利夫斯Prentice Hall 20 世纪 50 年代到 70 年代中期乐观情绪高涨希望人工智能能够解决许多问题。1967Marvin Minsky 自信地说,“一代人之内...创造人工智能的问题将得到实质性的解决。”MinskyMarvin1967《计算有限和无限机器》新泽西州恩格伍德克利夫斯Prentice Hall
自然语言处理研究蓬勃发展,搜索被提炼并变得更加强大,创造了“微观世界”的概念,在这个概念中,简单的任务是用简单的语言指令完成的。 自然语言处理研究蓬勃发展,搜索被提炼并变得更加强大,创造了“微观世界”的概念,在这个概念中,简单的任务是用简单的语言指令完成的。
这项研究得到了政府机构的充分资助,在计算和算法方面取得了进展,并建造了智能机器的原型。其中一些机器包括: 这项研究得到了政府机构的充分资助,在计算和算法方面取得了进展,并建造了智能机器的原型。其中一些机器包括:
* [机器人Shakey](https://wikipedia.org/wiki/Shakey_the_robot),他们可以“聪明地”操纵和决定如何执行任务。 * [机器人 Shakey](https://wikipedia.org/wiki/Shakey_the_robot),他们可以“聪明地”操纵和决定如何执行任务。
![Shakey, 智能机器人](../images/shakey.jpg) ![Shakey, 智能机器人](../images/shakey.jpg)
> 1972 年的Shakey > 1972 年的 Shakey
* Eliza一个早期的“聊天机器人”可以与人交谈并充当原始的“治疗师”。 你将在NLP课程中了解有关Eliza的更多信息。 * Eliza一个早期的“聊天机器人”可以与人交谈并充当原始的“治疗师”。 你将在 NLP 课程中了解有关 Eliza 的更多信息。
![Eliza, 机器人](../images/eliza.png) ![Eliza, 机器人](../images/eliza.png)
> Eliza的一个版本一个聊天机器人 > Eliza 的一个版本,一个聊天机器人
* “积木世界”是一个微观世界的例子,在那里积木可以堆叠和分类,并且可以测试教机器做出决策的实验。 使用[SHRDLU](https://wikipedia.org/wiki/SHRDLU)等库构建的高级功能有助于推动语言处理向前发展。 * “积木世界”是一个微观世界的例子,在那里积木可以堆叠和分类,并且可以测试教机器做出决策的实验。 使用 [SHRDLU](https://wikipedia.org/wiki/SHRDLU) 等库构建的高级功能有助于推动语言处理向前发展。
[![积木世界与SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "积木世界与SHRDLU") [![积木世界与 SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "积木世界与SHRDLU")
> 🎥 点击上图观看视频: 积木世界与SHRDLU > 🎥 点击上图观看视频: 积木世界与 SHRDLU
## 1974 - 1980: AI的寒冬 ## 1974 - 1980: AI 的寒冬
到了20世纪70年代中期很明显制造“智能机器”的复杂性被低估了而且考虑到可用的计算能力它的前景被夸大了。资金枯竭市场信心放缓。影响信心的一些问题包括 到了 20 世纪 70 年代中期,很明显制造“智能机器”的复杂性被低估了,而且考虑到可用的计算能力,它的前景被夸大了。资金枯竭,市场信心放缓。影响信心的一些问题包括:
- **限制**。计算能力太有限了 - **限制**。计算能力太有限了
- **组合爆炸**。随着对计算机的要求越来越高,需要训练的参数数量呈指数级增长,而计算能力却没有平行发展。 - **组合爆炸**。随着对计算机的要求越来越高,需要训练的参数数量呈指数级增长,而计算能力却没有平行发展。
- **缺乏数据**。 缺乏数据阻碍了测试、开发和改进算法的过程。 - **缺乏数据**。 缺乏数据阻碍了测试、开发和改进算法的过程。
- **我们是否在问正确的问题?**。 被问到的问题也开始受到质疑。 研究人员开始对他们的方法提出批评: - **我们是否在问正确的问题?**。 被问到的问题也开始受到质疑。 研究人员开始对他们的方法提出批评:
- 图灵测试受到质疑的方法之一是“中国房间理论”,该理论认为,“对数字计算机进行编程可能使其看起来能理解语言,但不能产生真正的理解。” ([来源](https://plato.stanford.edu/entries/chinese-room/)) - 图灵测试受到质疑的方法之一是“中国房间理论”,该理论认为,“对数字计算机进行编程可能使其看起来能理解语言,但不能产生真正的理解。” ([来源](https://plato.stanford.edu/entries/chinese-room/))
- 将“治疗师”ELIZA这样的人工智能引入社会的伦理受到了挑战。 - 将“治疗师”ELIZA 这样的人工智能引入社会的伦理受到了挑战。
与此同时,各种人工智能学派开始形成。 在[“scruffy”与“neat AI”](https://wikipedia.org/wiki/Neats_and_scruffies)之间建立了二分法。 _Scruffy_ 实验室对程序进行了数小时的调整,直到获得所需的结果。 _Neat_ 实验室“专注于逻辑和形式问题的解决”。 ELIZA 和 SHRDLU 是众所周知的 _scruffy_ 系统。 在 1980 年代,随着使 ML 系统可重现的需求出现_neat_ 方法逐渐走上前沿,因为其结果更易于解释。 与此同时,各种人工智能学派开始形成。 在 [“scruffy” “neat AI”](https://wikipedia.org/wiki/Neats_and_scruffies) 之间建立了二分法。 _Scruffy_ 实验室对程序进行了数小时的调整,直到获得所需的结果。 _Neat_ 实验室“专注于逻辑和形式问题的解决”。 ELIZA 和 SHRDLU 是众所周知的 _scruffy_ 系统。 在 1980 年代,随着使 ML 系统可重现的需求出现_neat_ 方法逐渐走上前沿,因为其结果更易于解释。
## 1980s 专家系统 ## 1980s 专家系统
随着这个领域的发展它对商业的好处变得越来越明显在20世纪80年代专家系统的泛滥也是如此。“专家系统是首批真正成功的人工智能 (AI) 软件形式之一。” ([来源](https://wikipedia.org/wiki/Expert_system)) 随着这个领域的发展,它对商业的好处变得越来越明显,在 20 世纪 80 年代,‘专家系统’的泛滥也是如此。“专家系统是首批真正成功的人工智能 (AI) 软件形式之一。” [来源](https://wikipedia.org/wiki/Expert_system)
这种类型的系统实际上是混合系统,部分由定义业务需求的规则引擎和利用规则系统推断新事实的推理引擎组成。 这种类型的系统实际上是混合系统,部分由定义业务需求的规则引擎和利用规则系统推断新事实的推理引擎组成。
在这个时代,神经网络也越来越受到重视。 在这个时代,神经网络也越来越受到重视。
## 1987 - 1993: AI的冷静期 ## 1987 - 1993: AI 的冷静期
专业的专家系统硬件的激增造成了过于专业化的不幸后果。个人电脑的兴起也与这些大型、专业化、集中化系统展开了竞争。计算机的平民化已经开始,它最终为大数据的现代爆炸铺平了道路。 专业的专家系统硬件的激增造成了过于专业化的不幸后果。个人电脑的兴起也与这些大型、专业化、集中化系统展开了竞争。计算机的平民化已经开始,它最终为大数据的现代爆炸铺平了道路。
## 1993 - 2011 ## 1993 - 2011
这个时代见证了一个新的时代ML和AI能够解决早期由于缺乏数据和计算能力而导致的一些问题。数据量开始迅速增加变得越来越广泛无论好坏尤其是2007年左右智能手机的出现计算能力呈指数级增长算法也随之发展。这个领域开始变得成熟因为过去那些随心所欲的日子开始具体化为一种真正的纪律。 这个时代见证了一个新的时代ML AI 能够解决早期由于缺乏数据和计算能力而导致的一些问题。数据量开始迅速增加,变得越来越广泛,无论好坏,尤其是 2007 年左右智能手机的出现,计算能力呈指数级增长,算法也随之发展。这个领域开始变得成熟,因为过去那些随心所欲的日子开始具体化为一种真正的纪律。
## 现在 ## 现在
今天机器学习和人工智能几乎触及我们生活的每一个部分。这个时代要求仔细了解这些算法对人类生活的风险和潜在影响。正如微软的Brad Smith所言“信息技术引发的问题触及隐私和言论自由等基本人权保护的核心。这些问题加重了制造这些产品的科技公司的责任。在我们看来它们还呼吁政府进行深思熟虑的监管并围绕可接受的用途制定规范”([来源](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)) 今天,机器学习和人工智能几乎触及我们生活的每一个部分。这个时代要求仔细了解这些算法对人类生活的风险和潜在影响。正如微软的 Brad Smith 所言,“信息技术引发的问题触及隐私和言论自由等基本人权保护的核心。这些问题加重了制造这些产品的科技公司的责任。在我们看来,它们还呼吁政府进行深思熟虑的监管,并围绕可接受的用途制定规范”[来源](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)
未来的情况还有待观察,但了解这些计算机系统以及它们运行的软件和算法是很重要的。我们希望这门课程能帮助你更好的理解,以便你自己决定。 未来的情况还有待观察,但了解这些计算机系统以及它们运行的软件和算法是很重要的。我们希望这门课程能帮助你更好的理解,以便你自己决定。
[![深度学习的历史](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "深度学习的历史") [![深度学习的历史](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "深度学习的历史")
> 🎥 点击上图观看视频Yann LeCun在本次讲座中讨论深度学习的历史 > 🎥 点击上图观看视频Yann LeCun 在本次讲座中讨论深度学习的历史
--- ---
## 🚀挑战 ## 🚀挑战
@ -107,7 +107,7 @@ Alan Turing一个真正杰出的人[在2019年被公众投票选出](https
以下是要观看和收听的节目: 以下是要观看和收听的节目:
[这是Amy Boyd讨论人工智能进化的播客](http://runasradio.com/Shows/Show/739) [这是 Amy Boyd 讨论人工智能进化的播客](http://runasradio.com/Shows/Show/739)
[![Amy Boyd的《人工智能史》](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd的《人工智能史》") [![Amy Boyd的《人工智能史》](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd的《人工智能史》")

@ -1,212 +1,212 @@
# Equità e machine learning # Equità e machine learning
![Riepilogo dell'equità in machine learning in uno sketchnote](../../../sketchnotes/ml-fairness.png) ![Riepilogo dell'equità in machine learning in uno sketchnote](../../../sketchnotes/ml-fairness.png)
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) > Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/?loc=it)
## Introduzione ## Introduzione
In questo programma di studi, si inizierà a scoprire come machine learning può e sta influenzando la vita quotidiana. Anche ora, sistemi e modelli sono coinvolti nelle attività decisionali quotidiane, come le diagnosi sanitarie o l'individuazione di frodi. Quindi è importante che questi modelli funzionino bene per fornire risultati equi per tutti. In questo programma di studi, si inizierà a scoprire come machine learning può e sta influenzando la vita quotidiana. Anche ora, sistemi e modelli sono coinvolti nelle attività decisionali quotidiane, come le diagnosi sanitarie o l'individuazione di frodi. Quindi è importante che questi modelli funzionino bene per fornire risultati equi per tutti.
Si immagini cosa può accadere quando i dati che si stanno utilizzando per costruire questi modelli mancano di determinati dati demografici, come razza, genere, visione politica, religione, o rappresentano tali dati demografici in modo sproporzionato. E quando il risultato del modello viene interpretato per favorire alcuni gruppi demografici? Qual è la conseguenza per l'applicazione? Si immagini cosa può accadere quando i dati che si stanno utilizzando per costruire questi modelli mancano di determinati dati demografici, come razza, genere, visione politica, religione, o rappresentano tali dati demografici in modo sproporzionato. E quando il risultato del modello viene interpretato per favorire alcuni gruppi demografici? Qual è la conseguenza per l'applicazione?
In questa lezione, si dovrà: In questa lezione, si dovrà:
- Aumentare la propria consapevolezza sull'importanza dell'equità nel machine learning. - Aumentare la propria consapevolezza sull'importanza dell'equità nel machine learning.
- Informarsi sui danni legati all'equità. - Informarsi sui danni legati all'equità.
- Apprendere ulteriori informazioni sulla valutazione e la mitigazione dell'ingiustizia. - Apprendere ulteriori informazioni sulla valutazione e la mitigazione dell'ingiustizia.
## Prerequisito ## Prerequisito
Come prerequisito, si segua il percorso di apprendimento "Principi di AI Responsabile" e si guardi il video qui sotto sull'argomento: Come prerequisito, si segua il percorso di apprendimento "Principi di AI Responsabile" e si guardi il video qui sotto sull'argomento:
Si scopra di più sull'AI Responsabile seguendo questo [percorso di apprendimento](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-15963-cxa) Si scopra di più sull'AI Responsabile seguendo questo [percorso di apprendimento](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-15963-cxa)
[![L'approccio di Microsoft all'AI responsabileL'](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "approccio di Microsoft all'AI Responsabile") [![L'approccio di Microsoft all'AI responsabileL'](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "approccio di Microsoft all'AI Responsabile")
> 🎥 Fare clic sull'immagine sopra per un video: L'approccio di Microsoft all'AI Responsabile > 🎥 Fare clic sull'immagine sopra per un video: L'approccio di Microsoft all'AI Responsabile
## Iniquità nei dati e negli algoritmi ## Iniquità nei dati e negli algoritmi
> "Se si torturano i dati abbastanza a lungo, essi confesseranno qualsiasi cosa" - Ronald Coase > "Se si torturano i dati abbastanza a lungo, essi confesseranno qualsiasi cosa" - Ronald Coase
Questa affermazione suona estrema, ma è vero che i dati possono essere manipolati per supportare qualsiasi conclusione. Tale manipolazione a volte può avvenire involontariamente. Come esseri umani, abbiamo tutti dei pregiudizi, ed è spesso difficile sapere consapevolmente quando si introduce un pregiudizio nei dati. Questa affermazione suona estrema, ma è vero che i dati possono essere manipolati per supportare qualsiasi conclusione. Tale manipolazione a volte può avvenire involontariamente. Come esseri umani, abbiamo tutti dei pregiudizi, ed è spesso difficile sapere consapevolmente quando si introduce un pregiudizio nei dati.
Garantire l'equità nell'intelligenza artificiale e machine learning rimane una sfida socio-tecnica complessa. Ciò significa che non può essere affrontata da prospettive puramente sociali o tecniche. Garantire l'equità nell'intelligenza artificiale e machine learning rimane una sfida socio-tecnica complessa. Ciò significa che non può essere affrontata da prospettive puramente sociali o tecniche.
### Danni legati all'equità ### Danni legati all'equità
Cosa si intende per ingiustizia? L'"ingiustizia" comprende gli impatti negativi, o "danni", per un gruppo di persone, come quelli definiti in termini di razza, genere, età o stato di disabilità. Cosa si intende per ingiustizia? L'"ingiustizia" comprende gli impatti negativi, o "danni", per un gruppo di persone, come quelli definiti in termini di razza, genere, età o stato di disabilità.
I principali danni legati all'equità possono essere classificati come: I principali danni legati all'equità possono essere classificati come:
- **Allocazione**, se un genere o un'etnia, ad esempio, sono preferiti a un altro. - **Allocazione**, se un genere o un'etnia, ad esempio, sono preferiti a un altro.
- **Qualità di servizio** Se si addestrano i dati per uno scenario specifico, ma la realtà è molto più complessa, si ottiene un servizio scadente. - **Qualità di servizio** Se si addestrano i dati per uno scenario specifico, ma la realtà è molto più complessa, si ottiene un servizio scadente.
- **Stereotipi**. Associazione di un dato gruppo con attributi preassegnati. - **Stereotipi**. Associazione di un dato gruppo con attributi preassegnati.
- **Denigrazione**. Criticare ed etichettare ingiustamente qualcosa o qualcuno. - **Denigrazione**. Criticare ed etichettare ingiustamente qualcosa o qualcuno.
- **Sovra o sotto rappresentazione**. L'idea è che un certo gruppo non è visto in una certa professione, e qualsiasi servizio o funzione che continua a promuovere ciò, contribuisce al danno. - **Sovra o sotto rappresentazione**. L'idea è che un certo gruppo non è visto in una certa professione, e qualsiasi servizio o funzione che continua a promuovere ciò, contribuisce al danno.
Si dia un'occhiata agli esempi. Si dia un'occhiata agli esempi.
### Allocazione ### Allocazione
Si consideri un ipotetico sistema per la scrematura delle domande di prestito. Il sistema tende a scegliere gli uomini bianchi come candidati migliori rispetto ad altri gruppi. Di conseguenza, i prestiti vengono negati ad alcuni richiedenti. Si consideri un ipotetico sistema per la scrematura delle domande di prestito. Il sistema tende a scegliere gli uomini bianchi come candidati migliori rispetto ad altri gruppi. Di conseguenza, i prestiti vengono negati ad alcuni richiedenti.
Un altro esempio potrebbe essere uno strumento sperimentale di assunzione sviluppato da una grande azienda per selezionare i candidati. Lo strumento discrimina sistematicamente un genere utilizzando i modelli che sono stati addestrati a preferire parole associate con altro. Ha portato a penalizzare i candidati i cui curricula contengono parole come "squadra di rugby femminile". Un altro esempio potrebbe essere uno strumento sperimentale di assunzione sviluppato da una grande azienda per selezionare i candidati. Lo strumento discrimina sistematicamente un genere utilizzando i modelli che sono stati addestrati a preferire parole associate con altro. Ha portato a penalizzare i candidati i cui curricula contengono parole come "squadra di rugby femminile".
✅ Si compia una piccola ricerca per trovare un esempio reale di qualcosa del genere ✅ Si compia una piccola ricerca per trovare un esempio reale di qualcosa del genere
### Qualità di Servizio ### Qualità di Servizio
I ricercatori hanno scoperto che diversi classificatori di genere commerciali avevano tassi di errore più elevati intorno alle immagini di donne con tonalità della pelle più scura rispetto alle immagini di uomini con tonalità della pelle più chiare. [Riferimento](https://www.media.mit.edu/publications/gender-shades-intersectional-accuracy-disparities-in-commercial-gender-classification/) I ricercatori hanno scoperto che diversi classificatori di genere commerciali avevano tassi di errore più elevati intorno alle immagini di donne con tonalità della pelle più scura rispetto alle immagini di uomini con tonalità della pelle più chiare. [Riferimento](https://www.media.mit.edu/publications/gender-shades-intersectional-accuracy-disparities-in-commercial-gender-classification/)
Un altro esempio infamante è un distributore di sapone per le mani che sembrava non essere in grado di percepire le persone con la pelle scura. [Riferimento](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) Un altro esempio infamante è un distributore di sapone per le mani che sembrava non essere in grado di percepire le persone con la pelle scura. [Riferimento](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
### Stereotipi ### Stereotipi
La visione di genere stereotipata è stata trovata nella traduzione automatica. Durante la traduzione in turco "he is a nurse and she is a doctor" (lui è un'infermiere e lei un medico), sono stati riscontrati problemi. Il turco è una lingua senza genere che ha un pronome, "o" per trasmettere una terza persona singolare, ma tradurre la frase dal turco all'inglese produce lo stereotipo e scorretto come "she is a nurse and he is a doctor" (lei è un'infermiera e lui è un medico). La visione di genere stereotipata è stata trovata nella traduzione automatica. Durante la traduzione in turco "he is a nurse and she is a doctor" (lui è un'infermiere e lei un medico), sono stati riscontrati problemi. Il turco è una lingua senza genere che ha un pronome, "o" per trasmettere una terza persona singolare, ma tradurre la frase dal turco all'inglese produce lo stereotipo e scorretto come "she is a nurse and he is a doctor" (lei è un'infermiera e lui è un medico).
![traduzione in turco](../images/gender-bias-translate-en-tr.png) ![traduzione in turco](../images/gender-bias-translate-en-tr.png)
![Traduzione in inglese](../images/gender-bias-translate-tr-en.png) ![Traduzione in inglese](../images/gender-bias-translate-tr-en.png)
### Denigrazione ### Denigrazione
Una tecnologia di etichettatura delle immagini ha contrassegnato in modo infamante le immagini di persone dalla pelle scura come gorilla. L'etichettatura errata è dannosa non solo perché il sistema ha commesso un errore, ma anche perché ha applicato specificamente un'etichetta che ha una lunga storia di essere intenzionalmente utilizzata per denigrare i neri. Una tecnologia di etichettatura delle immagini ha contrassegnato in modo infamante le immagini di persone dalla pelle scura come gorilla. L'etichettatura errata è dannosa non solo perché il sistema ha commesso un errore, ma anche perché ha applicato specificamente un'etichetta che ha una lunga storia di essere intenzionalmente utilizzata per denigrare i neri.
[![AI: Non sono una donna?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, non sono una donna?") [![AI: Non sono una donna?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, non sono una donna?")
> 🎥 Cliccare sull'immagine sopra per un video: AI, Ain't I a Woman - una performance che mostra il danno causato dalla denigrazione razzista da parte dell'AI > 🎥 Cliccare sull'immagine sopra per un video: AI, Ain't I a Woman - una performance che mostra il danno causato dalla denigrazione razzista da parte dell'AI
### Sovra o sotto rappresentazione ### Sovra o sotto rappresentazione
I risultati di ricerca di immagini distorti possono essere un buon esempio di questo danno. Quando si cercano immagini di professioni con una percentuale uguale o superiore di uomini rispetto alle donne, come l'ingegneria o CEO, si osserva che i risultati sono più fortemente distorti verso un determinato genere. I risultati di ricerca di immagini distorti possono essere un buon esempio di questo danno. Quando si cercano immagini di professioni con una percentuale uguale o superiore di uomini rispetto alle donne, come l'ingegneria o CEO, si osserva che i risultati sono più fortemente distorti verso un determinato genere.
![Ricerca CEO di Bing](../images/ceos.png) ![Ricerca CEO di Bing](../images/ceos.png)
> Questa ricerca su Bing per "CEO" produce risultati piuttosto inclusivi > Questa ricerca su Bing per "CEO" produce risultati piuttosto inclusivi
Questi cinque principali tipi di danno non si escludono a vicenda e un singolo sistema può presentare più di un tipo di danno. Inoltre, ogni caso varia nella sua gravità. Ad esempio, etichettare ingiustamente qualcuno come criminale è un danno molto più grave che etichettare erroneamente un'immagine. È importante, tuttavia, ricordare che anche danni relativamente non gravi possono far sentire le persone alienate o emarginate e l'impatto cumulativo può essere estremamente opprimente. Questi cinque principali tipi di danno non si escludono a vicenda e un singolo sistema può presentare più di un tipo di danno. Inoltre, ogni caso varia nella sua gravità. Ad esempio, etichettare ingiustamente qualcuno come criminale è un danno molto più grave che etichettare erroneamente un'immagine. È importante, tuttavia, ricordare che anche danni relativamente non gravi possono far sentire le persone alienate o emarginate e l'impatto cumulativo può essere estremamente opprimente.
**Discussione**: rivisitare alcuni degli esempi e vedere se mostrano danni diversi. **Discussione**: rivisitare alcuni degli esempi e vedere se mostrano danni diversi.
| | Allocatione | Qualita di servizio | Stereotipo | Denigrazione | Sovra o sotto rappresentazione | | | Allocatione | Qualita di servizio | Stereotipo | Denigrazione | Sovra o sotto rappresentazione |
| ----------------------------------- | :---------: | :-----------------: | :--------: | :----------: | :----------------------------: | | ----------------------------------- | :---------: | :-----------------: | :--------: | :----------: | :----------------------------: |
| Sistema di assunzione automatizzato | x | x | x | | x | | Sistema di assunzione automatizzato | x | x | x | | x |
| Traduzione automatica | | | | | | | Traduzione automatica | | | | | |
| Eitchettatura foto | | | | | | | Eitchettatura foto | | | | | |
## Rilevare l'ingiustizia ## Rilevare l'ingiustizia
Ci sono molte ragioni per cui un dato sistema si comporta in modo scorretto. I pregiudizi sociali, ad esempio, potrebbero riflettersi nell'insieme di dati utilizzati per addestrarli. Ad esempio, l'ingiustizia delle assunzioni potrebbe essere stata esacerbata dall'eccessivo affidamento sui dati storici. Utilizzando i modelli nei curricula inviati all'azienda per un periodo di 10 anni, il modello ha determinato che gli uomini erano più qualificati perché la maggior parte dei curricula proveniva da uomini, un riflesso del passato dominio maschile nell'industria tecnologica. Ci sono molte ragioni per cui un dato sistema si comporta in modo scorretto. I pregiudizi sociali, ad esempio, potrebbero riflettersi nell'insieme di dati utilizzati per addestrarli. Ad esempio, l'ingiustizia delle assunzioni potrebbe essere stata esacerbata dall'eccessivo affidamento sui dati storici. Utilizzando i modelli nei curricula inviati all'azienda per un periodo di 10 anni, il modello ha determinato che gli uomini erano più qualificati perché la maggior parte dei curricula proveniva da uomini, un riflesso del passato dominio maschile nell'industria tecnologica.
Dati inadeguati su un determinato gruppo di persone possono essere motivo di ingiustizia. Ad esempio, i classificatori di immagini hanno un tasso di errore più elevato per le immagini di persone dalla pelle scura perché le tonalità della pelle più scure sono sottorappresentate nei dati. Dati inadeguati su un determinato gruppo di persone possono essere motivo di ingiustizia. Ad esempio, i classificatori di immagini hanno un tasso di errore più elevato per le immagini di persone dalla pelle scura perché le tonalità della pelle più scure sono sottorappresentate nei dati.
Anche le ipotesi errate fatte durante lo sviluppo causano iniquità. Ad esempio, un sistema di analisi facciale destinato a prevedere chi commetterà un crimine basato sulle immagini dei volti delle persone può portare a ipotesi dannose. Ciò potrebbe portare a danni sostanziali per le persone classificate erroneamente. Anche le ipotesi errate fatte durante lo sviluppo causano iniquità. Ad esempio, un sistema di analisi facciale destinato a prevedere chi commetterà un crimine basato sulle immagini dei volti delle persone può portare a ipotesi dannose. Ciò potrebbe portare a danni sostanziali per le persone classificate erroneamente.
## Si comprendano i propri modelli e si costruiscano in modo onesto ## Si comprendano i propri modelli e si costruiscano in modo onesto
Sebbene molti aspetti dell'equità non vengano catturati nelle metriche di equità quantitativa e non sia possibile rimuovere completamente i pregiudizi da un sistema per garantire l'equità, si è comunque responsabili di rilevare e mitigare il più possibile i problemi di equità. Sebbene molti aspetti dell'equità non vengano catturati nelle metriche di equità quantitativa e non sia possibile rimuovere completamente i pregiudizi da un sistema per garantire l'equità, si è comunque responsabili di rilevare e mitigare il più possibile i problemi di equità.
Quando si lavora con modelli di machine learning, è importante comprendere i propri modelli assicurandone l'interpretabilità e valutando e mitigando l'ingiustizia. Quando si lavora con modelli di machine learning, è importante comprendere i propri modelli assicurandone l'interpretabilità e valutando e mitigando l'ingiustizia.
Si utilizza l'esempio di selezione del prestito per isolare il caso e determinare il livello di impatto di ciascun fattore sulla previsione. Si utilizza l'esempio di selezione del prestito per isolare il caso e determinare il livello di impatto di ciascun fattore sulla previsione.
## Metodi di valutazione ## Metodi di valutazione
1. **Identificare i danni (e benefici)**. Il primo passo è identificare danni e benefici. Si pensi a come azioni e decisioni possono influenzare sia i potenziali clienti che un'azienda stessa. 1. **Identificare i danni (e benefici)**. Il primo passo è identificare danni e benefici. Si pensi a come azioni e decisioni possono influenzare sia i potenziali clienti che un'azienda stessa.
1. **Identificare i gruppi interessati**. Una volta compreso il tipo di danni o benefici che possono verificarsi, identificare i gruppi che potrebbero essere interessati. Questi gruppi sono definiti per genere, etnia o gruppo sociale? 1. **Identificare i gruppi interessati**. Una volta compreso il tipo di danni o benefici che possono verificarsi, identificare i gruppi che potrebbero essere interessati. Questi gruppi sono definiti per genere, etnia o gruppo sociale?
1. **Definire le metriche di equità**. Infine, si definisca una metrica in modo da avere qualcosa su cui misurare il proprio lavoro per migliorare la situazione. 1. **Definire le metriche di equità**. Infine, si definisca una metrica in modo da avere qualcosa su cui misurare il proprio lavoro per migliorare la situazione.
### **Identificare danni (e benefici)** ### **Identificare danni (e benefici)**
Quali sono i danni e i benefici associati al prestito? Si pensi agli scenari di falsi negativi e falsi positivi: Quali sono i danni e i benefici associati al prestito? Si pensi agli scenari di falsi negativi e falsi positivi:
**Falsi negativi** (rifiutato, ma Y=1) - in questo caso viene rifiutato un richiedente che sarà in grado di rimborsare un prestito. Questo è un evento avverso perché le risorse dei prestiti non sono erogate a richiedenti qualificati. **Falsi negativi** (rifiutato, ma Y=1) - in questo caso viene rifiutato un richiedente che sarà in grado di rimborsare un prestito. Questo è un evento avverso perché le risorse dei prestiti non sono erogate a richiedenti qualificati.
**Falsi positivi** (accettato, ma Y=0) - in questo caso, il richiedente ottiene un prestito ma alla fine fallisce. Di conseguenza, il caso del richiedente verrà inviato a un'agenzia di recupero crediti che può influire sulle sue future richieste di prestito. **Falsi positivi** (accettato, ma Y=0) - in questo caso, il richiedente ottiene un prestito ma alla fine fallisce. Di conseguenza, il caso del richiedente verrà inviato a un'agenzia di recupero crediti che può influire sulle sue future richieste di prestito.
### **Identificare i gruppi interessati** ### **Identificare i gruppi interessati**
Il passo successivo è determinare quali gruppi potrebbero essere interessati. Ad esempio, nel caso di una richiesta di carta di credito, un modello potrebbe stabilire che le donne dovrebbero ricevere limiti di credito molto più bassi rispetto ai loro coniugi che condividono i beni familiari. Un intero gruppo demografico, definito in base al genere, è così interessato. Il passo successivo è determinare quali gruppi potrebbero essere interessati. Ad esempio, nel caso di una richiesta di carta di credito, un modello potrebbe stabilire che le donne dovrebbero ricevere limiti di credito molto più bassi rispetto ai loro coniugi che condividono i beni familiari. Un intero gruppo demografico, definito in base al genere, è così interessato.
### **Definire le metriche di equità** ### **Definire le metriche di equità**
Si sono identificati i danni e un gruppo interessato, in questo caso, delineato per genere. Ora, si usino i fattori quantificati per disaggregare le loro metriche. Ad esempio, utilizzando i dati di seguito, si può vedere che le donne hanno il più alto tasso di falsi positivi e gli uomini il più piccolo, e che è vero il contrario per i falsi negativi. Si sono identificati i danni e un gruppo interessato, in questo caso, delineato per genere. Ora, si usino i fattori quantificati per disaggregare le loro metriche. Ad esempio, utilizzando i dati di seguito, si può vedere che le donne hanno il più alto tasso di falsi positivi e gli uomini il più piccolo, e che è vero il contrario per i falsi negativi.
✅ In una futura lezione sul Clustering, si vedrà come costruire questa 'matrice di confusione' nel codice ✅ In una futura lezione sul Clustering, si vedrà come costruire questa 'matrice di confusione' nel codice
| | percentuale di falsi positivi | Percentuale di falsi negativi | conteggio | | | percentuale di falsi positivi | Percentuale di falsi negativi | conteggio |
| ----------- | ----------------------------- | ----------------------------- | --------- | | ----------- | ----------------------------- | ----------------------------- | --------- |
| Donna | 0,37 | 0,27 | 54032 | | Donna | 0,37 | 0,27 | 54032 |
| Uomo | 0,31 | 0.35 | 28620 | | Uomo | 0,31 | 0.35 | 28620 |
| Non binario | 0,33 | 0,31 | 1266 | | Non binario | 0,33 | 0,31 | 1266 |
Questa tabella ci dice diverse cose. Innanzitutto, si nota che ci sono relativamente poche persone non binarie nei dati. I dati sono distorti, quindi si deve fare attenzione a come si interpretano questi numeri. Questa tabella ci dice diverse cose. Innanzitutto, si nota che ci sono relativamente poche persone non binarie nei dati. I dati sono distorti, quindi si deve fare attenzione a come si interpretano questi numeri.
In questo caso, ci sono 3 gruppi e 2 metriche. Quando si pensa a come il nostro sistema influisce sul gruppo di clienti con i loro richiedenti di prestito, questo può essere sufficiente, ma quando si desidera definire un numero maggiore di gruppi, è possibile distillare questo in insiemi più piccoli di riepiloghi. Per fare ciò, si possono aggiungere più metriche, come la differenza più grande o il rapporto più piccolo di ogni falso negativo e falso positivo. In questo caso, ci sono 3 gruppi e 2 metriche. Quando si pensa a come il nostro sistema influisce sul gruppo di clienti con i loro richiedenti di prestito, questo può essere sufficiente, ma quando si desidera definire un numero maggiore di gruppi, è possibile distillare questo in insiemi più piccoli di riepiloghi. Per fare ciò, si possono aggiungere più metriche, come la differenza più grande o il rapporto più piccolo di ogni falso negativo e falso positivo.
✅ Ci si fermi a pensare: quali altri gruppi potrebbero essere interessati dalla richiesta di prestito? ✅ Ci si fermi a pensare: quali altri gruppi potrebbero essere interessati dalla richiesta di prestito?
## Mitigare l'ingiustizia ## Mitigare l'ingiustizia
Per mitigare l'ingiustizia, si esplori il modello per generare vari modelli mitigati e si confrontino i compromessi tra accuratezza ed equità per selezionare il modello più equo. Per mitigare l'ingiustizia, si esplori il modello per generare vari modelli mitigati e si confrontino i compromessi tra accuratezza ed equità per selezionare il modello più equo.
Questa lezione introduttiva non approfondisce i dettagli dell'algoritmo della mitigazione dell'ingiustizia, come l'approccio di post-elaborazione e riduzione, ma ecco uno strumento che si potrebbe voler provare. Questa lezione introduttiva non approfondisce i dettagli dell'algoritmo della mitigazione dell'ingiustizia, come l'approccio di post-elaborazione e riduzione, ma ecco uno strumento che si potrebbe voler provare.
### Fairlearn ### Fairlearn
[Fairlearn](https://fairlearn.github.io/) è un pacchetto Python open source che consente di valutare l'equità dei propri sistemi e mitigare l'ingiustizia. [Fairlearn](https://fairlearn.github.io/) è un pacchetto Python open source che consente di valutare l'equità dei propri sistemi e mitigare l'ingiustizia.
Lo strumento consente di valutare in che modo le previsioni di un modello influiscono su diversi gruppi, consentendo di confrontare più modelli utilizzando metriche di equità e prestazioni e fornendo una serie di algoritmi per mitigare l'ingiustizia nella classificazione binaria e nella regressione. Lo strumento consente di valutare in che modo le previsioni di un modello influiscono su diversi gruppi, consentendo di confrontare più modelli utilizzando metriche di equità e prestazioni e fornendo una serie di algoritmi per mitigare l'ingiustizia nella classificazione binaria e nella regressione.
- Si scopra come utilizzare i diversi componenti controllando il GitHub di [Fairlearn](https://github.com/fairlearn/fairlearn/) - Si scopra come utilizzare i diversi componenti controllando il GitHub di [Fairlearn](https://github.com/fairlearn/fairlearn/)
- Si esplori la [guida per l'utente](https://fairlearn.github.io/main/user_guide/index.html), e gli [esempi](https://fairlearn.github.io/main/auto_examples/index.html) - Si esplori la [guida per l'utente](https://fairlearn.github.io/main/user_guide/index.html), e gli [esempi](https://fairlearn.github.io/main/auto_examples/index.html)
- Si provino alcuni [notebook di esempio](https://github.com/fairlearn/fairlearn/tree/master/notebooks). - Si provino alcuni [notebook di esempio](https://github.com/fairlearn/fairlearn/tree/master/notebooks).
- Si scopra [come abilitare le valutazioni dell'equità](https://docs.microsoft.com/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa) dei modelli di Machine Learning in Azure Machine Learning. - Si scopra [come abilitare le valutazioni dell'equità](https://docs.microsoft.com/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa) dei modelli di Machine Learning in Azure Machine Learning.
- Si dia un'occhiata a questi [notebook di esempio](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness) per ulteriori scenari di valutazione dell'equità in Azure Machine Learning. - Si dia un'occhiata a questi [notebook di esempio](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness) per ulteriori scenari di valutazione dell'equità in Azure Machine Learning.
--- ---
## 🚀 Sfida ## 🚀 Sfida
Per evitare che vengano introdotti pregiudizi, in primo luogo, si dovrebbe: Per evitare che vengano introdotti pregiudizi, in primo luogo, si dovrebbe:
- avere una diversità di background e prospettive tra le persone che lavorano sui sistemi - avere una diversità di background e prospettive tra le persone che lavorano sui sistemi
- investire in insiemi di dati che riflettano le diversità della società - investire in insiemi di dati che riflettano le diversità della società
- sviluppare metodi migliori per rilevare e correggere i pregiudizi quando si verificano - sviluppare metodi migliori per rilevare e correggere i pregiudizi quando si verificano
Si pensi a scenari di vita reale in cui l'ingiustizia è evidente nella creazione e nell'utilizzo del modello. Cos'altro si dovrebbe considerare? Si pensi a scenari di vita reale in cui l'ingiustizia è evidente nella creazione e nell'utilizzo del modello. Cos'altro si dovrebbe considerare?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento
In questa lezione si sono apprese alcune nozioni di base sui concetti di equità e ingiustizia in machine learning. In questa lezione si sono apprese alcune nozioni di base sui concetti di equità e ingiustizia in machine learning.
Si guardi questo workshop per approfondire gli argomenti: Si guardi questo workshop per approfondire gli argomenti:
- YouTube: Danni correlati all'equità nei sistemi di IA: esempi, valutazione e mitigazione di Hanna Wallach e Miro Dudik [Danni correlati all'equità nei sistemi di IA: esempi, valutazione e mitigazione - YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k) - YouTube: Danni correlati all'equità nei sistemi di IA: esempi, valutazione e mitigazione di Hanna Wallach e Miro Dudik [Danni correlati all'equità nei sistemi di IA: esempi, valutazione e mitigazione - YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k)
Si legga anche: Si legga anche:
- Centro risorse RAI di Microsoft: [risorse AI responsabili Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) - Centro risorse RAI di Microsoft: [risorse AI responsabili Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Gruppo di ricerca FATE di Microsoft[: FATE: equità, responsabilità, trasparenza ed etica nell'intelligenza artificiale - Microsoft Research](https://www.microsoft.com/research/theme/fate/) - Gruppo di ricerca FATE di Microsoft[: FATE: equità, responsabilità, trasparenza ed etica nell'intelligenza artificiale - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
Si esplori il toolkit Fairlearn Si esplori il toolkit Fairlearn
[Fairlearn](https://fairlearn.org/) [Fairlearn](https://fairlearn.org/)
Si scoprano gli strumenti di Azure Machine Learning per garantire l'equità Si scoprano gli strumenti di Azure Machine Learning per garantire l'equità
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa) - [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa)
## Compito ## Compito
[Esplorare Fairlearn](assignment.it.md) [Esplorare Fairlearn](assignment.it.md)

@ -1,7 +1,7 @@
# 机器学习中的公平性 # 机器学习中的公平性
![机器学习中的公平性概述](../../../sketchnotes/ml-fairness.png) ![机器学习中的公平性概述](../../../sketchnotes/ml-fairness.png)
> 作者[Tomomi Imura](https://www.twitter.com/girlie_mac) > 作者 [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5?loc=zh-cn) ## [课前测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5?loc=zh-cn)
@ -76,14 +76,14 @@
一种图像标记技术,臭名昭著地将深色皮肤的人的图像错误地标记为大猩猩。错误的标签是有害的,不仅仅是因为这个系统犯了一个错误,而且它还特别使用了一个长期以来被故意用来诋毁黑人的标签。 一种图像标记技术,臭名昭著地将深色皮肤的人的图像错误地标记为大猩猩。错误的标签是有害的,不仅仅是因为这个系统犯了一个错误,而且它还特别使用了一个长期以来被故意用来诋毁黑人的标签。
[![AI: 我不是女人吗?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, 我不是女人吗?") [![AI: 我不是女人吗?](https://img.youtube.com/vi/QxuyfWoVV98/0.jpg)](https://www.youtube.com/watch?v=QxuyfWoVV98 "AI, 我不是女人吗?")
> 🎥 点击上图观看视频AI我不是女人吗 - 一场展示AI种族主义诋毁造成的伤害的表演 > 🎥 点击上图观看视频AI我不是女人吗 - 一场展示 AI 种族主义诋毁造成的伤害的表演
### 代表性过高或过低 ### 代表性过高或过低
有倾向性的图像搜索结果就是一个很好的例子。在搜索男性比例等于或高于女性的职业的图片时,比如工程或首席执行官,要注意那些更倾向于特定性别的结果。 有倾向性的图像搜索结果就是一个很好的例子。在搜索男性比例等于或高于女性的职业的图片时,比如工程或首席执行官,要注意那些更倾向于特定性别的结果。
![必应CEO搜索](../images/ceos.png) ![必应CEO搜索](../images/ceos.png)
> 在Bing上搜索“CEO”会得到非常全面的结果 > 在 Bing 上搜索“CEO”会得到非常全面的结果
这五种主要类型的危害不是相互排斥的,一个单一的系统可以表现出一种以上的危害。此外,每个案例的严重程度各不相同。例如,不公平地给某人贴上罪犯的标签比给形象贴上错误的标签要严重得多。然而,重要的是要记住,即使是相对不严重的伤害也会让人感到疏远或被孤立,累积的影响可能会非常压抑。 这五种主要类型的危害不是相互排斥的,一个单一的系统可以表现出一种以上的危害。此外,每个案例的严重程度各不相同。例如,不公平地给某人贴上罪犯的标签比给形象贴上错误的标签要严重得多。然而,重要的是要记住,即使是相对不严重的伤害也会让人感到疏远或被孤立,累积的影响可能会非常压抑。
@ -98,7 +98,7 @@
## 检测不公平 ## 检测不公平
给定系统行为不公平的原因有很多。例如社会偏见可能会反映在用于训练它们的数据集中。例如过度依赖历史数据可能会加剧招聘不公平。通过使用过去10年提交给公司的简历中的模式该模型确定男性更合格因为大多数简历来自男性这反映了过去男性在整个科技行业的主导地位。 给定系统行为不公平的原因有很多。例如,社会偏见可能会反映在用于训练它们的数据集中。例如,过度依赖历史数据可能会加剧招聘不公平。通过使用过去 10 年提交给公司的简历中的模式,该模型确定男性更合格,因为大多数简历来自男性,这反映了过去男性在整个科技行业的主导地位。
关于特定人群的数据不足可能是不公平的原因。例如,图像分类器对于深肤色人的图像具有较高的错误率,因为数据中没有充分代表较深的肤色。 关于特定人群的数据不足可能是不公平的原因。例如,图像分类器对于深肤色人的图像具有较高的错误率,因为数据中没有充分代表较深的肤色。
@ -124,9 +124,9 @@
与贷款相关的危害和好处是什么?想想假阴性和假阳性的情况: 与贷款相关的危害和好处是什么?想想假阴性和假阳性的情况:
**假阴性**拒绝但Y=1-在这种情况下,将拒绝有能力偿还贷款的申请人。这是一个不利的事件,因为贷款的资源是从合格的申请人扣留。 **假阴性**(拒绝,但 Y=1-在这种情况下,将拒绝有能力偿还贷款的申请人。这是一个不利的事件,因为贷款的资源是从合格的申请人扣留。
**假阳性**接受但Y=0-在这种情况下,申请人确实获得了贷款,但最终违约。因此,申请人的案件将被送往一个债务催收机构,这可能会影响他们未来的贷款申请。 **假阳性**(接受,但 Y=0-在这种情况下,申请人确实获得了贷款,但最终违约。因此,申请人的案件将被送往一个债务催收机构,这可能会影响他们未来的贷款申请。
### 确定受影响的群体 ### 确定受影响的群体
@ -147,7 +147,7 @@
这个表格告诉我们几件事。首先,我们注意到数据中的未列出性别的人相对较少。数据是有偏差的,所以你需要小心解释这些数字。 这个表格告诉我们几件事。首先,我们注意到数据中的未列出性别的人相对较少。数据是有偏差的,所以你需要小心解释这些数字。
在本例中我们有3个组和2个度量。当我们考虑我们的系统如何影响贷款申请人的客户群时这可能就足够了但是当你想要定义更多的组时你可能需要将其提取到更小的摘要集。为此你可以添加更多的度量例如每个假阴性和假阳性的最大差异或最小比率。 在本例中,我们有 3 个组和 2 个度量。当我们考虑我们的系统如何影响贷款申请人的客户群时,这可能就足够了,但是当你想要定义更多的组时,你可能需要将其提取到更小的摘要集。为此,你可以添加更多的度量,例如每个假阴性和假阳性的最大差异或最小比率。
✅ 停下来想一想:还有哪些群体可能会受到贷款申请的影响? ✅ 停下来想一想:还有哪些群体可能会受到贷款申请的影响?
@ -159,19 +159,19 @@
### Fairlearn ### Fairlearn
[Fairlearn](https://fairlearn.github.io/) 是一个开源Python包可让你评估系统的公平性并减轻不公平性。 [Fairlearn](https://fairlearn.github.io/) 是一个开源 Python 包,可让你评估系统的公平性并减轻不公平性。
该工具可帮助你评估模型的预测如何影响不同的组,使你能够通过使用公平性和性能指标来比较多个模型,并提供一组算法来减轻二元分类和回归中的不公平性。 该工具可帮助你评估模型的预测如何影响不同的组,使你能够通过使用公平性和性能指标来比较多个模型,并提供一组算法来减轻二元分类和回归中的不公平性。
- 通过查看Fairlearn的[GitHub](https://github.com/fairlearn/fairlearn/)了解如何使用不同的组件 - 通过查看 Fairlearn [GitHub](https://github.com/fairlearn/fairlearn/) 了解如何使用不同的组件
- 浏览[用户指南](https://fairlearn.github.io/main/user_guide/index.html), [示例](https://fairlearn.github.io/main/auto_examples/index.html) - 浏览[用户指南](https://fairlearn.github.io/main/user_guide/index.html), [示例](https://fairlearn.github.io/main/auto_examples/index.html)
- 尝试一些 [示例Notebook](https://github.com/fairlearn/fairlearn/tree/master/notebooks). - 尝试一些 [示例 Notebook](https://github.com/fairlearn/fairlearn/tree/master/notebooks).
- 了解Azure机器学习中机器学习模型[如何启用公平性评估](https://docs.microsoft.com/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa)。 - 了解Azure机器学习中机器学习模型[如何启用公平性评估](https://docs.microsoft.com/azure/machine-learning/how-to-machine-learning-fairness-aml?WT.mc_id=academic-15963-cxa)。
- 看看这些[示例Notebook](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness)了解Azure机器学习中的更多公平性评估场景。 - 看看这些[示例 Notebook](https://github.com/Azure/MachineLearningNotebooks/tree/master/contrib/fairness)了解 Azure 机器学习中的更多公平性评估场景。
--- ---
## 🚀 挑战 ## 🚀 挑战
@ -193,22 +193,22 @@
观看本次研讨会,深入探讨以下主题: 观看本次研讨会,深入探讨以下主题:
- YouTube:人工智能系统中与公平相关的危害示例、评估和缓解Hanna Wallach和Miro Dudik[人工智能系统中与公平相关的危害:示例、评估和缓解-YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k) - YouTube:人工智能系统中与公平相关的危害:示例、评估和缓解 Hanna Wallach Miro Dudik[人工智能系统中与公平相关的危害:示例、评估和缓解-YouTube](https://www.youtube.com/watch?v=1RptHwfkx_k)
另外,请阅读: 另外,请阅读:
- 微软RAI资源中心[负责人工智能资源-微软人工智能](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) - 微软RAI资源中心[负责人工智能资源-微软人工智能](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- 微软FATE研究小组[FATEAI 中的公平、问责、透明和道德-微软研究院](https://www.microsoft.com/research/theme/fate/) - 微软 FATE 研究小组:[FATEAI 中的公平、问责、透明和道德-微软研究院](https://www.microsoft.com/research/theme/fate/)
探索Fairlearn工具箱 探索 Fairlearn 工具箱
[Fairlearn](https://fairlearn.org/) [Fairlearn](https://fairlearn.org/)
了解Azure机器学习的工具以确保公平性 了解 Azure 机器学习的工具以确保公平性
- [Azure机器学习](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa) - [Azure 机器学习](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-15963-cxa)
## 任务 ## 任务
[探索Fairlearn](assignment.zh-cn.md) [探索 Fairlearn](assignment.zh-cn.md)

@ -1,114 +1,114 @@
# Tecniche di Machine Learning # Tecniche di Machine Learning
Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà: Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà:
- Comprendere i processi ad alto livello alla base di machine learning. - Comprendere i processi ad alto livello alla base di machine learning.
- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". - Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento".
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/7/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/7/?loc=it)
## Introduzione ## Introduzione
Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi: Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi:
1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati. 1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati.
2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello. 2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello.
3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. 3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione.
4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore. 4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore.
5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello. 5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello.
6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. 6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello.
7. **Prevedere**. Usare nuovi input per testare la precisione del modello. 7. **Prevedere**. Usare nuovi input per testare la precisione del modello.
## Che domanda fare ## Che domanda fare
I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori. I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori.
Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora. Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora.
✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica. ✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica.
## Attività di pre-costruzione ## Attività di pre-costruzione
Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi. Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi.
### Dati ### Dati
Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto: Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto:
- **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine. - **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine.
- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento. - **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento.
✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)! ✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)!
### Caratteristiche e destinazione ### Caratteristiche e destinazione
Una funzionalità è una proprietà misurabile dei dati. In molti set di dati è espresso come intestazione di colonna come 'date' 'size' o 'color'. La variabile di funzionalità, solitamente rappresentata come `X` nel codice, rappresenta la variabile di input che verrà utilizzata per il training del modello. Una caratteristica è una proprietà misurabile dei dati. In molti set di dati è espresso come intestazione di colonna come 'date' 'size' o 'color'. La variabile di caratteristica, solitamente rappresentata come `X` nel codice, rappresenta la variabile di input che verrà utilizzata per il training del modello.
Un obiettivo è una cosa che stai cercando di prevedere. Target solitamente rappresentato come `y` nel codice, rappresenta la risposta alla domanda che stai cercando di porre dei tuoi dati: a dicembre, di che colore saranno le zucche più economiche? a San Francisco, quali quartieri avranno il miglior prezzo immobiliare? A volte la destinazione viene anche definita attributo label. Un obiettivo è una cosa che stai cercando di prevedere. Target solitamente rappresentato come `y` nel codice, rappresenta la risposta alla domanda che stai cercando di porre dei tuoi dati: a dicembre, di che colore saranno le zucche più economiche? a San Francisco, quali quartieri avranno il miglior prezzo immobiliare? A volte la destinazione viene anche definita attributo label.
### Selezione della variabile caratteristica ### Selezione della variabile caratteristica
🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche)) 🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche))
### Visualizzare i dati ### Visualizzare i dati
Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)). Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)).
### Dividere l'insieme di dati ### Dividere l'insieme di dati
Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati. Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati.
- **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale. - **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale.
- **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato. - **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato.
- **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)). - **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)).
## Costruire un modello ## Costruire un modello
Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta. Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta.
### Decidere un metodo di addestramento ### Decidere un metodo di addestramento
A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere. A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere.
### Allenare un modello ### Allenare un modello
Armati dei tuoi dati di allenamento, sei pronto a "adattarlo" per creare un modello. Noterai che in molte librerie ML troverai il codice "model.fit" - è in questo momento che invii la tua variabile di funzionalità come matrice di valori (in genere `X`) e una variabile di destinazione (di solito `y`). Armati dei tuoi dati di allenamento, sei pronto a "adattarlo" per creare un modello. Noterai che in molte librerie ML troverai il codice "model.fit" - è in questo momento che invii la tua variabile di funzionalità come matrice di valori (in genere `X`) e una variabile di destinazione (di solito `y`).
### Valutare il modello ### Valutare il modello
Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello. Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello.
🎓 **Adattamento del modello** 🎓 **Adattamento del modello**
Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità.
🎓 **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto". 🎓 **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto".
![modello sovraaddestrato](../images/overfitting.png) ![modello sovraaddestrato](../images/overfitting.png)
> Infografica di [Jen Looper](https://twitter.com/jenlooper) > Infografica di [Jen Looper](https://twitter.com/jenlooper)
## Sintonia dei parametri ## Sintonia dei parametri
Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa). Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa).
## Previsione ## Previsione
Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione. Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione.
In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack". In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack".
--- ---
## 🚀 Sfida ## 🚀 Sfida
Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile? Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/8/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/8/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento
Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Compito ## Compito
[Intervista a un data scientist](assignment.it.md) [Intervista a un data scientist](assignment.it.md)

@ -83,7 +83,7 @@
🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。 🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。
![过拟合模型 ](../images/overfitting.png) ![过拟合模型 ](../images/overfitting.png)
> 作者[Jen Looper](https://twitter.com/jenlooper) > 作者 [Jen Looper](https://twitter.com/jenlooper)
## 参数调优 ## 参数调优

@ -1,6 +1,6 @@
# 机器学习入门 # 机器学习入门
课程的本章节将为您介绍机器学习领域背后的基本概念、什么是机器学习,并学习它的历史以及曾为此做出贡献的技术研究者。让我们一起开始探索机器学习的全新世界吧! 课程的本章节将为您介绍机器学习领域背后的基本概念、什么是机器学习,并学习它的历史以及曾为此做出贡献的技术研究者。让我们一起开始探索机器学习的全新世界吧!
![globe](../images/globe.jpg) ![globe](../images/globe.jpg)
> 图片由 <a href="https://unsplash.com/@bill_oxford?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Bill Oxford</a>提供,来自 <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>提供,来自 <a href="https://unsplash.com/s/photos/globe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>

@ -4,7 +4,7 @@
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) > Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Qui Pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/9/) ## [Qui Pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/9/?loc=it)
## Introduzione ## Introduzione
@ -197,7 +197,7 @@ Congratulazioni, si è costruito il primo modello di regressione lineare, creato
Tracciare una variabile diversa da questo insieme di dati. Suggerimento: modificare questa riga: `X = X[:, np.newaxis, 2]`. Dato l'obiettivo di questo insieme di dati, cosa si potrebbe riuscire a scoprire circa la progressione del diabete come matattia? Tracciare una variabile diversa da questo insieme di dati. Suggerimento: modificare questa riga: `X = X[:, np.newaxis, 2]`. Dato l'obiettivo di questo insieme di dati, cosa si potrebbe riuscire a scoprire circa la progressione del diabete come matattia?
## [Qui post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10/) ## [Qui post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10/?loc=it)
## Riepilogo e Auto Apprendimento ## Riepilogo e Auto Apprendimento

@ -1,8 +1,8 @@
# 开始使用Python和Scikit学习回归模型 # 开始使用 Python Scikit 学习回归模型
![回归](../../../sketchnotes/ml-regression.png) ![回归](../../../sketchnotes/ml-regression.png)
> 作者[Tomomi Imura](https://www.twitter.com/girlie_mac) > 作者 [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/9?loc=zh-cn) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/9?loc=zh-cn)
## 介绍 ## 介绍
@ -12,45 +12,45 @@
在本课中,你将学习如何: 在本课中,你将学习如何:
- 为本地机器学习任务配置你的计算机。 - 为本地机器学习任务配置你的计算机。
- 使用Jupyter notebooks。 - 使用 Jupyter notebooks。
- 使用Scikit-learn包括安装。 - 使用 Scikit-learn包括安装。
- 通过动手练习探索线性回归。 - 通过动手练习探索线性回归。
## 安装和配置 ## 安装和配置
[![在 Visual Studio Code中使用 Python](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "在 Visual Studio Code中使用 Python") [![在 Visual Studio Code 中使用 Python](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "在 Visual Studio Code 中使用 Python")
> 🎥 单击上图观看视频在VS Code中使用Python。 > 🎥 单击上图观看视频:在 VS Code 中使用 Python。
1. **安装 Python**。确保你的计算机上安装了[Python](https://www.python.org/downloads/)。你将在许多数据科学和机器学习任务中使用 Python。大多数计算机系统已经安装了Python。也有一些有用的[Python编码包](https://code.visualstudio.com/learn/educations/installers?WT.mc_id=academic-15963-cxa)可用于简化某些用户的设置。 1. **安装 Python**。确保你的计算机上安装了 [Python](https://www.python.org/downloads/)。你将在许多数据科学和机器学习任务中使用 Python。大多数计算机系统已经安装了 Python。也有一些有用的 [Python 编码包](https://code.visualstudio.com/learn/educations/installers?WT.mc_id=academic-15963-cxa) 可用于简化某些用户的设置。
然而Python的某些用法需要一个版本的软件而其他用法则需要另一个不同的版本。 因此,在[虚拟环境](https://docs.python.org/3/library/venv.html)中工作很有用。 然而Python 的某些用法需要一个版本的软件,而其他用法则需要另一个不同的版本。 因此,在 [虚拟环境](https://docs.python.org/3/library/venv.html) 中工作很有用。
2. **安装 Visual Studio Code**。确保你的计算机上安装了Visual Studio Code。按照这些说明[安装 Visual Studio Code](https://code.visualstudio.com/)进行基本安装。在本课程中你将在Visual Studio Code中使用Python因此你可能想复习如何[配置 Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa)用于Python开发。 2. **安装 Visual Studio Code**。确保你的计算机上安装了 Visual Studio Code。按照这些说明 [安装 Visual Studio Code](https://code.visualstudio.com/) 进行基本安装。在本课程中,你将在 Visual Studio Code 中使用 Python因此你可能想复习如何 [配置 Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa) 用于 Python 开发。
> 通过学习这一系列的 [学习模块](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-15963-cxa)熟悉Python > 通过学习这一系列的 [学习模块](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-15963-cxa) 熟悉 Python
3. **按照[这些说明]安装Scikit learn**(https://scikit-learn.org/stable/install.html )。由于你需要确保使用Python3因此建议你使用虚拟环境。注意如果你是在M1 Mac上安装这个库在上面链接的页面上有特别的说明。 3. **按照 [这些说明] 安装 Scikit learn**(https://scikit-learn.org/stable/install.html)。由于你需要确保使用 Python3因此建议你使用虚拟环境。注意如果你是在 M1 Mac 上安装这个库,在上面链接的页面上有特别的说明。
4. **安装Jupyter Notebook**。你需要[安装Jupyter包](https://pypi.org/project/jupyter/)。 4. **安装 Jupyter Notebook**。你需要 [安装 Jupyter ](https://pypi.org/project/jupyter/)。
## 你的ML工作环境 ## 你的 ML 工作环境
你将使用**notebooks**开发Python代码并创建机器学习模型。这种类型的文件是数据科学家的常用工具可以通过后缀或扩展名`.ipynb`来识别它们。 你将使用 **notebooks** 开发 Python 代码并创建机器学习模型。这种类型的文件是数据科学家的常用工具,可以通过后缀或扩展名 `.ipynb` 来识别它们。
Notebooks是一个交互式环境允许开发人员编写代码并添加注释并围绕代码编写文档这对于实验或面向研究的项目非常有帮助。 Notebooks 是一个交互式环境,允许开发人员编写代码并添加注释并围绕代码编写文档,这对于实验或面向研究的项目非常有帮助。
### 练习 - 使用notebook ### 练习 - 使用 notebook
1. 在Visual Studio Code中打开_notebook.ipynb_。 1. 在 Visual Studio Code 中打开 _notebook.ipynb_
Jupyter服务器将以python3+启动。你会发现notebook可以“运行”的区域、代码块。你可以通过选择看起来像播放按钮的图标来运行代码块。 Jupyter 服务器将以 python3+启动。你会发现 notebook 可以“运行”的区域、代码块。你可以通过选择看起来像播放按钮的图标来运行代码块。
2. 选择`md`图标并添加一点markdown输入文字 **# Welcome to your notebook**。 2. 选择 `md` 图标并添加一点 markdown输入文字 **# Welcome to your notebook**。
接下来添加一些Python代码。 接下来,添加一些 Python 代码。
1. 在代码块中输入**print("hello notebook")**。 1. 在代码块中输入 **print("hello notebook")**
2. 选择箭头运行代码。 2. 选择箭头运行代码。
@ -60,43 +60,43 @@ Notebooks是一个交互式环境允许开发人员编写代码并添加注
hello notebook hello notebook
``` ```
![打开notebook的VS Code](../images/notebook.png) ![打开 notebook VS Code](../images/notebook.png)
你可以为你的代码添加注释以便notebook可以自描述。 你可以为你的代码添加注释,以便 notebook 可以自描述。
✅ 想一想web开发人员的工作环境与数据科学家的工作环境有多大的不同。 ✅ 想一想 web 开发人员的工作环境与数据科学家的工作环境有多大的不同。
## 启动并运行Scikit-learn ## 启动并运行 Scikit-learn
现在Python已在你的本地环境中设置好并且你对Jupyter notebook感到满意让我们同样熟悉Scikit-learn在“science”中发音为“sci”。 Scikit-learn提供了[大量的API](https://scikit-learn.org/stable/modules/classes.html#api-ref)来帮助你执行ML任务。 现在 Python 已在你的本地环境中设置好,并且你对 Jupyter notebook 感到满意,让我们同样熟悉 Scikit-learn在“science”中发音为“sci”。 Scikit-learn 提供了 [大量的 API](https://scikit-learn.org/stable/modules/classes.html#api-ref) 来帮助你执行 ML 任务。
根据他们的[网站](https://scikit-learn.org/stable/getting_started.html)“Scikit-learn是一个开源机器学习库支持有监督和无监督学习。它还提供了各种模型拟合工具、数据预处理、模型选择和评估以及许多其他实用程序。” 根据他们的 [网站](https://scikit-learn.org/stable/getting_started.html)“Scikit-learn 是一个开源机器学习库,支持有监督和无监督学习。它还提供了各种模型拟合工具、数据预处理、模型选择和评估以及许多其他实用程序。”
在本课程中你将使用Scikit-learn和其他工具来构建机器学习模型以执行我们所谓的“传统机器学习”任务。我们特意避免了神经网络和深度学习因为它们在我们即将推出的“面向初学者的人工智能”课程中得到了更好的介绍。 在本课程中,你将使用 Scikit-learn 和其他工具来构建机器学习模型,以执行我们所谓的“传统机器学习”任务。我们特意避免了神经网络和深度学习,因为它们在我们即将推出的“面向初学者的人工智能”课程中得到了更好的介绍。
Scikit-learn使构建模型和评估它们的使用变得简单。它主要侧重于使用数字数据并包含几个现成的数据集用作学习工具。它还包括供学生尝试的预建模型。让我们探索加载预先打包的数据和使用内置的estimator first ML模型和Scikit-learn以及一些基本数据的过程。 Scikit-learn 使构建模型和评估它们的使用变得简单。它主要侧重于使用数字数据,并包含几个现成的数据集用作学习工具。它还包括供学生尝试的预建模型。让我们探索加载预先打包的数据和使用内置的 estimator first ML 模型和 Scikit-learn 以及一些基本数据的过程。
## 练习 - 你的第一个Scikit-learn notebook ## 练习 - 你的第一个 Scikit-learn notebook
> 本教程的灵感来自Scikit-learn网站上的[线性回归示例](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)。 > 本教程的灵感来自 Scikit-learn 网站上的 [线性回归示例](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)。
在与本课程相关的 _notebook.ipynb_ 文件中,通过点击“垃圾桶”图标清除所有单元格。 在与本课程相关的 _notebook.ipynb_ 文件中,通过点击“垃圾桶”图标清除所有单元格。
在本节中你将使用一个关于糖尿病的小数据集该数据集内置于Scikit-learn中以用于学习目的。想象一下你想为糖尿病患者测试一种治疗方法。机器学习模型可能会帮助你根据变量组合确定哪些患者对治疗反应更好。即使是非常基本的回归模型在可视化时也可能会显示有助于组织理论临床试验的变量信息。 在本节中,你将使用一个关于糖尿病的小数据集,该数据集内置于 Scikit-learn 中以用于学习目的。想象一下,你想为糖尿病患者测试一种治疗方法。机器学习模型可能会帮助你根据变量组合确定哪些患者对治疗反应更好。即使是非常基本的回归模型,在可视化时,也可能会显示有助于组织理论临床试验的变量信息。
✅ 回归方法有很多种,你选择哪一种取决于你正在寻找的答案。如果你想预测给定年龄的人的可能身高,你可以使用线性回归,因为你正在寻找**数值**。如果你有兴趣了解某种菜肴是否应被视为素食主义者,那么你正在寻找**类别分配**,以便使用逻辑回归。稍后你将了解有关逻辑回归的更多信息。想一想你可以对数据提出的一些问题,以及这些方法中的哪一个更合适。 ✅ 回归方法有很多种,你选择哪一种取决于你正在寻找的答案。如果你想预测给定年龄的人的可能身高,你可以使用线性回归,因为你正在寻找**数值**。如果你有兴趣了解某种菜肴是否应被视为素食主义者,那么你正在寻找**类别分配**,以便使用逻辑回归。稍后你将了解有关逻辑回归的更多信息。想一想你可以对数据提出的一些问题,以及这些方法中的哪一个更合适。
让我们开始这项任务。 让我们开始这项任务。
### 导入库 ### 导入库
对于此任务,我们将导入一些库: 对于此任务,我们将导入一些库:
- **matplotlib**。这是一个有用的[绘图工具](https://matplotlib.org/),我们将使用它来创建线图。 - **matplotlib**。这是一个有用的 [绘图工具](https://matplotlib.org/),我们将使用它来创建线图。
- **numpy**。 [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)是一个有用的库用于在Python中处理数字数据。 - **numpy**。 [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) 是一个有用的库,用于在 Python 中处理数字数据。
- **sklearn**。这是Scikit-learn库。 - **sklearn**。这是 Scikit-learn 库。
导入一些库来帮助你完成任务。 导入一些库来帮助你完成任务。
1. 通过输入以下代码添加导入: 1. 通过输入以下代码添加导入:
@ -106,24 +106,24 @@ Scikit-learn使构建模型和评估它们的使用变得简单。它主要侧
from sklearn import datasets, linear_model, model_selection from sklearn import datasets, linear_model, model_selection
``` ```
在上面的代码中,你正在导入`matplottlib`、`numpy`,你正在从`sklearn`导入`datasets`、`linear_model`和`model_selection`。 `model_selection`用于将数据拆分为训练集和测试集。 在上面的代码中,你正在导入 `matplottlib`、`numpy`,你正在从 `sklearn` 导入 `datasets`、`linear_model` `model_selection``model_selection` 用于将数据拆分为训练集和测试集。
### 糖尿病数据集 ### 糖尿病数据集
内置的[糖尿病数据集](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)包含442个围绕糖尿病的数据样本具有10个特征变量其中包括 内置的 [糖尿病数据集](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 包含 442 个围绕糖尿病的数据样本,具有 10 个特征变量,其中包括:
age岁数 age岁数
bmi体重指数 bmi体重指数
bp平均血压 bp平均血压
s1 tcT细胞一种白细胞 s1 tcT 细胞(一种白细胞)
✅ 该数据集包括“性别”的概念,作为对糖尿病研究很重要的特征变量。许多医学数据集包括这种类型的二元分类。想一想诸如此类的分类如何将人群的某些部分排除在治疗之外。 ✅ 该数据集包括“性别”的概念,作为对糖尿病研究很重要的特征变量。许多医学数据集包括这种类型的二元分类。想一想诸如此类的分类如何将人群的某些部分排除在治疗之外。
现在加载X和y数据。 现在,加载 X y 数据。
> 🎓 请记住这是监督学习我们需要一个命名为“y”的目标。 > 🎓 请记住这是监督学习我们需要一个命名为“y”的目标。
在新的代码单元中,通过调用`load_diabetes()`加载糖尿病数据集。输入`return_X_y=True`表示`X`将是一个数据矩阵,而`y`将是回归目标。 在新的代码单元中,通过调用 `load_diabetes()` 加载糖尿病数据集。输入 `return_X_y=True` 表示 `X` 将是一个数据矩阵,而`y`将是回归目标。
1. 添加一些打印命令来显示数据矩阵的形状及其第一个元素: 1. 添加一些打印命令来显示数据矩阵的形状及其第一个元素:
@ -133,9 +133,9 @@ s1 tcT细胞一种白细胞
print(X[0]) print(X[0])
``` ```
作为响应返回的是一个元组。你正在做的是将元组的前两个值分别分配给`X`和`y`。了解更多 [关于元组](https://wikipedia.org/wiki/Tuple)。 作为响应返回的是一个元组。你正在做的是将元组的前两个值分别分配给 `X` `y`。了解更多 [关于元组](https://wikipedia.org/wiki/Tuple)。
你可以看到这个数据有442个项目组成了10个元素的数组 你可以看到这个数据有 442 个项目,组成了 10 个元素的数组:
```text ```text
(442, 10) (442, 10)
@ -143,38 +143,38 @@ s1 tcT细胞一种白细胞
-0.04340085 -0.00259226 0.01990842 -0.01764613] -0.04340085 -0.00259226 0.01990842 -0.01764613]
``` ```
✅ 稍微思考一下数据和回归目标之间的关系。线性回归预测特征X和目标变量y之间的关系。你能在文档中找到糖尿病数据集的[目标](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)吗?鉴于该目标,该数据集展示了什么? ✅ 稍微思考一下数据和回归目标之间的关系。线性回归预测特征 X 和目标变量 y 之间的关系。你能在文档中找到糖尿病数据集的 [目标](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 吗?鉴于该目标,该数据集展示了什么?
2. 接下来通过使用numpy的`newaxis`函数将其排列到一个新数组中来选择要绘制的该数据集的一部分。我们将使用线性回归根据它确定的模式在此数据中的值之间生成一条线。 2. 接下来,通过使用 numpy `newaxis` 函数将其排列到一个新数组中来选择要绘制的该数据集的一部分。我们将使用线性回归根据它确定的模式在此数据中的值之间生成一条线。
```python ```python
X = X[:, np.newaxis, 2] X = X[:, np.newaxis, 2]
``` ```
✅ 随时打印数据以检查其形状。 ✅ 随时打印数据以检查其形状。
3. 现在你已准备好绘制数据,你可以查看机器是否可以帮助确定此数据集中数字之间的逻辑分割。为此你需要将数据(X)和目标(y)拆分为测试集和训练集。Scikit-learn有一个简单的方法来做到这一点你可以在给定点拆分测试数据。 3. 现在你已准备好绘制数据,你可以查看机器是否可以帮助确定此数据集中数字之间的逻辑分割。为此你需要将数据 (X) 和目标 (y) 拆分为测试集和训练集。Scikit-learn 有一个简单的方法来做到这一点;你可以在给定点拆分测试数据。
```python ```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
``` ```
4. 现在你已准备好训练你的模型!加载线性回归模型并使用`model.fit()`使用X和y训练集对其进行训练 4. 现在你已准备好训练你的模型!加载线性回归模型并使用 `model.fit()` 使用 X y 训练集对其进行训练:
```python ```python
model = linear_model.LinearRegression() model = linear_model.LinearRegression()
model.fit(X_train, y_train) model.fit(X_train, y_train)
``` ```
`model.fit()`是一个你会在许多机器学习库(例如 TensorFlow中看到的函数 `model.fit()` 是一个你会在许多机器学习库(例如 TensorFlow中看到的函数
5. 然后,使用函数`predict()`,使用测试数据创建预测。这将用于绘制数据组之间的线 5. 然后,使用函数 `predict()`,使用测试数据创建预测。这将用于绘制数据组之间的线
```python ```python
y_pred = model.predict(X_test) y_pred = model.predict(X_test)
``` ```
6. 现在是时候在图中显示数据了。Matplotlib是完成此任务的非常有用的工具。创建所有X和y测试数据的散点图并使用预测在模型的数据分组之间最合适的位置画一条线。 6. 现在是时候在图中显示数据了。Matplotlib 是完成此任务的非常有用的工具。创建所有 X y 测试数据的散点图,并使用预测在模型的数据分组之间最合适的位置画一条线。
```python ```python
plt.scatter(X_test, y_test, color='black') plt.scatter(X_test, y_test, color='black')
@ -184,21 +184,24 @@ s1 tcT细胞一种白细胞
![显示糖尿病周围数据点的散点图](../images/scatterplot.png) ![显示糖尿病周围数据点的散点图](../images/scatterplot.png)
✅ 想一想这里发生了什么。一条直线穿过许多小数据点但它到底在做什么你能看到你应该如何使用这条线来预测一个新的、未见过的数据点对应的y轴值吗尝试用语言描述该模型的实际用途。 ✅ 想一想这里发生了什么。一条直线穿过许多小数据点,但它到底在做什么?你能看到你应该如何使用这条线来预测一个新的、未见过的数据点对应的 y 轴值吗?尝试用语言描述该模型的实际用途。
恭喜,你构建了第一个线性回归模型,使用它创建了预测,并将其显示在绘图中! 恭喜,你构建了第一个线性回归模型,使用它创建了预测,并将其显示在绘图中!
--- ---
## 🚀挑战 ## 🚀挑战
从这个数据集中绘制一个不同的变量。提示:编辑这一行:`X = X[:, np.newaxis, 2]`。鉴于此数据集的目标,你能够发现糖尿病作为一种疾病的进展情况吗? 从这个数据集中绘制一个不同的变量。提示:编辑这一行:`X = X[:, np.newaxis, 2]`。鉴于此数据集的目标,你能够发现糖尿病作为一种疾病的进展情况吗?
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10?loc=zh-cn) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/10?loc=zh-cn)
## 复习与自学 ## 复习与自学
在本教程中,你使用了简单线性回归,而不是单变量或多元线性回归。阅读一些关于这些方法之间差异的信息,或查看[此视频](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) 在本教程中,你使用了简单线性回归,而不是单变量或多元线性回归。阅读一些关于这些方法之间差异的信息,或查看 [此视频](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
阅读有关回归概念的更多信息,并思考这种技术可以回答哪些类型的问题。用这个[教程](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa)加深你的理解。 阅读有关回归概念的更多信息,并思考这种技术可以回答哪些类型的问题。用这个 [教程](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) 加深你的理解。
## 任务 ## 任务

@ -3,7 +3,7 @@
> ![Infografica sulla visualizzazione dei dati](../images/data-visualization.png) > ![Infografica sulla visualizzazione dei dati](../images/data-visualization.png)
> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) > Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/11/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/11/?loc=it)
## Introduzione ## Introduzione
@ -190,7 +190,7 @@ Per fare in modo che i grafici mostrino dati utili, di solito è necessario ragg
Esplorare i diversi tipi di visualizzazione offerti da Matplotlib. Quali tipi sono più appropriati per i problemi di regressione? Esplorare i diversi tipi di visualizzazione offerti da Matplotlib. Quali tipi sono più appropriati per i problemi di regressione?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/12/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/12/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -1,55 +1,56 @@
# 使用Scikit-learn构建回归模型准备和可视化数据 # 使用 Scikit-learn 构建回归模型:准备和可视化数据
> ![数据可视化信息图](../images/data-visualization.png) > ![数据可视化信息图](../images/data-visualization.png)
> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/11?loc=zh-cn) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/11?loc=zh-cn)
## 介绍 ## 介绍
既然你已经设置了开始使用Scikit-learn处理机器学习模型构建所需的工具你就可以开始对数据提出问题了。当你处理数据并应用ML解决方案时了解如何提出正确的问题以正确释放数据集的潜力非常重要。 既然你已经设置了开始使用 Scikit-learn 处理机器学习模型构建所需的工具你就可以开始对数据提出问题了。当你处理数据并应用ML解决方案时了解如何提出正确的问题以正确释放数据集的潜力非常重要。
在本课中,你将学习: 在本课中,你将学习:
- 如何为模型构建准备数据。 - 如何为模型构建准备数据。
- 如何使用Matplotlib进行数据可视化。 - 如何使用 Matplotlib 进行数据可视化。
## 对你的数据提出正确的问题 ## 对你的数据提出正确的问题
你需要回答的问题将决定你将使用哪种类型的ML算法。你得到的答案的质量将在很大程度上取决于你的数据的性质。 你需要回答的问题将决定你将使用哪种类型的 ML 算法。你得到的答案的质量将在很大程度上取决于你的数据的性质。
查看为本课程提供的[数据](../data/US-pumpkins.csv)。你可以在VS Code中打开这个.csv文件。快速浏览一下就会发现有空格还有字符串和数字数据的混合。还有一个奇怪的列叫做“Package”其中的数据是“sacks”、“bins”和其他值的混合。事实上数据有点乱。 查看为本课程提供的[数据](../data/US-pumpkins.csv)。你可以在 VS Code 中打开这个 .csv 文件。快速浏览一下就会发现有空格还有字符串和数字数据的混合。还有一个奇怪的列叫做“Package”其中的数据是“sacks”、“bins”和其他值的混合。事实上数据有点乱。
事实上获得一个完全准备好用于创建开箱即用的ML模型的数据集并不是很常见。在本课中你将学习如何使用标准Python库准备原始数据集。你还将学习各种技术来可视化数据。 事实上获得一个完全准备好用于创建开箱即用的ML模型的数据集并不是很常见。在本课中你将学习如何使用标准 Python 库准备原始数据集。你还将学习各种技术来可视化数据。
## 案例研究:“南瓜市场” ## 案例研究:“南瓜市场”
你将在`data`文件夹中找到一个名为[US-pumpkins.csv](../data/US-pumpkins.csv)的.csv 文件其中包含有关南瓜市场的1757行数据 按城市排序分组。这是从美国农业部分发的[特种作物终端市场标准报告](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)中提取的原始数据。 你将在 `data` 文件夹中找到一个名为 [US-pumpkins.csv](../data/US-pumpkins.csv) .csv 文件,其中包含有关南瓜市场的 1757 行数据,已按城市排序分组。这是从美国农业部分发的[特种作物终端市场标准报告](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)中提取的原始数据。
### 准备数据 ### 准备数据
这些数据属于公共领域。它可以从美国农业部网站下载,每个城市有许多不同的文件。为了避免太多单独的文件,我们将所有城市数据合并到一个电子表格中,因此我们已经准备了一些数据。接下来,让我们仔细看看数据。 这些数据属于公共领域。它可以从美国农业部网站下载,每个城市有许多不同的文件。为了避免太多单独的文件,我们将所有城市数据合并到一个电子表格中,因此我们已经准备了一些数据。接下来,让我们仔细看看数据。
### 南瓜数据 - 早期结论 ### 南瓜数据 - 早期结论
你对这些数据有什么看法?你已经看到了无法理解的字符串、数字、空格和奇怪值的混合体。 你对这些数据有什么看法?你已经看到了无法理解的字符串、数字、空格和奇怪值的混合体。
你可以使用回归技术对这些数据提出什么问题?“预测给定月份内待售南瓜的价格”怎么样?再次查看数据,你需要进行一些更改才能创建任务所需的数据结构。 你可以使用回归技术对这些数据提出什么问题?“预测给定月份内待售南瓜的价格”怎么样?再次查看数据,你需要进行一些更改才能创建任务所需的数据结构。
## 练习 - 分析南瓜数据
让我们使用[Pandas](https://pandas.pydata.org/)“Python 数据分析”的意思)一个非常有用的工具,用于分析和准备南瓜数据。 ## 练习 - 分析南瓜数据
让我们使用 [Pandas](https://pandas.pydata.org/)“Python 数据分析”的意思)一个非常有用的工具,用于分析和准备南瓜数据。
### 首先,检查遗漏的日期 ### 首先,检查遗漏的日期
你首先需要采取以下步骤来检查缺少的日期: 你首先需要采取以下步骤来检查缺少的日期:
1. 将日期转换为月份格式(这些是美国日期,因此格式为`MM/DD/YYYY`)。 1. 将日期转换为月份格式(这些是美国日期,因此格式为 `MM/DD/YYYY`)。
2. 将月份提取到新列。 2. 将月份提取到新列。
在 Visual Studio Code 中打开notebook.ipynb文件并将电子表格导入到新的Pandas dataframe中。 在 Visual Studio Code 中打开 notebook.ipynb 文件,并将电子表格导入到新的 Pandas dataframe 中。
1. 使用 `head()`函数查看前五行。 1. 使用 `head()` 函数查看前五行。
```python ```python
import pandas as pd import pandas as pd
@ -57,9 +58,9 @@
pumpkins.head() pumpkins.head()
``` ```
✅ 使用什么函数来查看最后五行? ✅ 使用什么函数来查看最后五行?
2. 检查当前dataframe中是否缺少数据 2. 检查当前 dataframe 中是否缺少数据:
```python ```python
pumpkins.isnull().sum() pumpkins.isnull().sum()
@ -67,20 +68,20 @@
有数据丢失,但可能对手头的任务来说无关紧要。 有数据丢失,但可能对手头的任务来说无关紧要。
3. 为了让你的dataframe更容易使用使用`drop()`删除它的几个列,只保留你需要的列: 3. 为了让你的 dataframe 更容易使用,使用 `drop()` 删除它的几个列,只保留你需要的列:
```python ```python
new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)
``` ```
### 然后,确定南瓜的平均价格 ### 然后,确定南瓜的平均价格
考虑如何确定给定月份南瓜的平均价格。你会为此任务选择哪些列提示你需要3列。 考虑如何确定给定月份南瓜的平均价格。你会为此任务选择哪些列?提示:你需要 3 列。
解决方案:取`Low Price`和`High Price`列的平均值来填充新的Price列将Date列转换成只显示月份。幸运的是根据上面的检查没有丢失日期或价格的数据。 解决方案:取 `Low Price` `High Price` 列的平均值来填充新的 Price 列,将 Date 列转换成只显示月份。幸运的是,根据上面的检查,没有丢失日期或价格的数据。
1. 要计算平均值,请添加以下代码: 1. 要计算平均值,请添加以下代码:
```python ```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@ -89,37 +90,37 @@
``` ```
✅ 请随意使用`print(month)`打印你想检查的任何数据。 ✅ 请随意使用 `print(month)` 打印你想检查的任何数据。
2. 现在将转换后的数据复制到新的Pandas dataframe中 2. 现在,将转换后的数据复制到新的 Pandas dataframe 中:
```python ```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
``` ```
打印出的dataframe将向你展示一个干净整洁的数据集你可以在此数据集上构建新的回归模型。 打印出的 dataframe 将向你展示一个干净整洁的数据集,你可以在此数据集上构建新的回归模型。
### 但是等等!这里有点奇怪 ### 但是等等!这里有点奇怪
如果你看看`Package`(包装)一栏南瓜有很多不同的配置。有的以1 1/9蒲式耳的尺寸出售有的以1/2蒲式耳的尺寸出售有的以每只南瓜出售有的以每磅出售有的以不同宽度的大盒子出售。 如果你看看 `Package`(包装)一栏,南瓜有很多不同的配置。有的以 1 1/9 蒲式耳的尺寸出售,有的以 1/2 蒲式耳的尺寸出售,有的以每只南瓜出售,有的以每磅出售,有的以不同宽度的大盒子出售。
> 南瓜似乎很难统一称重方式 > 南瓜似乎很难统一称重方式
深入研究原始数据,有趣的是,任何`Unit of Sale`等于“EACH”或“PER BIN”的东西也具有每英寸、每箱或“每个”的`Package`类型。南瓜似乎很难采用统一称重方式,因此让我们通过仅选择`Package`列中带有字符串“蒲式耳”的南瓜来过滤它们。 深入研究原始数据,有趣的是,任何 `Unit of Sale` 等于“EACH”或“PER BIN”的东西也具有每英寸、每箱或“每个”的 `Package` 类型。南瓜似乎很难采用统一称重方式,因此让我们通过仅选择 `Package` 列中带有字符串“蒲式耳”的南瓜来过滤它们。
1. 在初始.csv导入下添加过滤器 1. 在初始 .csv 导入下添加过滤器:
```python ```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
``` ```
如果你现在打印数据,你可以看到你只获得了 415 行左右包含按蒲式耳计算的南瓜的数据。 如果你现在打印数据,你可以看到你只获得了 415 行左右包含按蒲式耳计算的南瓜的数据。
### 可是等等! 还有一件事要做 ### 可是等等! 还有一件事要做
你是否注意到每行的蒲式耳数量不同?你需要对定价进行标准化,以便显示每蒲式耳的定价,因此请进行一些数学计算以对其进行标准化。 你是否注意到每行的蒲式耳数量不同?你需要对定价进行标准化,以便显示每蒲式耳的定价,因此请进行一些数学计算以对其进行标准化。
1. 在创建 new_pumpkins dataframe的代码块之后添加这些行 1. 在创建 new_pumpkins dataframe 的代码块之后添加这些行:
```python ```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@ -129,33 +130,33 @@
✅ 根据 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)蒲式耳的重量取决于产品的类型因为它是一种体积测量。“例如一蒲式耳西红柿应该重56 磅……叶子和蔬菜占据更多空间重量更轻所以一蒲式耳菠菜只有20磅。” 这一切都相当复杂!让我们不要费心进行蒲式耳到磅的转换,而是按蒲式耳定价。然而,所有这些对蒲式耳南瓜的研究表明,了解数据的性质是多么重要! ✅ 根据 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)蒲式耳的重量取决于产品的类型因为它是一种体积测量。“例如一蒲式耳西红柿应该重56 磅……叶子和蔬菜占据更多空间重量更轻所以一蒲式耳菠菜只有20磅。” 这一切都相当复杂!让我们不要费心进行蒲式耳到磅的转换,而是按蒲式耳定价。然而,所有这些对蒲式耳南瓜的研究表明,了解数据的性质是多么重要!
现在,你可以根据蒲式耳测量来分析每单位的定价。如果你再打印一次数据,你可以看到它是如何标准化的。 现在,你可以根据蒲式耳测量来分析每单位的定价。如果你再打印一次数据,你可以看到它是如何标准化的。
✅ 你有没有注意到半蒲式耳卖的南瓜很贵?你能弄清楚为什么吗?提示:小南瓜比大南瓜贵得多,这可能是因为考虑到一个大的空心馅饼南瓜占用的未使用空间,每蒲式耳的南瓜要多得多。 ✅ 你有没有注意到半蒲式耳卖的南瓜很贵?你能弄清楚为什么吗?提示:小南瓜比大南瓜贵得多,这可能是因为考虑到一个大的空心馅饼南瓜占用的未使用空间,每蒲式耳的南瓜要多得多。
## 可视化策略 ## 可视化策略
数据科学家的部分职责是展示他们使用的数据的质量和性质。为此,他们通常会创建有趣的可视化或绘图、图形和图表,以显示数据的不同方面。通过这种方式,他们能够直观地展示难以发现的关系和差距。 数据科学家的部分职责是展示他们使用的数据的质量和性质。为此,他们通常会创建有趣的可视化或绘图、图形和图表,以显示数据的不同方面。通过这种方式,他们能够直观地展示难以发现的关系和差距。
可视化还可以帮助确定最适合数据的机器学习技术。例如,似乎沿着一条线的散点图表明该数据是线性回归练习的良好候选者。 可视化还可以帮助确定最适合数据的机器学习技术。例如,似乎沿着一条线的散点图表明该数据是线性回归练习的良好候选者。
一个在Jupyter notebooks中运行良好的数据可视化库是[Matplotlib](https://matplotlib.org/)(你在上一课中也看到过)。 一个在 Jupyter notebooks 中运行良好的数据可视化库是 [Matplotlib](https://matplotlib.org/)(你在上一课中也看到过)。
> 在[这些教程](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-15963-cxa)中获得更多数据可视化经验。 > 在[这些教程](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-15963-cxa)中获得更多数据可视化经验。
## 练习 - 使用 Matplotlib 进行实验 ## 练习 - 使用 Matplotlib 进行实验
尝试创建一些基本图形来显示你刚刚创建的新dataframe。基本线图会显示什么 尝试创建一些基本图形来显示你刚刚创建的新 dataframe。基本线图会显示什么
1. 在文件顶部导入Matplotlib 1. 在文件顶部导入 Matplotlib
```python ```python
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
``` ```
2. 重新刷新以运行整个notebook。 2. 重新刷新以运行整个 notebook。
3. 在notebook底部添加一个单元格以绘制数据 3. 在 notebook 底部,添加一个单元格以绘制数据:
```python ```python
price = new_pumpkins.Price price = new_pumpkins.Price
@ -170,9 +171,9 @@
它并不是特别有用,因为它所做的只是在你的数据中显示为给定月份的点数分布。 它并不是特别有用,因为它所做的只是在你的数据中显示为给定月份的点数分布。
### 让它有用 ### 让它有用
为了让图表显示有用的数据你通常需要以某种方式对数据进行分组。让我们尝试创建一个图其中y轴显示月份数据显示数据的分布。 为了让图表显示有用的数据,你通常需要以某种方式对数据进行分组。让我们尝试创建一个图,其中 y 轴显示月份,数据显示数据的分布。
1. 添加单元格以创建分组柱状图: 1. 添加单元格以创建分组柱状图:
@ -183,19 +184,19 @@
![显示价格与月份关系的柱状图](../images/barchart.png) ![显示价格与月份关系的柱状图](../images/barchart.png)
这是一个更有用的数据可视化似乎表明南瓜的最高价格出现在9月和10月。这符合你的期望吗为什么为什么不 这是一个更有用的数据可视化!似乎表明南瓜的最高价格出现在 9 月和 10 月。这符合你的期望吗?为什么?为什么不?
--- ---
## 🚀挑战 ## 🚀挑战
探索Matplotlib提供的不同类型的可视化。哪种类型最适合回归问题 探索 Matplotlib 提供的不同类型的可视化。哪种类型最适合回归问题?
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/12?loc=zh-cn) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/12?loc=zh-cn)
## 复习与自学 ## 复习与自学
请看一下可视化数据的多种方法。列出各种可用的库并注意哪些库最适合给定类型的任务例如2D可视化与3D可视化。你发现了什么 请看一下可视化数据的多种方法。列出各种可用的库,并注意哪些库最适合给定类型的任务,例如 2D 可视化与 3D 可视化。你发现了什么?
## 任务 ## 任务

@ -1,339 +1,339 @@
# Costruire un modello di regressione usando Scikit-learn: regressione in due modi # Costruire un modello di regressione usando Scikit-learn: regressione in due modi
![Infografica di regressione lineare e polinomiale](../images/linear-polynomial.png) ![Infografica di regressione lineare e polinomiale](../images/linear-polynomial.png)
> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) > Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/?loc=it)
### Introduzione ### Introduzione
Finora si è esplorato cos'è la regressione con dati di esempio raccolti dall'insieme di dati relativo ai prezzi della zucca, che verrà usato in questa lezione. Lo si è anche visualizzato usando Matplotlib. Finora si è esplorato cos'è la regressione con dati di esempio raccolti dall'insieme di dati relativo ai prezzi della zucca, che verrà usato in questa lezione. Lo si è anche visualizzato usando Matplotlib.
Ora si è pronti per approfondire la regressione per machine learning. In questa lezione si imparerà di più su due tipi di regressione: _regressione lineare di base_ e _regressione polinomiale_, insieme ad alcuni dei calcoli alla base di queste tecniche. Ora si è pronti per approfondire la regressione per machine learning. In questa lezione si imparerà di più su due tipi di regressione: _regressione lineare di base_ e _regressione polinomiale_, insieme ad alcuni dei calcoli alla base di queste tecniche.
> In questo programma di studi, si assume una conoscenza minima della matematica, e si cerca di renderla accessibile agli studenti provenienti da altri campi, quindi si faccia attenzione a note, 🧮 didascalie, diagrammi e altri strumenti di apprendimento che aiutano la comprensione. > In questo programma di studi, si assume una conoscenza minima della matematica, e si cerca di renderla accessibile agli studenti provenienti da altri campi, quindi si faccia attenzione a note, 🧮 didascalie, diagrammi e altri strumenti di apprendimento che aiutano la comprensione.
### Prerequisito ### Prerequisito
Si dovrebbe ormai avere familiarità con la struttura dei dati della zucca che si sta esaminando. Lo si può trovare precaricato e prepulito nel file _notebook.ipynb_ di questa lezione. Nel file, il prezzo della zucca viene visualizzato per bushel (staio) in un nuovo dataframe. Assicurasi di poter eseguire questi notebook nei kernel in Visual Studio Code. Si dovrebbe ormai avere familiarità con la struttura dei dati della zucca che si sta esaminando. Lo si può trovare precaricato e prepulito nel file _notebook.ipynb_ di questa lezione. Nel file, il prezzo della zucca viene visualizzato per bushel (staio) in un nuovo dataframe. Assicurasi di poter eseguire questi notebook nei kernel in Visual Studio Code.
### Preparazione ### Preparazione
Come promemoria, si stanno caricando questi dati in modo da porre domande su di essi. Come promemoria, si stanno caricando questi dati in modo da porre domande su di essi.
- Qual è il momento migliore per comprare le zucche? - Qual è il momento migliore per comprare le zucche?
- Che prezzo ci si può aspettare da una cassa di zucche in miniatura? - Che prezzo ci si può aspettare da una cassa di zucche in miniatura?
- Si devono acquistare in cestini da mezzo bushel o a scatola da 1 1/9 bushel? Si continua a scavare in questi dati. - Si devono acquistare in cestini da mezzo bushel o a scatola da 1 1/9 bushel? Si continua a scavare in questi dati.
Nella lezione precedente, è stato creato un dataframe Pandas e si è popolato con parte dell'insieme di dati originale, standardizzando il prezzo per lo bushel. In questo modo, tuttavia, si sono potuti raccogliere solo circa 400 punti dati e solo per i mesi autunnali. Nella lezione precedente, è stato creato un dataframe Pandas e si è popolato con parte dell'insieme di dati originale, standardizzando il prezzo per lo bushel. In questo modo, tuttavia, si sono potuti raccogliere solo circa 400 punti dati e solo per i mesi autunnali.
Si dia un'occhiata ai dati precaricati nel notebook di accompagnamento di questa lezione. I dati sono precaricati e viene tracciato un grafico a dispersione iniziale per mostrare i dati mensili. Forse si può ottenere qualche dettaglio in più sulla natura dei dati pulendoli ulteriormente. Si dia un'occhiata ai dati precaricati nel notebook di accompagnamento di questa lezione. I dati sono precaricati e viene tracciato un grafico a dispersione iniziale per mostrare i dati mensili. Forse si può ottenere qualche dettaglio in più sulla natura dei dati pulendoli ulteriormente.
## Una linea di regressione lineare ## Una linea di regressione lineare
Come si è appreso nella lezione 1, l'obiettivo di un esercizio di regressione lineare è essere in grado di tracciare una linea per: Come si è appreso nella lezione 1, l'obiettivo di un esercizio di regressione lineare è essere in grado di tracciare una linea per:
- **Mostrare le relazioni tra variabili**. - **Mostrare le relazioni tra variabili**.
- **Fare previsioni**. Fare previsioni accurate su dove cadrebbe un nuovo punto dati in relazione a quella linea. - **Fare previsioni**. Fare previsioni accurate su dove cadrebbe un nuovo punto dati in relazione a quella linea.
È tipico della **Regressione dei Minimi Quadrati** disegnare questo tipo di linea. Il termine "minimi quadrati" significa che tutti i punti dati che circondano la linea di regressione sono elevati al quadrato e quindi sommati. Idealmente, quella somma finale è la più piccola possibile, perché si vuole un basso numero di errori, o `minimi quadrati`. È tipico della **Regressione dei Minimi Quadrati** disegnare questo tipo di linea. Il termine "minimi quadrati" significa che tutti i punti dati che circondano la linea di regressione sono elevati al quadrato e quindi sommati. Idealmente, quella somma finale è la più piccola possibile, perché si vuole un basso numero di errori, o `minimi quadrati`.
Lo si fa perché si vuole modellare una linea che abbia la distanza cumulativa minima da tutti i punti dati. Si esegue anche il quadrato dei termini prima di aggiungerli poiché interessa la grandezza piuttosto che la direzione. Lo si fa perché si vuole modellare una linea che abbia la distanza cumulativa minima da tutti i punti dati. Si esegue anche il quadrato dei termini prima di aggiungerli poiché interessa la grandezza piuttosto che la direzione.
> **🧮 Mostrami la matematica** > **🧮 Mostrami la matematica**
> >
> Questa linea, chiamata _linea di miglior adattamento_ , può essere espressa da [un'equazione](https://en.wikipedia.org/wiki/Simple_linear_regression): > Questa linea, chiamata _linea di miglior adattamento_ , può essere espressa da [un'equazione](https://en.wikipedia.org/wiki/Simple_linear_regression):
> >
> ``` > ```
> Y = a + bX > Y = a + bX
> ``` > ```
> >
> `X` è la "variabile esplicativa". `Y` è la "variabile dipendente". La pendenza della linea è `b` e `a` è l'intercetta di y, che si riferisce al valore di `Y` quando `X = 0`. > `X` è la "variabile esplicativa". `Y` è la "variabile dipendente". La pendenza della linea è `b` e `a` è l'intercetta di y, che si riferisce al valore di `Y` quando `X = 0`.
> >
> ![calcolare la pendenza](../images/slope.png) > ![calcolare la pendenza](../images/slope.png)
> >
> Prima, calcolare la pendenza `b`. Infografica di [Jen Looper](https://twitter.com/jenlooper) > Prima, calcolare la pendenza `b`. Infografica di [Jen Looper](https://twitter.com/jenlooper)
> >
> In altre parole, facendo riferimento alla domanda originale per i dati sulle zucche: "prevedere il prezzo di una zucca per bushel per mese", `X` si riferisce al prezzo e `Y` si riferirisce al mese di vendita. > In altre parole, facendo riferimento alla domanda originale per i dati sulle zucche: "prevedere il prezzo di una zucca per bushel per mese", `X` si riferisce al prezzo e `Y` si riferirisce al mese di vendita.
> >
> ![completare l'equazione](../images/calculation.png) > ![completare l'equazione](../images/calculation.png)
> >
> Si calcola il valore di Y. Se si sta pagando circa $4, deve essere aprile! Infografica di [Jen Looper](https://twitter.com/jenlooper) > Si calcola il valore di Y. Se si sta pagando circa $4, deve essere aprile! Infografica di [Jen Looper](https://twitter.com/jenlooper)
> >
> La matematica che calcola la linea deve dimostrare la pendenza della linea, che dipende anche dall'intercetta, o dove `Y` si trova quando `X = 0`. > La matematica che calcola la linea deve dimostrare la pendenza della linea, che dipende anche dall'intercetta, o dove `Y` si trova quando `X = 0`.
> >
> Si può osservare il metodo di calcolo per questi valori sul sito web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) . Si visiti anche [questo calcolatore dei minimi quadrati](https://www.mathsisfun.com/data/least-squares-calculator.html) per vedere come i valori dei numeri influiscono sulla linea. > Si può osservare il metodo di calcolo per questi valori sul sito web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) . Si visiti anche [questo calcolatore dei minimi quadrati](https://www.mathsisfun.com/data/least-squares-calculator.html) per vedere come i valori dei numeri influiscono sulla linea.
## Correlazione ## Correlazione
Un altro termine da comprendere è il **Coefficiente di Correlazione** tra determinate variabili X e Y. Utilizzando un grafico a dispersione, è possibile visualizzare rapidamente questo coefficiente. Un grafico con punti dati sparsi in una linea ordinata ha un'alta correlazione, ma un grafico con punti dati sparsi ovunque tra X e Y ha una bassa correlazione. Un altro termine da comprendere è il **Coefficiente di Correlazione** tra determinate variabili X e Y. Utilizzando un grafico a dispersione, è possibile visualizzare rapidamente questo coefficiente. Un grafico con punti dati sparsi in una linea ordinata ha un'alta correlazione, ma un grafico con punti dati sparsi ovunque tra X e Y ha una bassa correlazione.
Un buon modello di regressione lineare sarà quello che ha un Coefficiente di Correlazione alto (più vicino a 1 rispetto a 0) utilizzando il Metodo di Regressione dei Minimi Quadrati con una linea di regressione. Un buon modello di regressione lineare sarà quello che ha un Coefficiente di Correlazione alto (più vicino a 1 rispetto a 0) utilizzando il Metodo di Regressione dei Minimi Quadrati con una linea di regressione.
✅ Eseguire il notebook che accompagna questa lezione e guardare il grafico a dispersione City to Price. I dati che associano la città al prezzo per le vendite di zucca sembrano avere una correlazione alta o bassa, secondo la propria interpretazione visiva del grafico a dispersione? ✅ Eseguire il notebook che accompagna questa lezione e guardare il grafico a dispersione City to Price. I dati che associano la città al prezzo per le vendite di zucca sembrano avere una correlazione alta o bassa, secondo la propria interpretazione visiva del grafico a dispersione?
## Preparare i dati per la regressione ## Preparare i dati per la regressione
Ora che si ha una comprensione della matematica alla base di questo esercizio, si crea un modello di regressione per vedere se si può prevedere quale pacchetto di zucche avrà i migliori prezzi per zucca. Qualcuno che acquista zucche per una festa con tema un campo di zucche potrebbe desiderare che queste informazioni siano in grado di ottimizzare i propri acquisti di pacchetti di zucca per il campo. Ora che si ha una comprensione della matematica alla base di questo esercizio, si crea un modello di regressione per vedere se si può prevedere quale pacchetto di zucche avrà i migliori prezzi per zucca. Qualcuno che acquista zucche per una festa con tema un campo di zucche potrebbe desiderare che queste informazioni siano in grado di ottimizzare i propri acquisti di pacchetti di zucca per il campo.
Dal momento che si utilizzerà Scikit-learn, non c'è motivo di farlo a mano (anche se si potrebbe!). Nel blocco di elaborazione dati principale del notebook della lezione, aggiungere una libreria da Scikit-learn per convertire automaticamente tutti i dati di tipo stringa in numeri: Dal momento che si utilizzerà Scikit-learn, non c'è motivo di farlo a mano (anche se si potrebbe!). Nel blocco di elaborazione dati principale del notebook della lezione, aggiungere una libreria da Scikit-learn per convertire automaticamente tutti i dati di tipo stringa in numeri:
```python ```python
from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
``` ```
Se si guarda ora il dataframe new_pumpkins, si vede che tutte le stringhe ora sono numeriche. Questo rende più difficile la lettura per un umano ma molto più comprensibile per Scikit-learn! Se si guarda ora il dataframe new_pumpkins, si vede che tutte le stringhe ora sono numeriche. Questo rende più difficile la lettura per un umano ma molto più comprensibile per Scikit-learn!
Ora si possono prendere decisioni più consapevoli (non solo basate sull'osservazione di un grafico a dispersione) sui dati più adatti alla regressione. Ora si possono prendere decisioni più consapevoli (non solo basate sull'osservazione di un grafico a dispersione) sui dati più adatti alla regressione.
Si provi a trovare una buona correlazione tra due punti nei propri dati per costruire potenzialmente un buon modello predittivo. A quanto pare, c'è solo una debole correlazione tra la città e il prezzo: Si provi a trovare una buona correlazione tra due punti nei propri dati per costruire potenzialmente un buon modello predittivo. A quanto pare, c'è solo una debole correlazione tra la città e il prezzo:
```python ```python
print(new_pumpkins['City'].corr(new_pumpkins['Price'])) print(new_pumpkins['City'].corr(new_pumpkins['Price']))
0.32363971816089226 0.32363971816089226
``` ```
Tuttavia, c'è una correlazione leggermente migliore tra il pacchetto e il suo prezzo. Ha senso, vero? Normalmente, più grande è la scatola dei prodotti, maggiore è il prezzo. Tuttavia, c'è una correlazione leggermente migliore tra il pacchetto e il suo prezzo. Ha senso, vero? Normalmente, più grande è la scatola dei prodotti, maggiore è il prezzo.
```python ```python
print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) print(new_pumpkins['Package'].corr(new_pumpkins['Price']))
0.6061712937226021 0.6061712937226021
``` ```
Una buona domanda da porre a questi dati sarà: "Che prezzo posso aspettarmi da un determinato pacchetto di zucca?" Una buona domanda da porre a questi dati sarà: "Che prezzo posso aspettarmi da un determinato pacchetto di zucca?"
Si costruisce questo modello di regressione Si costruisce questo modello di regressione
## Costruire un modello lineare ## Costruire un modello lineare
Prima di costruire il modello, si esegue un altro riordino dei dati. Si eliminano tutti i dati nulli e si controlla ancora una volta che aspetto hanno i dati. Prima di costruire il modello, si esegue un altro riordino dei dati. Si eliminano tutti i dati nulli e si controlla ancora una volta che aspetto hanno i dati.
```python ```python
new_pumpkins.dropna(inplace=True) new_pumpkins.dropna(inplace=True)
new_pumpkins.info() new_pumpkins.info()
``` ```
Quindi, si crea un nuovo dataframe da questo set minimo e lo si stampa: Quindi, si crea un nuovo dataframe da questo set minimo e lo si stampa:
```python ```python
new_columns = ['Package', 'Price'] new_columns = ['Package', 'Price']
lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
lin_pumpkins lin_pumpkins
``` ```
```output ```output
Package Price Package Price
70 0 13.636364 70 0 13.636364
71 0 16.363636 71 0 16.363636
72 0 16.363636 72 0 16.363636
73 0 15.454545 73 0 15.454545
74 0 13.636364 74 0 13.636364
... ... ... ... ... ...
1738 2 30.000000 1738 2 30.000000
1739 2 28.750000 1739 2 28.750000
1740 2 25.750000 1740 2 25.750000
1741 2 24.000000 1741 2 24.000000
1742 2 24.000000 1742 2 24.000000
415 rows × 2 columns 415 rows × 2 columns
``` ```
1. Ora si possono assegnare i dati delle coordinate X e y: 1. Ora si possono assegnare i dati delle coordinate X e y:
```python ```python
X = lin_pumpkins.values[:, :1] X = lin_pumpkins.values[:, :1]
y = lin_pumpkins.values[:, 1:2] y = lin_pumpkins.values[:, 1:2]
``` ```
Cosa sta succedendo qui? Si sta usando [la notazione slice Python](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) per creare array per popolare `X` e `y`. Cosa sta succedendo qui? Si sta usando [la notazione slice Python](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) per creare array per popolare `X` e `y`.
2. Successivamente, si avvia le routine di creazione del modello di regressione: 2. Successivamente, si avvia le routine di creazione del modello di regressione:
```python ```python
from sklearn.linear_model import LinearRegression from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
lin_reg = LinearRegression() lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train) lin_reg.fit(X_train,y_train)
pred = lin_reg.predict(X_test) pred = lin_reg.predict(X_test)
accuracy_score = lin_reg.score(X_train,y_train) accuracy_score = lin_reg.score(X_train,y_train)
print('Model Accuracy: ', accuracy_score) print('Model Accuracy: ', accuracy_score)
``` ```
Poiché la correlazione non è particolarmente buona, il modello prodotto non è molto accurato. Poiché la correlazione non è particolarmente buona, il modello prodotto non è molto accurato.
```output ```output
Model Accuracy: 0.3315342327998987 Model Accuracy: 0.3315342327998987
``` ```
3. Si può visualizzare la linea tracciata nel processo: 3. Si può visualizzare la linea tracciata nel processo:
```python ```python
plt.scatter(X_test, y_test, color='black') plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, pred, color='blue', linewidth=3) plt.plot(X_test, pred, color='blue', linewidth=3)
plt.xlabel('Package') plt.xlabel('Package')
plt.ylabel('Price') plt.ylabel('Price')
plt.show() plt.show()
``` ```
![Un grafico a dispersione che mostra il rapporto tra pacchetto e prezzo](../images/linear.png) ![Un grafico a dispersione che mostra il rapporto tra pacchetto e prezzo](../images/linear.png)
4. Si testa il modello contro una varietà ipotetica: 4. Si testa il modello contro una varietà ipotetica:
```python ```python
lin_reg.predict( np.array([ [2.75] ]) ) lin_reg.predict( np.array([ [2.75] ]) )
``` ```
Il prezzo restituito per questa varietà mitologica è: Il prezzo restituito per questa varietà mitologica è:
```output ```output
array([[33.15655975]]) array([[33.15655975]])
``` ```
Quel numero ha senso, se la logica della linea di regressione è vera. Quel numero ha senso, se la logica della linea di regressione è vera.
🎃 Congratulazioni, si è appena creato un modello che può aiutare a prevedere il prezzo di alcune varietà di zucche. La zucca per le festività sarà bellissima. Ma probabilmente si può creare un modello migliore! 🎃 Congratulazioni, si è appena creato un modello che può aiutare a prevedere il prezzo di alcune varietà di zucche. La zucca per le festività sarà bellissima. Ma probabilmente si può creare un modello migliore!
## Regressione polinomiale ## Regressione polinomiale
Un altro tipo di regressione lineare è la regressione polinomiale. Mentre a volte c'è una relazione lineare tra le variabili - più grande è il volume della zucca, più alto è il prezzo - a volte queste relazioni non possono essere tracciate come un piano o una linea retta. Un altro tipo di regressione lineare è la regressione polinomiale. Mentre a volte c'è una relazione lineare tra le variabili - più grande è il volume della zucca, più alto è il prezzo - a volte queste relazioni non possono essere tracciate come un piano o una linea retta.
✅ Ecco [alcuni altri esempi](https://online.stat.psu.edu/stat501/lesson/9/9.8) di dati che potrebbero utilizzare la regressione polinomiale ✅ Ecco [alcuni altri esempi](https://online.stat.psu.edu/stat501/lesson/9/9.8) di dati che potrebbero utilizzare la regressione polinomiale
Si dia un'altra occhiata alla relazione tra Varietà e Prezzo nel tracciato precedente. Questo grafico a dispersione deve essere necessariamente analizzato da una linea retta? Forse no. In questo caso, si può provare la regressione polinomiale. Si dia un'altra occhiata alla relazione tra Varietà e Prezzo nel tracciato precedente. Questo grafico a dispersione deve essere necessariamente analizzato da una linea retta? Forse no. In questo caso, si può provare la regressione polinomiale.
✅ I polinomi sono espressioni matematiche che possono essere costituite da una o più variabili e coefficienti ✅ I polinomi sono espressioni matematiche che possono essere costituite da una o più variabili e coefficienti
La regressione polinomiale crea una linea curva per adattare meglio i dati non lineari. La regressione polinomiale crea una linea curva per adattare meglio i dati non lineari.
1. Viene ricreato un dataframe popolato con un segmento dei dati della zucca originale: 1. Viene ricreato un dataframe popolato con un segmento dei dati della zucca originale:
```python ```python
new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] new_columns = ['Variety', 'Package', 'City', 'Month', 'Price']
poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
poly_pumpkins poly_pumpkins
``` ```
Un buon modo per visualizzare le correlazioni tra i dati nei dataframe è visualizzarli in un grafico "coolwarm": Un buon modo per visualizzare le correlazioni tra i dati nei dataframe è visualizzarli in un grafico "coolwarm":
2. Si usa il metodo `Background_gradient()` con `coolwarm` come valore dell'argomento: 2. Si usa il metodo `Background_gradient()` con `coolwarm` come valore dell'argomento:
```python ```python
corr = poly_pumpkins.corr() corr = poly_pumpkins.corr()
corr.style.background_gradient(cmap='coolwarm') corr.style.background_gradient(cmap='coolwarm')
``` ```
Questo codice crea una mappa di calore: Questo codice crea una mappa di calore:
![Una mappa di calore che mostra la correlazione dei dati](../images/heatmap.png) ![Una mappa di calore che mostra la correlazione dei dati](../images/heatmap.png)
Guardando questo grafico, si può visualizzare la buona correlazione tra Pacchetto e Prezzo. Quindi si dovrebbe essere in grado di creare un modello un po' migliore dell'ultimo. Guardando questo grafico, si può visualizzare la buona correlazione tra Pacchetto e Prezzo. Quindi si dovrebbe essere in grado di creare un modello un po' migliore dell'ultimo.
### Creare una pipeline ### Creare una pipeline
Scikit-learn include un'API utile per la creazione di modelli di regressione polinomiale: l'[API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Viene creata una 'pipeline' che è una catena di stimatori. In questo caso, la pipeline include caratteristiche polinomiali o previsioni che formano un percorso non lineare. Scikit-learn include un'API utile per la creazione di modelli di regressione polinomiale: l'[API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Viene creata una 'pipeline' che è una catena di stimatori. In questo caso, la pipeline include caratteristiche polinomiali o previsioni che formano un percorso non lineare.
1. Si costruiscono le colonne X e y: 1. Si costruiscono le colonne X e y:
```python ```python
X=poly_pumpkins.iloc[:,3:4].values X=poly_pumpkins.iloc[:,3:4].values
y=poly_pumpkins.iloc[:,4:5].values y=poly_pumpkins.iloc[:,4:5].values
``` ```
2. Si crea la pipeline chiamando il metodo `make_pipeline()` : 2. Si crea la pipeline chiamando il metodo `make_pipeline()` :
```python ```python
from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression())
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
pipeline.fit(np.array(X_train), y_train) pipeline.fit(np.array(X_train), y_train)
y_pred=pipeline.predict(X_test) y_pred=pipeline.predict(X_test)
``` ```
### Creare una sequenza ### Creare una sequenza
A questo punto, è necessario creare un nuovo dataframe con dati _ordinati_ in modo che la pipeline possa creare una sequenza. A questo punto, è necessario creare un nuovo dataframe con dati _ordinati_ in modo che la pipeline possa creare una sequenza.
Si aggiunge il seguente codice: Si aggiunge il seguente codice:
```python ```python
df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]})
df.sort_values(by='x',inplace = True) df.sort_values(by='x',inplace = True)
points = pd.DataFrame(df).to_numpy() points = pd.DataFrame(df).to_numpy()
plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3)
plt.xlabel('Package') plt.xlabel('Package')
plt.ylabel('Price') plt.ylabel('Price')
plt.scatter(X,y, color="black") plt.scatter(X,y, color="black")
plt.show() plt.show()
``` ```
Si è creato un nuovo dataframe chiamato `pd.DataFrame`. Quindi si sono ordinati i valori chiamando `sort_values()`. Alla fine si è creato un grafico polinomiale: Si è creato un nuovo dataframe chiamato `pd.DataFrame`. Quindi si sono ordinati i valori chiamando `sort_values()`. Alla fine si è creato un grafico polinomiale:
![Un grafico polinomiale che mostra la relazione tra pacchetto e prezzo](../images/polynomial.png) ![Un grafico polinomiale che mostra la relazione tra pacchetto e prezzo](../images/polynomial.png)
Si può vedere una linea curva che si adatta meglio ai dati. Si può vedere una linea curva che si adatta meglio ai dati.
Si verifica la precisione del modello: Si verifica la precisione del modello:
```python ```python
accuracy_score = pipeline.score(X_train,y_train) accuracy_score = pipeline.score(X_train,y_train)
print('Model Accuracy: ', accuracy_score) print('Model Accuracy: ', accuracy_score)
``` ```
E voilà! E voilà!
```output ```output
Model Accuracy: 0.8537946517073784 Model Accuracy: 0.8537946517073784
``` ```
Ecco, meglio! Si prova a prevedere un prezzo: Ecco, meglio! Si prova a prevedere un prezzo:
### Fare una previsione ### Fare una previsione
E possibile inserire un nuovo valore e ottenere una previsione? E possibile inserire un nuovo valore e ottenere una previsione?
Si chiami `predict()` per fare una previsione: Si chiami `predict()` per fare una previsione:
```python ```python
pipeline.predict( np.array([ [2.75] ]) ) pipeline.predict( np.array([ [2.75] ]) )
``` ```
Viene data questa previsione: Viene data questa previsione:
```output ```output
array([[46.34509342]]) array([[46.34509342]])
``` ```
Ha senso, visto il tracciato! Se questo è un modello migliore del precedente, guardando gli stessi dati, si deve preventivare queste zucche più costose! Ha senso, visto il tracciato! Se questo è un modello migliore del precedente, guardando gli stessi dati, si deve preventivare queste zucche più costose!
Ben fatto! Sono stati creati due modelli di regressione in una lezione. Nella sezione finale sulla regressione, si imparerà a conoscere la regressione logistica per determinare le categorie. Ben fatto! Sono stati creati due modelli di regressione in una lezione. Nella sezione finale sulla regressione, si imparerà a conoscere la regressione logistica per determinare le categorie.
--- ---
## 🚀 Sfida ## 🚀 Sfida
Testare diverse variabili in questo notebook per vedere come la correlazione corrisponde all'accuratezza del modello. Testare diverse variabili in questo notebook per vedere come la correlazione corrisponde all'accuratezza del modello.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/14/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/14/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento
In questa lezione si è appreso della regressione lineare. Esistono altri tipi importanti di regressione. Leggere le tecniche Stepwise, Ridge, Lazo ed Elasticnet. Un buon corso per studiare per saperne di più è il [corso Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) In questa lezione si è appreso della regressione lineare. Esistono altri tipi importanti di regressione. Leggere le tecniche Stepwise, Ridge, Lazo ed Elasticnet. Un buon corso per studiare per saperne di più è il [corso Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Compito ## Compito
[Costruire un modello](assignment.it.md) [Costruire un modello](assignment.it.md)

@ -1,19 +1,21 @@
# 使用Scikit-learn构建回归模型两种方式的回归 # 使用 Scikit-learn 构建回归模型:两种方式的回归
![线性与多项式回归信息图](../images/linear-polynomial.png) ![线性与多项式回归信息图](../images/linear-polynomial.png)
> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/13/)
### 介绍
到目前为止你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用Matplotlib对其进行了可视化。 ### 介绍
到目前为止,你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用 Matplotlib 对其进行了可视化。
现在你已准备好深入研究ML的回归。 在本课中你将详细了解两种类型的回归_基本线性回归_和_多项式回归_以及这些技术背后的一些数学知识。 现在你已准备好深入研究 ML 的回归。 在本课中你将详细了解两种类型的回归_基本线性回归_和_多项式回归_以及这些技术背后的一些数学知识。
> 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。 > 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。
### 前提 ### 前提
你现在应该熟悉我们正在检查的南瓜数据的结构。你可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。 你现在应该熟悉我们正在检查的南瓜数据的结构。你可以在本课的 _notebook.ipynb_ 文件中找到它。 在这个文件中,南瓜的价格显示在一个新的 dataframe 中。确保可以在 Visual Studio Code 代码的内核中运行这些 notebooks。
### 准备 ### 准备
@ -21,33 +23,33 @@
- 什么时候买南瓜最好? - 什么时候买南瓜最好?
- 一箱微型南瓜的价格是多少? - 一箱微型南瓜的价格是多少?
- 我应该买半蒲式耳还是1 1/9蒲式耳 - 我应该买半蒲式耳还是 1 1/9 蒲式耳?
让我们继续深入研究这些数据。 让我们继续深入研究这些数据。
在上一课中你创建了一个Pandas dataframe并用原始数据集的一部分填充它按蒲式耳标准化定价。但是通过这样做你只能收集大约400个数据点而且只能收集秋季月份的数据。 在上一课中,你创建了一个 Pandas dataframe 并用原始数据集的一部分填充它,按蒲式耳标准化定价。但是,通过这样做,你只能收集大约 400 个数据点,而且只能收集秋季月份的数据。
看看我们在本课随附的notebook中预加载的数据。数据已预加载并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。 看看我们在本课随附的 notebook 中预加载的数据。数据已预加载,并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。
## 线性回归线 ## 线性回归线
正如你在第1课中学到的线性回归练习的目标是能够绘制一条线以便 正如你在第 1 课中学到的,线性回归练习的目标是能够绘制一条线以便:
- **显示变量关系**。 显示变量之间的关系 - **显示变量关系**。 显示变量之间的关系
- **作出预测**。 准确预测新数据点与该线的关系。 - **作出预测**。 准确预测新数据点与该线的关系。
绘制这种类型的线是**最小二乘回归**的典型做法。术语“最小二乘法”意味着将回归线周围的所有数据点平方,然后相加。理想情况下,最终和尽可能小,因为我们希望错误数量较少,或“最小二乘法”。 绘制这种类型的线是**最小二乘回归**的典型做法。术语“最小二乘法”意味着将回归线周围的所有数据点平方,然后相加。理想情况下,最终和尽可能小,因为我们希望错误数量较少,或“最小二乘法”。
我们这样做是因为我们想要对一条与所有数据点的累积距离最小的线进行建模。我们还在添加它们之前对这些项进行平方,因为我们关心的是它的大小而不是它的方向。 我们这样做是因为我们想要对一条与所有数据点的累积距离最小的线进行建模。我们还在添加它们之前对这些项进行平方,因为我们关心的是它的大小而不是它的方向。
> **🧮 数学知识** > **🧮 数学知识**
> >
> 这条线称为_最佳拟合线_可以用[一个等式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: > 这条线称为_最佳拟合线_可以用[一个等式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示:
> >
> ``` > ```
> Y = a + bX > Y = a + bX
> ``` > ```
> >
> `X`是“解释变量”。`Y`是“因变量”。直线的斜率是`b``a`是y轴截距指的是`X = 0`时`Y`的值。 > `X` 是“解释变量”。`Y` 是“因变量”。直线的斜率是`b``a`是y轴截距指的是`X = 0`时`Y`的值。
> >
>![计算斜率](../images/slope.png) >![计算斜率](../images/slope.png)
> >
@ -103,7 +105,7 @@ print(new_pumpkins['Package'].corr(new_pumpkins['Price']))
对这些数据提出的一个很好的问题是:“我可以期望给定的南瓜包装的价格是多少?” 对这些数据提出的一个很好的问题是:“我可以期望给定的南瓜包装的价格是多少?”
让我们建立这个回归模型 让我们建立这个回归模型
## 建立线性模型 ## 建立线性模型
@ -139,13 +141,14 @@ lin_pumpkins
415 rows × 2 columns 415 rows × 2 columns
``` ```
1. 现在你可以分配X和y坐标数据 1. 现在你可以分配 X y 坐标数据:
```python ```python
X = lin_pumpkins.values[:, :1] X = lin_pumpkins.values[:, :1]
y = lin_pumpkins.values[:, 1:2] y = lin_pumpkins.values[:, 1:2]
``` ```
✅ 这里发生了什么?你正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。
✅ 这里发生了什么?你正在使用 [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) 来创建数组来填充`X`和`y`。
2. 接下来,开始回归模型构建例程: 2. 接下来,开始回归模型构建例程:
@ -181,6 +184,7 @@ lin_pumpkins
plt.show() plt.show()
``` ```
![散点图显示包装与价格的关系](../images/linear.png) ![散点图显示包装与价格的关系](../images/linear.png)
4. 针对假设的品种测试模型: 4. 针对假设的品种测试模型:
@ -188,7 +192,7 @@ lin_pumpkins
```python ```python
lin_reg.predict( np.array([ [2.75] ]) ) lin_reg.predict( np.array([ [2.75] ]) )
``` ```
这个神话般的品种的价格是: 这个神话般的品种的价格是:
```output ```output
@ -212,6 +216,7 @@ lin_pumpkins
多项式回归创建一条曲线以更好地拟合非线性数据。 多项式回归创建一条曲线以更好地拟合非线性数据。
1. 让我们重新创建一个填充了原始南瓜数据片段的dataframe 1. 让我们重新创建一个填充了原始南瓜数据片段的dataframe
```python ```python
new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] new_columns = ['Variety', 'Package', 'City', 'Month', 'Price']
poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
@ -221,29 +226,30 @@ lin_pumpkins
可视化dataframe中数据之间相关性的一种好方法是将其显示在“coolwarm”图表中 可视化dataframe中数据之间相关性的一种好方法是将其显示在“coolwarm”图表中
2. 使用`Background_gradient()`方法和`coolwarm`作为其参数值: 2. 使用 `Background_gradient()` 方法和 `coolwarm` 作为其参数值:
```python ```python
corr = poly_pumpkins.corr() corr = poly_pumpkins.corr()
corr.style.background_gradient(cmap='coolwarm') corr.style.background_gradient(cmap='coolwarm')
``` ```
这段代码创建了一个热图: 这段代码创建了一个热图:
![显示数据相关性的热图](../images/heatmap.png) ![显示数据相关性的热图](../images/heatmap.png)
查看此图表你可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。 查看此图表,你可以直观地看到 Package Price 之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。
### 创建管道 ### 创建管道
Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)。 创建了一个“管道”,它是一个估计器链。 在这种情况下,管道包括多项式特征或形成非线性路径的预测。 Scikit-learn 包含一个用于构建多项式回归模型的有用 API - `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)。 创建了一个“管道”,它是一个估计器链。 在这种情况下,管道包括多项式特征或形成非线性路径的预测。
1. 构建X和y列 1. 构建 X y 列:
```python ```python
X=poly_pumpkins.iloc[:,3:4].values X=poly_pumpkins.iloc[:,3:4].values
y=poly_pumpkins.iloc[:,4:5].values y=poly_pumpkins.iloc[:,4:5].values
``` ```
2. 通过调用`make_pipeline()`方法创建管道: 2. 通过调用 `make_pipeline()` 方法创建管道:
```python ```python
from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import PolynomialFeatures
@ -260,7 +266,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
### 创建序列 ### 创建序列
此时你需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。 此时你需要使用_排序好的_数据创建一个新的 dataframe ,以便管道可以创建序列。
添加以下代码: 添加以下代码:
@ -276,7 +282,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
plt.show() plt.show()
``` ```
你通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图: 你通过调用 `pd.DataFrame` 创建了一个新的 dataframe。然后通过调用 `sort_values()` 对值进行排序。最后你创建了一个多项式图:
![显示包装与价格关系的多项式图](../images/polynomial.png) ![显示包装与价格关系的多项式图](../images/polynomial.png)
@ -301,11 +307,12 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
我们可以输入一个新值并得到一个预测吗? 我们可以输入一个新值并得到一个预测吗?
调用`predict()`进行预测: 调用 `predict()` 进行预测:
```python ```python
pipeline.predict( np.array([ [2.75] ]) ) pipeline.predict( np.array([ [2.75] ]) )
``` ```
你会得到这样的预测: 你会得到这样的预测:
```output ```output
@ -314,19 +321,20 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi
参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算! 参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算!
🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。 🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。
--- ---
## 🚀挑战 ## 🚀挑战
在此notebook中测试几个不同的变量以查看相关性与模型准确性的对应关系。 在此 notebook 中测试几个不同的变量,以查看相关性与模型准确性的对应关系。
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/14/) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/14/)
## 复习与自学 ## 复习与自学
在本课中我们学习了线性回归。还有其他重要的回归类型。了解Stepwise、Ridge、Lasso和Elasticnet技术。学习更多信息的好课程是[斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) 在本课中,我们学习了线性回归。还有其他重要的回归类型。了解 Stepwise、Ridge、Lasso Elasticnet 技术。学习更多信息的好课程是 [斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## 任务 ## 任务
[构建模型](../assignment.md) [构建模型](../assignment.md)

@ -3,7 +3,7 @@
![Infografica di regressione lineare e logistica](../images/logistic-linear.png) ![Infografica di regressione lineare e logistica](../images/logistic-linear.png)
> Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded) > Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/?loc=it)
## Introduzione ## Introduzione
@ -284,7 +284,7 @@ Nelle lezioni future sulle classificazioni si imparerà come eseguire l'iterazio
C'è molto altro da svelare riguardo alla regressione logistica! Ma il modo migliore per imparare è sperimentare. Trovare un insieme di dati che si presti a questo tipo di analisi e costruire un modello con esso. Cosa si è appreso? suggerimento: provare [Kaggle](https://kaggle.com) per ottenere insiemi di dati interessanti. C'è molto altro da svelare riguardo alla regressione logistica! Ma il modo migliore per imparare è sperimentare. Trovare un insieme di dati che si presti a questo tipo di analisi e costruire un modello con esso. Cosa si è appreso? suggerimento: provare [Kaggle](https://kaggle.com) per ottenere insiemi di dati interessanti.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/16/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/16/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -1,7 +1,8 @@
# 逻辑回归预测分类 # 逻辑回归预测分类
![逻辑与线性回归信息图](../images/logistic-linear.png) ![逻辑与线性回归信息图](../images/logistic-linear.png)
> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/15/)
## 介绍 ## 介绍
@ -38,7 +39,8 @@
逻辑回归不提供与线性回归相同的功能。前者提供关于二元类别“橙色或非橙色”的预测而后者能够预测连续值例如给定南瓜的起源和收获时间_其价格将上涨多少_。 逻辑回归不提供与线性回归相同的功能。前者提供关于二元类别“橙色或非橙色”的预测而后者能够预测连续值例如给定南瓜的起源和收获时间_其价格将上涨多少_。
![南瓜分类模型](../images/pumpkin-classifier.png) ![南瓜分类模型](../images/pumpkin-classifier.png)
> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
### 其他分类 ### 其他分类
还有其他类型的逻辑回归,包括多项和有序: 还有其他类型的逻辑回归,包括多项和有序:
@ -47,7 +49,7 @@
- **有序**涉及有序类别如果我们想对我们的结果进行逻辑排序非常有用例如我们的南瓜按有限数量的大小mini、sm、med、lg、xl、xxl排序。 - **有序**涉及有序类别如果我们想对我们的结果进行逻辑排序非常有用例如我们的南瓜按有限数量的大小mini、sm、med、lg、xl、xxl排序。
![多项式与有序回归](../images/multinomial-ordinal.png) ![多项式与有序回归](../images/multinomial-ordinal.png)
> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) > 作者 [Dasani Madipalli](https://twitter.com/dasani_decoded)
### 仍然是线性的 ### 仍然是线性的
@ -89,11 +91,11 @@
### 可视化 - 并列网格 ### 可视化 - 并列网格
到现在为止,你已经再次使用南瓜数据加载了[starter notebook](./notebook.ipynb)并对其进行了清理,以保留包含一些变量(包括`Color`的数据集。让我们使用不同的库来可视化notebook中的数据帧[Seaborn](https://seaborn.pydata.org/index.html)它是基于我们之前使用的Matplotlib构建的。 到现在为止,你已经再次使用南瓜数据加载了 [starter notebook](./notebook.ipynb) 并对其进行了清理,以保留包含一些变量(包括 `Color`)的数据集。让我们使用不同的库来可视化 notebook 中的数据帧:[Seaborn](https://seaborn.pydata.org/index.html),它是基于我们之前使用的 Matplotlib 构建的。
Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可以比较并列网格中每个点的数据分布。 Seaborn 提供了一些巧妙的方法来可视化你的数据。例如,你可以比较并列网格中每个点的数据分布。
1. 通过实例化一个`PairGrid`,使用我们的南瓜数据`new_pumpkins`,然后调用`map()`来创建这样一个网格: 1. 通过实例化一个 `PairGrid`,使用我们的南瓜数据 `new_pumpkins`,然后调用 `map()` 来创建这样一个网格:
```python ```python
import seaborn as sns import seaborn as sns
@ -112,7 +114,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
由于颜色是一个二元类别(橙色或非橙色),它被称为“分类数据”,需要一种更[专业的方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)来可视化。还有其他方法可以可视化此类别与其他变量的关系。 由于颜色是一个二元类别(橙色或非橙色),它被称为“分类数据”,需要一种更[专业的方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)来可视化。还有其他方法可以可视化此类别与其他变量的关系。
你可以使用Seaborn图并列可视化变量。 你可以使用 Seaborn 图并列可视化变量。
1. 尝试使用“分类散点”图来显示值的分布: 1. 尝试使用“分类散点”图来显示值的分布:
@ -126,7 +128,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
“小提琴”类型的图很有用,因为你可以轻松地可视化两个类别中数据的分布方式。小提琴图不适用于较小的数据集,因为分布显示得更“平滑”。 “小提琴”类型的图很有用,因为你可以轻松地可视化两个类别中数据的分布方式。小提琴图不适用于较小的数据集,因为分布显示得更“平滑”。
1. 作为参数`x=Color`、`kind="violin"`并调用`catplot()` 1. 作为参数 `x=Color`、`kind="violin"` 并调用 `catplot()`
```python ```python
sns.catplot(x="Color", y="Item Size", sns.catplot(x="Color", y="Item Size",
@ -135,7 +137,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
![小提琴图](../images/violin.png) ![小提琴图](../images/violin.png)
✅ 尝试使用其他变量创建此图和其他Seaborn图。 ✅ 尝试使用其他变量创建此图和其他 Seaborn 图。
现在我们已经了解了颜色的二元类别与更大的尺寸组之间的关系,让我们探索逻辑回归来确定给定南瓜的可能颜色。 现在我们已经了解了颜色的二元类别与更大的尺寸组之间的关系,让我们探索逻辑回归来确定给定南瓜的可能颜色。
@ -145,13 +147,13 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
> >
> ![逻辑函数](../images/sigmoid.png) > ![逻辑函数](../images/sigmoid.png)
> >
> 其中sigmoid的中点位于x的0点L是曲线的最大值k是曲线的陡度。如果函数的结果大于0.5则所讨论的标签将被赋予二进制选择的类“1”。否则它将被分类为“0”。 > 其中 sigmoid 的中点位于 x 0 L 是曲线的最大值k 是曲线的陡度。如果函数的结果大于 0.5则所讨论的标签将被赋予二进制选择的类“1”。否则它将被分类为“0”。
## 建立你的模型 ## 建立你的模型
在Scikit-learn中构建模型来查找这些二元分类非常简单。 Scikit-learn 中构建模型来查找这些二元分类非常简单。
1. 选择要在分类模型中使用的变量,并调用`train_test_split()`拆分训练集和测试集: 1. 选择要在分类模型中使用的变量,并调用 `train_test_split()` 拆分训练集和测试集:
```python ```python
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
@ -165,7 +167,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
``` ```
2. 现在你可以训练你的模型,用你的训练数据调用`fit()`,并打印出它的结果: 2. 现在你可以训练你的模型,用你的训练数据调用 `fit()`,并打印出它的结果:
```python ```python
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
@ -181,7 +183,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
print('Accuracy: ', accuracy_score(y_test, predictions)) print('Accuracy: ', accuracy_score(y_test, predictions))
``` ```
看看你的模型的记分板。考虑到你只有大约1000行数据这还不错 看看你的模型的记分板。考虑到你只有大约 1000 行数据,这还不错:
```output ```output
precision recall f1-score support precision recall f1-score support
@ -249,9 +251,10 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如你可
🎓 加权平均值:计算每个标签的平均指标,通过按支持度(每个标签的真实实例数)加权来考虑标签不平衡。 🎓 加权平均值:计算每个标签的平均指标,通过按支持度(每个标签的真实实例数)加权来考虑标签不平衡。
✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗? ✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗?
## 可视化该模型的ROC曲线
这不是一个糟糕的模型它的准确率在80%范围内,因此理想情况下,你可以使用它来预测给定一组变量的南瓜颜色。 ## 可视化该模型的 ROC 曲线
这不是一个糟糕的模型;它的准确率在 80% 范围内,因此理想情况下,你可以使用它来预测给定一组变量的南瓜颜色。
让我们再做一个可视化来查看所谓的“ROC”分数 让我们再做一个可视化来查看所谓的“ROC”分数
@ -264,23 +267,27 @@ fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])
sns.lineplot([0, 1], [0, 1]) sns.lineplot([0, 1], [0, 1])
sns.lineplot(fpr, tpr) sns.lineplot(fpr, tpr)
``` ```
再次使用Seaborn绘制模型的[接收操作特性](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)或ROC。 ROC曲线通常用于根据分类器的真假阳性来了解分类器的输出。“ROC曲线通常具有Y轴上的真阳性率和X轴上的假阳性率。” 因此,曲线的陡度以及中点线与曲线之间的空间很重要:你需要一条快速向上并越过直线的曲线。在我们的例子中,一开始就有误报,然后这条线正确地向上和重复:
再次使用 Seaborn绘制模型的[接收操作特性](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)或 ROC。 ROC 曲线通常用于根据分类器的真假阳性来了解分类器的输出。“ROC 曲线通常具有 Y 轴上的真阳性率和 X 轴上的假阳性率。” 因此,曲线的陡度以及中点线与曲线之间的空间很重要:你需要一条快速向上并越过直线的曲线。在我们的例子中,一开始就有误报,然后这条线正确地向上和重复:
![ROC](../images/ROC.png) ![ROC](../images/ROC.png)
最后使用Scikit-learn的[`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score)来计算实际“曲线下面积”AUC 最后,使用 Scikit-learn 的[`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) 来计算实际“曲线下面积”AUC
```python ```python
auc = roc_auc_score(y_test,y_scores[:,1]) auc = roc_auc_score(y_test,y_scores[:,1])
print(auc) print(auc)
``` ```
结果是`0.6976998904709748`。 鉴于AUC的范围从0到1你需要一个高分因为预测100%正确的模型的AUC为1在这种情况下模型_相当不错_。
结果是 `0.6976998904709748`。 鉴于 AUC 的范围从 0 到 1你需要一个高分因为预测 100% 正确的模型的 AUC 为 1在这种情况下模型_相当不错_。
在以后的分类课程中,你将学习如何迭代以提高模型的分数。但是现在,恭喜!你已经完成了这些回归课程! 在以后的分类课程中,你将学习如何迭代以提高模型的分数。但是现在,恭喜!你已经完成了这些回归课程!
--- ---
## 🚀挑战 ## 🚀挑战
关于逻辑回归,还有很多东西需要解开!但最好的学习方法是实验。找到适合此类分析的数据集并用它构建模型。你学到了什么?小贴士:尝试[Kaggle](https://kaggle.com)获取有趣的数据集。 关于逻辑回归,还有很多东西需要解开!但最好的学习方法是实验。找到适合此类分析的数据集并用它构建模型。你学到了什么?小贴士:尝试 [Kaggle](https://kaggle.com) 获取有趣的数据集。
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/16/) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/16/)
@ -288,6 +295,6 @@ print(auc)
阅读[斯坦福大学的这篇论文](https://web.stanford.edu/~jurafsky/slp3/5.pdf)的前几页关于逻辑回归的一些实际应用。想想那些更适合于我们目前所研究的一种或另一种类型的回归任务的任务。什么最有效? 阅读[斯坦福大学的这篇论文](https://web.stanford.edu/~jurafsky/slp3/5.pdf)的前几页关于逻辑回归的一些实际应用。想想那些更适合于我们目前所研究的一种或另一种类型的回归任务的任务。什么最有效?
## 任务 ## 任务
[重试此回归](../assignment.md) [重试此回归](../assignment.md)

@ -330,7 +330,7 @@ In a professional setting, you can see how good communication is necessary betwe
--- ---
## 🚀 Challenge: ## 🚀 Challenge
Instead of working in a notebook and importing the model to the Flask app, you could train the model right within the Flask app! Try converting your Python code in the notebook, perhaps after your data is cleaned, to train the model from within the app on a route called `train`. What are the pros and cons of pursuing this method? Instead of working in a notebook and importing the model to the Flask app, you could train the model right within the Flask app! Try converting your Python code in the notebook, perhaps after your data is cleaned, to train the model from within the app on a route called `train`. What are the pros and cons of pursuing this method?

@ -11,7 +11,7 @@ Si continuerà a utilizzare il notebook per pulire i dati e addestrare il modell
Per fare ciò, è necessario creare un'app Web utilizzando Flask. Per fare ciò, è necessario creare un'app Web utilizzando Flask.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17/?loc=it)
## Costruire un'app ## Costruire un'app
@ -334,7 +334,7 @@ In un ambiente professionale, si può vedere quanto sia necessaria una buona com
Invece di lavorare su un notebook e importare il modello nell'app Flask, si può addestrare il modello direttamente nell'app Flask! Provare a convertire il codice Python nel notebook, magari dopo che i dati sono stati puliti, per addestrare il modello dall'interno dell'app su un percorso chiamato `/train`. Quali sono i pro e i contro nel seguire questo metodo? Invece di lavorare su un notebook e importare il modello nell'app Flask, si può addestrare il modello direttamente nell'app Flask! Provare a convertire il codice Python nel notebook, magari dopo che i dati sono stati puliti, per addestrare il modello dall'interno dell'app su un percorso chiamato `/train`. Quali sono i pro e i contro nel seguire questo metodo?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -330,7 +330,7 @@ Flask와 pickled 모델과 같이, 모델을 사용하는 이 방식은, 비교
--- ---
## 🚀 도전: ## 🚀 도전
노트북에서 작성하고 Flask 앱에서 모델을 가져오는 대신, Flask 앱에서 바로 모델을 훈련할 수 있습니다! 어쩌면 데이터를 정리하고, 노트북에서 Python 코드로 변환해서, `train`이라고 불리는 라우터로 앱에서 모델을 훈련합니다. 이러한 방식을 추구했을 때 장점과 단점은 무엇인가요? 노트북에서 작성하고 Flask 앱에서 모델을 가져오는 대신, Flask 앱에서 바로 모델을 훈련할 수 있습니다! 어쩌면 데이터를 정리하고, 노트북에서 Python 코드로 변환해서, `train`이라고 불리는 라우터로 앱에서 모델을 훈련합니다. 이러한 방식을 추구했을 때 장점과 단점은 무엇인가요?

@ -1,58 +1,58 @@
# 构建使用ML模型的Web应用程序 # 构建使用 ML 模型的 Web 应用程序
在本课中你将在一个数据集上训练一个ML模型这个数据集来自世界各地过去一个世纪的UFO目击事件来源于[NUFORC的数据库](https://www.nuforc.org)。 在本课中,你将在一个数据集上训练一个 ML 模型,这个数据集来自世界各地:过去一个世纪的 UFO 目击事件,来源于 [NUFORC 的数据库](https://www.nuforc.org)。
你将学会: 你将学会:
- 如何“pickle”一个训练有素的模型 - 如何“pickle”一个训练有素的模型
- 如何在Flask应用程序中使用该模型 - 如何在 Flask 应用程序中使用该模型
我们将继续使用notebook来清理数据和训练我们的模型但你可以进一步探索在web应用程序中使用模型。 我们将继续使用 notebook 来清理数据和训练我们的模型,但你可以进一步探索在 web 应用程序中使用模型。
为此你需要使用Flask构建一个web应用程序。 为此,你需要使用 Flask 构建一个 web 应用程序。
## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17/) ## [课前测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/17/)
## 构建应用程序 ## 构建应用程序
有多种方法可以构建Web应用程序以使用机器学习模型。你的web架构可能会影响你的模型训练方式。想象一下你在一家企业工作其中数据科学小组已经训练了他们希望你在应用程序中使用的模型。 有多种方法可以构建 Web 应用程序以使用机器学习模型。你的 web 架构可能会影响你的模型训练方式。想象一下,你在一家企业工作,其中数据科学小组已经训练了他们希望你在应用程序中使用的模型。
### 注意事项 ### 注意事项
你需要问很多问题: 你需要问很多问题:
- **它是web应用程序还是移动应用程序**如果你正在构建移动应用程序或需要在物联网环境中使用模型,你可以使用[TensorFlow Lite](https://www.tensorflow.org/lite/)并在Android或iOS应用程序中使用该模型。 - **它是 web 应用程序还是移动应用程序?** 如果你正在构建移动应用程序或需要在物联网环境中使用模型,你可以使用 [TensorFlow Lite](https://www.tensorflow.org/lite/) 并在 Android iOS 应用程序中使用该模型。
- **模型放在哪里?**在云端还是本地? - **模型放在哪里?** 在云端还是本地?
- **离线支持**。该应用程序是否必须离线工作? - **离线支持**。该应用程序是否必须离线工作?
- **使用什么技术来训练模型?**所选的技术可能会影响你需要使用的工具。 - **使用什么技术来训练模型?** 所选的技术可能会影响你需要使用的工具。
- **使用Tensor flow**。例如如果你正在使用TensorFlow训练模型则该生态系统提供了使用[TensorFlow.js](https://www.tensorflow.org/js/)转换TensorFlow模型以便在Web应用程序中使用的能力。 - **使用 TensorFlow**。例如,如果你正在使用 TensorFlow 训练模型,则该生态系统提供了使用 [TensorFlow.js](https://www.tensorflow.org/js/) 转换 TensorFlow 模型以便在Web应用程序中使用的能力。
- **使用 PyTorch**。如果你使用[PyTorch](https://pytorch.org/)等库构建模型,则可以选择将其导出到[ONNX](https://onnx.ai/)(开放神经网络交换)格式,用于可以使用 [Onnx Runtime](https://www.onnxruntime.ai/)的JavaScript Web 应用程序。此选项将在Scikit-learn-trained模型的未来课程中进行探讨。 - **使用 PyTorch**。如果你使用 [PyTorch](https://pytorch.org/) 等库构建模型,则可以选择将其导出到 [ONNX](https://onnx.ai/)(开放神经网络交换)格式,用于可以使用 [Onnx Runtime](https://www.onnxruntime.ai/)的JavaScript Web 应用程序。此选项将在 Scikit-learn-trained 模型的未来课程中进行探讨。
- **使用Lobe.ai或Azure自定义视觉**。如果你使用ML SaaS软件即服务系统例如[Lobe.ai](https://lobe.ai/)或[Azure Custom Vision](https://azure.microsoft.com/services/ cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa)来训练模型这种类型的软件提供了为许多平台导出模型的方法包括构建一个定制API供在线应用程序在云中查询。 - **使用 Lobe.ai Azure 自定义视觉**。如果你使用 ML SaaS软件即服务系统例如 [Lobe.ai](https://lobe.ai/) [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-15963-cxa) 来训练模型这种类型的软件提供了为许多平台导出模型的方法包括构建一个定制A PI供在线应用程序在云中查询。
你还有机会构建一个完整的Flask Web应用程序该应用程序能够在 Web浏览器中训练模型本身。这也可以在JavaScript上下文中使用 TensorFlow.js来完成。 你还有机会构建一个完整的 Flask Web 应用程序,该应用程序能够在 Web浏览器中训练模型本身。这也可以在 JavaScript 上下文中使用 TensorFlow.js 来完成。
出于我们的目的既然我们一直在使用基于Python的notebook那么就让我们探讨一下将经过训练的模型从notebook导出为Python构建的web应用程序可读的格式所需要采取的步骤。 出于我们的目的,既然我们一直在使用基于 Python notebook那么就让我们探讨一下将经过训练的模型从 notebook 导出为 Python 构建的 web 应用程序可读的格式所需要采取的步骤。
## 工具 ## 工具
对于此任务你需要两个工具Flask和Pickle它们都在Python上运行。 对于此任务你需要两个工具Flask Pickle它们都在 Python 上运行。
✅ 什么是 [Flask](https://palletsprojects.com/p/flask/) Flask被其创建者定义为“微框架”它提供了使用Python和模板引擎构建网页的Web框架的基本功能。看看[本学习单元](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-15963-cxa)练习使用Flask构建应用程序。 ✅ 什么是 [Flask](https://palletsprojects.com/p/flask/) Flask 被其创建者定义为“微框架”,它提供了使用 Python 和模板引擎构建网页的 Web 框架的基本功能。看看[本学习单元](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-15963-cxa)练习使用 Flask 构建应用程序。
✅ 什么是[Pickle](https://docs.python.org/3/library/pickle.html) Pickle🥒是一 Python模块用于序列化和反序列化 Python对象结构。当你“pickle”一个模型时你将其结构序列化或展平以在 Web上使用。小心pickle本质上不是安全的所以如果提示“un-pickle”文件请小心。生产的文件具有后缀`.pkl`。 ✅ 什么是 [Pickle](https://docs.python.org/3/library/pickle.html) Pickle🥒是一 Python 模块,用于序列化和反序列化 Python 对象结构。当你“pickle”一个模型时你将其结构序列化或展平以在 Web 上使用。小心pickle 本质上不是安全的所以如果提示“un-pickle”文件请小心。生产的文件具有后缀 `.pkl`
## 练习 - 清理你的数据 ## 练习 - 清理你的数据
在本课中,你将使用由 [NUFORC](https://nuforc.org)(国家 UFO 报告中心收集的80,000次UFO目击数据。这些数据对UFO目击事件有一些有趣的描述例如 在本课中,你将使用由 [NUFORC](https://nuforc.org)(国家 UFO 报告中心)收集的 80,000 UFO 目击数据。这些数据对 UFO 目击事件有一些有趣的描述,例如:
- **详细描述**。"一名男子从夜间照射在草地上的光束中出现,他朝德克萨斯仪器公司的停车场跑去"。 - **详细描述**。"一名男子从夜间照射在草地上的光束中出现,他朝德克萨斯仪器公司的停车场跑去"。
- **简短描述**。 “灯光追着我们”。 - **简短描述**。 “灯光追着我们”。
[ufos.csv](./data/ufos.csv)电子表格包括有关目击事件发生的`city`、`state`和`country`、对象的`shape`及其`latitude`和`longitude`的列。 [ufos.csv](./data/ufos.csv) 电子表格包括有关目击事件发生的 `city`、`state` `country`、对象的 `shape` 及其 `latitude` `longitude` 的列。
在包含在本课中的空白[notebook](notebook.ipynb)中: 在包含在本课中的空白 [notebook](notebook.ipynb) 中:
1. 像在之前的课程中一样导入`pandas`、`matplotlib`和`numpy`然后导入ufos电子表格。你可以查看一个示例数据集 1. 像在之前的课程中一样导入 `pandas`、`matplotlib` `numpy`,然后导入 ufos 电子表格。你可以查看一个示例数据集:
```python ```python
import pandas as pd import pandas as pd
@ -62,7 +62,7 @@
ufos.head() ufos.head()
``` ```
2. 将ufos数据转换为带有新标题的小dataframe。检查`country`字段中的唯一值。 2. 将 ufos 数据转换为带有新标题的小 dataframe。检查 `country` 字段中的唯一值。
```python ```python
ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})
@ -70,7 +70,7 @@
ufos.Country.unique() ufos.Country.unique()
``` ```
3. 现在你可以通过删除任何空值并仅导入1-60秒之间的目击数据来减少我们需要处理的数据量 3. 现在,你可以通过删除任何空值并仅导入 1-60 秒之间的目击数据来减少我们需要处理的数据量:
```python ```python
ufos.dropna(inplace=True) ufos.dropna(inplace=True)
@ -80,9 +80,9 @@
ufos.info() ufos.info()
``` ```
4. 导入Scikit-learn的`LabelEncoder`库,将国家的文本值转换为数字: 4. 导入 Scikit-learn `LabelEncoder` 库,将国家的文本值转换为数字:
✅ LabelEncoder按字母顺序编码数据 ✅ LabelEncoder 按字母顺序编码数据
```python ```python
from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
@ -103,11 +103,11 @@
24 3.0 3 51.783333 -0.783333 24 3.0 3 51.783333 -0.783333
``` ```
## 练习 - 建立你的模型 ## 练习 - 建立你的模型
现在,你可以通过将数据划分为训练和测试组来准备训练模型。 现在,你可以通过将数据划分为训练和测试组来准备训练模型。
1. 选择要训练的三个特征作为X向量y向量将是`Country` 你希望能够输入`Seconds`、`Latitude`和`Longitude`并获得要返回的国家/地区ID。 1. 选择要训练的三个特征作为 X 向量y 向量将是 `Country` 你希望能够输入 `Seconds`、`Latitude` `Longitude` 并获得要返回的国家/地区 ID。
```python ```python
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
@ -120,7 +120,7 @@
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
``` ```
2. 使用逻辑回归训练模型: 2. 使用逻辑回归训练模型:
```python ```python
from sklearn.metrics import accuracy_score, classification_report from sklearn.metrics import accuracy_score, classification_report
@ -134,13 +134,13 @@
print('Accuracy: ', accuracy_score(y_test, predictions)) print('Accuracy: ', accuracy_score(y_test, predictions))
``` ```
准确率还不错**(大约 95%**,不出所料,因为`Country`和`Latitude/Longitude`相关。 准确率还不错 **(大约 95%**,不出所料,因为 `Country` `Latitude/Longitude` 相关。
你创建的模型并不是非常具有革命性,因为你应该能够从其`Latitude`和`Longitude`推断出`Country`但是尝试从清理、导出的原始数据进行训练然后在web应用程序中使用此模型是一个很好的练习。 你创建的模型并不是非常具有革命性,因为你应该能够从其 `Latitude` `Longitude` 推断出 `Country`,但是,尝试从清理、导出的原始数据进行训练,然后在 web 应用程序中使用此模型是一个很好的练习。
## 练习 - “pickle”你的模型 ## 练习 - “pickle”你的模型
现在是时候_pickle_你的模型了你可以在几行代码中做到这一点。一旦它是 _pickled_加载你的pickled模型并针对包含秒、纬度和经度值的示例数据数组对其进行测试 现在,是时候 _pickle_ 你的模型了!你可以在几行代码中做到这一点。一旦它是 _pickled_,加载你的 pickled 模型并针对包含秒、纬度和经度值的示例数据数组对其进行测试,
```python ```python
import pickle import pickle
@ -151,15 +151,15 @@ model = pickle.load(open('ufo-model.pkl','rb'))
print(model.predict([[50,44,-12]])) print(model.predict([[50,44,-12]]))
``` ```
该模型返回**'3'**,这是英国的国家代码。👽 该模型返回 **'3'**,这是英国的国家代码。👽
## 练习 - 构建Flask应用程序 ## 练习 - 构建Flask应用程序
现在你可以构建一个Flask应用程序来调用你的模型并返回类似的结果但以一种更美观的方式。 现在你可以构建一个Flask应用程序来调用你的模型并返回类似的结果但以一种更美观的方式。
1. 首先在你的 _ufo-model.pkl_ 文件所在的_notebook.ipynb_文件旁边创建一个名为**web-app**的文件夹。 1. 首先在你的 _ufo-model.pkl_ 文件所在的 _notebook.ipynb_ 文件旁边创建一个名为 **web-app** 的文件夹。
2. 在该文件夹中创建另外三个文件夹:**static**,其中有文件夹**css**和**templates`**。 你现在应该拥有以下文件和目录 2. 在该文件夹中创建另外三个文件夹:**static**,其中有文件夹 **css** **templates**。 你现在应该拥有以下文件和目录
```output ```output
web-app/ web-app/
@ -170,9 +170,9 @@ print(model.predict([[50,44,-12]]))
ufo-model.pkl ufo-model.pkl
``` ```
✅ 请参阅解决方案文件夹以查看已完成的应用程序 ✅ 请参阅解决方案文件夹以查看已完成的应用程序
3. 在_web-app_文件夹中创建的第一个文件是**requirements.txt**文件。与JavaScript应用程序中的_package.json_一样此文件列出了应用程序所需的依赖项。在**requirements.txt**中添加以下几行: 3. 在 _web-app_ 文件夹中创建的第一个文件是 **requirements.txt** 文件。与 JavaScript 应用程序中的 _package.json_ 一样,此文件列出了应用程序所需的依赖项。在 **requirements.txt** 中添加以下几行:
```text ```text
scikit-learn scikit-learn
@ -181,25 +181,25 @@ print(model.predict([[50,44,-12]]))
flask flask
``` ```
4. 现在进入web-app文件夹 4. 现在,进入 web-app 文件夹:
```bash ```bash
cd web-app cd web-app
``` ```
5. 在你的终端中输入`pip install`以安装_reuirements.txt_中列出的库 5. 在你的终端中输入 `pip install`,以安装 _reuirements.txt_ 中列出的库:
```bash ```bash
pip install -r requirements.txt pip install -r requirements.txt
``` ```
6. 现在,你已准备好创建另外三个文件来完成应用程序: 6. 现在,你已准备好创建另外三个文件来完成应用程序:
1. 在根目录中创建**app.py** 1. 在根目录中创建 **app.py**
2. 在_templates_目录中创建**index.html**。 2. 在 _templates_ 目录中创建**index.html**。
3. 在_static/css_目录中创建**styles.css**。 3. 在 _static/css_ 目录中创建**styles.css**。
7. 使用一些样式构建_styles.css_文件 7. 使用一些样式构建 _styles.css_ 文件:
```css ```css
body { body {
@ -233,7 +233,7 @@ print(model.predict([[50,44,-12]]))
} }
``` ```
8. 接下来构建_index.html_文件 8. 接下来,构建 _index.html_ 文件:
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
@ -268,9 +268,9 @@ print(model.predict([[50,44,-12]]))
</html> </html>
``` ```
看看这个文件中的模板。请注意应用程序将提供的变量周围的“mustache”语法例如预测文本`{{}}`。还有一个表单可以将预测发布到`/predict`路由。 看看这个文件中的模板。请注意应用程序将提供的变量周围的“mustache”语法例如预测文本`{{}}`。还有一个表单可以将预测发布到 `/predict` 路由。
最后你已准备好构建使用模型和显示预测的python 文件: 最后,你已准备好构建使用模型和显示预测的 python 文件:
9. 在`app.py`中添加: 9. 在`app.py`中添加:
@ -309,38 +309,38 @@ print(model.predict([[50,44,-12]]))
app.run(debug=True) app.run(debug=True)
``` ```
> 💡 提示当你在使用Flask运行Web应用程序时添加 [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode)时你对应用程序所做的任何更改将立即反映,无需重新启动服务器。注意!不要在生产应用程序中启用此模式 > 💡 提示:当你在使用 Flask 运行 Web 应用程序时添加 [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode)时你对应用程序所做的任何更改将立即反映,无需重新启动服务器。注意!不要在生产应用程序中启用此模式
如果你运行`python app.py`或`python3 app.py` - 你的网络服务器在本地启动你可以填写一个简短的表格来回答你关于在哪里看到UFO的问题 如果你运行 `python app.py` `python3 app.py` - 你的网络服务器在本地启动,你可以填写一个简短的表格来回答你关于在哪里看到 UFO 的问题!
在此之前,先看一下`app.py`的实现: 在此之前,先看一下 `app.py` 的实现:
1. 首先,加载依赖项并启动应用程序。 1. 首先,加载依赖项并启动应用程序。
2. 然后,导入模型。 2. 然后,导入模型。
3. 然后在home路由上渲染index.html。 3. 然后,在 home 路由上渲染 index.html。
在`/predict`路由上,当表单被发布时会发生几件事情: `/predict` 路由上,当表单被发布时会发生几件事情:
1. 收集表单变量并转换为numpy数组。然后将它们发送到模型并返回预测。 1. 收集表单变量并转换为 numpy 数组。然后将它们发送到模型并返回预测。
2. 我们希望显示的国家/地区根据其预测的国家/地区代码重新呈现为可读文本并将该值发送回index.html以在模板中呈现。 2. 我们希望显示的国家/地区根据其预测的国家/地区代码重新呈现为可读文本,并将该值发送回 index.html 以在模板中呈现。
以这种方式使用模型包括Flask和pickled模型是相对简单的。最困难的是要理解数据是什么形状的这些数据必须发送到模型中才能得到预测。这完全取决于模型是如何训练的。有三个数据要输入以便得到一个预测。 以这种方式使用模型,包括 Flask pickled 模型,是相对简单的。最困难的是要理解数据是什么形状的,这些数据必须发送到模型中才能得到预测。这完全取决于模型是如何训练的。有三个数据要输入,以便得到一个预测。
在一个专业的环境中你可以看到训练模型的人和在Web或移动应用程序中使用模型的人之间的良好沟通是多么的必要。在我们的情况下只有一个人 在一个专业的环境中,你可以看到训练模型的人和在 Web 或移动应用程序中使用模型的人之间的良好沟通是多么的必要。在我们的情况下,只有一个人,你!
--- ---
## 🚀 挑战: ## 🚀 挑战
你可以在Flask应用程序中训练模型而不是在notebook上工作并将模型导入Flask应用程序尝试在notebook中转换Python代码可能是在清除数据之后从应用程序中的一个名为`train`的路径训练模型。采用这种方法的利弊是什么? 你可以在 Flask 应用程序中训练模型,而不是在 notebook 上工作并将模型导入 Flask 应用程序!尝试在 notebook 中转换 Python 代码,可能是在清除数据之后,从应用程序中的一个名为 `train` 的路径训练模型。采用这种方法的利弊是什么?
## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18/) ## [课后测](https://white-water-09ec41f0f.azurestaticapps.net/quiz/18/)
## 复习与自学 ## 复习与自学
有很多方法可以构建一个Web应用程序来使用ML模型。列出可以使用JavaScript或Python构建Web应用程序以利用机器学习的方法。考虑架构模型应该留在应用程序中还是存在于云中如果是后者你将如何访问它为应用的ML Web解决方案绘制架构模型。 有很多方法可以构建一个Web应用程序来使用ML模型。列出可以使用JavaScript或Python构建Web应用程序以利用机器学习的方法。考虑架构模型应该留在应用程序中还是存在于云中如果是后者你将如何访问它为应用的ML Web解决方案绘制架构模型。
## 任务 ## 任务
[尝试不同的模型](../assignment.md) [尝试不同的模型](../assignment.md)

@ -19,7 +19,7 @@ Ricordare:
La classificazione utilizza vari algoritmi per determinare altri modi per definire l'etichetta o la classe di un punto dati. Si lavorerà con questi dati di cucina per vedere se, osservando un gruppo di ingredienti, è possibile determinarne la cucina di origine. La classificazione utilizza vari algoritmi per determinare altri modi per definire l'etichetta o la classe di un punto dati. Si lavorerà con questi dati di cucina per vedere se, osservando un gruppo di ingredienti, è possibile determinarne la cucina di origine.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/19/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/19/?loc=it)
### Introduzione ### Introduzione
@ -286,7 +286,7 @@ Ora che i dati sono puliti, si usa [SMOTE](https://imbalanced-learn.org/dev/refe
Questo programma di studi contiene diversi insiemi di dati interessanti. Esaminare le cartelle `data` e vedere se contiene insiemi di dati che sarebbero appropriati per la classificazione binaria o multiclasse. Quali domande si farebbero a questo insieme di dati? Questo programma di studi contiene diversi insiemi di dati interessanti. Esaminare le cartelle `data` e vedere se contiene insiemi di dati che sarebbero appropriati per la classificazione binaria o multiclasse. Quali domande si farebbero a questo insieme di dati?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/20/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/20/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -4,7 +4,7 @@ In questa lezione, si utilizzerà l'insieme di dati salvati dall'ultima lezione,
Si utilizzerà questo insieme di dati con una varietà di classificatori per _prevedere una determinata cucina nazionale in base a un gruppo di ingredienti_. Mentre si fa questo, si imparerà di più su alcuni dei modi in cui gli algoritmi possono essere sfruttati per le attività di classificazione. Si utilizzerà questo insieme di dati con una varietà di classificatori per _prevedere una determinata cucina nazionale in base a un gruppo di ingredienti_. Mentre si fa questo, si imparerà di più su alcuni dei modi in cui gli algoritmi possono essere sfruttati per le attività di classificazione.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/21/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/21/?loc=it)
# Preparazione # Preparazione
Supponendo che la [Lezione 1](../1-Introduction/README.md) sia stata completata, assicurarsi che _esista_ un file clean_cuisines.csv nella cartella in radice `/data` per queste quattro lezioni. Supponendo che la [Lezione 1](../1-Introduction/README.md) sia stata completata, assicurarsi che _esista_ un file clean_cuisines.csv nella cartella in radice `/data` per queste quattro lezioni.
@ -232,7 +232,7 @@ Poiché si sta utilizzando il caso multiclasse, si deve scegliere quale _schema_
In questa lezione, sono stati utilizzati dati puliti per creare un modello di apprendimento automatico in grado di prevedere una cucina nazionale basata su una serie di ingredienti. Si prenda del tempo per leggere le numerose opzioni fornite da Scikit-learn per classificare i dati. Approfondire il concetto di "risolutore" per capire cosa succede dietro le quinte. In questa lezione, sono stati utilizzati dati puliti per creare un modello di apprendimento automatico in grado di prevedere una cucina nazionale basata su una serie di ingredienti. Si prenda del tempo per leggere le numerose opzioni fornite da Scikit-learn per classificare i dati. Approfondire il concetto di "risolutore" per capire cosa succede dietro le quinte.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/22/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/22/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento
Approfondire un po' la matematica alla base della regressione logistica in [questa lezione](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) Approfondire un po' la matematica alla base della regressione logistica in [questa lezione](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)

@ -2,7 +2,7 @@
In questa seconda lezione sulla classificazione, si esploreranno più modi per classificare i dati numerici. Si Impareranno anche le ramificazioni per la scelta di un classificatore rispetto all'altro. In questa seconda lezione sulla classificazione, si esploreranno più modi per classificare i dati numerici. Si Impareranno anche le ramificazioni per la scelta di un classificatore rispetto all'altro.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/23/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/23/?loc=it)
### Prerequisito ### Prerequisito
@ -224,7 +224,7 @@ Questo metodo di Machine Learning "combina le previsioni di diversi stimatori di
Ognuna di queste tecniche ha un gran numero di parametri che si possono modificare. Ricercare i parametri predefiniti di ciascuno e pensare a cosa significherebbe modificare questi parametri per la qualità del modello. Ognuna di queste tecniche ha un gran numero di parametri che si possono modificare. Ricercare i parametri predefiniti di ciascuno e pensare a cosa significherebbe modificare questi parametri per la qualità del modello.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/24/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/24/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -8,7 +8,7 @@ Uno degli usi pratici più utili dell'apprendimento automatico è la creazione d
> 🎥 Fare clic sull'immagine sopra per un video: Andrew Ng introduce la progettazione di un sistema di raccomandazione > 🎥 Fare clic sull'immagine sopra per un video: Andrew Ng introduce la progettazione di un sistema di raccomandazione
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/25/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/25/?loc=it)
In questa lezione, si imparerà: In questa lezione, si imparerà:
@ -321,7 +321,7 @@ Congratulazioni, si è creato un'app web di "raccomandazione" con pochi campi. S
L'app web è molto minimale, quindi continuare a costruirla usando gli ingredienti e i loro indici dai dati [ingredient_indexes](../../data/ingredient_indexes.csv) . Quali combinazioni di sapori funzionano per creare un determinato piatto nazionale? L'app web è molto minimale, quindi continuare a costruirla usando gli ingredienti e i loro indici dai dati [ingredient_indexes](../../data/ingredient_indexes.csv) . Quali combinazioni di sapori funzionano per creare un determinato piatto nazionale?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/26/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/26/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -5,7 +5,7 @@ Il clustering è un tipo di [apprendimento non supervisionato](https://wikipedia
[![No One Like You di PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You di PSquare") [![No One Like You di PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You di PSquare")
> 🎥 Fare clic sull'immagine sopra per un video. Mentre si studia machine learning con il clustering, si potranno gradire brani della Nigerian Dance Hall: questa è una canzone molto apprezzata del 2014 di PSquare. > 🎥 Fare clic sull'immagine sopra per un video. Mentre si studia machine learning con il clustering, si potranno gradire brani della Nigerian Dance Hall: questa è una canzone molto apprezzata del 2014 di PSquare.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/27/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/27/?loc=it)
### Introduzione ### Introduzione
@ -319,7 +319,7 @@ In generale, per il clustering è possibile utilizzare i grafici a dispersione p
In preparazione per la lezione successiva, creare un grafico sui vari algoritmi di clustering che si potrebbero scoprire e utilizzare in un ambiente di produzione. Che tipo di problemi sta cercando di affrontare il clustering? In preparazione per la lezione successiva, creare un grafico sui vari algoritmi di clustering che si potrebbero scoprire e utilizzare in un ambiente di produzione. Che tipo di problemi sta cercando di affrontare il clustering?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/28/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/28/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -4,7 +4,7 @@
> 🎥 Fare clic sull'immagine sopra per un video: Andrew Ng spiega il clustering > 🎥 Fare clic sull'immagine sopra per un video: Andrew Ng spiega il clustering
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/29/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/29/?loc=it)
In questa lezione si imparerà come creare cluster utilizzando Scikit-learn e l'insieme di dati di musica nigeriana importato in precedenza. Si tratteranno le basi di K-Means per Clustering. Si tenga presente che, come appreso nella lezione precedente, ci sono molti modi per lavorare con i cluster e il metodo usato dipende dai propri dati. Si proverà K-Means poiché è la tecnica di clustering più comune. Si inizia! In questa lezione si imparerà come creare cluster utilizzando Scikit-learn e l'insieme di dati di musica nigeriana importato in precedenza. Si tratteranno le basi di K-Means per Clustering. Si tenga presente che, come appreso nella lezione precedente, ci sono molti modi per lavorare con i cluster e il metodo usato dipende dai propri dati. Si proverà K-Means poiché è la tecnica di clustering più comune. Si inizia!
@ -238,7 +238,7 @@ Trascorrere un po' di tempo con questo notebook, modificando i parametri. E poss
Suggerimento: provare a ridimensionare i dati. C'è un codice commentato nel notebook che aggiunge il ridimensionamento standard per rendere le colonne di dati più simili tra loro in termini di intervallo. Si scoprirà che mentre il punteggio della silhouette diminuisce, il "kink" nel grafico del gomito si attenua. Questo perché lasciare i dati non scalati consente ai dati con meno varianza di avere più peso. Leggere un po' di più su questo problema [qui](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226). Suggerimento: provare a ridimensionare i dati. C'è un codice commentato nel notebook che aggiunge il ridimensionamento standard per rendere le colonne di dati più simili tra loro in termini di intervallo. Si scoprirà che mentre il punteggio della silhouette diminuisce, il "kink" nel grafico del gomito si attenua. Questo perché lasciare i dati non scalati consente ai dati con meno varianza di avere più peso. Leggere un po' di più su questo problema [qui](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/30/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/30/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -2,7 +2,7 @@
Questa lezione copre una breve storia e concetti importanti dell' *elaborazione del linguaggio naturale*, un sottocampo della *linguistica computazionale*. Questa lezione copre una breve storia e concetti importanti dell' *elaborazione del linguaggio naturale*, un sottocampo della *linguistica computazionale*.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/31/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/31/?loc=it)
## Introduzione ## Introduzione
@ -149,7 +149,7 @@ Scegliere uno degli elementi "fermarsi e riflettere" qui sopra e provare a imple
Nella prossima lezione si impareranno una serie di altri approcci all'analisi del linguaggio naturale e dell'machine learning. Nella prossima lezione si impareranno una serie di altri approcci all'analisi del linguaggio naturale e dell'machine learning.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/32/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/32/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -2,7 +2,7 @@
Per la maggior parte delle attività di *elaborazione del linguaggio naturale* , il testo da elaborare deve essere suddiviso, esaminato e i risultati archiviati o incrociati con regole e insiemi di dati. Queste attività consentono al programmatore di derivare il _significato_ o l'_intento_ o solo la _frequenza_ di termini e parole in un testo. Per la maggior parte delle attività di *elaborazione del linguaggio naturale* , il testo da elaborare deve essere suddiviso, esaminato e i risultati archiviati o incrociati con regole e insiemi di dati. Queste attività consentono al programmatore di derivare il _significato_ o l'_intento_ o solo la _frequenza_ di termini e parole in un testo.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/33/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/33/?loc=it)
Si esaminano le comuni tecniche utilizzate nell'elaborazione del testo. Combinate con machine learning, queste tecniche aiutano ad analizzare grandi quantità di testo in modo efficiente. Prima di applicare machine learning a queste attività, tuttavia, occorre cercare di comprendere i problemi incontrati da uno specialista in NLP. Si esaminano le comuni tecniche utilizzate nell'elaborazione del testo. Combinate con machine learning, queste tecniche aiutano ad analizzare grandi quantità di testo in modo efficiente. Prima di applicare machine learning a queste attività, tuttavia, occorre cercare di comprendere i problemi incontrati da uno specialista in NLP.
@ -203,7 +203,7 @@ Implementare il bot nel controllo delle conoscenze precedenti e testarlo su un a
Prendere un'attività dalla verifica delle conoscenze qui sopra e provare a implementarla. Provare il bot su un amico. Può ingannarlo? Si può rendere il bot più 'credibile?' Prendere un'attività dalla verifica delle conoscenze qui sopra e provare a implementarla. Provare il bot su un amico. Può ingannarlo? Si può rendere il bot più 'credibile?'
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/34/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/34/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -2,7 +2,7 @@
Nelle lezioni precedenti si è imparato come creare un bot di base utilizzando `TextBlob`, una libreria che incorpora machine learning dietro le quinte per eseguire attività di base di NPL come l'estrazione di frasi nominali. Un'altra sfida importante nella linguistica computazionale è _la traduzione_ accurata di una frase da una lingua parlata o scritta a un'altra. Nelle lezioni precedenti si è imparato come creare un bot di base utilizzando `TextBlob`, una libreria che incorpora machine learning dietro le quinte per eseguire attività di base di NPL come l'estrazione di frasi nominali. Un'altra sfida importante nella linguistica computazionale è _la traduzione_ accurata di una frase da una lingua parlata o scritta a un'altra.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/35/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/35/?loc=it)
La traduzione è un problema molto difficile, aggravato dal fatto che ci sono migliaia di lingue e ognuna può avere regole grammaticali molto diverse. Un approccio consiste nel convertire le regole grammaticali formali per una lingua, come l'inglese, in una struttura non dipendente dalla lingua e quindi tradurla convertendola in un'altra lingua. Questo approccio significa che si dovrebbero eseguire i seguenti passaggi: La traduzione è un problema molto difficile, aggravato dal fatto che ci sono migliaia di lingue e ognuna può avere regole grammaticali molto diverse. Un approccio consiste nel convertire le regole grammaticali formali per una lingua, come l'inglese, in una struttura non dipendente dalla lingua e quindi tradurla convertendola in un'altra lingua. Questo approccio significa che si dovrebbero eseguire i seguenti passaggi:
@ -176,7 +176,7 @@ Ecco una [soluzione](../solution/notebook.ipynb) di esempio.
Si può rendere Marvin ancora migliore estraendo altre funzionalità dall'input dell'utente? Si può rendere Marvin ancora migliore estraendo altre funzionalità dall'input dell'utente?
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/36/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/36/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -6,7 +6,7 @@ In questa sezione si utilizzeranno le tecniche delle lezioni precedenti per eseg
- come calcolare alcuni nuovi dati in base alle colonne esistenti - come calcolare alcuni nuovi dati in base alle colonne esistenti
- come salvare l'insieme di dati risultante per l'uso nella sfida finale - come salvare l'insieme di dati risultante per l'uso nella sfida finale
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/37/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/37/?loc=it)
### Introduzione ### Introduzione
@ -401,7 +401,7 @@ Ora che si è esplorato l'insieme di dati, nella prossima lezione si filtreranno
Questa lezione dimostra, come visto nelle lezioni precedenti, quanto sia di fondamentale importanza comprendere i dati e le loro debolezze prima di eseguire operazioni su di essi. I dati basati su testo, in particolare, sono oggetto di un attento esame. Esaminare vari insiemi di dati contenenti principalmente testo e vedere se si riesce a scoprire aree che potrebbero introdurre pregiudizi o sentiment distorti in un modello. Questa lezione dimostra, come visto nelle lezioni precedenti, quanto sia di fondamentale importanza comprendere i dati e le loro debolezze prima di eseguire operazioni su di essi. I dati basati su testo, in particolare, sono oggetto di un attento esame. Esaminare vari insiemi di dati contenenti principalmente testo e vedere se si riesce a scoprire aree che potrebbero introdurre pregiudizi o sentiment distorti in un modello.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/38/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/38/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -2,7 +2,7 @@
Ora che si è esplorato in dettaglio l'insieme di dati, è il momento di filtrare le colonne e quindi utilizzare le tecniche NLP sull'insieme di dati per ottenere nuove informazioni sugli hotel. Ora che si è esplorato in dettaglio l'insieme di dati, è il momento di filtrare le colonne e quindi utilizzare le tecniche NLP sull'insieme di dati per ottenere nuove informazioni sugli hotel.
## [Quiz Pre-Lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/39/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/39/?loc=it)
### Operazioni di Filtraggio e Analisi del Sentiment ### Operazioni di Filtraggio e Analisi del Sentiment
@ -361,7 +361,7 @@ Per riepilogare, i passaggi sono:
Quando si è iniziato, si disponeva di un insieme di dati con colonne e dati, ma non tutto poteva essere verificato o utilizzato. Si sono esplorati i dati, filtrato ciò che non serve, convertito i tag in qualcosa di utile, calcolato le proprie medie, aggiunto alcune colonne di sentiment e, si spera, imparato alcune cose interessanti sull'elaborazione del testo naturale. Quando si è iniziato, si disponeva di un insieme di dati con colonne e dati, ma non tutto poteva essere verificato o utilizzato. Si sono esplorati i dati, filtrato ciò che non serve, convertito i tag in qualcosa di utile, calcolato le proprie medie, aggiunto alcune colonne di sentiment e, si spera, imparato alcune cose interessanti sull'elaborazione del testo naturale.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/40/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/40/?loc=it)
## Sfida ## Sfida

@ -10,7 +10,7 @@ In questa lezione e nella successiva si imparerà qualcosa sulla previsione dell
> 🎥 Fare clic sull'immagine sopra per un video sulla previsione delle serie temporali > 🎥 Fare clic sull'immagine sopra per un video sulla previsione delle serie temporali
## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/41/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/41/?loc=it)
È un campo utile e interessante con un valore reale per il business, data la sua applicazione diretta a problemi di prezzi, inventario e problemi della catena di approvvigionamento. Mentre le tecniche di deep learning hanno iniziato a essere utilizzate per acquisire maggiori informazioni per prevedere meglio le prestazioni future, la previsione delle serie temporali rimane un campo ampiamente informato dalle tecniche classiche di ML. È un campo utile e interessante con un valore reale per il business, data la sua applicazione diretta a problemi di prezzi, inventario e problemi della catena di approvvigionamento. Mentre le tecniche di deep learning hanno iniziato a essere utilizzate per acquisire maggiori informazioni per prevedere meglio le prestazioni future, la previsione delle serie temporali rimane un campo ampiamente informato dalle tecniche classiche di ML.
@ -174,7 +174,7 @@ Nella prossima lezione, si creerà un modello ARIMA per creare alcune previsioni
Fare un elenco di tutti i settori e le aree di indagine che vengono in mente che potrebbero trarre vantaggio dalla previsione delle serie temporali. Si riesce a pensare a un'applicazione di queste tecniche nelle arti? In Econometria? Ecologia? Vendita al Dettaglio? Industria? Finanza? Dove se no? Fare un elenco di tutti i settori e le aree di indagine che vengono in mente che potrebbero trarre vantaggio dalla previsione delle serie temporali. Si riesce a pensare a un'applicazione di queste tecniche nelle arti? In Econometria? Ecologia? Vendita al Dettaglio? Industria? Finanza? Dove se no?
## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/42/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/42/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -6,7 +6,7 @@ Nella lezione precedente, si è imparato qualcosa sulla previsione delle serie t
> 🎥 Fare clic sull'immagine sopra per un video: Una breve introduzione ai modelli ARIMA. L'esempio è fatto in linguaggio R, ma i concetti sono universali. > 🎥 Fare clic sull'immagine sopra per un video: Una breve introduzione ai modelli ARIMA. L'esempio è fatto in linguaggio R, ma i concetti sono universali.
## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/43/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/43/?loc=it)
## Introduzione ## Introduzione
@ -383,7 +383,7 @@ Controllare l'accuratezza del modello testando il suo errore percentuale medio a
Scoprire i modi per testare l'accuratezza di un modello di serie temporali. Si esamina MAPE in questa lezione, ma ci sono altri metodi che si potrebbero usare? Ricercarli e annotarli. Un documento utile può essere trovato [qui](https://otexts.com/fpp2/accuracy.html) Scoprire i modi per testare l'accuratezza di un modello di serie temporali. Si esamina MAPE in questa lezione, ma ci sono altri metodi che si potrebbero usare? Ricercarli e annotarli. Un documento utile può essere trovato [qui](https://otexts.com/fpp2/accuracy.html)
## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/44/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/44/?loc=it)
## Revisione e Auto Apprendimento ## Revisione e Auto Apprendimento

@ -11,7 +11,7 @@ Usando reinforcement learning e un simulatore (il gioco), si può imparare a gio
> 🎥 Fare clic sull'immagine sopra per ascoltare Dmitry discutere sul reinforcement learning > 🎥 Fare clic sull'immagine sopra per ascoltare Dmitry discutere sul reinforcement learning
## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/45/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/45/?loc=it)
## Prerequisiti e Configurazione ## Prerequisiti e Configurazione
@ -315,6 +315,6 @@ Gli apprendimenti possono essere riassunti come:
Nel complesso, è importante ricordare che il successo e la qualità del processo di apprendimento dipendono in modo significativo da parametri come il tasso di apprendimento, il decadimento del tasso di apprendimento e il fattore di sconto. Questi sono spesso chiamati **iperparametri**, per distinguerli dai **parametri**, che si ottimizzano durante l'allenamento (ad esempio, i coefficienti della Q-Table). Il processo per trovare i valori migliori degli iperparametri è chiamato **ottimizzazione degli iperparametri** e merita un argomento a parte. Nel complesso, è importante ricordare che il successo e la qualità del processo di apprendimento dipendono in modo significativo da parametri come il tasso di apprendimento, il decadimento del tasso di apprendimento e il fattore di sconto. Questi sono spesso chiamati **iperparametri**, per distinguerli dai **parametri**, che si ottimizzano durante l'allenamento (ad esempio, i coefficienti della Q-Table). Il processo per trovare i valori migliori degli iperparametri è chiamato **ottimizzazione degli iperparametri** e merita un argomento a parte.
## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/46/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/46/?loc=fr)
## Incarico: [Un mondo più realistico](assignment.it.md) ## Incarico: [Un mondo più realistico](assignment.it.md)

@ -1,7 +1,7 @@
# CartPole Skating # CartPole Skating
The problem we have been solving in the previous lesson might seem like a toy problem, not really applicable for real life scenarios. This is not the case, because many real world problems also share this scenario - including playing Chess or Go. They are similar, because we also have a board with given rules and a **discrete state**. The problem we have been solving in the previous lesson might seem like a toy problem, not really applicable for real life scenarios. This is not the case, because many real world problems also share this scenario - including playing Chess or Go. They are similar, because we also have a board with given rules and a **discrete state**.
https://white-water-09ec41f0f.azurestaticapps.net/
## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/47/) ## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/47/)
## Introduction ## Introduction

@ -2,7 +2,7 @@
Il problema risolto nella lezione precedente potrebbe sembrare un problema giocattolo, non propriamente applicabile a scenari di vita reale. Questo non è il caso, perché anche molti problemi del mondo reale condividono questo scenario, incluso Scacchi o Go. Sono simili, perché anche in quei casi si ha una tavolo di gioco con regole date e uno **stato discreto**. Il problema risolto nella lezione precedente potrebbe sembrare un problema giocattolo, non propriamente applicabile a scenari di vita reale. Questo non è il caso, perché anche molti problemi del mondo reale condividono questo scenario, incluso Scacchi o Go. Sono simili, perché anche in quei casi si ha una tavolo di gioco con regole date e uno **stato discreto**.
## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/47/) ## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/47/?loc=it)
## Introduzione ## Introduzione
@ -329,7 +329,7 @@ Si dovrebbe vedere qualcosa del genere:
> **Compito 4**: Qui non si stava selezionando l'azione migliore per ogni passaggio, ma piuttosto campionando con la corrispondente distribuzione di probabilità. Avrebbe più senso selezionare sempre l'azione migliore, con il valore Q-Table più alto? Questo può essere fatto usando la funzione `np.argmax` per trovare il numero dell'azione corrispondente al valore della Q-Table più alto. Implementare questa strategia e vedere se migliora il bilanciamento. > **Compito 4**: Qui non si stava selezionando l'azione migliore per ogni passaggio, ma piuttosto campionando con la corrispondente distribuzione di probabilità. Avrebbe più senso selezionare sempre l'azione migliore, con il valore Q-Table più alto? Questo può essere fatto usando la funzione `np.argmax` per trovare il numero dell'azione corrispondente al valore della Q-Table più alto. Implementare questa strategia e vedere se migliora il bilanciamento.
## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/48/) ## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/48/?loc=it)
## Compito: [addestrare un'auto di montagna](assignment.it.md) ## Compito: [addestrare un'auto di montagna](assignment.it.md)

@ -0,0 +1,162 @@
# Poscritto: Machine learning nel mondo reale
![Riepilogo di machine learning nel mondo reale in uno sketchnote](../../../sketchnotes/ml-realworld.png)
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
In questo programma di studi si sono appresi molti modi per preparare i dati per l'addestramento e creare modelli di machine learning. Sono stati creati una serie di modelli classici di regressione, clustering, classificazione, elaborazione del linguaggio naturale e serie temporali. Congratulazioni! Ora, se ci si sta chiedendo a cosa serva tutto questo... quali sono le applicazioni del mondo reale per questi modelli?
Sebbene l'intelligenza artificiale abbia suscitato molto interesse nell'industria, che di solito sfrutta il deep learning, esistono ancora preziose applicazioni per i modelli classici di machine learning. Si potrebbero anche usare alcune di queste applicazioni oggi! In questa lezione, si esplorerà come otto diversi settori e campi relativi all'argomento utilizzano questi tipi di modelli per rendere le loro applicazioni più performanti, affidabili, intelligenti e preziose per gli utenti.
## [Quiz pre-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/49/?loc=it)
## Finanza
Il settore finanziario offre molte opportunità per machine learning. Molti problemi in quest'area si prestano ad essere modellati e risolti utilizzando machine learning.
### Rilevamento frodi con carta di credito
Si è appreso del [clustering k-means](../../../5-Clustering/2-K-Means/translations/README.it.md) in precedenza nel corso, ma come può essere utilizzato per risolvere i problemi relativi alle frodi con carta di credito?
Il clustering K-means è utile con una tecnica di rilevamento delle frodi con carta di credito chiamata **rilevamento dei valori anomali**. I valori anomali, o le deviazioni nelle osservazioni su un insieme di dati, possono svelare se una carta di credito viene utilizzata normalmente o se sta succedendo qualcosa di insolito. Come mostrato nel documento collegato di seguito, è possibile ordinare i dati della carta di credito utilizzando un algoritmo di clustering k-means e assegnare ogni transazione a un cluster in base a quanto sembra essere un valore anomalo. Quindi, si possono valutare i cluster più rischiosi per le transazioni fraudolente rispetto a quelle legittime.
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf
### Gestione patrimoniale
Nella gestione patrimoniale, un individuo o un'impresa gestisce gli investimenti per conto dei propri clienti. Il loro compito è sostenere e far crescere la ricchezza a lungo termine, quindi è essenziale scegliere investimenti che funzionino bene.
Un modo per valutare le prestazioni di un particolare investimento è attraverso la regressione statistica. La[regressione lineare](../../../2-Regression/1-Tools/translations/README.it.md) è uno strumento prezioso per capire come si comporta un fondo rispetto a un benchmark. Si può anche dedurre se i risultati della regressione sono statisticamente significativi o quanto influenzerebbero gli investimenti di un cliente. Si potrebbe anche espandere ulteriormente la propria analisi utilizzando la regressione multipla, in cui è possibile prendere in considerazione ulteriori fattori di rischio. Per un esempio di come funzionerebbe per un fondo specifico, consultare il documento di seguito sulla valutazione delle prestazioni del fondo utilizzando la regressione.
http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/
## Istruzione
Anche il settore educativo è un'area molto interessante in cui si può applicare machine learning. Ci sono problemi interessanti da affrontare come rilevare l'imbroglio nei test o nei saggi o gestire i pregiudizi nel processo di correzione, non intenzionali o meno.
### Prevedere il comportamento degli studenti
[Coursera](https://coursera.com), un fornitore di corsi aperti online, ha un fantastico blog di tecnologia in cui discutono molte decisioni ingegneristiche. In questo caso di studio, hanno tracciato una linea di regressione per cercare di esplorare qualsiasi correlazione tra un punteggio NPS (Net Promoter Score) basso e il mantenimento o l'abbandono del corso.
https://medium.com/coursera-engineering/regressione-controllata-quantificare-l'impatto-della-qualità-del-corso-sulla-ritenzione-dell'allievo-31f956bd592a
### Mitigare i pregiudizi
[Grammarly](https://grammarly.com), un assistente di scrittura che controlla gli errori di ortografia e grammatica, utilizza sofisticati [sistemi di elaborazione del linguaggio naturale](../../../6-NLP/translations/README.it.md) in tutti i suoi prodotti. Hanno pubblicato un interessante caso di studio nel loro blog tecnologico su come hanno affrontato il pregiudizio di genere nell'apprendimento automatico, di cui si si è appreso nella [lezione introduttiva sull'equità](../../../1-Introduction/3-fairness/translations/README.it.md).
https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/
## Vendita al dettaglio
Il settore della vendita al dettaglio può sicuramente trarre vantaggio dall'uso di machine learning, dalla creazione di un percorso migliore per il cliente allo stoccaggio dell'inventario in modo ottimale.
### Personalizzare il percorso del cliente
In Wayfair, un'azienda che vende articoli per la casa come i mobili, aiutare i clienti a trovare i prodotti giusti per i loro gusti e le loro esigenze è fondamentale. In questo articolo, gli ingegneri dell'azienda descrivono come utilizzano ML e NLP per "far emergere i risultati giusti per i clienti". In particolare, il loro motore di intento di ricerca è stato creato per utilizzare l'estrazione di entità, l'addestramento di classificatori, l'estrazione di risorse e opinioni e l'etichettatura del sentimento sulle recensioni dei clienti. Questo è un classico caso d'uso di come funziona NLP nella vendita al dettaglio online.
https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search
### Gestione dellinventario
Aziende innovative e agili come [StitchFix](https://stitchfix.com), un servizio che spedisce abbigliamento ai consumatori, si affidano molto al machine learning per consigli e gestione dell'inventario. I loro team di stilisti lavorano insieme ai loro team di merchandising, infatti: "uno dei nostri data scientist ha armeggiato con un algoritmo genetico e lo ha applicato all'abbigliamento per prevedere quale sarebbe un capo di abbigliamento di successo che oggi non esiste. L'abbiamo portato al team del merchandising e ora possono usarlo come strumento".
https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/
## Assistenza sanitaria
Il settore sanitario può sfruttare il machine learning per ottimizzare le attività di ricerca e anche problemi logistici come la riammissione dei pazienti o l'arresto della diffusione delle malattie.
### Gestione delle sperimentazioni cliniche
La tossicità negli studi clinici è una delle principali preoccupazioni per i produttori di farmaci. Quanta tossicità è tollerabile? In questo studio, l'analisi di vari metodi di sperimentazione clinica ha portato allo sviluppo di un nuovo approccio per prevedere le probabilità dei risultati della sperimentazione clinica. Nello specifico, sono stati in grado di usare random forest per produrre un [classificatore](../../../4-Classification/translations/README.it.md) in grado di distinguere tra gruppi di farmaci.
https://www.sciencedirect.com/science/article/pii/S2451945616302914
### Gestione della riammissione ospedaliera
Le cure ospedaliere sono costose, soprattutto quando i pazienti devono essere ricoverati di nuovo. Questo documento discute un'azienda che utilizza il machine learning per prevedere il potenziale di riammissione utilizzando algoritmi di [clustering](../../../5-Clustering/translations/README.it.md). Questi cluster aiutano gli analisti a "scoprire gruppi di riammissioni che possono condividere una causa comune".
https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning
### Gestione della malattia
La recente pandemia ha messo in luce i modi in cui machine learning può aiutare a fermare la diffusione della malattia. In questo articolo, si riconoscerà l'uso di ARIMA, curve logistiche, regressione lineare e SARIMA. "Questo lavoro è un tentativo di calcolare il tasso di diffusione di questo virus e quindi di prevedere morti, guarigioni e casi confermati, in modo che possa aiutare a prepararci meglio e sopravvivere".
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/
## 🌲 Ecologia e Green Tech
Natura ed ecologia sono costituiti da molti sistemi sensibili in cui l'interazione tra animali e natura viene messa a fuoco. È importante essere in grado di misurare accuratamente questi sistemi e agire in modo appropriato se accade qualcosa, come un incendio boschivo o un calo della popolazione animale.
### Gestione delle foreste
Si è appreso il [Reinforcement Learning](../../../8-Reinforcement/translations/README.it.md) nelle lezioni precedenti. Può essere molto utile quando si cerca di prevedere i modelli in natura. In particolare, può essere utilizzato per monitorare problemi ecologici come gli incendi boschivi e la diffusione di specie invasive. In Canada, un gruppo di ricercatori ha utilizzato Reinforcement Learning per costruire modelli di dinamica degli incendi boschivi da immagini satellitari. Utilizzando un innovativo "processo di diffusione spaziale (SSP)", hanno immaginato un incendio boschivo come "l'agente in qualsiasi cellula del paesaggio". "L'insieme di azioni che l'incendio può intraprendere da un luogo in qualsiasi momento include la diffusione a nord, sud, est o ovest o la mancata diffusione.
Questo approccio inverte la solita configurazione RL poiché la dinamica del corrispondente Processo Decisionale di Markov (MDP) è una funzione nota per la diffusione immediata degli incendi". Maggiori informazioni sugli algoritmi classici utilizzati da questo gruppo al link sottostante.
https://www.frontiersin.org/articles/10.3389/fneur.2018.00006/pieno
### Rilevamento del movimento degli animali
Mentre il deep learning ha creato una rivoluzione nel tracciamento visivo dei movimenti degli animali (qui si può costruire il proprio [localizzatore di orsi polari](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-15963-cxa) ), il machine learning classico ha ancora un posto in questo compito.
I sensori per tracciare i movimenti degli animali da fattoria e l'internet delle cose fanno uso di questo tipo di elaborazione visiva, ma tecniche di machine learning di base sono utili per preelaborare i dati. Ad esempio, in questo documento, le posture delle pecore sono state monitorate e analizzate utilizzando vari algoritmi di classificazione. Si potrebbe riconoscere la curva ROC a pagina 335.
https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf
### Gestione energetica
Nelle lezioni sulla [previsione delle serie temporali](../../../7-TimeSeries/translations/README.it.md), si è invocato il concetto di parchimetri intelligenti per generare entrate per una città in base alla comprensione della domanda e dell'offerta. Questo articolo discute in dettaglio come il raggruppamento, la regressione e la previsione delle serie temporali si sono combinati per aiutare a prevedere il futuro uso di energia in Irlanda, sulla base della misurazione intelligente.
https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf
## Assicurazione
Il settore assicurativo è un altro settore che utilizza machine learning per costruire e ottimizzare modelli finanziari e attuariali sostenibili.
### Gestione della volatilità
MetLife, un fornitore di assicurazioni sulla vita, è disponibile con il modo in cui analizzano e mitigano la volatilità nei loro modelli finanziari. In questo articolo si noteranno le visualizzazioni di classificazione binaria e ordinale. Si scopriranno anche visualizzazioni di previsione.
https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf
## 🎨 Arte, cultura e letteratura
Nelle arti, per esempio nel giornalismo, ci sono molti problemi interessanti. Rilevare notizie false è un problema enorme poiché è stato dimostrato che influenza l'opinione delle persone e persino che fa cadere le democrazie. I musei possono anche trarre vantaggio dall'utilizzo di machine learning in tutto, dalla ricerca di collegamenti tra gli artefatti alla pianificazione delle risorse.
### Rilevamento di notizie false
Rilevare notizie false è diventato un gioco del gatto e del topo nei media di oggi. In questo articolo, i ricercatori suggeriscono che un sistema che combina diverse delle tecniche ML qui studiate può essere testato e il miglior modello implementato: "Questo sistema si basa sull'elaborazione del linguaggio naturale per estrarre funzionalità dai dati e quindi queste funzionalità vengono utilizzate per l'addestramento di classificatori di machine learning come Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD) e Logistic Regression (LR)."
https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf
Questo articolo mostra come la combinazione di diversi campi ML possa produrre risultati interessanti in grado di aiutare a impedire che le notizie false si diffondano e creino danni reali; in questo caso, l'impulso è stato la diffusione di voci su trattamenti COVID che incitavano alla violenza di massa.
### ML per Musei
I musei sono all'apice di una rivoluzione dell'intelligenza artificiale in cui catalogare e digitalizzare le collezioni e trovare collegamenti tra i manufatti sta diventando più facile con l'avanzare della tecnologia. Progetti come [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) stanno aiutando a svelare i misteri di collezioni inaccessibili come gli Archivi Vaticani. Ma anche l'aspetto commerciale dei musei beneficia dei modelli di machine learning.
Ad esempio, l'Art Institute di Chicago ha costruito modelli per prevedere a cosa è interessato il pubblico e quando parteciperà alle esposizioni. L'obiettivo è creare esperienze di visita personalizzate e ottimizzate ogni volta che l'utente visita il museo. "Durante l'anno fiscale 2017, il modello ha previsto presenze e ammissioni entro l'1% di scostamento, afferma Andrew Simnick, vicepresidente senior dell'Art Institute".
https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices
## Marketing
### Segmentazione della clientela
Le strategie di marketing più efficaci si rivolgono ai clienti in modi diversi in base a vari raggruppamenti. In questo articolo vengono discussi gli usi degli algoritmi di Clustering per supportare il marketing differenziato. Il marketing differenziato aiuta le aziende a migliorare il riconoscimento del marchio, raggiungere più clienti e guadagnare di più.
https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/
## 🚀 Sfida
Identificare un altro settore che beneficia di alcune delle tecniche apprese in questo programma di studi e scoprire come utilizza il machine learning.
## [Quiz post-lezione](https://white-water-09ec41f0f.azurestaticapps.net/quiz/50/?loc=it)
## Revisione e Auto Apprendimento
Il team di data science di Wayfair ha diversi video interessanti su come usano il machine learning nella loro azienda. Vale la pena [dare un'occhiata](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)!
## Compito
[Una caccia al tesoro per ML](assignment.it.md)

@ -0,0 +1,13 @@
# Una caccia al tesoro per ML
## Istruzioni
In questa lezione si sono appresi molti casi d'uso reali che sono stati risolti utilizzando machine learning classico. Sebbene l'uso del deep learning, di nuove tecniche e strumenti nell'intelligenza artificiale e lo sfruttamento delle reti neurali abbia contribuito ad accelerare la produzione di strumenti per aiutare in questi settori, il machine learning classico che utilizza le tecniche esposte in questo programma di studi ha ancora un grande valore.
In questo compito, si immagini di partecipare a un [hackathon](https://it.wikipedia.org/wiki/Hackathon). Usare ciò che si è appreso nel programma di studi per proporre una soluzione usando ML classico per risolvere un problema in uno dei settori discussi in questa lezione. Creare una presentazione in cui si discute come implementare la propria idea. Punti bonus se si riesce a raccogliere dati di esempio e creare un modello ML per supportare il proprio concetto!
## Rubrica
| Criteri | Ottimo | Adeguato | Necessita miglioramento |
| -------- | ------------------------------------------------------------------- | ------------------------------------------------- | ---------------------- |
| | Viene esposta una presentazione PowerPoint - bonus per la creazione di un modello | Viene esposta una presentazione di base non innovativa | Il lavoro è incompleto |

@ -0,0 +1,15 @@
# Poscritto: applicazioni del mondo reale di machine learning classico
In questa sezione del programma di studi, verranno presentate alcune applicazioni del mondo reale di machine learning classico. Internet è stata setacciata per trovare [whitepaper](https://it.wikipedia.org/wiki/White_paper) e articoli sulle applicazioni che hanno utilizzato queste strategie, evitando il più possibile le reti neurali, il deep learning e l'intelligenza artificiale. Si scoprirà come viene utilizzato machine learning nei sistemi aziendali, applicazioni ecologiche, finanza, arte e cultura e altro ancora.
![scacchi](../images/chess.jpg)
> Foto di <a href="https://unsplash.com/@childeye?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexis Fauvet</a> su <a href="https://unsplash.com/s/photos/artificial-intelligence?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Lezione
1. [Applicazioni del mondo reale per ML](../1-Applications/translations/README.it.md)
## Crediti
"Real-World Applications" è stato scritto da un team di persone, tra cui [Jen Looper](https://twitter.com/jenlooper) e [Ornella Altunyan](https://twitter.com/ornelladotcom).

@ -3,16 +3,18 @@ import en from './en.json';
import tr from './tr.json'; import tr from './tr.json';
import fr from './fr.json'; import fr from './fr.json';
import ja from './ja.json'; import ja from './ja.json';
import zh - cn from './zh-cn.json'; import zh-cn from './zh-cn.json';
import it from './it.json';
//export const defaultLocale = 'en'; //export const defaultLocale = 'en';
const messages = { const messages = {
en: en[0], en: en[0],
tr: tr[0], tr: tr[0],
fr: fr[0], fr: fr[0],
ja: ja[0], ja: ja[0],
zh - cn: zh - cn[0] it: it[0],
zh-cn: zh-cn[0]
}; };
export default messages; export default messages;

File diff suppressed because it is too large Load Diff

@ -0,0 +1,123 @@
[![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/)
# Machine Learning per Principianti - Un Programma di Studio
> 🌍 Viaggio intorno al mondo esplorando Machine Learning per mezzo delle culture mondiali 🌍
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"!
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.
**✍️ 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 grazie supplementare al Microsoft Student Ambassador Eric Wanjau per le nostre lezioni su R!**
---
# 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:
- 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.
> 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).
**Insegnanti**, sono stati [inclusi alcuni suggerimenti](for-teachers.md) su come usare questo programma di studi.
---
## Incontrare la squadra
[![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!
---
## 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.
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!
## 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
- una sfida
- lettura supplementare
- compito
- 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`.
| 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 |
| 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 |
| 08 | Prezzi della zucca del Nord America 🎃 | [Regressione](../2-Regression/translations/README.it.md) | Costruire un modello di regressione logistica | [lezione](../2-Regression/4-Logistic/translations/README.it.md) | Jen |
| 09 | Una App web 🔌 | [App Web](../3-Web-App/translations/README.it.md) | Costruire un'App web per utilizzare il proprio modello addestrato | [lezione](../3-Web-App/1-Web-App/translations/README.it.md) | Jen |
| 10 | Introduzione alla classificazione | [Classificazione](../4-Classification/translations/README.it.md) | Pulire, preparare e visualizzare i dati; introduzione alla classificazione | [lezione](../4-Classification/1-Introduction/translations/README.it.md) | Jen e Cassie |
| 11 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](../4-Classification/translations/README.it.md) | Introduzione ai classificatori | [lezione](../4-Classification/2-Classifiers-1/translations/README.it.md) | Jen e Cassie |
| 12 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](../4-Classification/translations/README.it.md) | Ancora classificatori | [lezione](../4-Classification/3-Classifiers-2/translations/README.it.md) | Jen e Cassie |
| 13 | Deliziose cucine asiatiche e indiane 🍜 | [Classificazione](../4-Classification/translations/README.it.md) | Costruire un'App web di raccomandazione usando il proprio modello | [lezione](../4-Classification/4-Applied/translations/README.it.md) | Jen |
| 14 | Introduzione al clustering. | [Clustering](../5-Clustering/translations/README.it.md) | Pulire, preparare e visualizzare i dati; introduzione al clustering. | [lezione](../5-Clustering/1-Visualize/translations/README.it.md) | Jen |
| 15 | Esplorare i gusti musicali nigeriani 🎧 | [Clustering](../5-Clustering/translations/README.it.md) | Esplorare il metodo di clustering K-Means | [lezione](../5-Clustering/2-K-Means/translations/README.it.md) | Jen |
| 16 | Introduzione all'elaborazione naturale del linguaggio ☕️ | [Elaborazione del linguaggio naturale](../6-NLP/translations/README.it.md) | Imparare le basi di NLP costruendo un semplice bot | [lezione](../6-NLP/1-Introduction-to-NLP/translations/README.it.md) | Stephen |
| 17 | Attività NLP comuni ☕️ | [Elaborazione del linguaggio naturale](../6-NLP/translations/README.it.md) | Approfondire la conoscenza dell'NLP comprendendo i compiti comuni richiesti quando si tratta di gestire strutture linguistiche | [lezione](../6-NLP/2-Tasks/translations/README.it.md) | Stephen |
| 18 | Traduzione e analisi del sentimento ♥️ | [Elaborazione del linguaggio naturale](../6-NLP/translations/README.it.md) | Traduzione e analisi del sentimento con Jane Austen | [lezione](../6-NLP/3-Translation-Sentiment/translations/README.it.md) | Stephen |
| 19 | Hotel romantici dell'Europa ♥️ | [Elaborazione del linguaggio naturale](../6-NLP/translations/README.it.md) | Analisi del sentimento con le recensioni di hotel 1 | [lezione](../6-NLP/4-Hotel-Reviews-1/translations/README.it.md) | Stephen |
| 20 | Hotel romantici dell'Europa ♥️ | [Elaborazione del linguaggio naturale](../6-NLP/translations/README.it.md) | Analisi del sentimento con le recensioni di hotel 2 | [lezione](../6-NLP/5-Hotel-Reviews-2/translations/README.it.md) | Stephen |
| 21 | Introduzione alle previsioni delle serie temporali | [Time series](../7-TimeSeries/translations/README.it.md) | Introduzione alle previsioni delle serie temporali | [lezione](../7-TimeSeries/1-Introduction/translations/README.it.md) | Francesca |
| 22 | ⚡️ Utilizzo energetico mondiale ⚡️ - previsione di serie temporali con ARIMA | [Time series](../7-TimeSeries/translations/README.it.md) | Previsione di serie temporali con ARIMA | [lezione](../7-TimeSeries/2-ARIMA/translations/README.it.md) | Francesca |
| 23 | Introduzione al reinforcement learning | [Reinforcement learning](../8-Reinforcement/translations/README.it.md) | Introduzione al reinforcement learning con Q-Learning | [lezione](../8-Reinforcement/1-QLearning/translations/README.it.md) | Dmitry |
| 24 | Aiutare Pierino a evitare il lupo! 🐺 | [Reinforcement learning](../8-Reinforcement/translations/README.it.md) | Reinforcement learning Gym | [lezione](../8-Reinforcement/2-Gym/translations/README.it.md) | Dmitry |
| Poscritto | Scenari e applicazioni ML del mondo reale | [ML in natura](../9-Real-World/translations/README.it.md) | Applicazioni interessanti e rivelanti applicazioni di ML classico del mondo reale | [lezione](../9-Real-World/1-Applications/translations/README.it.md) | Team |
## 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`.
## PDF
Si può trovare un pdf con il programma di studio e 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).
## Altri Programmi di Studi\
Il nostro team produce altri programmi di studi! Dare un occhiatat:
- [Sviluppo Web per Principianti](https://aka.ms/webdev-beginners)
- [IoT per Principianti](https://aka.ms/iot-beginners)
Loading…
Cancel
Save