From 8217fb11d6a4f6addf58350ffaaacbc8cc7f3e15 Mon Sep 17 00:00:00 2001 From: Roberto Pauletto Date: Mon, 5 Jul 2021 20:55:47 +0200 Subject: [PATCH 01/56] Chapter 1 Readme;Section 1 and 2 Reame and assignments --- .../1-intro-to-ML/translations/README.it.md | 108 ++++++++++++++++ .../translations/assignment.it.md | 9 ++ .../2-history-of-ML/translations/README.it.md | 118 ++++++++++++++++++ .../translations/assignment.it.md | 11 ++ 1-Introduction/translations/README.it.md | 22 ++++ 5 files changed, 268 insertions(+) create mode 100644 1-Introduction/1-intro-to-ML/translations/README.it.md create mode 100644 1-Introduction/1-intro-to-ML/translations/assignment.it.md create mode 100644 1-Introduction/2-history-of-ML/translations/README.it.md create mode 100644 1-Introduction/2-history-of-ML/translations/assignment.it.md create mode 100644 1-Introduction/translations/README.it.md diff --git a/1-Introduction/1-intro-to-ML/translations/README.it.md b/1-Introduction/1-intro-to-ML/translations/README.it.md new file mode 100644 index 00000000..7d9fe43a --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/README.it.md @@ -0,0 +1,108 @@ +# Introduzione a machine learning + +[![ML, AI, deep learning: qual è la differenza?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, deep learning: qual è la differenza?") + +> 🎥 Fare clic sull'immagine sopra per un video che illustra la differenza tra machine learning, intelligenza artificiale (AI) e deep learning. + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/1/) + +### Introduzione + +Benvenuti in questo corso su machine learning classico per principianti! Che si sia completamente nuovo su questo argomento, o un professionista esperto di ML che cerca di rispolverare un'area, è un piacere avervi con noi! Si vuole creare un punto di partenza amichevole per lo studio di ML e saremo lieti di valutare, rispondere e incorporare il vostro [feedback](https://github.com/microsoft/ML-For-Beginners/discussions). + +[![Introduzione a ML](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 " Introduzione a ML") + +> 🎥 Fare clic sull'immagine sopra per un video: John Guttag del MIT introduce machine learning + +### Iniziare con machine learning + +Prima di iniziare con questo programma di studi, è necessario che il computer sia configurato e pronto per eseguire i notebook in locale. + +- **Si configuri la propria macchina con l'aiuto di questi video**. Si scopra di più su come configurare la propria macchina in questa [serie di video](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6). +- **Imparare Python**. Si consiglia inoltre di avere una conoscenza di base di [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa), un linguaggio di programmazione utile per i data scientist che si utilizzerà in questo corso. +- **Imparare Node.js e JavaScript**. Talvolta in questo corso si usa anche JavaScript durante la creazione di app web, quindi sarà necessario disporre di [node](https://nodejs.org) e [npm](https://www.npmjs.com/) installati, oltre a [Visual Studio Code](https://code.visualstudio.com/) disponibile sia per lo sviluppo Python che JavaScript. +- **Creare un account GitHub**. E' probabile che si [](https://github.com)disponga già di un account GitHub, ma in caso contrario occorre crearne uno e poi eseguire il fork di questo programma di studi per utilizzarlo autonomamente. (Sentitevi liberi di darci anche una stella 😊) +- **Esplorare Scikit-learn**. Familiarizzare con Scikit-learn,[]([https://scikit-learn.org/stable/user_guide.html) un insieme di librerie ML a cui si farà riferimento in queste lezioni. + +### Che cos'è machine learning? + +Il termine "machine learning" è uno dei termini più popolari e usati di oggi. C'è una buona possibilità che si abbia sentito questo termine almeno una volta se si ha una sorta di familiarità con la tecnologia, indipendentemente dal campo in cui si lavora. I meccanismi di machine learning, tuttavia, sono un mistero per la maggior parte delle persone. Per un principiante di machine learning l'argomento a volte può sembrare soffocante. Pertanto, è importante capire cos'è effettivamente machine learning e impararlo passo dopo passo, attraverso esempi pratici. + +![ml curva di hype](../images/hype.png) + +> Google Trends mostra la recente "curva di hype" del termine "machine learning" + +Si vive in un universo pieno di misteri affascinanti. Grandi scienziati come Stephen Hawking, Albert Einstein e molti altri hanno dedicato la loro vita alla ricerca di informazioni significative che svelino i misteri del mondo circostante. Questa è la condizione umana dell'apprendimento: un bambino impara cose nuove e scopre la struttura del suo mondo anno dopo anno mentre cresce fino all'età adulta. + +Il cervello e i sensi di un bambino percepiscono i fatti dell'ambiente circostante e apprendono gradualmente i modelli di vita nascosti che aiutano il bambino a creare regole logiche per identificare i modelli appresi. Il processo di apprendimento del cervello umano rende l'essere umano la creatura vivente più sofisticata di questo mondo. Imparare continuamente scoprendo schemi nascosti e poi innovare su questi schemi ci consente di migliorarsi sempre di più per tutta la vita. Questa capacità di apprendimento e capacità di evoluzione è correlata a un concetto chiamato [plasticità cerebrale](https://www.simplypsychology.org/brain-plasticity.html). Superficialmente, si possono tracciare alcune somiglianze motivazionali tra il processo di apprendimento del cervello umano e i concetti di machine learning. + +Il [cervello umano](https://www.livescience.com/29365-human-brain.html) percepisce le cose dal mondo reale, elabora le informazioni percepite, prende decisioni razionali ed esegue determinate azioni in base alle circostanze. Questo è ciò che viene chiamato comportarsi in modo intelligente. Quando si programma un facsimile del processo comportamentale intelligente su una macchina, si parla di intelligenza artificiale (AI). + +Sebbene i termini possano essere confusi, machine learning (ML) è un importante sottoinsieme dell'intelligenza artificiale. **Machine learning si occupa di utilizzare algoritmi specializzati per scoprire informazioni significative e trovare modelli nascosti dai dati percepiti per corroborare il processo decisionale razionale**. + +![AI, machine learning, deep learning, data science](../images/ai-ml-ds.png) + +> Un diagramma che mostra le relazioni tra intelligenza artificiale (AI), machine learning, deep learning e data science. Infografica di [Jen Looper](https://twitter.com/jenlooper) ispirata a [questa grafica](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) + +## Ecco cosa si imparerà in questo corso + +In questo programma di studi, saranno tratteti solo i concetti fondamentali di machine learning che un principiante deve conoscere. Si tratterà di ciò che viene chiamato "machine learning classico" principalmente utilizzando Scikit-learn, una eccellente libreria che molti studenti usano per apprendere le basi. Per comprendere concetti più ampi di intelligenza artificiale o deep learning, è indispensabile una forte conoscenza fondamentale di machine learning, e quindi la si vorrebbe offrire qui. + +In questo corso si imparerà: + +- concetti fondamentali di machine learning +- la storia di ML +- ML e correttezza +- tecniche di regressione ML +- tecniche di classificazione ML +- tecniche di clustering ML +- tecniche di elaborazione del linguaggio naturale ML +- tecniche ML di previsione delle serie temporali +- reinforcement learning +- applicazioni del mondo reale per ML +## Cosa non verrà trattato + +- deep learning +- reti neurali +- AI (intelligenza artificiale) + +Per rendere l'esperienza di apprendimento migliore, si eviteranno le complessità delle reti neurali, del "deep learning" (costruzione di modelli a più livelli utilizzando le reti neurali) e dell'AI, di cui si tratterà in un altro programma di studi. Si offrirà anche un prossimo programma di studi di data science per concentrarsi su quell'aspetto di questo campo più ampio. +## Perché studiare machine learning? + +Machine learning, dal punto di vista dei sistemi, è definito come la creazione di sistemi automatizzati in grado di apprendere modelli nascosti dai dati per aiutare a prendere decisioni intelligenti. + +Questa motivazione è vagamente ispirata dal modo in cui il cervello umano apprende determinate cose in base ai dati che percepisce dal mondo esterno. + +✅ Si pensi per un minuto al motivo per cui un'azienda dovrebbe provare a utilizzare strategie di machine learning rispetto alla creazione di un motore cablato a codice basato su regole codificate. + +### Applicazioni di machine learning + +Le applicazioni di machine learning sono ormai quasi ovunque e sono onnipresenti come i dati che circolano nelle società, generati dagli smartphone, dispositivi connessi e altri sistemi. Considerando l'immenso potenziale degli algoritmi di machine learning all'avanguardia, i ricercatori hanno esplorato la loro capacità di risolvere problemi multidimensionali e multidisciplinari della vita reale con grandi risultati positivi. + +**Si può utilizzare machine learning in molti modi**: + +- Per prevedere la probabilità di malattia dall'anamnesi o dai rapporti di un paziente. +- Per sfruttare i dati meteorologici per prevedere gli eventi meteorologici. +- Per comprendere il sentimento di un testo. +- Per rilevare notizie false per fermare la diffusione della propaganda. + +La finanza, l'economia, le scienze della terra, l'esplorazione spaziale, l'ingegneria biomedica, le scienze cognitive e persino i campi delle scienze umanistiche hanno adattato machine learning per risolvere gli ardui problemi di elaborazione dati del proprio campo. + +Machine learning automatizza il processo di individuazione dei modelli trovando approfondimenti significativi dal mondo reale o dai dati generati. Si è dimostrato di grande valore in applicazioni aziendali, sanitarie e finanziarie, tra le altre. + +Nel prossimo futuro, comprendere le basi di machine learning sarà un must per le persone in qualsiasi campo a causa della sua adozione diffusa. + +--- +## 🚀 Sfida + +Disegnare, su carta o utilizzando un'app online come [Excalidraw](https://excalidraw.com/), la propria comprensione delle differenze tra AI, ML, deep learning e data science. Aggiungere alcune idee sui problemi che ciascuna di queste tecniche è in grado di risolvere. + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2/) + +## Revisione e Auto Apprendimento + +Per saperne di più su come si può lavorare con gli algoritmi ML nel cloud, si segua questo [percorso di apprendimento](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa). + +## Compito + +[Tempi di apprendimento brevi](assignment.it.md) diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.it.md b/1-Introduction/1-intro-to-ML/translations/assignment.it.md new file mode 100644 index 00000000..b4e3cece --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/assignment.it.md @@ -0,0 +1,9 @@ +# Tempi di apprendimento brevi + +## Istruzioni + +In questo compito senza valutazione, si dovrebbe rispolverare Python e rendere il proprio ambiente attivo e funzionante, in grado di eseguire notebook. + +Si segua questo [percorso di apprendimento di Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa) e quindi si configurino i propri sistemi seguendo questi video introduttivi: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/2-history-of-ML/translations/README.it.md b/1-Introduction/2-history-of-ML/translations/README.it.md new file mode 100644 index 00000000..74caa19d --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/README.it.md @@ -0,0 +1,118 @@ +# Storia di machine learning + +![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png) +> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/) + +In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale. + +La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence): questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante". + +## Scoperte rilevanti + +- 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente. +- 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati. +- 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente. +- 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning. +- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli. +- 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward). +- Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali. + +✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale? +## 1950: Macchine che pensano + +Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale). + +## 1956: Progetto di Ricerca Estivo Dartmouth + +"Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo. + +Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky. + +Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). + +## 1956 - 1974: "Gli anni d'oro" + +Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) + +La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice. + +La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono: + +* [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente". + + ![Shakey, un robot intelligente](../images/shakey.jpg) + > Shakey nel 1972 + +* Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP. + + ![Eliza, un bot](../images/eliza.png) + > Una versione di Eliza, un chatbot + +* Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio. + + [![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU") + + > 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU + +## 1974 - 1980: "L'inverno dell'AI" + +Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono: + +- **Limitazioni**. La potenza di calcolo era troppo limitata. +- **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo. +- **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi. +- **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci: + - I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) + - L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione. + +Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) ;. I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili. + +## Sistemi esperti degli anni '80 + +Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)). + +Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti. + +Questa era ha visto anche una crescente attenzione rivolta alle reti neurali. + +## 1987 - 1993: AI 'Chill' + +La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data. + +## 1993 - 2011 + +Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina. + +## Adesso + +Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia. + +[![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning") +> 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione + +--- + +## 🚀 Sfida + +Approfondire uno di questi momenti storici e scoprire + di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4/) + +## Revisione e Auto Apprendimento + +Ecco gli elementi da guardare e ascoltare: + +[Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739) + +[![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd") + +## Compito + +[Creare una sequenza temporale](assignment.it.md) diff --git a/1-Introduction/2-history-of-ML/translations/assignment.it.md b/1-Introduction/2-history-of-ML/translations/assignment.it.md new file mode 100644 index 00000000..4de7ed14 --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/assignment.it.md @@ -0,0 +1,11 @@ +# Creare una sequenza temporale + +## Istruzioni + +Usando [questo repository](https://github.com/Digital-Humanities-Toolkit/timeline-builder), si crei una sequenza temporale di alcuni aspetti della storia di algoritmi, matematica, statistica, AI o ML, o una combinazione di questi. Ci si può concentrare su una persona, un'idea o un lungo lasso di tempo di pensiero. Ci si assicuri di aggiungere elementi multimediali. + +## Rubrica + +| Criteri | Ottimo | Adeguato | Necessita miglioramento | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| | Una sequenza temporale distribuita viene presentata come una pagina GitHub | Il codice è incompleto e non è stato distribuito | La sequenza temporale è incompleta, non ben studiata e non implementata | diff --git a/1-Introduction/translations/README.it.md b/1-Introduction/translations/README.it.md new file mode 100644 index 00000000..ea29d1d3 --- /dev/null +++ b/1-Introduction/translations/README.it.md @@ -0,0 +1,22 @@ +# Introduzione a machine learning + +In questa sezione del curriculum, verranno presentati i concetti di base sottostanti machine learning, di cosa si tratta, e si imparerà la sua storia e le tecniche utilizzate dai ricercatori per lavorarci. Si esplorerà insieme questo nuovo mondo di ML! + +![globo](../images/globe.jpg) +> Foto di Bill Oxford su Unsplash + +### Lezioni + +1. [Introduzione a machine learning](../1-intro-to-ML/translations/README.it.md) +1. [La storia di machine learning e dell'AI](../2-history-of-ML/translations/README.it.md) +1. [Equità e machine learning](../3-fairness/translations/README.it.md) +1. [Tecniche di machine learning](../4-techniques-of-ML/translations/README.it.md) +### Crediti + +"Introduzione a Machine Learning" è stato scritto con ♥️ da un team di persone tra cui [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) e [Jen Looper](https://twitter.com/jenlooper) + +"La Storia di Machine Learning" è stato scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Amy Boyd](https://twitter.com/AmyKateNicho) + +"Equità e Machine Learning" è stato scritto con ♥️ da [Tomomi Imura](https://twitter.com/girliemac) + +"Tecniche di Machine Learning" è stato scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Chris Noring](https://twitter.com/softchris) \ No newline at end of file From 3d3abad19a040209b984d04284d260825fff34ba Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Tue, 6 Jul 2021 19:28:37 +0700 Subject: [PATCH 02/56] docs: translate 1-Tools (WIP) --- .../1-Tools/translations/README.id.md | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 2-Regression/1-Tools/translations/README.id.md diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md new file mode 100644 index 00000000..ca32b820 --- /dev/null +++ b/2-Regression/1-Tools/translations/README.id.md @@ -0,0 +1,207 @@ +# Get started with Python and Scikit-learn for regression models + +![Ringkisan regresi dalam sebuah catatan sketsa](../../sketchnotes/ml-regression.png) + +> Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Kuis Pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/) +## Pembukaan + +Dalam keempat pelajaran ini, kamu akan belajar bagaimana membangun model regresi. Kita akan berdiskusi apa fungsi model tersebut dalam sejenak. Tetapi sebelum kamu melakukan apapun, pastikan bahwa kamu sudah mempunyai alat-alat yang diperlukan untuk memulai! + +Dalam pelajaran ini, kamu akan belajar bagaimana untuk: + +- Konfigurasi komputermu untuk tugas pembelajaran. +- Bekerja dengan Jupyter notebooks. +- Menggunakan Scikit-learn, termasuk instalasi. +- Menjelajahi regresi linear dengan latihan *hands-on*. + + +## Instalasi dan konfigurasi + +[![Menggunakan Python dalam Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Menggunakan Python dalam Visual Studio Code") + +> 🎥 Klik foto di atas untuk sebuah video: menggunakan Python dalam VS Code + +1. **Pasang Python**. Pastikan bahwa [Python](https://www.python.org/downloads/) telah dipasang di komputermu. Kamu akan menggunakan Python untuk banyak tugas *data science* dan *machine learning*. Kebanyakan sistem komputer sudah diinstal dengan Python. Adapula *[Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa)* yang berguna untuk membantu proses pemasangan untuk beberapa pengguna. + + Beberapa penggunaan Python memerlukan satu versi perangkat lunak tersebut, sedangkan beberapa penggunaan lainnya mungkin memerlukan versi Python yang beda lagi. Oleh sebab itulah akan sangat berguna untuk bekerja dalam sebuah *[virtual environment](https://docs.python.org/3/library/venv.html)* (lingkungan virtual). + +2. **Pasang Visual Studio Code**. Pastikan kamu sudah memasangkan Visual Studio Code di komputermu. Ikuti instruksi-instruksi ini untuk [memasangkan Visual Studio Code](https://code.visualstudio.com/) untuk instalasi dasar. Kamu akan menggunakan Python dalam Visual Studio Code dalam kursus ini, jadi kamu mungkin akan ingin mencari tahu cara [mengkonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa) untuk menggunakan Python. + + > Nyamankan diri dengan Python dengan mengerjakan [koleksi modul pembelajaran ini](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-15963-cxa) + +3. **Pasang Scikit-learn**, dengan mengikuti [instruksi di sini](https://scikit-learn.org/stable/install.html). Karena harus dipastikan bahwa kamu sedang menggunakan Python 3, kami anjurkan kamu menggunakan sebuah *virtual environment*. Ingatlah juga bahwa jika kamu ingin memasangkan ini di sebuah M1 Mac, ada instruksi khusus dalam laman yang ditautkan di atas. + +4. **Pasang Jupyter Notebook**. Kamu akan harus [memasang paket Jupyter](https://pypi.org/project/jupyter/). + +## Lingkungan penulisan ML-mu + +Kamu akan menggunakan ***notebooks*** untuk bekerja dengan kode Python-mu dan membuat model *machine learning*-mu. Jenis file ini adalah alat yang sering digunakan *data scientists* dan dapat diidentifikasikan dengan akhiran/ekstensi `.ipynb`. + +Notebooks are an interactive environment that allow the developer to both code and add notes and write documentation around the code which is quite helpful for experimental or research-oriented projects. + +### Exercise - work with a notebook + +In this folder, you will find the file _notebook.ipynb_. + +1. Open _notebook.ipynb_ in Visual Studio Code. + + A Jupyter server will start with Python 3+ started. You will find areas of the notebook that can be `run`, pieces of code. You can run a code block, by selecting the icon that looks like a play button. + +1. Select the `md` icon and add a bit of markdown, and the following text **# Welcome to your notebook**. + + Next, add some Python code. + +1. Type **print('hello notebook')** in the code block. +1. Select the arrow to run the code. + + You should see the printed statement: + + ```output + hello notebook + ``` + +![VS Code with a notebook open](images/notebook.png) + +You can interleaf your code with comments to self-document the notebook. + +✅ Think for a minute how different a web developer's working environment is versus that of a data scientist. + +## Up and running with Scikit-learn + +Now that Python is set up in your local environment, and you are comfortable with Jupyter notebooks, let's get equally comfortable with Scikit-learn (pronounce it `sci` as in `science`). Scikit-learn provides an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you perform ML tasks. + +According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities." + +In this course, you will use Scikit-learn and other tools to build machine learning models to perform what we call 'traditional machine learning' tasks. We have deliberately avoided neural networks and deep learning, as they are better covered in our forthcoming 'AI for Beginners' curriculum. + +Scikit-learn makes it straightforward to build models and evaluate them for use. It is primarily focused on using numeric data and contains several ready-made datasets for use as learning tools. It also includes pre-built models for students to try. Let's explore the process of loading prepackaged data and using a built in estimator first ML model with Scikit-learn with some basic data. + +## Exercise - your first Scikit-learn notebook + +> This tutorial was inspired by the [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-learn's web site. + +In the _notebook.ipynb_ file associated to this lesson, clear out all the cells by pressing the 'trash can' icon. + +In this section, you will work with a small dataset about diabetes that is built into Scikit-learn for learning purposes. Imagine that you wanted to test a treatment for diabetic patients. Machine Learning models might help you determine which patients would respond better to the treatment, based on combinations of variables. Even a very basic regression model, when visualized, might show information about variables that would help you organize your theoretical clinical trials. + +✅ There are many types of regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use linear regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of cuisine should be considered vegan or not, you're looking for a **category assignment** so you would use logistic regression. You'll learn more about logistic regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate. + +Let's get started on this task. + +### Import libraries + +For this task we will import some libraries: + +- **matplotlib**. It's a useful [graphing tool](https://matplotlib.org/) and we will use it to create a line plot. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is a useful library for handling numeric data in Python. +- **sklearn**. This is the Scikit-learn library. + +Import some libraries to help with your tasks. + +1. Add imports by typing the following code: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + Above you are importing `matplottlib`, `numpy` and you are importing `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` is used for splitting data into training and test sets. + +### The diabetes dataset + +The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) includes 442 samples of data around diabetes, with 10 feature variables, some of which include: + +age: age in years +bmi: body mass index +bp: average blood pressure +s1 tc: T-Cells (a type of white blood cells) + +✅ This dataset includes the concept of 'sex' as a feature variable important to research around diabetes. Many medical datasets include this type of binary classification. Think a bit about how categorizations such as this might exclude certain parts of a population from treatments. + +Now, load up the X and y data. + +> 🎓 Remember, this is supervised learning, and we need a named 'y' target. + +In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` signals that `X` will be a data matrix, and `y` will be the regression target. + +1. Add some print commands to show the shape of the data matrix and its first element: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + What you are getting back as a response, is a tuple. What you are doing is to assign the two first values of the tuple to `X` and `y` respectively. Learn more [about tuples](https://wikipedia.org/wiki/Tuple). + + You can see that this data has 442 items shaped in arrays of 10 elements: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ Think a bit about the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What is this dataset demonstrating, given that target? + +2. Next, select a portion of this dataset to plot by arranging it into a new array using numpy's `newaxis` function. We are going to use linear regression to generate a line between values in this data, according to a pattern it determines. + + ```python + X = X[:, np.newaxis, 2] + ``` + + ✅ At any time, print out the data to check its shape. + +3. Now that you have data ready to be plotted, you can see if a machine can help determine a logical split between the numbers in this dataset. To do this, you need to split both the data (X) and the target (y) into test and training sets. Scikit-learn has a straightforward way to do this; you can split your test data at a given point. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. Now you are ready to train your model! Load up the linear regression model and train it with your X and y training sets using `model.fit()`: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` is a function you'll see in many ML libraries such as TensorFlow + +5. Then, create a prediction using test data, using the function `predict()`. This will be used to draw the line between data groups + + ```python + y_pred = model.predict(X_test) + ``` + +6. Now it's time to show the data in a plot. Matplotlib is a very useful tool for this task. Create a scatterplot of all the X and y test data, and use the prediction to draw a line in the most appropriate place, between the model's data groupings. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.show() + ``` + + ![a scatterplot showing datapoints around diabetes](./images/scatterplot.png) + + ✅ Think a bit about what's going on here. A straight line is running through many small dots of data, but what is it doing exactly? Can you see how you should be able to use this line to predict where a new, unseen data point should fit in relationship to the plot's y axis? Try to put into words the practical use of this model. + +Congratulations, you built your first linear regression model, created a prediction with it, and displayed it in a plot! + +--- +## 🚀Challenge + +Plot a different variable from this dataset. Hint: edit this line: `X = X[:, np.newaxis, 2]`. Given this dataset's target, what are you able to discover about the progression of diabetes as a disease? +## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) + +## Review & Self Study + +In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Read a little about the differences between these methods, or take a look at [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) + +Read more about the concept of regression and think about what kinds of questions can be answered by this technique. Take this [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) to deepen your understanding. + +## Assignment + +[A different dataset](assignment.md) From b084ad214acd0aa5f299e46f1d0b514e1a5e0823 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Tue, 6 Jul 2021 19:28:37 +0700 Subject: [PATCH 03/56] Add Indonesian translation for 2-Regression/1-Tools (WIP) --- .../1-Tools/translations/README.id.md | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 2-Regression/1-Tools/translations/README.id.md diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md new file mode 100644 index 00000000..ca32b820 --- /dev/null +++ b/2-Regression/1-Tools/translations/README.id.md @@ -0,0 +1,207 @@ +# Get started with Python and Scikit-learn for regression models + +![Ringkisan regresi dalam sebuah catatan sketsa](../../sketchnotes/ml-regression.png) + +> Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Kuis Pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/) +## Pembukaan + +Dalam keempat pelajaran ini, kamu akan belajar bagaimana membangun model regresi. Kita akan berdiskusi apa fungsi model tersebut dalam sejenak. Tetapi sebelum kamu melakukan apapun, pastikan bahwa kamu sudah mempunyai alat-alat yang diperlukan untuk memulai! + +Dalam pelajaran ini, kamu akan belajar bagaimana untuk: + +- Konfigurasi komputermu untuk tugas pembelajaran. +- Bekerja dengan Jupyter notebooks. +- Menggunakan Scikit-learn, termasuk instalasi. +- Menjelajahi regresi linear dengan latihan *hands-on*. + + +## Instalasi dan konfigurasi + +[![Menggunakan Python dalam Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Menggunakan Python dalam Visual Studio Code") + +> 🎥 Klik foto di atas untuk sebuah video: menggunakan Python dalam VS Code + +1. **Pasang Python**. Pastikan bahwa [Python](https://www.python.org/downloads/) telah dipasang di komputermu. Kamu akan menggunakan Python untuk banyak tugas *data science* dan *machine learning*. Kebanyakan sistem komputer sudah diinstal dengan Python. Adapula *[Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa)* yang berguna untuk membantu proses pemasangan untuk beberapa pengguna. + + Beberapa penggunaan Python memerlukan satu versi perangkat lunak tersebut, sedangkan beberapa penggunaan lainnya mungkin memerlukan versi Python yang beda lagi. Oleh sebab itulah akan sangat berguna untuk bekerja dalam sebuah *[virtual environment](https://docs.python.org/3/library/venv.html)* (lingkungan virtual). + +2. **Pasang Visual Studio Code**. Pastikan kamu sudah memasangkan Visual Studio Code di komputermu. Ikuti instruksi-instruksi ini untuk [memasangkan Visual Studio Code](https://code.visualstudio.com/) untuk instalasi dasar. Kamu akan menggunakan Python dalam Visual Studio Code dalam kursus ini, jadi kamu mungkin akan ingin mencari tahu cara [mengkonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa) untuk menggunakan Python. + + > Nyamankan diri dengan Python dengan mengerjakan [koleksi modul pembelajaran ini](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-15963-cxa) + +3. **Pasang Scikit-learn**, dengan mengikuti [instruksi di sini](https://scikit-learn.org/stable/install.html). Karena harus dipastikan bahwa kamu sedang menggunakan Python 3, kami anjurkan kamu menggunakan sebuah *virtual environment*. Ingatlah juga bahwa jika kamu ingin memasangkan ini di sebuah M1 Mac, ada instruksi khusus dalam laman yang ditautkan di atas. + +4. **Pasang Jupyter Notebook**. Kamu akan harus [memasang paket Jupyter](https://pypi.org/project/jupyter/). + +## Lingkungan penulisan ML-mu + +Kamu akan menggunakan ***notebooks*** untuk bekerja dengan kode Python-mu dan membuat model *machine learning*-mu. Jenis file ini adalah alat yang sering digunakan *data scientists* dan dapat diidentifikasikan dengan akhiran/ekstensi `.ipynb`. + +Notebooks are an interactive environment that allow the developer to both code and add notes and write documentation around the code which is quite helpful for experimental or research-oriented projects. + +### Exercise - work with a notebook + +In this folder, you will find the file _notebook.ipynb_. + +1. Open _notebook.ipynb_ in Visual Studio Code. + + A Jupyter server will start with Python 3+ started. You will find areas of the notebook that can be `run`, pieces of code. You can run a code block, by selecting the icon that looks like a play button. + +1. Select the `md` icon and add a bit of markdown, and the following text **# Welcome to your notebook**. + + Next, add some Python code. + +1. Type **print('hello notebook')** in the code block. +1. Select the arrow to run the code. + + You should see the printed statement: + + ```output + hello notebook + ``` + +![VS Code with a notebook open](images/notebook.png) + +You can interleaf your code with comments to self-document the notebook. + +✅ Think for a minute how different a web developer's working environment is versus that of a data scientist. + +## Up and running with Scikit-learn + +Now that Python is set up in your local environment, and you are comfortable with Jupyter notebooks, let's get equally comfortable with Scikit-learn (pronounce it `sci` as in `science`). Scikit-learn provides an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you perform ML tasks. + +According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities." + +In this course, you will use Scikit-learn and other tools to build machine learning models to perform what we call 'traditional machine learning' tasks. We have deliberately avoided neural networks and deep learning, as they are better covered in our forthcoming 'AI for Beginners' curriculum. + +Scikit-learn makes it straightforward to build models and evaluate them for use. It is primarily focused on using numeric data and contains several ready-made datasets for use as learning tools. It also includes pre-built models for students to try. Let's explore the process of loading prepackaged data and using a built in estimator first ML model with Scikit-learn with some basic data. + +## Exercise - your first Scikit-learn notebook + +> This tutorial was inspired by the [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-learn's web site. + +In the _notebook.ipynb_ file associated to this lesson, clear out all the cells by pressing the 'trash can' icon. + +In this section, you will work with a small dataset about diabetes that is built into Scikit-learn for learning purposes. Imagine that you wanted to test a treatment for diabetic patients. Machine Learning models might help you determine which patients would respond better to the treatment, based on combinations of variables. Even a very basic regression model, when visualized, might show information about variables that would help you organize your theoretical clinical trials. + +✅ There are many types of regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use linear regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of cuisine should be considered vegan or not, you're looking for a **category assignment** so you would use logistic regression. You'll learn more about logistic regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate. + +Let's get started on this task. + +### Import libraries + +For this task we will import some libraries: + +- **matplotlib**. It's a useful [graphing tool](https://matplotlib.org/) and we will use it to create a line plot. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is a useful library for handling numeric data in Python. +- **sklearn**. This is the Scikit-learn library. + +Import some libraries to help with your tasks. + +1. Add imports by typing the following code: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + Above you are importing `matplottlib`, `numpy` and you are importing `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` is used for splitting data into training and test sets. + +### The diabetes dataset + +The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) includes 442 samples of data around diabetes, with 10 feature variables, some of which include: + +age: age in years +bmi: body mass index +bp: average blood pressure +s1 tc: T-Cells (a type of white blood cells) + +✅ This dataset includes the concept of 'sex' as a feature variable important to research around diabetes. Many medical datasets include this type of binary classification. Think a bit about how categorizations such as this might exclude certain parts of a population from treatments. + +Now, load up the X and y data. + +> 🎓 Remember, this is supervised learning, and we need a named 'y' target. + +In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` signals that `X` will be a data matrix, and `y` will be the regression target. + +1. Add some print commands to show the shape of the data matrix and its first element: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + What you are getting back as a response, is a tuple. What you are doing is to assign the two first values of the tuple to `X` and `y` respectively. Learn more [about tuples](https://wikipedia.org/wiki/Tuple). + + You can see that this data has 442 items shaped in arrays of 10 elements: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ Think a bit about the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What is this dataset demonstrating, given that target? + +2. Next, select a portion of this dataset to plot by arranging it into a new array using numpy's `newaxis` function. We are going to use linear regression to generate a line between values in this data, according to a pattern it determines. + + ```python + X = X[:, np.newaxis, 2] + ``` + + ✅ At any time, print out the data to check its shape. + +3. Now that you have data ready to be plotted, you can see if a machine can help determine a logical split between the numbers in this dataset. To do this, you need to split both the data (X) and the target (y) into test and training sets. Scikit-learn has a straightforward way to do this; you can split your test data at a given point. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. Now you are ready to train your model! Load up the linear regression model and train it with your X and y training sets using `model.fit()`: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` is a function you'll see in many ML libraries such as TensorFlow + +5. Then, create a prediction using test data, using the function `predict()`. This will be used to draw the line between data groups + + ```python + y_pred = model.predict(X_test) + ``` + +6. Now it's time to show the data in a plot. Matplotlib is a very useful tool for this task. Create a scatterplot of all the X and y test data, and use the prediction to draw a line in the most appropriate place, between the model's data groupings. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.show() + ``` + + ![a scatterplot showing datapoints around diabetes](./images/scatterplot.png) + + ✅ Think a bit about what's going on here. A straight line is running through many small dots of data, but what is it doing exactly? Can you see how you should be able to use this line to predict where a new, unseen data point should fit in relationship to the plot's y axis? Try to put into words the practical use of this model. + +Congratulations, you built your first linear regression model, created a prediction with it, and displayed it in a plot! + +--- +## 🚀Challenge + +Plot a different variable from this dataset. Hint: edit this line: `X = X[:, np.newaxis, 2]`. Given this dataset's target, what are you able to discover about the progression of diabetes as a disease? +## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) + +## Review & Self Study + +In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Read a little about the differences between these methods, or take a look at [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) + +Read more about the concept of regression and think about what kinds of questions can be answered by this technique. Take this [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) to deepen your understanding. + +## Assignment + +[A different dataset](assignment.md) From d553016ce088d4aeca1c5f2274e5edd029885ee2 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Tue, 6 Jul 2021 21:14:18 +0700 Subject: [PATCH 04/56] Add Indonesian translation for 2-Regression/1-Tools --- .../1-Tools/translations/README.id.md | 135 +++++++++--------- 1 file changed, 68 insertions(+), 67 deletions(-) diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md index ca32b820..b29301e2 100644 --- a/2-Regression/1-Tools/translations/README.id.md +++ b/2-Regression/1-Tools/translations/README.id.md @@ -1,4 +1,4 @@ -# Get started with Python and Scikit-learn for regression models +# Memulai dengan Python dan Scikit-learn untuk model regresi ![Ringkisan regresi dalam sebuah catatan sketsa](../../sketchnotes/ml-regression.png) @@ -23,7 +23,7 @@ Dalam pelajaran ini, kamu akan belajar bagaimana untuk: > 🎥 Klik foto di atas untuk sebuah video: menggunakan Python dalam VS Code -1. **Pasang Python**. Pastikan bahwa [Python](https://www.python.org/downloads/) telah dipasang di komputermu. Kamu akan menggunakan Python untuk banyak tugas *data science* dan *machine learning*. Kebanyakan sistem komputer sudah diinstal dengan Python. Adapula *[Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa)* yang berguna untuk membantu proses pemasangan untuk beberapa pengguna. +1. **Pasang Python**. Pastikan bahwa [Python](https://www.python.org/downloads/) telah dipasang di komputermu. Kamu akan menggunakan Python untuk banyak tugas *data science* dan *machine learning*. Python sudah dipasang di kebanyakan sistem komputer. Adapula *[Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa)* yang berguna untuk membantu proses pemasangan untuk beberapa pengguna. Beberapa penggunaan Python memerlukan satu versi perangkat lunak tersebut, sedangkan beberapa penggunaan lainnya mungkin memerlukan versi Python yang beda lagi. Oleh sebab itulah akan sangat berguna untuk bekerja dalam sebuah *[virtual environment](https://docs.python.org/3/library/venv.html)* (lingkungan virtual). @@ -39,68 +39,70 @@ Dalam pelajaran ini, kamu akan belajar bagaimana untuk: Kamu akan menggunakan ***notebooks*** untuk bekerja dengan kode Python-mu dan membuat model *machine learning*-mu. Jenis file ini adalah alat yang sering digunakan *data scientists* dan dapat diidentifikasikan dengan akhiran/ekstensi `.ipynb`. -Notebooks are an interactive environment that allow the developer to both code and add notes and write documentation around the code which is quite helpful for experimental or research-oriented projects. +*Notebook* adalah sebuah lingkungan interaktif yang memungkinkan seorang *developer* untuk menulis kode, catatan, dan dokumentasi mengenai kode tersebut sehingga menjadi sangat berguna untuk proyek eksperimental ataupun riset. -### Exercise - work with a notebook +### Latihan - bekerja dengan sebuah *notebook* -In this folder, you will find the file _notebook.ipynb_. +Dalam folder ini, kamu akan menemukan file _notebook.ipynb_. -1. Open _notebook.ipynb_ in Visual Studio Code. +1. Buka _notebook.ipynb_ dalam Visual Studio Code. - A Jupyter server will start with Python 3+ started. You will find areas of the notebook that can be `run`, pieces of code. You can run a code block, by selecting the icon that looks like a play button. + Sebuah server Jupyter akan mulai dengan Python 3+. Kamu akan menemukan bagian-bagian *notebook* yang dapat di-`run` (dijalankan). Bagian-bagian tersebut adalah carikan-carikan kode. Kamu bisa menjalankan secarik kode dengan mengklik tombol ▶. -1. Select the `md` icon and add a bit of markdown, and the following text **# Welcome to your notebook**. +2. Pilih ikon `md` dan tambahlah sedikit *markdown*: **# Selamat datang di *notebook* saya!** - Next, add some Python code. + Lalu, tambahlah sedikit kode Python. -1. Type **print('hello notebook')** in the code block. -1. Select the arrow to run the code. +3. Ketik **print('hello notebook')** dalam blok kode. - You should see the printed statement: +4. Klik ▶ untuk menjalankan kode. + + Hasilnya harusnya ini: ```output hello notebook ``` -![VS Code with a notebook open](images/notebook.png) +![Sebuah *notebook* yang dibuka di VS Code](images/notebook.png) + +Kamu bisa menyelipkan catatan-catatan antara kodemu untuk mendokumentasi *notebook*-nya. -You can interleaf your code with comments to self-document the notebook. +✅ Pikirkanlah sejenak bagaimana lingkungan seorang *web developer* berbeda dengan lingkungan seorang *data scientist*. -✅ Think for a minute how different a web developer's working environment is versus that of a data scientist. +## Berjalan dengan Scikit-learn -## Up and running with Scikit-learn +Sekarang, Python sudah siap dalam lingkungan lokalmu, dan kamu sudah nyaman bekerja dengan *Jupyter notebook*. Marilah membiasakan diri dengan Scikit-learn (dilafalkan `saikit lern`; huruf `e` dalam `lern` seperti `e` dalam kata `Perancis`). Scikit-learn menyediakan sebuah [API ekstensif](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu kamu mengerjakan tugas ML. -Now that Python is set up in your local environment, and you are comfortable with Jupyter notebooks, let's get equally comfortable with Scikit-learn (pronounce it `sci` as in `science`). Scikit-learn provides an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you perform ML tasks. +Berdasarkan [situs mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn" adalah sebuah *open-source library* untuk *machine-learning* yang dapat digunakan untuk *supervised* dan *unsupervised learning*. Scikit-learn juga menyediakan beragam alat untuk *model-fitting*, *data preprocessing*, seleksi dan evaluasi model, dll. -According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities." +Dalam kursus ini, kamu akan menggunakan Scikit-learn dan beberapa alat lainnya untuk membangun model *machine-learning* untuk mengerjakan apa yang kami panggil tugas '*machine-learning* tradisional'. Kami sengaja menghindari *neural networks* dan *deep learning* sebab mereka akan dibahas dengan lebih lengkap dalam kurikulum 'AI untuk pemula' nanti. -In this course, you will use Scikit-learn and other tools to build machine learning models to perform what we call 'traditional machine learning' tasks. We have deliberately avoided neural networks and deep learning, as they are better covered in our forthcoming 'AI for Beginners' curriculum. +Scikit-learn memudahkan pembangunan dan evaluasi model-model. Dia terutama fokus pada menggunakan data numerik dan mempunyai beberapa *dataset* yang siap sedia untuk digunakan sebagai alat belajar. Dia juga mempunyai model yang sudah dibangun untuk murid-murid untuk langsung coba. Mari menjelajahi proses memuat data yang sudah disiapkan dan menggunakan model ML pengestimasian pertama menggunakan Scikit-learn dengan data sederhana. -Scikit-learn makes it straightforward to build models and evaluate them for use. It is primarily focused on using numeric data and contains several ready-made datasets for use as learning tools. It also includes pre-built models for students to try. Let's explore the process of loading prepackaged data and using a built in estimator first ML model with Scikit-learn with some basic data. -## Exercise - your first Scikit-learn notebook +## Latihan - Scikit-learn *notebook* pertamamu -> This tutorial was inspired by the [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-learn's web site. +> Tutorial ini terinspirasi [contoh regresi linear ini](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di situs Scikit-learn. -In the _notebook.ipynb_ file associated to this lesson, clear out all the cells by pressing the 'trash can' icon. +Dalam file _notebook.ipynb_ dari pelajaran ini, kosongkan semua sel dengan mengklik tombol berlambang 'tempat sampah'. -In this section, you will work with a small dataset about diabetes that is built into Scikit-learn for learning purposes. Imagine that you wanted to test a treatment for diabetic patients. Machine Learning models might help you determine which patients would respond better to the treatment, based on combinations of variables. Even a very basic regression model, when visualized, might show information about variables that would help you organize your theoretical clinical trials. +Dalam bagian ini, kamu akan bekerja dengan sebuah *dataset* kecil tentang diabetes yang datang bersama dengan Scikit-learn yang dimaksud sebagai bahan ajaran. Bayangkan bahwa kamu ingin mencoba sebuah cara pengobatan untuk pasien diabetes. Model *machine learning* mungkin dapat membantu kamu menentukan pasien mana merespon lebih baik pada pengobatan tersebut berdasarkan kombinasi-kombinasi variabel. Bahkan sebuah model regresi yang sederhana, saat divisualisasikan, dapat menunjukkanmu informasi tentang variabel-variabel yang dapat membantu kamu mengorganisasikan uji-uji klinis teoritismu. -✅ There are many types of regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use linear regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of cuisine should be considered vegan or not, you're looking for a **category assignment** so you would use logistic regression. You'll learn more about logistic regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate. +✅ Ada banyak macam metode regresi, dan yang mana yang kamu pilih tergantung pada jawaban yang kamu sedang cari. Kalau kamu ingin memprediksi tinggi badan seseorang dari usianya, kamu bisa menggunakan regresi linear, karena kamu mencari sebuah **nilai numerik**. Kalau kamu tertarik pada apa sebuah jenis kuliner sebaiknya dianggap sebagai vegan atau tidak, kamu sedang mencari sebuah **kategorisasi/klasifikasi**; kamu bisa menggunakan regresi logistik. Kamu akan belajar lebih banyak tentang regresi logistik nanti. Pikirkan dahulu beberapa pertanyaan yang kamu bisa tanyakan dari data yang ada dan metode yang mana akan paling cocok. -Let's get started on this task. +Mari mulai mengerjakan tugas ini. -### Import libraries +### Impor *library* -For this task we will import some libraries: +Untuk tugas ini, kita akan mengimpor beberapa *library*: -- **matplotlib**. It's a useful [graphing tool](https://matplotlib.org/) and we will use it to create a line plot. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is a useful library for handling numeric data in Python. -- **sklearn**. This is the Scikit-learn library. +- **matplotlib**. Sebuah [alat untuk membuat grafik](https://matplotlib.org/) yang kita akan gunakan untuk membuat sebuah grafik garis. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah sebuah *library* berguna untuk menangani data numerik di Python. +- **sklearn**. Ini adalah *library* Scikit-learn. -Import some libraries to help with your tasks. +Imporlah *library-library* yang akan membantu dengan tugasmu. -1. Add imports by typing the following code: +1. Tambahlah impor dengan mengetik kode berikut: ```python import matplotlib.pyplot as plt @@ -108,36 +110,35 @@ Import some libraries to help with your tasks. from sklearn import datasets, linear_model, model_selection ``` - Above you are importing `matplottlib`, `numpy` and you are importing `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` is used for splitting data into training and test sets. - -### The diabetes dataset + Di atas, kamu sedang mengimpor `matplottlib`, `numpy`. Selain itu, kamu juga sedang mengimpor `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk memisahkan data menjadi set latihan dan set ujian. -The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) includes 442 samples of data around diabetes, with 10 feature variables, some of which include: +### *Dataset* diabetes -age: age in years -bmi: body mass index -bp: average blood pressure -s1 tc: T-Cells (a type of white blood cells) +[*Dataset* diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) mencakupi 442 sampel data mengenai diabetes dengan 10 variabel utama, termasuk: -✅ This dataset includes the concept of 'sex' as a feature variable important to research around diabetes. Many medical datasets include this type of binary classification. Think a bit about how categorizations such as this might exclude certain parts of a population from treatments. +- age: usia dalam tahun +- bmi: *body mass index* +- bp: tekanan darah rata-rata +- s1 tc: Sel T (sejenis cel darah putih) -Now, load up the X and y data. +✅ *Dataset* ini juga mempunyai konsep 'jenis kelamin' sebagai sebuah variabel utama yang penting dalam riset diabetes. Banyak *dataset* medis mempunyai klasifikasi binari ini. Pikirkan sejenak bagaimana kategorisasi seperti yang ini dapat mengecualikan bagian tertentu dari sebuah populasi dari pengobatan. -> 🎓 Remember, this is supervised learning, and we need a named 'y' target. +Sekarang, muatkan data X dan y. -In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` signals that `X` will be a data matrix, and `y` will be the regression target. +> 🎓 Ingatlah, ini adalah *supervised learning*, jadi kita perlu sebuah target (dinamakan 'y'). -1. Add some print commands to show the shape of the data matrix and its first element: +Dalam sebuah sel kode yang baru, muatkan *dataset* diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menunjukkan bahwa `X` adalah sebuah matriks data dan `y` adalah target regresi. +1. Tambah beberapa instruksi *print* untuk menunjukkan ukuran data matriks dan elemen pertama matriks tersebut. ```python X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0]) ``` - What you are getting back as a response, is a tuple. What you are doing is to assign the two first values of the tuple to `X` and `y` respectively. Learn more [about tuples](https://wikipedia.org/wiki/Tuple). + Respon yang didapati adalah sebuah *tuple*. Kamu sedang menetapkan kedua nilai pertama dalam *tuple* itu ke dalam `X` dan `y` secara berturut. Pelajari lebih banyak [tentant *tuples*](https://wikipedia.org/wiki/Tuple). - You can see that this data has 442 items shaped in arrays of 10 elements: + Kamu bisa melihat bahwa data ini berupa 422 nilai yang disusun menjadi beberapa `array` dengan 10 elemen: ```text (442, 10) @@ -145,38 +146,38 @@ In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Think a bit about the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What is this dataset demonstrating, given that target? + ✅ Pikirkan sejenak tentang hubungan antara data dan target regresi. Apa kamu bisa menemukan [targetnya](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk *database* diabetes dalam dokumentasinya? Mengetahui targetnya, apa yang *dataset* ini sedang mendemonstrasikan? -2. Next, select a portion of this dataset to plot by arranging it into a new array using numpy's `newaxis` function. We are going to use linear regression to generate a line between values in this data, according to a pattern it determines. +2. Lalu, pilih sebuah porsi dataset ini untuk digambarkan dengan menyusuninya menjadi sebuah `array` baru dengan fungsi `newaxis` dari `numpy`. Kita akan menggunakan regresi linear untuk menggambar sebuah garis antara nilai-nilai dalam data ini sesuai dengan pola yang ditentukannya. ```python X = X[:, np.newaxis, 2] ``` - ✅ At any time, print out the data to check its shape. + ✅ Kapanpun, *print*-lah datanya untuk memeriksa bentuknya. -3. Now that you have data ready to be plotted, you can see if a machine can help determine a logical split between the numbers in this dataset. To do this, you need to split both the data (X) and the target (y) into test and training sets. Scikit-learn has a straightforward way to do this; you can split your test data at a given point. +3. Sekarang datanya sudah siap untuk digambar. Kamu bisa melihat jikalau sebuah mesin dapat menentukan sebuah perpisahan logika dari nomor-nomor *dataset* ini. Untuk melakukan itu, kamu harus memisahkan data (X) dan target (y) menjadi set latihan dan set ujian. Scikit-learn juga memberi cara untuk melakukan itu; kamu bisa memisahkan data ujianmu pada titik tertentu. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Now you are ready to train your model! Load up the linear regression model and train it with your X and y training sets using `model.fit()`: +4. Sekarang, kamu sudah siap untuk melatihkan modelmu! Muatkan dahulu data regresi linear dan latihkan modelmu dengan set X dan y-mu dengan `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` is a function you'll see in many ML libraries such as TensorFlow + ✅ `model.fit()` adalah sebuah fungsi yang akan kamu temukan dalam banyak *library* ML seperti TensorFlow. -5. Then, create a prediction using test data, using the function `predict()`. This will be used to draw the line between data groups +5. Lalu, buatlah sebuah prediksi dengan data ujianmu dengan fungsi `predict()`. Ini akan digunakan untuk menggambar sebuah garis antara grup-grup data. ```python y_pred = model.predict(X_test) ``` -6. Now it's time to show the data in a plot. Matplotlib is a very useful tool for this task. Create a scatterplot of all the X and y test data, and use the prediction to draw a line in the most appropriate place, between the model's data groupings. +6. Sekarang waktunya untuk menggambar data dalam sebuah grafik. Matplotlib adalah sebuah alat yang sangat berguna untuk melakukan itu. Buatlah sebuah petak sebar dari semua X dan y dari set ujian dan gunakan prediksi yang dihasilkan untuk menggambar sebuah garis di tempat yang paling cocok antara grup-grup data modelnya. ```python plt.scatter(X_test, y_test, color='black') @@ -184,24 +185,24 @@ In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The plt.show() ``` - ![a scatterplot showing datapoints around diabetes](./images/scatterplot.png) + ![sebuah petak sebar yang menunjukkan poin-poin data sekitar diabetes](./images/scatterplot.png) - ✅ Think a bit about what's going on here. A straight line is running through many small dots of data, but what is it doing exactly? Can you see how you should be able to use this line to predict where a new, unseen data point should fit in relationship to the plot's y axis? Try to put into words the practical use of this model. + ✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus membentang tengah-tengah titik-titik kecil data. Tetapi apa yang sedang garis itu lakukan? Apa kamu bisa melihat bagaimana kamu bisa menggunakan garis ini untuk memprediksi di mana sebuah data poin baru yang tidak pernah dilihat sebelumnya kemungkinan besar akan terletak berhubungan dengan sumbu y grafik ini? Coba jelaskan dalam kata-kata kegunaan praktis model ini. -Congratulations, you built your first linear regression model, created a prediction with it, and displayed it in a plot! +Selamat, kamu telah membangun model regresi linear pertamamu, membuat sebuah prediksi darinya, dan menunjukkannya dalam sebuah grafik! --- -## 🚀Challenge +## Tantangan -Plot a different variable from this dataset. Hint: edit this line: `X = X[:, np.newaxis, 2]`. Given this dataset's target, what are you able to discover about the progression of diabetes as a disease? -## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) +Gambarkan sebuah variabel yang beda dari *dataset* ini. Petunjuk: edit baris ini: `X = X[:, np.newaxis, 2]`. Mengetahui target *dataset* ini, apa yang kamu bisa menemukan tentang kemajuan diabetes sebagai sebuah penyakit? +## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) -## Review & Self Study +## Review & Pembelajaran Mandiri -In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Read a little about the differences between these methods, or take a look at [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) +Dalam tutorial ini, kamu bekerja dengan sebuah model regresi linear yang sederhana daripada regresi linear univariat atau berganda. Bacalah sedikit tentang perbedaan antara metode-metode ini atau tontonlah [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). -Read more about the concept of regression and think about what kinds of questions can be answered by this technique. Take this [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) to deepen your understanding. +Bacalah lebih banyak tentang konsep regresi dan pikirkanlah tentang jenis pertanyaan apa saja yang bisa dijawab teknik ini. Cobalah [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) untuk memperdalam pemahamanmu. -## Assignment +## Tugas -[A different dataset](assignment.md) +[*Dataset* yang beda](assignment.md) From 37bc5cac5c68c97282a8edd19c403aab8dbb5b4b Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Tue, 6 Jul 2021 21:29:47 +0700 Subject: [PATCH 05/56] Add Indonesian translations for 2-Regression/Preface --- 2-Regression/translations/README.id.md | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 2-Regression/translations/README.id.md diff --git a/2-Regression/translations/README.id.md b/2-Regression/translations/README.id.md new file mode 100644 index 00000000..a1085fc8 --- /dev/null +++ b/2-Regression/translations/README.id.md @@ -0,0 +1,33 @@ +# Model regresi untuk *machine learning* +## Topik regional: Model regresi untuk harga labu di Amerika Utara 🎃 + +Di Amerika Utara, labu seringkali diukir menjadi muka-muka seram untuk Halloween. Mari mencari tahu lebih banyak tentang sayur menarik ini! + +![jack-o-lantern](./images/jack-o-lanterns.jpg) +> Foto oleh Beth Teutschmann di Unsplash + +## Apa yang kamu akan pelajari + +Pelajaran-pelajaran dalam seksi ini mencakupi jenis-jenis regresi dalam konteks *machine learning*. Model regresi dapat membantu menentukan _hubungan_ antara variabel-variabel. Model jenis ini dapat memprediksi nilai-nilai seperti panjang, temperatur, atau usia, sehingga mengemukakan hubungan-hubungan antara variabel dengan menganalisis poin-poin data. + +Dalam seri pelajaran ini, kamu akan menemukan perbedaan antara regresi linear dan logistik, dan kapan untuk menggunakan satu atau yang lainnya. + +Selain itu, kamu akan disiapkan untuk mulai mengerjakan tugas *machine learning*, termasuk mengkonfigurasi Visual Studio Code untuk mengelola *notebook*, lingkungan wajar untuk *data scientist*. Kamu akan menemukan Scikit-learn, sebuah *library* untuk *machine learning*, dan kamu akan membangun model pertamamu dengan memfokus pada model regresi dalam bab ini. + +> Ada alat-alat *low-code* yang dapat membantumu belajar tentang bekerja dengan model regresi. Cobalah [Azure ML untuk tugas ini](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa). + +### Pelajaran + +1. [Alat-alat seorang *data scientist*](1-Tools/README.md) +2. [Mengelola data](2-Data/README.md) +3. [Regresi linear dan polinomial](3-Linear/README.md) +4. [Regresi logistik](4-Logistic/README.md) + +--- +### Kredit + +"ML with regression" (ML dengan regresi) ditulis dari ♥️ oleh [Jen Looper](https://twitter.com/jenlooper) + +♥️ Kontributor kuis termasuk: [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan) dan [Ornella Altunyan](https://twitter.com/ornelladotcom) + +*Dataset* labu disarankan [proyek ini di Kaggle](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) dan datanya disumberkan dari [Specialty Crops Terminal Markets Standard Reports (Laporan Standar Pasar Terminal Tanaman Khusus)](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang didistribusikan Departemen Agrikultur Amerika Serikat. Kami telah menambahkan beberapa poin tentang warna berdasarkan jenis labu untuk menormalisasi distribusi data. Data ini terbuka untuk umum (*public domain*). From a04c1add96d80443561ef462eb24e3a65dab4b6b Mon Sep 17 00:00:00 2001 From: Roberto Pauletto Date: Tue, 6 Jul 2021 17:22:15 +0200 Subject: [PATCH 06/56] Chapter 1, Section 3 Readme and assignments --- .../3-fairness/translations/README.it.md | 212 ++++++++++++++++++ .../3-fairness/translations/assignment.it.md | 11 + 2 files changed, 223 insertions(+) create mode 100644 1-Introduction/3-fairness/translations/README.it.md create mode 100644 1-Introduction/3-fairness/translations/assignment.it.md diff --git a/1-Introduction/3-fairness/translations/README.it.md b/1-Introduction/3-fairness/translations/README.it.md new file mode 100644 index 00000000..2b822c88 --- /dev/null +++ b/1-Introduction/3-fairness/translations/README.it.md @@ -0,0 +1,212 @@ +# Equità e machine learning + +![Riepilogo dell'equità in machine learning in uno sketchnote](../../../sketchnotes/ml-fairness.png) +> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/) + +## 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. + +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à: + +- Aumentare la propria consapevolezza sull'importanza dell'equità nel machine learning. +- Informarsi sui danni legati all'equità. +- Apprendere ulteriori informazioni sulla valutazione e la mitigazione dell'ingiustizia. + +## Prerequisito + +Come prerequisito, si segua il percorso di apprendimento "Principi di IA 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) + +[![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 + +## Iniquità nei dati e negli algoritmi + +> "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. + +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à + +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: + +- **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. +- **Stereotipi**. Associazione di un dato gruppo con attributi preassegnati. +- **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. + +Si dia un'occhiata agli esempi. + +### 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 trattenuti da 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". + +✅ Si compia una piccola ricerca per trovare un esempio reale di qualcosa del genere + +### 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/) + +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 + +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 inglese](../images/gender-bias-translate-tr-en.png) + +### 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. + +[![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 + +### 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. + +![Ricerca CEO di Bing](../images/ceos.png) +> 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. + +✅ **Discussione**: rivisitare alcuni degli esempi e vedere se mostrano danni diversi. + +| | Allocatione | Qualita di servizio | Stereotipo | Denigrazione | Sovra o sotto rappresentazione | +| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: | +| Sistema di assunzione automatizzato | x | x | x | | x | +| Traduzione automatica | | | | | | +| Eitchettatura foto | | | | | | + +## 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. + +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. + +## 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à. + +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. + +## 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 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. + +### **Identificare danni (e benefici)** + +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 sono trattenute da 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. + +### **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. + +### **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. + +✅ 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 | +| ---------- | ------------------- | ------------------- | ----- | +| Donna | 0,37 | 0,27 | 54032 | +| Uomo | 0,31 | 0.35 | 28620 | +| 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. + +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? + +## Mitigare l'ingiustizia + +Per mitigare l'ingiustizia, si esplorari 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. + +### Fairlearn + +[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. + +- 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 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 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 + +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 +- investire in insiemi di dati che riflettano le diversità della società +- 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? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/) + +## Revisione e Auto Apprendimento + +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: + +- 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: + +- 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/) + +Si esplori il toolkit Fairlearn + +[Fairlearn](https://fairlearn.org/) + +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) + +## Compito + +[Esplorare Fairlearn](assignment.it.md) diff --git a/1-Introduction/3-fairness/translations/assignment.it.md b/1-Introduction/3-fairness/translations/assignment.it.md new file mode 100644 index 00000000..e2151bdf --- /dev/null +++ b/1-Introduction/3-fairness/translations/assignment.it.md @@ -0,0 +1,11 @@ +# Esplora Fairlearn + +## Istruzioni + +In questa lezione si è appreso di Fairlearn, un "progetto open source guidato dalla comunità per aiutare i data scientist a migliorare l'equità dei sistemi di intelligenza artificiale". Per questo compito, esplorare uno dei [notebook](https://fairlearn.org/v0.6.2/auto_examples/index.html) di Fairlearn e riportare i propri risultati in un documento o in una presentazione. + +## Rubrica + +| Criteri | Ottimo | Adeguato | Necessita miglioramento | +| -------- | --------- | -------- | ----------------- | +| | Viene presentato un documento o una presentazione powerpoint in cui si discutono i sistemi di Fairlearn, il notebook che è stato eseguito e le conclusioni tratte dall'esecuzione | Viene presentato un documento senza conclusioni | Non viene presentato alcun documento | From 6fa46d10ffd67d0ada97e728c77e7085a4df0555 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Tue, 6 Jul 2021 22:55:20 +0700 Subject: [PATCH 07/56] Add Indonesian translation for 2-Regression/2-Data --- 2-Regression/2-Data/translations/README.id.md | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 2-Regression/2-Data/translations/README.id.md diff --git a/2-Regression/2-Data/translations/README.id.md b/2-Regression/2-Data/translations/README.id.md new file mode 100644 index 00000000..4e932101 --- /dev/null +++ b/2-Regression/2-Data/translations/README.id.md @@ -0,0 +1,202 @@ +# Membangun sebuah model regresi dengan Scikit-learn: siapkan dan visualisasikan data + +> ![Infografik visualisasi data](./images/data-visualization.png) +> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) + +## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/11/) + +## Pembukaan + +Karena sekarang kamu sudah siap dengan alat-alat yang akan diperlukan untuk mulai melampiaskan pembangunan model *machine learning* dengan Scikit-learn, kamu juga siap untuk mulai membuat pertanyaan dari datamu. Selagi kamu bekerja dengan data dan mengaplikasikan solusi ML, sangatlah penting untuk mengerti bagaimana menanyakan cara yang benar dan tepat untuk mengemukakan potensial *dataset*-mu. + +Dalam pelajaran ini, kamu akan belajar: + +- Cara mempersiapkan datamu untuk pembangunan model. +- Cara menggunakan Matplotlib untuk memvisualisasikan data. + +## Menanyakan pertanyaan yang tepat dari datamu + +Pertanyaan yang perlu dijawab akan menentukan jenis algoritma ML yang kamu akan memanfaatkan. Lalu, kualitas jawaban yang kamu akan dapat sangat tergantung pada sifat datamu (*the nature of your data*). + +Lihatlah [data](../data/US-pumpkins.csv) yang disiapkan untuk pelajaran ini. Kamu bisa membuka file .csv ini di VS Code. Membaca dengan cepat, *dataset* ini ada yang kosong dan ada yang campuran data *string* dan data numerik. Adapula sebuah kolom 'Package' yang aneh dan mengandung data antara 'sacks', 'bins', dll. Terus terang, data ini amburadul. + +Faktanya adalah tidak sering kita dihadiahkan sebuah *dataset* yang langsung bisa digunakan untuk membuat sebuah model ML. Dalam pelajaran ini, kamu akan belajar bagaimana menyiapkan sebuah *dataset* 'mentah' menggunakan *library* standar Python. Kamu juga akan belajar aneka teknik untuk memvisualisasikan datanya. + +## Studi kasus: 'pasar labu' + +Dalam folder ini kamu akan menemukan sebuah file .csv dalam folder `data` bernama [US-pumpkins.csv](../data/US-pumpkins.csv) yang mempunyai 1757 baris data tentang pasar labu disortir dalam pengelompokkan berdasarkan kota. Ini adalah data mentah yang diambil dari [Specialty Crops Terminal Markets Standard Reports (Laporan Standar Pasar Terminal Tanaman Khusus)](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang didistribusi Departemen Agrikultur Amerika Serikat. + +### Menyiapkan data + +Data ini terbuka untuk umum (*publik domain*) dan bisa diunduh sebagai banyak file terpisah berdasarkan kota dari situs internet Departemen Agrikultur Amerika Serikat. Supaya tidak berurusan dengan terlalu banyak file, kami telah menggabungkan data dari semua kota menjadi satu *spreadsheet* (file Excel). Jadi kamu sudah _menyiapkan_ datanya sedikit. Selanjutnya, mari kita lihat datanya. + +### Data labu - kesimpulan-kesimpulan awal + +Apa yang kamu cermati tentang data ini? Kamu sudah melihat bahwa ada campuran *string*, nomor, kekosongan, dan nilai-nilai aneh yang harus diartikan. + +Pertanyaan apa yang kamu bisa tanyakan dari data data ini menggunakan teknik regresi? Kalau "Prediksikan harga jual sebuah labu pada bulan tertentu" bagaimana? Melihat datanya sekali lagi, ada beberapa perubahan yang kamu harus terapkan untuk membuat struktur data yang diperlukan untuk tugas ini. + +## Latihan - analisiskan data labu + +Mari menggunakan [Pandas](https://pandas.pydata.org/) (singkatan dari `Python Data Analysis`), sebuah alat yang sangat beruna untuk membentuk, menganalisis, dan menyiapkan data labu ini. + +### Pertama, carilah tanggal yang hilang + +Kamu harus mengambil langkah untuk mencari tanggal-tanggal yang hilang terlebih dahulu: + +1. Konversi tanggal-tanggalnya menjadi format bulan (tanggal-tanggal ini dalam format Amerika Serikat, yaitu `BULAN/TANGGAL/TAHUN`). +2. Jadikan data bulan menjadi kolom baru + +Buka file _notebook.ipynb_ dalam Visual Studio Code dan impor *spreadsheet*-nya menjadi sebuah *dataframe* Pandas. + +1. Gunakan fungsi `head()` untuk melihat lima baris pertama. + + ```python + import pandas as pd + pumpkins = pd.read_csv('../../data/US-pumpkins.csv') + pumpkins.head() + ``` + + ✅ Fungsi apa yang akan kamu gunakan untuk melihat lima baris **terakhir**? + +2. Periksa apa ada data yang hilang dalam *dataframe* ini: + + ```python + pumpkins.isnull().sum() + ``` + + Ada data yang hilang, namun mungkin tidak akan diperlukan untuk tugas ini. + +3. Untuk menjadikan *dataframe* kamu lebih mudah untuk digunakan, buanglah beberapa kolom menggunakan `drop()` dan simpanlah kolom-kolom yang diperlukan saja: + + ```python + new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date'] + pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) + ``` + +### Kedua, tentukan harga rata-rata labu + +Pikirkan bagaimana caranya menentukan harga rata-rata sebuah labu pada bulan tertentu. Kamu akan pilih kolom apa saja untuk tugas ini? Petunjuk: kamu akan perlu 3 kolom. + +Solusi: Ambil rata-rata kolom `Low Price` dan `High Price` untuk mengisi kolom `Price` yang baru. Terus, konversikan kolom `Date` untuk hanya menunjukkan bulan saja. Untungnya, berdasarkan pemeriksaan di atas, tidak ada data tanggal atau harga yang hilang. + +1. Untuk mengkalkulasi rata-rata, tambahlah kode berikut: + + ```python + price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 + + month = pd.DatetimeIndex(pumpkins['Date']).month + + ``` + + ✅ Jangan ragu untuk mem-*print* data apapun yang kamu ingin periksa menggunakan `print(month)`. + +2. Sekarang, salinlah data yang telah dikonversi ke sebuah *dataframe* Pandas yang baru: + + ```python + new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) + ``` + + Jika *dataframe* baru ini di-*print*, kamu akan lihat sebuah *dataset* yang rapih darimana kamu bisa membangun model regresi barumu. + +### But wait! There's something odd here +### Tunggu! Ada yang aneh di sini + +Kalau kamu lihat kolom `Package`, labu dijual dalam berbagai konfigurasi. Beberapa dijual dalam satuan '1 1/9 bushel', beberapa per labu, beberapa per pon, dan beberapa dalam dus-dus besar dengan kelebaran yang berbeda-beda. + +> Kelihatannya susah untuk menimbang labu secara konsisten + +Menggali data orisinal lebih dalam, sangatlah menarik untuk melihat apapun dengan `Unit of Sale` (satuan penjualan) yang sama dengan 'EACH' atau 'PER BIN' akan mempunyai jenis `Package` yang per inci, per bin, atau 'each'. Kelihatannya susah untuk menimbang labu secara konsisten, jadi mari memilah datanya dengan hanya memilih labu yang kolom `Package`-nya sama dengan *string* 'bushel'. + +1. Tambah sebuah filter di atas file tetapi dibawah impor .csv yang di awal + + ```python + pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] + ``` + + Kalau kamu *print* datanya sekarang, kamu bisa lihat bahwa kamu hanya mendapatkan sekitar 415 baris data yang mengandung data labu per bushel. + +### Tunggu! Masih ada satu lagi + +Apa kamu sadar bahwa jumlah bushel berbeda-beda per baris? Kamu harus menormalisasi harganya supaya kamu menunjukkan harga per bushel. Gunakanlah sedikit matematika untuk menstandarisasinya. + +1. Tambahlah beberapa baris ini setelah blok yang membuat *dataframe* new_pumpkins: + + ```python + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) + + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) + ``` + +✅ Berdasarkan [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat satu bushel tergantung jenis hasil bumi sebab bushel adalah satuan volume. "Satu bushel tomat, sebagai contoh, seharusnya seberat 56 pon (25.4 kg)... Dedaunan mengambil lebih banyak ruang tetapi lebih ringan, jadi satu bushel bayam hanya seberat 20 pon (9.1 kg)" (diterjemah). Lumayan rumit ya! Kita tidak usah mengkonversi bushel ke pon saja bagaimana, jadi kita gunakan satuan harga per bushel? Namun, semua riset ini tentang bushel labu menunjukkan sebagaimana pentingnya untuk mengerti sifat datamu! + +Sekarang, kamu bisa meneliti harga per satuan berdasarkan hitungan bushel mereka. Jika kamu *print* datanya sekali lagi, kamu bisa lihat bagaimana telah distandarisasi. + +✅ Apa kamu sadar bahwa labu yang dijual per setengah bushel sangat mahal? Kira-kira mengapa ya? Petunjuk: labu kecil jauh lebih mahal daripada labu besar, mungkin karena ada lebih banyak per bushel, apalagi mengingat pula bahwa satu labu besar mempunyai rongga kosong yang besar di dalamnya. + +## Strategi Visualisasi + +Sebagian dari peran seorang *data scientist* adalah untuk mendemonstrasikan kualitas dan sifat data yang sedang digunakan. Untuk melakukan ini, mereka seringkali membuat visualisasi-visualisasi atau grafik menarik yang menunjukkan aspek-aspek berbeda tentang datanya. Dengan cara ini, mereka dapat menunjukkan hubungan-hubungan dan celah-celah secara visual. Kalau tidak secara visual, akan susah untuk menemukan pola-pola tersebut. + +Visualisasi juga bisa membantu menentukan teknik *machine learning* yang palingn cocok untuk datanya. Sebagai contoh, sebuah petak sebar yang kelihatannya mengikuti sebuah garis mengindikasikan bahwa data ini adalah kandidat baik untuk latihan regresi linear. + +Satu *library* visualisasi data yang bekerja dengan baik dalam sebuah *Jupyter notebook* adalah [Matplotlib](https://matplotlib.org/) (yang kamu juga lihat dalam pelajaran sebelumnya). + +> Carilah pengalaman dalam memvisualisasi data dengan [tutorial-tutorial ini](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-15963-cxa). + +## Latihan - sebuah experimen dengan Matplotlib + +Coba membuat beberapa grafik sederhana untuk menunjukkan *dataframe* baru yang baru kamu buat. Kira-kira, sebuah plot garis akan menunjukkan apa ya? + +1. Impor Matplotlib di atas file tetapi di bawah impor Pandas: + + ```python + import matplotlib.pyplot as plt + ``` + +2. Jalankan ulang keseluruhan *notebook*-nya. +3. Di bagian bawah *notebook*-nya, tambahkan sebuah sel untuk menggambarkan datanya sebagai sebuah kotak. + + ```python + price = new_pumpkins.Price + month = new_pumpkins.Month + plt.scatter(price, month) + plt.show() + ``` + + ![Sebuah petak sebar yang menunjukkan hubungan antara harga dan bulan](./images/scatterplot.png) + + Apakah grafik ini berguna? Apa ada yang mengejutkanmu? + + Sebenarnya tidak terlalu berguna karena dia hanya menunjukkan datamu sebagai sebuah penyebaran poin pada bulan tertentu. + +### Jadikan berguna + +Untuk menjadikan sebuah grafik menjadi berguna, biasanya datanya harus dikelompokkan dengan suatu cara. Kita coba membuat suatu plot di mana sumbu y menunjukkan bulan dan datanya mendemonstrasikan distribusi data, yuk! + +1. Tambah sebuah sel untuk membuat sebuah diagram batang berkelompok: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![Sebuah diagram batang yang menunjukkan hubungan antara harga dan bulan](./images/barchart.png) + + Nah, ini lebih berguna! Kelihatannya visualisasi ini mengindikasi bahwa labu itu paling mahal pada bulan September dan Oktober. Apa itu sesuai ekspektasimu? Mengapa? + +--- + +## 🚀Tantangan + +Jelajahi jenis-jenis visualisasi yang beda dan yang disediakan Matplotlib. Jenis mana yang paling cocok untuk kasus regresi? + +## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/12/) + +## Review & Pembelajaran Mandiri + +Lihatlah beragam cara memvisualisasi data. Buatlah sebuah daftar dari aneka *library* yang tersedia dan catatlah yang mana yang paling baik untuk jenis-jenis tugas tertentu. Sebagai contoh, bagaimana dengan visualisasi 2D vs. 3D? Apa yang kamu temukan? + +## Tugas + +[Menjelajahi visualisasi](assignment.md) From 15b34964e75e228accf1a8155744c0e9fc1344f4 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Wed, 7 Jul 2021 22:40:35 +0700 Subject: [PATCH 08/56] Fix Indonesian translation of 'datapoint' --- 2-Regression/1-Tools/translations/README.id.md | 4 ++-- 2-Regression/translations/README.id.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md index b29301e2..4345460a 100644 --- a/2-Regression/1-Tools/translations/README.id.md +++ b/2-Regression/1-Tools/translations/README.id.md @@ -185,9 +185,9 @@ Dalam sebuah sel kode yang baru, muatkan *dataset* diabetes dengan memanggil `lo plt.show() ``` - ![sebuah petak sebar yang menunjukkan poin-poin data sekitar diabetes](./images/scatterplot.png) + ![sebuah petak sebar yang menunjukkan titik-titik data sekitar diabetes](./images/scatterplot.png) - ✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus membentang tengah-tengah titik-titik kecil data. Tetapi apa yang sedang garis itu lakukan? Apa kamu bisa melihat bagaimana kamu bisa menggunakan garis ini untuk memprediksi di mana sebuah data poin baru yang tidak pernah dilihat sebelumnya kemungkinan besar akan terletak berhubungan dengan sumbu y grafik ini? Coba jelaskan dalam kata-kata kegunaan praktis model ini. + ✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus membentang tengah-tengah titik-titik kecil data. Tetapi apa yang sedang garis itu lakukan? Apa kamu bisa melihat bagaimana kamu bisa menggunakan garis ini untuk memprediksi di mana sebuah titik data baru yang tidak pernah dilihat sebelumnya kemungkinan besar akan terletak berhubungan dengan sumbu y grafik ini? Coba jelaskan dalam kata-kata kegunaan praktis model ini. Selamat, kamu telah membangun model regresi linear pertamamu, membuat sebuah prediksi darinya, dan menunjukkannya dalam sebuah grafik! diff --git a/2-Regression/translations/README.id.md b/2-Regression/translations/README.id.md index a1085fc8..6b228c14 100644 --- a/2-Regression/translations/README.id.md +++ b/2-Regression/translations/README.id.md @@ -8,7 +8,7 @@ Di Amerika Utara, labu seringkali diukir menjadi muka-muka seram untuk Halloween ## Apa yang kamu akan pelajari -Pelajaran-pelajaran dalam seksi ini mencakupi jenis-jenis regresi dalam konteks *machine learning*. Model regresi dapat membantu menentukan _hubungan_ antara variabel-variabel. Model jenis ini dapat memprediksi nilai-nilai seperti panjang, temperatur, atau usia, sehingga mengemukakan hubungan-hubungan antara variabel dengan menganalisis poin-poin data. +Pelajaran-pelajaran dalam seksi ini mencakupi jenis-jenis regresi dalam konteks *machine learning*. Model regresi dapat membantu menentukan _hubungan_ antara variabel-variabel. Model jenis ini dapat memprediksi nilai-nilai seperti panjang, temperatur, atau usia, sehingga mengemukakan hubungan-hubungan antara variabel dengan menganalisis titik-titik data. Dalam seri pelajaran ini, kamu akan menemukan perbedaan antara regresi linear dan logistik, dan kapan untuk menggunakan satu atau yang lainnya. From 8035013f364da7a7c031e10bf74dfdea3235fd81 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Wed, 7 Jul 2021 23:53:47 +0700 Subject: [PATCH 09/56] Add Indonesian translation for 2-Regression/3-Linear --- .../3-Linear/translations/README.id.md | 335 ++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 2-Regression/3-Linear/translations/README.id.md diff --git a/2-Regression/3-Linear/translations/README.id.md b/2-Regression/3-Linear/translations/README.id.md new file mode 100644 index 00000000..548d2030 --- /dev/null +++ b/2-Regression/3-Linear/translations/README.id.md @@ -0,0 +1,335 @@ +# Bangun sebuah model regresi dengan Scikit-learn: regresi dua arah + +![Infografik regresi linear vs polinomial](./images/linear-polynomial.png) +> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) +### Pembukaan + +Selama ini kamu telah menjelajahi apa regresi itu dengan data contoh yang dikumpulkan dari *dataset* harga labu yang kita akan gunakan terus sepanjang pelajaran ini. Kamu juga telah memvisualisasikannya dengan Matplotlib. + +Sekarang kamu sudah siap terjun ke dalam regresi untuk ML. Dalam pelajaran ini, kamu akan belajar lebih tentang dua jenis regresi: _regresi linear sederhana_ dan _regresi polinomial_ serta sedikit matematika yang mendasari kedua teknik ini. + +> Sepanjang kurikulum ini, kami mengasumsi kamu punya pengetahuan matematika yang minim dan ingin tetap membuat pelajaran ini terjangkau bagi murid-murid dari bidang-bidang lain. Jadi perhatikan catatan, 🧮 info, diagram, dan alat-alat belajar lainnya untuk membantu pemahaman. + +### Prasyarat + +Kamu harusnya sudah terbiasa sekarang dengan struktur data labu yang kita sedang teliti. Datanya harusnya sudah dimuat dan dibersihkan dalam file _notebook.ipynb_ pelajaran ini. Dalam file ini, harga labu ditampilkan per bushel dalam *dataframe* yang bari. Pastikan kamu bisa menjalankan *notebook-notebook* ini di *kernels* di Visual Studio Code. + +### Persiapan + +Ingat, kamu sedang memuat data ini untuk menanyakan pertanyaan darinya. + +- Kapankah waktu terbaik untuk membeli labu? +- Saya kira-kira harus bayar berapa untuk satu kotak labu mini? +- Apa saya sebaiknya membelinya dalam keranjang-keranjang setengah bushel atau kardus-kardus 1 1/9 bushel? +Ayo terjun lebih lagi ke dalam data ini. + +Dalam pelajaran sebelumnya, kamu membuat sebuah *dataframe* Pandas, mengisinya dengan sebagian *dataset* orisinal, dan menstandarisasi harganya per bushel. Tetapi, dengan begitu, kamu hanya dapat mengumpul sekitar 400 titik data dan itupun hanya untuk bulan-bulan musim gugur. + +Lihatlah data yang kita sudah muat dalam *notebook* yang terlampir pelajaran ini. Data telah di muat dan sebuah petak sebar inisial telah digambar untuk menunjukkan data per bulan. Mungkin kita bisa dapat lebih banyak detail tentang sifat datanya dengan membersih-bersihkannya lebih lagi. + +## Sebuah garis regresi linear + +Seperti yang kamu telah belajar dalam Pelajaran 1, tujuan sebuah latihan regresi linear adalah untuk dapat menggambar sebuah garis untuk: + +- **Menunjukkan hubungan antar-variabel**. Menunjukkan hubungan antara variabel-variabel. +- **Membuat prediksi**. Membuat prediksi akurat tentang di mana sebuah titik data baru akan terletak berhubungan dengan garis tersebut. + +Dalam kasus **Regresi Kuadrat Terkecil (_Least-Squares Regression_)**, biasanya garis seperti ini digambar. Istilah 'kuadrat terkecil' berarti semua titik data yang mengitari garis regresi dikuadratkan dan dijumlahkan. Secara ideal, harusnya jumlah akhirnya sekecil mungkin, karena kita ingin kesalahan (error) terkecil, alias `kuadrat terkecil`. + +Kita melakukan itu sebab kita ingin memodelkan sebuah garis yang jarak kumulatifnya dari semua titik data itu sekecil mungkin. Kita juga mengkuadratkan setiap suku sebelum dijumlahkan karena kita fokus pada besarannya daripada arahnya. + +> **🧮 Tunjukkan matematikanya kepadaku** +> +> Garis ini, dipanggil _garis yang paling cocok_, dapat diekspresikan dalam [sebuah persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression): +> +> ``` +> Y = a + bX +> ``` +> +> `X` adalah 'variabel penerang'. `Y` adalah 'variabel dependen'. Gradien garisnya adalah `b`, dan `a` adalah titik potong sumbu y yaitu nilai `Y` saat `X = 0`. +> +>![hitunglah gradiennya](images/slope.png) +> +> Pertama, hitunglah gradien `b`. Infografik oleh [Jen Looper](https://twitter.com/jenlooper) +> +> Dalam kata lain, dan berhubungan pula dengan pertanyaan awal data labu kita "prediksikan harga satu bushel labu setiap bulan", `X` merujuk pada harganya, sedangkan `Y` akan merujuk pada bulan penjualan. +> +>![lengkapilah persamaan ini](images/calculation.png) +> +> Hitunglah nilai Y. Kalau harganya $4, artinya pasti April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper) +> +> Matematika yang mengkalkulasi garis ini harus mendemonstrasikan gradien garisnya yang juga tergantung pada titik potongnya pada sumbu y, alias apa `Y`-nya saat `X = 0`. +> +> Kamu bisa melihat metode menghitung nilai-nilai ini di situs internet [*Math is Fun* (Matematika Itu Menyenangkan)](https://www.mathsisfun.com/data/least-squares-regression.html). Kunjungi [kalkulator kuadrat terkecil ini](https://www.mathsisfun.com/data/least-squares-calculator.html) juga untuk melihat bagaimana nomor-nomor ini mengubah garisnya. + +## Korelasi + +Satu lagi yang harus dipahami adalah **Koefisien Korelasi** antara variabel X dan Y yang tersedia. Menggunakan sebuah petak sebar, kamu bisa memvisualisasi korelasi ini dengan cepat. Sebuah grafik dengan titik-titik data yang tersebar rapi seperti sebuah garis mempunyai korelasi yang tinggi. Namun, sebuah grafik dengan titik-titik data yang tersebar di mana-mana antara X dan Y mempunyai korelasi yang rendah. + +Sebuah model regresi linear yang bagus akan mempunyai Koefisien Korelasi yang tinggi (lebih dekat ke 1 daripada ke 0) menggunakan metode Regresi Kuadrat Terkecil dengan sebuah garis regresi. + +✅ Jalankan *notebook* yang terlampir dalam pelajaran ini dan lihatlah petak sebar City (Kota) ke Price (Harga). Apa data yang menghubungkan City ke Price untuk penjualan labu mempunyai korelasi yang tinggi atau rendah kelihatannya? + + +## Siapkan datamu untuk regresi + +Sekarang dengan pemahamanmu mengenai matematika di balik latihan ini, buatlah sebuah model regresi untuk melihat apa kamu bisa memprediksi paket labu yang mana yang harganya paling baik. Seorang pembeli labu akan ingin mengetahui informasi ini untuk mengoptimasi pembelian labu mereka. + +Karena kamu akan menggunakan Scikit-learn, tidak usah mengerjakan ini dengan tangan (walaupun bisa sih!). Dalam blok memrosesan data utama *notebook*-mu untuk pelajaran ini, tambahlah sebuah *library* dari Scikit-learn untuk mengkonversi semua data *string* menjadi nomor secara otomatis: + +```python +from sklearn.preprocessing import LabelEncoder + +new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) +new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) +``` + +Kalau kamu sekarang simak *dataframe* new_punkins, kamu akan lihat bahwa semua *string* sudah dijadikan nomor. Ini lebih susah untuk kita baca, tetapi jauh lebih mudah untuk Scikit-learn! +Sekarang kamu bisa membuat lebih banyak keputusan berakal (tidak hanya tebak-tebak dari petak sebarnya) tentang data yang paling cocok untuk regresi. + +Coba cari sebuah korelasi bagus antara dua titik data yang berpotensi untuk membangun sebuah model prediksi yang baik. Ternyata, hanya ada korelasi yang lemah antara City dan Price: + +```python +print(new_pumpkins['City'].corr(new_pumpkins['Price'])) +0.32363971816089226 +``` + +Meskipun begitu, ada korelasi yang sedikit lebih baik antara Package (Paket) dan Price (Harga). Masuk akal juga kan? Biasanya, lebih besar kardusnya, lebih mahal harganya. + +```python +print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) +0.6061712937226021 +``` + +Sebuah pertanyaan bagus untuk ditanyakan dari data ini adalah "Kira-kira harga sebuah paket labu berapa?" + +Mari membangun sebuah model regresi + +## Membangun sebuah model linear + +Sebelum membangun modelmu, rapikanlah datamu sekali lagi. Buanglah sebuah data nil (null) dan periksalah sekali lagi datanya kelihatannya seperti apa. + +```python +new_pumpkins.dropna(inplace=True) +new_pumpkins.info() +``` + +Lalu, buatlah sebuah *dataframe* baru dari set minimal ini dan *print*: + +```python +new_columns = ['Package', 'Price'] +lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + +lin_pumpkins +``` + +```output + Package Price +70 0 13.636364 +71 0 16.363636 +72 0 16.363636 +73 0 15.454545 +74 0 13.636364 +... ... ... +1738 2 30.000000 +1739 2 28.750000 +1740 2 25.750000 +1741 2 24.000000 +1742 2 24.000000 +415 rows × 2 columns +``` + +1. Sekarang kamu bisa menetapkan data koordinat X dan y-mu: + + ```python + X = lin_pumpkins.values[:, :1] + y = lin_pumpkins.values[:, 1:2] + ``` +✅ Apa yang sedang terjadi di sini? Kamu sedang menggunakan [notasi perpotongan Python (*Python slice notation*)](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) untuk membuat dua *array* untuk mengisi `X` dan `y`. + +1. Selanjutnya, mulailah rutin pembangunan model: + + ```python + from sklearn.linear_model import LinearRegression + from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error + from sklearn.model_selection import train_test_split + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + lin_reg = LinearRegression() + lin_reg.fit(X_train,y_train) + + pred = lin_reg.predict(X_test) + + accuracy_score = lin_reg.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + Karena korelasinya tidak begitu baik, model yang didapatkan tidak terlalu akurat. + + ```output + Model Accuracy: 0.3315342327998987 + ``` + +2. Kamu bisa memvisualisasi garis yang digambarkan dalam proses ini: + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, pred, color='blue', linewidth=3) + + plt.xlabel('Package') + plt.ylabel('Price') + + plt.show() + ``` + ![Sebuah petak sebar yang menunjukkan hubungan antara paket dan harga](./images/linear.png) + +3. Ujilah modelnya dengan sebuah jenis labu hipotetis: + + ```python + lin_reg.predict( np.array([ [2.75] ]) ) + ``` + + Harga yang dihasilkan untuk jenis labu mitologis ini adalah: + + ```output + array([[33.15655975]]) + ``` + +Nomor itu masuk akal jikalau logika garis regresinya benar. + +🎃 Selamat, kamu baru saja membuat sebuah model yang bisa membantu memprediksi harga beberapa jenis labu. Namun, kamu masih bisa membuatnya lebih baik! + +## Regresi polinomial + +Jenis lain regresi linear adalah regresi polinomial. Walaupun kadangkali ada hubungan linear antara variabel-variabel — lebih besar volume labunya, lebih tinggi harganya — kadangkali hubungan-hubungan ini tidak bisa digambarkan sebagai sebuah bidang atau garis lurus. + +✅ Ini ada [beberapa contoh data lain](https://online.stat.psu.edu/stat501/lesson/9/9.8) yang bisa menggunakan regresi polinomial + +Tengok kembali hubungan antara Variety (Jenis) dan Price (Harga) dalam grafik sebelumnya. Apa petak sebar ini terlihat seperti harus dianalisis dengan sebuah garis lurus? Mungkin tidak. Kali ini, kamu bisa mencoba regresi polinomial. + +✅ Polinomial adalah sebuah pernyataan matematika yang mempunyai satu atau lebih variabel dan koefisien disusun menjadi suku-suku. + +Regresi polinomial menghasilkan sebuah garis lengkung supaya lebih cocok dengan data non-linear. + +1. Mari kita membuat sebuah *dataframe* yang diisi sebuah segmen dari data orisinal labu: + + ```python + new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] + poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + + poly_pumpkins + ``` + +Sebuah cara bagus untuk memvisualisasi korelasi-korelasi antara data dalam *dataframe-dataframe* adalah untuk menampilkannya dalam sebuah peta '*coolwarm*' (panas-dingin): + +2. Gunakan fungsi `Background_gradient()` dengan `coolwarm` sebagai argumennya: + + ```python + corr = poly_pumpkins.corr() + corr.style.background_gradient(cmap='coolwarm') + ``` + This code creates a heatmap: + Kode ini membuat sebuah peta panas + ![Sebuah peta panas yang menunjukkan korelasi data](./images/heatmap.png) + +Melihat peta ini, kamu bisa memvisualisasikan korelasi yang baik antara Package dan Price. Jadi kamu seharusnya bisa membuat sebuah model yang lebih baik daripada yang sebelumnya. + +### Buatlah sebuah *pipeline* + +Scikit-learn mempunyai sebuah API yang berguna untuk membangun model regresi polinomial — [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) `make_pipeline`. Sebuah '*pipeline*' adalah sebuah rantai penaksir. Dalam kasus ini, *pipeline* ini mempunyai fitur-fitur polinomial, atau prediksi-prediksi yang membuat garis non-linear. + +1. Bangunlah kolom X dan y: + + ```python + X=poly_pumpkins.iloc[:,3:4].values + y=poly_pumpkins.iloc[:,4:5].values + ``` + +2. Buatlah *pipeline*-nya dengan fungsi `make_pipeline()`: + + ```python + from sklearn.preprocessing import PolynomialFeatures + from sklearn.pipeline import make_pipeline + + pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + pipeline.fit(np.array(X_train), y_train) + + y_pred=pipeline.predict(X_test) + ``` + +### Buatlah sebuah barisan + +Di sini, kamu harus membuat sebuah *dataframe* baru dengan data yang _berurutan_ supaya *pipeline*-nya bisa membuat sebuah barisan. + +Tambahlah kode ini: + + ```python + df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) + df.sort_values(by='x',inplace = True) + points = pd.DataFrame(df).to_numpy() + + plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) + plt.xlabel('Package') + plt.ylabel('Price') + plt.scatter(X,y, color="black") + plt.show() + ``` + +Kamu membuat sebuah *dataframe* baru dengan fungsi `pd.DataFrame`. Lalu kamu mengurutkan isinya dengan fungsi `sort_values()`. Akhirnya kamu membuat sebuah bagan polinomial: + +![Sebuah bagan polinomial yang menunjukkan hubungan antara paket dan harga](./images/polynomial.png) + +Kamu bisa melihat garis lengkungnya yang lebih cocok terhadap datamu. + +Ayo periksa akurasi modelnya: + + ```python + accuracy_score = pipeline.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + Nah! + + ```output + Model Accuracy: 0.8537946517073784 + ``` + +Itu bagus! Coba memprediksi harga: + +### Buatlah sebuah prediksi + +Apa kita bisa memberi input dan dapat sebuah prediksi? + +Pakai fungsi `predict()` untuk membuat prediksi: + + ```python + pipeline.predict( np.array([ [2.75] ]) ) + ``` + Kamu diberi prediksi ini: + + ```output + array([[46.34509342]]) + ``` + +Itu sangat masuk akal dengan bagan sebelumnya! Selain itu, jika ini model lebih baik daripada yang sebelumnya dengan data ini, kamu bisa siap untuk labu-labu yang lebih mahal ini! + +🏆 Mantap sekali! Kamu membuat dua model regresi dalam satu pelajaran. Dalam bagian terakhir mengenai regresi, kamu akan belajar tentang regresi logistik untuk pengkategorisasian. + +--- +## 🚀 Tantangan + +Coba-cobalah variabel-variabel yang lain di *notebook* ini untuk melihat bagaimana korelasi berhubungan dengan akurasi model. + +## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/) + +## Review & Pembelajaran Mandiri + +Dalam pelajaran ini kita belajar tentang regresi linear. Ada banyak jenis regresi lain yang penting pula. Bacalah tentang teknik *Stepwise*, *Ridge*, *Lasso*, dan *Elasticnet*. [Kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) juga baik untuk belajar lebih lanjut. + +## Tugas + +[Buatlah sebuah model](assignment.md) \ No newline at end of file From 076339f2375564ce3570c7c76a70f4d7ff2ed7a3 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Thu, 8 Jul 2021 13:00:31 -0400 Subject: [PATCH 10/56] adding IoT! --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 93dad092..34c09b57 100644 --- a/README.md +++ b/README.md @@ -115,4 +115,5 @@ Would you like to contribute a translation? Please read our [translation guideli Our team produces other curricula! Check out: - [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) From 42155e19c439ca215827782cd38b058e6a0c95ca Mon Sep 17 00:00:00 2001 From: Roberto Pauletto Date: Thu, 8 Jul 2021 20:05:33 +0200 Subject: [PATCH 11/56] Chapter 1, Section 4 Readme and assignment --- .../translations/README.it.md | 110 ++++++++++++++++++ .../translations/assignment.it.md | 11 ++ 2 files changed, 121 insertions(+) create mode 100644 1-Introduction/4-techniques-of-ML/translations/README.it.md create mode 100644 1-Introduction/4-techniques-of-ML/translations/assignment.it.md diff --git a/1-Introduction/4-techniques-of-ML/translations/README.it.md b/1-Introduction/4-techniques-of-ML/translations/README.it.md new file mode 100644 index 00000000..a3bcda3c --- /dev/null +++ b/1-Introduction/4-techniques-of-ML/translations/README.it.md @@ -0,0 +1,110 @@ +# Tecniche di Machine Learning + +Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà: + +- Comprendere i processi ad alto livello alla base di machine learning. +- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/) + +## Introduzione + +Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi: + +1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati. +2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello. +3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. +4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore. +5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello. +6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. +7. **Prevedere** Usare nuovi input per testare la precisione del modello. + +## Che domanda fare + +I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori. + +Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora. + +✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica. + +## Attività di pre-costruzione + +Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi. + +### Dati + +Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto: + +- **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine. +- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento. + +✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)! + +### Selezione della variabile caratteristica + +Una [caratteristica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) è una proprietà misurabile dei propri dati. In molti insiemi di dati è espressa come un'intestazione di colonna come "data", "dimensione" o "colore". La propria variabile caratteristica, solitamente rappresentata come `y` nel codice, rappresenta la risposta alla domanda che si sta cercando di porre ai propri dati: a dicembre, di che **colore** saranno le zucche più economiche? A San Francisco, quali quartieri avranno il miglior **prezzo** immobiliare? + +🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche)) + +### Visualizzare i dati + +Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)). + +### Dividere l'insieme di dati + +Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati. + +- **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale. +- **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato. +- **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)). + +## Costruire un modello + +Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta. + +### Decidere un metodo di addestramento + +A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere. + +### Allenare un modello + +Occorre armarsi dei propri dati di allenamento, per essere pronti per "adattarli" per creare un modello. Si noterà che in molte librerie ML si trova il codice "model.fit" - è in questo momento che si inviano i propri dati come un vettore di valori (di solito "X") e una variabile di caratteristica (di solito "y" ). + +### Valutare il modello + +Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello. + +**Adattamento del modello** + +Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. + +? **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto". + +![modello sovraaddestrato](../images/overfitting.png) +> Infografica di [Jen Looper](https://twitter.com/jenlooper) + +## Sintonia dei parametri + +Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa). + +## Previsione + +Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione. + +In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack". + +--- + +## 🚀 Sfida + +Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) + +## Revisione e Auto Apprendimento + +Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + +## Compito + +[Intervista a un data scientist](assignment.it.md) diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.it.md b/1-Introduction/4-techniques-of-ML/translations/assignment.it.md new file mode 100644 index 00000000..41c597f4 --- /dev/null +++ b/1-Introduction/4-techniques-of-ML/translations/assignment.it.md @@ -0,0 +1,11 @@ +# Intervista a un data scientist + +## Istruzioni + +Nella propria azienda, in un gruppo di utenti, o tra amici o compagni di studio, si parli con qualcuno che lavora professionalmente come data scientist. Si scriva un breve documento (500 parole) sulle loro occupazioni quotidiane. Sono specialisti o lavorano "full stack"? + +## Rubrica + +| Criteri | Ottimo | Adeguato | Necessita miglioramento | +| -------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | --------------------- | +| | Un saggio della lunghezza corretta, con fonti attribuite, è presentato come file .doc | Il saggio è attribuito male o più corto della lunghezza richiesta | Non viene presentato alcun saggio | From dc46af12b90e7d14879580df7c5f0419a8badd14 Mon Sep 17 00:00:00 2001 From: iBlueDust <35223375+iBlueDust@users.noreply.github.com> Date: Fri, 9 Jul 2021 12:52:54 +0700 Subject: [PATCH 12/56] Add Indonesian translation for 2-Regression/4-Logistic --- .../4-Logistic/translations/README.id.md | 301 ++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 2-Regression/4-Logistic/translations/README.id.md diff --git a/2-Regression/4-Logistic/translations/README.id.md b/2-Regression/4-Logistic/translations/README.id.md new file mode 100644 index 00000000..6158e6d9 --- /dev/null +++ b/2-Regression/4-Logistic/translations/README.id.md @@ -0,0 +1,301 @@ +# Regresi logistik untuk memprediksi kategori-kategori + +![Infografik regresi logistik vs. linear](./images/logistic-linear.png) +> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) + +## Pembukaan + +Dalam pelajaran regresi terakhir, salah satu teknik ML _klasik_ dan sederhana adalah regresi logistik. Teknik ini digunakan untuk mengemukakan pola-pola untuk memprediksi kategori binari. Apa ini sebuah permen coklat atau tidak? Apa penyakit ini menular tidak? Apa pelanggan ini akan memilih produk ini tidak? + +Dalam pelajaran ini, kamu akan belajar: + +- Sebuah *library* baru untuk pemvisualisasian data +- Teknik-teknik untuk regresi logistik + +✅ Perdalamkan pemahamanmu dalam bekerja dengan regresi jenis ini dalam [modul pembelajaran ini](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) +## Prasyarat + +Setelah bekerja dengan data labu, kita sekarang sudah terbiasa dengannya untuk menyadari bahwa adapula sebuah kategori binari yang kita dapat menggunakan: `Color` (warna). + +Mari membangun sebuah model regresi logistik untuk memprediksi _kemungkinannya labu ini warnanya apa_ berdasarkan beberapa variabel (oranye 🎃 atau putih 👻). + +> Mengapa kita berbicara tentang klasifikasi binary dalam seri pelajaran tentang regresi? Hanya untuk kemudahan linguistik, regresi logistik juga [sebenarnya sebuah metode klasifikasi](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), namun satu yang berdasarkan garis linear. Pelajari lebih lanjut tentang cara-cara lain untuk mengklasifikasi data dalam seri pelajaran berikutnya. + +## Tentukan pertanyaannya + +Untuk keperluan kita, kita akan mengekspresikannya sebagai pilihan binari 'Orange' atau 'Not Orange' (oranye atau bukan oranye). Adapula kategori 'striped' (belang-belang) dalam dataset kita, tetapi tidak banyak titik datanya, jadi kita tidak akan menggunakannya. Lagipula, kategori itu hilang begitu kita buang nilai-nilai nil (null) dari datasetnya. + +> 🎃 Tahukah tidak? Kita kadangkali memanggil labu putih labu 'hantu'. Mereka tidak mudah diukir, jadi mereka tidak sepopuler yang oranye pada Halloween. Tetapi mereka keren juga ya! + +## Tentang regresi logistik + +Regresi logistik berbeda dari regresi linear, jenis regresi yang kamu pelajari sebelumnya, dalam beberapa askpek penting. + +### Klasifikasi binari + +Regresi logistik tidak mempunyai beberapa fitur regresi linear. Regresi logistik menyediakan sebuah prediksi tentang sebuah kategori binari (seperti "oranye atau bukan oranye"), sedangkan yang lainnya dapat memprediksi nilai-nilai kontinu. Contohnya, dengan mengetahui dari mana labu ini dan kapan dipanennya, regresi linear dapat memprediksi _berapa harganya akan naik_, namun regresi logistik tidak bisa. + +![Model klasifikasi labu](./images/pumpkin-classifier.png) +> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) +### Klasifikasi lain + +Ditambah itu, ada banyak jenis regresi logistik, termasuk jenis multinomial dan ordinal: + +- **Multinomial** memperlibatkan lebih dari satu kategori - "Oranye, Putih, dan Belang-belang". +- **Ordinal** memperlibatkan kategori-kategori berurut. Biasanya berguna jika kita inging mengurutkan hasil kita secara logikal, seperti labu-useful if we wanted to order our outcomes logically, like our pumpkins that are ordered by a finite number of sizes (mini,sm,med,lg,xl,xxl). + +![Multinomial vs ordinal regression](./images/multinomial-ordinal.png) +> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) + +### Eh, masih linear ya? + +Walaupun jenis regresi ini semuanya tentang 'prediksi kategori', jenis ini masih paling efektif jika ada hubungan linear antara variabel dependen (warna) dan independen (sisa *dataset*-nya, seperti kota dan ukuran). Jadi baik juga untuk mencari tahu dahulu apa ada hubungan linear antara variabel-variabel ini. + +### Variabel-variabel TIDAK HARUS berkorelasi + +Ingat bagaimana regresi linear bekerja lebih baik dengan variabel berkorelasi? Regresi logistik itu kebalikannya: variabel-variabelnya tidak harus berjejer menjadi garis. Artinya, regresi ini bekerja untuk data ini yang korelasinya lumayan lemah. + +### Perlu banyak data rapi + +Regresi logistik akan memberi hasil lebih akurat jika kamu menggunakan data lebih banyak; *dataset* kecil kita tidak optimal untuk tugas ini, ingatlah itu. + +✅ Pikirkan tentang jenis-jenis data yang akan bekerja baik dengan regresi logistik + +## Latihan - rapikan data + +Pertama, rapikanlah datanya sedikit. Buanglah nilai-nilai nil (null) dan pilihlah beberapa kolom: + +1. Tambahlah kode di bawah ini: + + ```python + from sklearn.preprocessing import LabelEncoder + + new_columns = ['Color','Origin','Item Size','Variety','City Name','Package'] + + new_pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) + + new_pumpkins.dropna(inplace=True) + + new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform) + ``` + + Kamu selalu bisa mengintip kedalam *dataframe*-mu: + + ```python + new_pumpkins.info + ``` + +### Visualisasi - *grid* berdampingan (*side-by-side grid*) + +Sekarang kamu sudah memuat [*notebook* starter](./notebook.ipynb) dengan data labunya sekali lagi dan merapikannya untuk mempertahankan sebuah *dataset* dengan beberapa variabel, termasuk `Color`. Mari memvisualisasi *dataframe*-nya dengan *library* yang beda: [Seaborn](https://seaborn.pydata.org/index.html) yang dibangun di atas Matplotlib yang kita gunakan sebelumnya. + +Seaborn menyediakan beberapa cara keren untuk memvisualisasi datamu. Contohnya, kamu bisa membandungkan distribusi datanya untuk setiap titik data dalam sebuah *grid* berdampingan. + +1. Buatlah sebuah *grid* dengan meng-*instantiate* sebuah `PairGrid` menggunakan data labu kita `new_pumpkins` diikuti memanggil fungsi `map()`: + + ```python + import seaborn as sns + + g = sns.PairGrid(new_pumpkins) + g.map(sns.scatterplot) + ``` + + ![Sebuah visualisasi *grid* data](images/grid.png) + + Dengan mengobservasi datanya secara berdampingan, kamu bisa lihat bagaimana data warnanya berhubungan dengan kolom-kolom lainnya. + + ✅ Dengan petak sebar ini, pendalaman menarik apa saja yang kamu bisa membayangkan? + +### Gunakan sebuah bagan kawanan (*swarm plot*) + +Karena warna adalah sebuah kategori binari (oranye atau bukan oranye), warna disebut 'data kategorikal' dan memerlukan 'sebuah [pendekatan khusus](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) untuk memvisualisasi'. Ada beberapa cara lain untuk memvisualisasi hubungan antara kategori ini dengan variabel-variabel lainnya. + +Kamu bisa memvisualisasikan variabel-variabel secara berdampingan dengan bagan-bagan Seaborn. + +1. Cobalah sebuah bagan kawanan untuk menunjukkan distribusi nilai: + + ```python + sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins) + ``` + + ![Sekawanan data yang divisualisasi](images/swarm.png) + +### Bagan biola + +Sebuah bagan 'biola' itu berguna sebab kamu bisa memvisualisasi bagaimana data dalam kedua kategori itu terdistribusi dengan mudah. Bagan viola tidak efektif dengan *dataset* yang lebih kecil sebab distribusinya ditampilkan sebagai lebih 'mulus'. + +1. Gunakan fungsi `catplot()` dengan parameter `x=Color` dan `kind="violin"`: + + ```python + sns.catplot(x="Color", y="Item Size", + kind="violin", data=new_pumpkins) + ``` + + ![sebuah bagan biola](images/violin.png) + + ✅ Cobalah membuat bagan ini dan jenis-jenis bagan Seaborn lainnya dengan variabel-variabel lainnya. + +Sekarang kita sudah dapat bayangan hubungan antara kedua kategori binary warna dan ukuran. Ayo menjelajahi regresi logistik untuk memprediksi warna sebuah labu tertentu. + +> **🧮 Perlihatkanlah Matematikanya Kepada Saya** +> +> Ingat bagaiaman regresi linear seringkali menggunakan metode kuadrat terkecil untuk tiba pada sebuah nilai? Regresi logistik tergantung pada konsep 'kemungkinan terbesar' menggunakan [fungsi sigmoid](https://wikipedia.org/wiki/Sigmoid_function). Sebuah 'fungsi Sigmoid' terlihat seperti huruf 'S' dalam sistem koordinat Kartesius. Fungsi ini mengambil sebuah nilai dan 'mencorongkannya' menjadi sebuah nomor antara 0 dan 1. Kurva ini juga dipanggil sebuah 'kurva logistik'. Formulanya seperti ini: +> +> ![Fungsi logistic](images/sigmoid.png) +> +> Titik tengah sigmoidnya terletak di sumbu X. L adalah nilai maksimum kurvanya. k adalah terjalnya kurvanya. Jika hasil fungsinya lebih dari 0.5, nilai yang diberikan kepada fungsi tersebut akan diklasifikasikan sebagai '1'. Kalau tidak, nilai itu akan diklasifikasikan sebagai '0'. + +## Bangunlah modelmu + +Scikit-learn membuat membangun model klasifikasi binary sangat mudah. + +1. Pilihlah variabel-variabel yang kamu ingin gunakan dalam model klasifikasimu dan bagilah datanya menjadi set latihan dan set ujian dengan fungsi `train_test_split()`: + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Origin','Item Size','Variety','City Name','Package'] + + X = new_pumpkins[Selected_features] + y = new_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. Sekarang kamu bisa melatihkan modelmu dengan fungsi `fit()` dengan data latihanmu. *Print* hasilnya: + + ```python + from sklearn.model_selection import train_test_split + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + + Lihatlah *scoreboard* modelmu. Tidak buruk, apalagi hanya dengan 1000 baris data: + + ```output + precision recall f1-score support + + 0 0.85 0.95 0.90 166 + 1 0.38 0.15 0.22 33 + + accuracy 0.82 199 + macro avg 0.62 0.55 0.56 199 + weighted avg 0.77 0.82 0.78 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 1 0 0 1 0 0 0 1 0] + ``` + +## Pemahaman lebih baik via sebuah 'matriks kebingungan' + +Walaupun kamu bisa membuat sebuah *scoreboard* melaporkan [istilah-istilah](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) dengan mem-*print* yang di atas, kamu mungkin bisa memahami modelmu dengan lebih mudah dengan sebuah [matriks kebingungan](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) untuk membantu kita lebih paham akan performa modelnya. + +> 🎓 Sebuah '[matriks kebingungan](https://wikipedia.org/wiki/Confusion_matrix)' (atau 'matriks kesalahan') adalah sebuah tabel yang mengekspresikan positif benar vs. positif palsu modelmu sehingga mengukur akurasi prediksi=prediksinya. + +1. Untuk menggunakan sebuah matriks kebingungan, gunakan fungsi `confusin_matrix()`: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + Lihatlah matriks kebingungan modelmu: + + ```output + array([[162, 4], + [ 33, 0]]) + ``` + +Apa yang sedang terjadi di sini? Mari kita asumsi dulu bahwa model kita ditanyakan untuk mengklasifikasi antara dua kategori binari: 'labu' dan 'bukan labu'. + +- Kalau modelmu memprediksi sesuatu sebagai sebuah labu dan memang benar sesuatu itu adalah sebuah labu, itu disebut positif benar yang diindikasi angka di pojok kiri atas. +- Kalau modelmu memprediksi sesuatu sebagai bukan sebuah labu tetapi sesuatu itu sebenarnya sebuah labu, itu disebut positif palsu yang diindikasi angka di pojok kanan atas. +- Kalau modelmu memprediksi sesuati sebagai sebuah labu tetapi sebenarnya bukan sebuah labu, itu disebut negatif palsu yang diindikasi angka di pojok kiri bawah. +- Kalau modelmu memprediksi sesuati sebagai bukan sebuah labu dan memang benar sesuatu itu bukan sebuah labu, itu disebut negatif benar yang diindikasi angka di pojok kanan bawah. + +![Matriks Kebingungan](images/confusion-matrix.png) + +> Infografik oleh [Jen Looper](https://twitter.com/jenlooper) + +Sebagaimana kamu mungkin sudah pikirkan, lebih baik dapat banyak positif benar dan negatif benar dan sedikit positif palsu dan negatif palsu. Implikasinya adalah performa modelnya bagus. + +✅ Pertanyaan: Berdasarkan matriks kebingungan, modelnya baik tidak? Jawaban: Tidak buruk; ada banyak positif benar dan sedikit negatif palsu. + +Mari kita lihat kembali istilah-istilah yang kita lihat tadi dengan bantuan matriks kebingungan: + +> PB: Positif benar +> PP: Positif palsu +> NB: Negatif benar +> NP: Negatif palsu + +🎓 Presisi: PB/(PB + NP) Rasio titik data relevan antara semua titik data (seperti data mana yang benar dilabelkannya) + +🎓 *Recall*: PB/(PB + PP) Rasio titk data relevan yang digunakan, maupun labelnya benar atau tidak. + +🎓 *f1-score*: (2 * Presisi * *Recall*)/(Presisi + *Recall*) Sebuah rata-rata tertimbang antara presisi dan *recall*. 1 itu baik dan 0 itu buruk. + +🎓 Dukungan: Jumlah kejadian per label + +🎓 Akurasi: (PB + NB)/(PB + PS + NB + NS) Persentase label yang diprediksi dengan benar untuk sebuah sampel. + +🎓 Rata-rata Makro: Hitungan rata-rata sederhana (non-tertimbang) metrik setiap label tanpa menghiraukan ketidakseimbangan label. + +🎓 Rata-rata Tertimbang: Hitungan rata-rata metrik setiap label dengan mempertimbangkan ketidakseimbangan label. Rata-ratanya tertimbang nilai Dukungan (jumlah kejadian dalam realita) setiap label. + +✅ Apa kamu bisa tebak metrik apa yang harus dipantau untuk mengurangi jumlah negatif palsu modelmu? +## Visualisasikan kurva ROC model ini + +Ini bukanlah sebuah model buruk. Akurasinya sekitar 80%, jadi sebenarnya bisa digunakan untuk memprediksi warna sebuah labu berdasarkan beberapa variabel. + +Mari kita memvisualisasikan datanya sekali lagi untuk melihat nilai ROC ini: + +```python +from sklearn.metrics import roc_curve, roc_auc_score + +y_scores = model.predict_proba(X_test) +# calculate ROC curve +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) +sns.lineplot([0, 1], [0, 1]) +sns.lineplot(fpr, tpr) +``` +Menggunakan Seaborn lagi, gambarlah [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) (ROC) model ini. Kurva ROC seringkali digunakan untuk menunjukkan output sebuah pembuat klasifikasi berdasarkan jumlah positif benar dan positif palsunya. "Kurva ROC biasanya menetapkan persentase positif benar di sumbu Y dan positif palsunya di sumbu X" (diterjemahkan). Maka, terjalnya kurva ini dan ruang antara garis titik tengah dan kurvanya penting: kamu mau sebuah kurva yang naik ke atas garisnya secepat mungkin. Dalam kasus ini, ada positif palsu di awal, terus kurvanya naik di atas garisnya dengan benar: + +![ROC](./images/ROC.png) + +Akhirnya, gunakanlah [API `roc_auc_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) Scikit-learn untuk menghitung 'Area Di Bawah Kurva'-nya (ADBK) secara persis: + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` +Hasilnya adalah `0.6976998904709748`. Mengingat bahwa ADBK itu antara 0 dan 1, lebih besar ADBK-nya lebih baik sebab ADBK model yang 100% benar terus adalah 1; dalam kasus ini, modelnya _lumayan bagus_. + +Nanti dalam pelajaran lebih lanjut tentang klasifikasi, kamu akan belajar bagaimana mengulang untuk membuat nilai-nilai modelmu lebih baik. Tetapi sekian dulu. Selamat! Kamu selesai pelajaran-pelajaran regresi ini! + +--- +## 🚀 Tantangan + +Masih ada banyak tentang regresi logistik! Tetapi cara paling baik adalah untuk bereksperimen. Carilah sebuah *dataset* yang bisa diteliti seperti ini dan bangunlah sebuah model darinya. Apa yang kamu pelajari? Petunjuk: Coba [Kaggle](https://kaggle.com) untuk *dataset-dataset* menarik. +## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/) + +## Review & Pembelajaran mandiri + +Bacalah beberapa halaman pertama [makalah ini dari Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) tentang beberapa penggunaan praktis regresi logistik. Pikirkan tentang tugas-tugas yang lebih baik untuk suatu jenis regresi atau jenis-jenis lainnya yang kita telah pelajari sampai kini. Apa yang akan bekerja paling baik? + +## Tugas + +[Coba lagi regresi ini](assignment.md) From b3e678374fb17409140d829e305f6ebb09505740 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 14:34:40 +0800 Subject: [PATCH 13/56] Update README.zh-cn.md --- 1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md index 7656259d..156639c3 100644 --- a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md @@ -61,7 +61,7 @@ ### 决定一种训练方法 -根据您的问题和数据的性质,您将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 您可以探索多种训练模型的方法。 根据您的经验,您可能需要尝试多种不同的方法来构建最佳模型。您可能会经历一个过程,在该过程中,数据科学家通过提供看不见的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 +根据您的问题和数据的性质,您将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 您可以探索多种训练模型的方法。 根据您的经验,您可能需要尝试多种不同的方法来构建最佳模型。您可能会经历一个过程,在该过程中,数据科学家通过提供未见过的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 ### 训练模型 From be839fe1e35cdd60efa4e70b9ad7ec334131e841 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 15:05:06 +0800 Subject: [PATCH 14/56] Update README.zh-cn.md --- .../2-history-of-ML/translations/README.zh-cn.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md index ffa1eb26..0491f865 100644 --- a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md @@ -13,8 +13,8 @@ - 1763, 1812 [贝叶斯定理](https://wikipedia.org/wiki/Bayes%27_theorem) 及其前身。该定理及其应用是推理的基础,描述了基于先验知识的事件发生的概率。 - 1805 [最小二乘理论](https://wikipedia.org/wiki/Least_squares)由法国数学家Adrien-Marie Legendre提出。 您将在我们的回归单元中了解这一理论,它有助于数据拟合。 -- 1913 [马尔可夫链](https://wikipedia.org/wiki/Markov_chain)以俄罗斯数学家安德烈马尔可夫的名字命名,用于描述基于先前状态的一系列可能事件。 -- 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美国心理学家弗兰克·罗森布拉特发明的一种线性分类器,是深度学习发展的基础。 +- 1913 [马尔可夫链](https://wikipedia.org/wiki/Markov_chain)以俄罗斯数学家Andrey Markov的名字命名,用于描述基于先前状态的一系列可能事件。 +- 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美国心理学家Frank Rosenblatt发明的一种线性分类器,是深度学习发展的基础。 - 1967 [最近邻](https://wikipedia.org/wiki/Nearest_neighbor)是一种最初设计用于映射路线的算法。 在ML中,它用于检测模式。 - 1970 [反向传播](https://wikipedia.org/wiki/Backpropagation)用于训练[前馈神经网络](https://wikipedia.org/wiki/Feedforward_neural_network)。 - 1982 [循环神经网络](https://wikipedia.org/wiki/Recurrent_neural_network) 是源自产生时间图的前馈神经网络的人工神经网络。 @@ -22,7 +22,7 @@ ✅ 做点调查。在ML和AI的历史上,还有哪些日期是重要的? ## 1950: 会思考的机器 -艾伦·图灵,一个真正杰出的人,[在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: 达特茅斯夏季研究项目 @@ -87,14 +87,14 @@ 这个时代见证了一个新的时代,ML和AI能够解决早期由于缺乏数据和计算能力而导致的一些问题。数据量开始迅速增加,变得越来越广泛,无论好坏,尤其是2007年左右智能手机的出现,计算能力呈指数级增长,算法也随之发展。这个领域开始变得成熟,因为过去那些随心所欲的日子开始具体化为一种真正的纪律。 -## Now +## 现在 今天,机器学习和人工智能几乎触及我们生活的每一个部分。这个时代要求仔细了解这些算法对人类生活的风险和潜在影响。正如微软的Brad Smith所言,“信息技术引发的问题触及隐私和言论自由等基本人权保护的核心。这些问题加重了制造这些产品的科技公司的责任。在我们看来,它们还呼吁政府进行深思熟虑的监管,并围绕可接受的用途制定规范”([来源](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))。 未来的情况还有待观察,但了解这些计算机系统以及它们运行的软件和算法是很重要的。我们希望这门课程能帮助你更好的理解,以便你自己决定。 -[![深度学习的历史 ](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "深度学习的历史 ") -> 🎥 点击上图观看视频:Yann LeCun 在本次讲座中讨论深度学习的历史 +[![深度学习的历史](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "深度学习的历史") +> 🎥 点击上图观看视频:Yann LeCun在本次讲座中讨论深度学习的历史 --- ## 🚀挑战 From 9d6028f32ccaa03b98bfc28ceceb312d5184c38c Mon Sep 17 00:00:00 2001 From: Roberto Pauletto Date: Fri, 9 Jul 2021 15:52:09 +0200 Subject: [PATCH 15/56] Italian Translation - Chapter 1 - Final --- .../2-history-of-ML/translations/README.it.md | 236 +++++----- .../3-fairness/translations/README.it.md | 424 +++++++++--------- .../3-fairness/translations/assignment.it.md | 22 +- .../translations/README.it.md | 220 ++++----- 1-Introduction/translations/README.it.md | 44 +- 5 files changed, 473 insertions(+), 473 deletions(-) diff --git a/1-Introduction/2-history-of-ML/translations/README.it.md b/1-Introduction/2-history-of-ML/translations/README.it.md index 74caa19d..c7e59fd7 100644 --- a/1-Introduction/2-history-of-ML/translations/README.it.md +++ b/1-Introduction/2-history-of-ML/translations/README.it.md @@ -1,118 +1,118 @@ -# Storia di machine learning - -![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png) -> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/) - -In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale. - -La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence): questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante". - -## Scoperte rilevanti - -- 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente. -- 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati. -- 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente. -- 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning. -- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli. -- 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward). -- Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali. - -✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale? -## 1950: Macchine che pensano - -Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale). - -## 1956: Progetto di Ricerca Estivo Dartmouth - -"Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). - -> In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo. - -Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky. - -Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). - -## 1956 - 1974: "Gli anni d'oro" - -Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) - -La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice. - -La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono: - -* [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente". - - ![Shakey, un robot intelligente](../images/shakey.jpg) - > Shakey nel 1972 - -* Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP. - - ![Eliza, un bot](../images/eliza.png) - > Una versione di Eliza, un chatbot - -* Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio. - - [![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU") - - > 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU - -## 1974 - 1980: "L'inverno dell'AI" - -Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono: - -- **Limitazioni**. La potenza di calcolo era troppo limitata. -- **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo. -- **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi. -- **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci: - - I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) - - L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione. - -Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) ;. I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili. - -## Sistemi esperti degli anni '80 - -Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)). - -Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti. - -Questa era ha visto anche una crescente attenzione rivolta alle reti neurali. - -## 1987 - 1993: AI 'Chill' - -La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data. - -## 1993 - 2011 - -Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina. - -## Adesso - -Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). - -Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia. - -[![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning") -> 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione - ---- - -## 🚀 Sfida - -Approfondire uno di questi momenti storici e scoprire - di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto? - -## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4/) - -## Revisione e Auto Apprendimento - -Ecco gli elementi da guardare e ascoltare: - -[Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739) - -[![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd") - -## Compito - -[Creare una sequenza temporale](assignment.it.md) +# Storia di machine learning + +![Riepilogo della storia di machine learning in uno sketchnote](../../../sketchnotes/ml-history.png) +> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/) + +In questa lezione, si camminerà attraverso le principali pietre miliari nella storia di machine learning e dell'intelligenza artificiale. + +La storia dell'intelligenza artificiale, AI, come campo è intrecciata con la storia di machine learning, poiché gli algoritmi e i progressi computazionali alla base di machine learning hanno contribuito allo sviluppo dell'intelligenza artificiale. È utile ricordare che, mentre questi campi come distinte aree di indagine hanno cominciato a cristallizzarsi negli anni '50, importanti [scoperte algoritmiche, statistiche, matematiche, computazionali e tecniche](https://wikipedia.org/wiki/Timeline_of_machine_learning) hanno preceduto e si sono sovrapposte a questa era. In effetti, le persone hanno riflettuto su queste domande per [centinaia di anni](https://wikipedia.org/wiki/History_of_artificial_intelligence); questo articolo discute le basi intellettuali storiche dell'idea di una "macchina pensante". + +## Scoperte rilevanti + +- 1763, 1812 [Teorema di Bayes](https://it.wikipedia.org/wiki/Teorema_di_Bayes) e suoi predecessori. Questo teorema e le sue applicazioni sono alla base dell'inferenza, descrivendo la probabilità che un evento si verifichi in base alla conoscenza precedente. +- 1805 [Metodo dei Minimi Quadrati](https://it.wikipedia.org/wiki/Metodo_dei_minimi_quadrati) del matematico francese Adrien-Marie Legendre. Questa teoria, che verrà trattata nell'unità Regressione, aiuta nell'adattamento dei dati. +- 1913 [Processo Markoviano](https://it.wikipedia.org/wiki/Processo_markoviano) dal nome del matematico russo Andrey Markov è usato per descrivere una sequenza di possibili eventi basati su uno stato precedente. +- 1957 [Percettrone](https://it.wikipedia.org/wiki/Percettrone) è un tipo di classificatore lineare inventato dallo psicologo americano Frank Rosenblatt che sta alla base dei progressi nel deep learning. +- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) è un algoritmo originariamente progettato per mappare i percorsi. In un contesto ML viene utilizzato per rilevare i modelli. +- 1970 [La Retropropagazione dell'Errore](https://it.wikipedia.org/wiki/Retropropagazione_dell'errore) viene utilizzata per addestrare [le reti neurali feed-forward](https://it.wikipedia.org/wiki/Rete_neurale_feed-forward). +- Le [Reti Neurali Ricorrenti](https://it.wikipedia.org/wiki/Rete_neurale_ricorrente) del 1982 sono reti neurali artificiali derivate da reti neurali feedforward che creano grafici temporali. + +✅ Fare una piccola ricerca. Quali altre date si distinguono come fondamentali nella storia del machine learning e dell'intelligenza artificiale? +## 1950: Macchine che pensano + +Alan Turing, una persona davvero notevole che è stata votata [dal pubblico nel 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) come il più grande scienziato del XX secolo, è accreditato per aver contribuito a gettare le basi per il concetto di "macchina in grado di pensare". Ha affrontato gli oppositori e il suo stesso bisogno di prove empiriche di questo concetto in parte creando il [Test di Turing](https://www.bbc.com/news/technology-18475646), che verrà esplorato nelle lezioni di NLP (elaborazione del linguaggio naturale). + +## 1956: Progetto di Ricerca Estivo Dartmouth + +"Il Dartmouth Summer Research Project sull'intelligenza artificiale è stato un evento seminale per l'intelligenza artificiale come campo", qui è stato coniato il termine "intelligenza artificiale" ([fonte](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> In linea di principio, ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza può essere descritto in modo così preciso che si può costruire una macchina per simularlo. + +Il ricercatore capo, il professore di matematica John McCarthy, sperava "di procedere sulla base della congettura che ogni aspetto dell'apprendimento o qualsiasi altra caratteristica dell'intelligenza possa in linea di principio essere descritta in modo così preciso che si possa costruire una macchina per simularlo". I partecipanti includevano un altro luminare nel campo, Marvin Minsky. + +Il workshop è accreditato di aver avviato e incoraggiato diverse discussioni tra cui "l'ascesa di metodi simbolici, sistemi focalizzati su domini limitati (primi sistemi esperti) e sistemi deduttivi contro sistemi induttivi". ([fonte](https://wikipedia.org/wiki/Dartmouth_workshop)). + +## 1956 - 1974: "Gli anni d'oro" + +Dagli anni '50 fino alla metà degli anni '70, l'ottimismo era alto nella speranza che l'AI potesse risolvere molti problemi. Nel 1967, Marvin Minsky dichiarò con sicurezza che "Entro una generazione... il problema della creazione di 'intelligenza artificiale' sarà sostanzialmente risolto". (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) + +La ricerca sull'elaborazione del linguaggio naturale è fiorita, la ricerca è stata perfezionata e resa più potente ed è stato creato il concetto di "micro-mondi", in cui compiti semplici sono stati completati utilizzando istruzioni in linguaggio semplice. + +La ricerca è stata ben finanziata dalle agenzie governative, sono stati fatti progressi nel calcolo e negli algoritmi e sono stati costruiti prototipi di macchine intelligenti. Alcune di queste macchine includono: + +* [Shakey il robot](https://wikipedia.org/wiki/Shakey_the_robot), che poteva manovrare e decidere come eseguire i compiti "intelligentemente". + + ![Shakey, un robot intelligente](../images/shakey.jpg) + > Shakey nel 1972 + +* Eliza, una delle prime "chatterbot", poteva conversare con le persone e agire come una "terapeuta" primitiva. Si Imparerà di più su Eliza nelle lezioni di NLP. + + ![Eliza, un bot](../images/eliza.png) + > Una versione di Eliza, un chatbot + +* Il "mondo dei blocchi" era un esempio di un micromondo in cui i blocchi potevano essere impilati e ordinati e si potevano testare esperimenti su macchine per insegnare a prendere decisioni. I progressi realizzati con librerie come [SHRDLU](https://it.wikipedia.org/wiki/SHRDLU) hanno contribuito a far progredire l'elaborazione del linguaggio. + + [![Il mondo dei blocchi con SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "Il mondo dei blocchi con SHRDLU") + + > 🎥 Fare clic sull'immagine sopra per un video: Blocks world con SHRDLU + +## 1974 - 1980: "L'inverno dell'AI" + +Verso la metà degli anni '70, era diventato evidente che la complessità della creazione di "macchine intelligenti" era stata sottovalutata e che la sua promessa, data la potenza di calcolo disponibile, era stata esagerata. I finanziamenti si sono prosciugati e la fiducia nel settore è rallentata. Alcuni problemi che hanno influito sulla fiducia includono: + +- **Limitazioni**. La potenza di calcolo era troppo limitata. +- **Esplosione combinatoria**. La quantità di parametri necessari per essere addestrati è cresciuta in modo esponenziale man mano che veniva chiesto di più ai computer, senza un'evoluzione parallela della potenza e delle capacità di calcolo. +- **Scarsità di dati**. C'era una scarsità di dati che ostacolava il processo di test, sviluppo e perfezionamento degli algoritmi. +- **Stiamo facendo le domande giuste?**. Le stesse domande che venivano poste cominciarono ad essere messe in discussione. I ricercatori hanno iniziato a criticare i loro approcci: + - I test di Turing furono messi in discussione attraverso, tra le altre idee, la "teoria della stanza cinese" che postulava che "la programmazione di un computer digitale può far sembrare che capisca il linguaggio ma non potrebbe produrre una vera comprensione". ([fonte](https://plato.stanford.edu/entries/chinese-room/)) + - L'etica dell'introduzione di intelligenze artificiali come la "terapeuta" ELIZA nella società è stata messa in discussione. + +Allo stesso tempo, iniziarono a formarsi varie scuole di pensiero sull'AI. È stata stabilita una dicotomia tra pratiche ["scruffy" contro "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies). I laboratori _scruffy_ ottimizzavano i programmi per ore fino a quando non ottenevano i risultati desiderati. I laboratori _Neat_ "si focalizzavano sulla logica e sulla risoluzione formale dei problemi". ELIZA e SHRDLU erano ben noti _sistemi scruffy_. Negli anni '80, quando è emersa la richiesta di rendere riproducibili i sistemi ML, l'_approccio neat_ ha gradualmente preso il sopravvento in quanto i suoi risultati sono più spiegabili. + +## Sistemi esperti degli anni '80 + +Man mano che il settore cresceva, i suoi vantaggi per le imprese diventavano più chiari e negli anni '80 lo stesso accadeva con la proliferazione di "sistemi esperti". "I sistemi esperti sono stati tra le prime forme di software di intelligenza artificiale (AI) di vero successo". ([fonte](https://wikipedia.org/wiki/Expert_system)). + +Questo tipo di sistema è in realtà _ibrido_, costituito in parte da un motore di regole che definisce i requisiti aziendali e un motore di inferenza che sfrutta il sistema di regole per dedurre nuovi fatti. + +Questa era ha visto anche una crescente attenzione rivolta alle reti neurali. + +## 1987 - 1993: AI 'Chill' + +La proliferazione di hardware specializzato per sistemi esperti ha avuto lo sfortunato effetto di diventare troppo specializzato. L'ascesa dei personal computer ha anche gareggiato con questi grandi sistemi centralizzati specializzati. La democratizzazione dell'informatica era iniziata e alla fine ha spianato la strada alla moderna esplosione dei big data. + +## 1993 - 2011 + +Questa epoca ha visto una nuova era per ML e AI per essere in grado di risolvere alcuni dei problemi che erano stati causati in precedenza dalla mancanza di dati e potenza di calcolo. La quantità di dati ha iniziato ad aumentare rapidamente e a diventare più ampiamente disponibile, nel bene e nel male, soprattutto con l'avvento degli smartphone intorno al 2007. La potenza di calcolo si è ampliata in modo esponenziale e gli algoritmi si sono evoluti di pari passo. Il campo ha iniziato a maturare quando i giorni a ruota libera del passato hanno iniziato a cristallizzarsi in una vera disciplina. + +## Adesso + +Oggi, machine learning e intelligenza artificiale toccano quasi ogni parte della nostra vita. Questa era richiede un'attenta comprensione dei rischi e dei potenziali effetti di questi algoritmi sulle vite umane. Come ha affermato Brad Smith di Microsoft, "La tecnologia dell'informazione solleva questioni che vanno al cuore delle protezioni fondamentali dei diritti umani come la privacy e la libertà di espressione. Questi problemi aumentano la responsabilità delle aziende tecnologiche che creano questi prodotti. A nostro avviso, richiedono anche un'attenta regolamentazione del governo e lo sviluppo di norme sugli usi accettabili" ([fonte](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +Resta da vedere cosa riserva il futuro, ma è importante capire questi sistemi informatici e il software e gli algoritmi che eseguono. Ci si augura che questo programma di studi aiuti ad acquisire una migliore comprensione in modo che si possa decidere in autonomia. + +[![La storia del deeplearningLa](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 " storia del deep learning") +> 🎥 Fare clic sull'immagine sopra per un video: Yann LeCun discute la storia del deep learning in questa lezione + +--- + +## 🚀 Sfida + +Approfondire uno di questi momenti storici e scoprire + di più sulle persone che stanno dietro ad essi. Ci sono personaggi affascinanti e nessuna scoperta scientifica è mai stata creata in un vuoto culturale. Cosa si è scoperto? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4/) + +## Revisione e Auto Apprendimento + +Ecco gli elementi da guardare e ascoltare: + +[Questo podcast in cui Amy Boyd discute l'evoluzione dell'AI](http://runasradio.com/Shows/Show/739) + +[![La storia dell'AI di Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "La storia dell'AI di Amy Boyd") + +## Compito + +[Creare una sequenza temporale](assignment.it.md) diff --git a/1-Introduction/3-fairness/translations/README.it.md b/1-Introduction/3-fairness/translations/README.it.md index 2b822c88..3c167f09 100644 --- a/1-Introduction/3-fairness/translations/README.it.md +++ b/1-Introduction/3-fairness/translations/README.it.md @@ -1,212 +1,212 @@ -# Equità e machine learning - -![Riepilogo dell'equità in machine learning in uno sketchnote](../../../sketchnotes/ml-fairness.png) -> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/) - -## 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. - -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à: - -- Aumentare la propria consapevolezza sull'importanza dell'equità nel machine learning. -- Informarsi sui danni legati all'equità. -- Apprendere ulteriori informazioni sulla valutazione e la mitigazione dell'ingiustizia. - -## Prerequisito - -Come prerequisito, si segua il percorso di apprendimento "Principi di IA 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) - -[![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 - -## Iniquità nei dati e negli algoritmi - -> "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. - -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à - -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: - -- **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. -- **Stereotipi**. Associazione di un dato gruppo con attributi preassegnati. -- **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. - -Si dia un'occhiata agli esempi. - -### 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 trattenuti da 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". - -✅ Si compia una piccola ricerca per trovare un esempio reale di qualcosa del genere - -### 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/) - -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 - -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 inglese](../images/gender-bias-translate-tr-en.png) - -### 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. - -[![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 - -### 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. - -![Ricerca CEO di Bing](../images/ceos.png) -> 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. - -✅ **Discussione**: rivisitare alcuni degli esempi e vedere se mostrano danni diversi. - -| | Allocatione | Qualita di servizio | Stereotipo | Denigrazione | Sovra o sotto rappresentazione | -| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: | -| Sistema di assunzione automatizzato | x | x | x | | x | -| Traduzione automatica | | | | | | -| Eitchettatura foto | | | | | | - -## 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. - -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. - -## 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à. - -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. - -## 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 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. - -### **Identificare danni (e benefici)** - -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 sono trattenute da 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. - -### **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. - -### **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. - -✅ 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 | -| ---------- | ------------------- | ------------------- | ----- | -| Donna | 0,37 | 0,27 | 54032 | -| Uomo | 0,31 | 0.35 | 28620 | -| 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. - -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? - -## Mitigare l'ingiustizia - -Per mitigare l'ingiustizia, si esplorari 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. - -### Fairlearn - -[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. - -- 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 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 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 - -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 -- investire in insiemi di dati che riflettano le diversità della società -- 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? - -## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/) - -## Revisione e Auto Apprendimento - -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: - -- 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: - -- 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/) - -Si esplori il toolkit Fairlearn - -[Fairlearn](https://fairlearn.org/) - -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) - -## Compito - -[Esplorare Fairlearn](assignment.it.md) +# Equità e machine learning + +![Riepilogo dell'equità in machine learning in uno sketchnote](../../../sketchnotes/ml-fairness.png) +> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac) + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/) + +## 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. + +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à: + +- Aumentare la propria consapevolezza sull'importanza dell'equità nel machine learning. +- Informarsi sui danni legati all'equità. +- Apprendere ulteriori informazioni sulla valutazione e la mitigazione dell'ingiustizia. + +## Prerequisito + +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) + +[![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 + +## Iniquità nei dati e negli algoritmi + +> "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. + +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à + +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: + +- **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. +- **Stereotipi**. Associazione di un dato gruppo con attributi preassegnati. +- **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. + +Si dia un'occhiata agli esempi. + +### 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. + +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 + +### 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/) + +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 + +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 inglese](../images/gender-bias-translate-tr-en.png) + +### 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. + +[![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 + +### 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. + +![Ricerca CEO di Bing](../images/ceos.png) +> 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. + +✅ **Discussione**: rivisitare alcuni degli esempi e vedere se mostrano danni diversi. + +| | Allocatione | Qualita di servizio | Stereotipo | Denigrazione | Sovra o sotto rappresentazione | +| ----------------------- | :--------: | :----------------: | :----------: | :---------: | :----------------------------: | +| Sistema di assunzione automatizzato | x | x | x | | x | +| Traduzione automatica | | | | | | +| Eitchettatura foto | | | | | | + +## 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. + +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. + +## 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à. + +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. + +## 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 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. + +### **Identificare danni (e benefici)** + +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 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** + +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à** + +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 + +| | percentuale di falsi positivi | Percentuale di falsi negativi |conteggio | +| ---------- | ------------------- | ------------------- | ----- | +| Donna | 0,37 | 0,27 | 54032 | +| Uomo | 0,31 | 0.35 | 28620 | +| 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. + +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? + +## 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. + +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](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. + +- 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 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 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 + +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 +- investire in insiemi di dati che riflettano le diversità della società +- 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? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/) + +## Revisione e Auto Apprendimento + +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: + +- 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: + +- 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/) + +Si esplori il toolkit Fairlearn + +[Fairlearn](https://fairlearn.org/) + +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) + +## Compito + +[Esplorare Fairlearn](assignment.it.md) diff --git a/1-Introduction/3-fairness/translations/assignment.it.md b/1-Introduction/3-fairness/translations/assignment.it.md index e2151bdf..4523fbb3 100644 --- a/1-Introduction/3-fairness/translations/assignment.it.md +++ b/1-Introduction/3-fairness/translations/assignment.it.md @@ -1,11 +1,11 @@ -# Esplora Fairlearn - -## Istruzioni - -In questa lezione si è appreso di Fairlearn, un "progetto open source guidato dalla comunità per aiutare i data scientist a migliorare l'equità dei sistemi di intelligenza artificiale". Per questo compito, esplorare uno dei [notebook](https://fairlearn.org/v0.6.2/auto_examples/index.html) di Fairlearn e riportare i propri risultati in un documento o in una presentazione. - -## Rubrica - -| Criteri | Ottimo | Adeguato | Necessita miglioramento | -| -------- | --------- | -------- | ----------------- | -| | Viene presentato un documento o una presentazione powerpoint in cui si discutono i sistemi di Fairlearn, il notebook che è stato eseguito e le conclusioni tratte dall'esecuzione | Viene presentato un documento senza conclusioni | Non viene presentato alcun documento | +# Esplorare Fairlearn + +## Istruzioni + +In questa lezione si è appreso di Fairlearn, un "progetto open source guidato dalla comunità per aiutare i data scientist a migliorare l'equità dei sistemi di intelligenza artificiale". Per questo compito, esplorare uno dei [notebook](https://fairlearn.org/v0.6.2/auto_examples/index.html) di Fairlearn e riportare i propri risultati in un documento o in una presentazione. + +## Rubrica + +| Criteri | Ottimo | Adeguato | Necessita miglioramento | +| -------- | --------- | -------- | ----------------- | +| | Viene presentato un documento o una presentazione powerpoint in cui si discutono i sistemi di Fairlearn, il notebook che è stato eseguito e le conclusioni tratte dall'esecuzione | Viene presentato un documento senza conclusioni | Non viene presentato alcun documento | diff --git a/1-Introduction/4-techniques-of-ML/translations/README.it.md b/1-Introduction/4-techniques-of-ML/translations/README.it.md index a3bcda3c..2fe5794b 100644 --- a/1-Introduction/4-techniques-of-ML/translations/README.it.md +++ b/1-Introduction/4-techniques-of-ML/translations/README.it.md @@ -1,110 +1,110 @@ -# Tecniche di Machine Learning - -Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà: - -- Comprendere i processi ad alto livello alla base di machine learning. -- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". - -## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/) - -## Introduzione - -Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi: - -1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati. -2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello. -3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. -4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore. -5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello. -6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. -7. **Prevedere** Usare nuovi input per testare la precisione del modello. - -## Che domanda fare - -I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori. - -Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora. - -✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica. - -## Attività di pre-costruzione - -Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi. - -### Dati - -Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto: - -- **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine. -- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento. - -✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)! - -### Selezione della variabile caratteristica - -Una [caratteristica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) è una proprietà misurabile dei propri dati. In molti insiemi di dati è espressa come un'intestazione di colonna come "data", "dimensione" o "colore". La propria variabile caratteristica, solitamente rappresentata come `y` nel codice, rappresenta la risposta alla domanda che si sta cercando di porre ai propri dati: a dicembre, di che **colore** saranno le zucche più economiche? A San Francisco, quali quartieri avranno il miglior **prezzo** immobiliare? - -🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche)) - -### Visualizzare i dati - -Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)). - -### Dividere l'insieme di dati - -Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati. - -- **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale. -- **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato. -- **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)). - -## Costruire un modello - -Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta. - -### Decidere un metodo di addestramento - -A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere. - -### Allenare un modello - -Occorre armarsi dei propri dati di allenamento, per essere pronti per "adattarli" per creare un modello. Si noterà che in molte librerie ML si trova il codice "model.fit" - è in questo momento che si inviano i propri dati come un vettore di valori (di solito "X") e una variabile di caratteristica (di solito "y" ). - -### Valutare il modello - -Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello. - -**Adattamento del modello** - -Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. - -? **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto". - -![modello sovraaddestrato](../images/overfitting.png) -> Infografica di [Jen Looper](https://twitter.com/jenlooper) - -## Sintonia dei parametri - -Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa). - -## Previsione - -Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione. - -In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack". - ---- - -## 🚀 Sfida - -Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile? - -## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) - -## Revisione e Auto Apprendimento - -Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). - -## Compito - -[Intervista a un data scientist](assignment.it.md) +# Tecniche di Machine Learning + +Il processo di creazione, utilizzo e mantenimento dei modelli di machine learning e dei dati che utilizzano è un processo molto diverso da molti altri flussi di lavoro di sviluppo. In questa lezione si demistifica il processo, e si delineano le principali tecniche che occorre conoscere. Si dovrà: + +- Comprendere i processi ad alto livello alla base di machine learning. +- Esplorare concetti di base come "modelli", "previsioni" e "dati di addestramento". + +## [Quiz Pre-Lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/) + +## Introduzione + +Ad alto livello, il mestiere di creare processi di apprendimento automatico (ML) comprende una serie di passaggi: + +1. **Decidere circa la domanda**. La maggior parte dei processi ML inizia ponendo una domanda alla quale non è possibile ottenere risposta da un semplice programma condizionale o da un motore basato su regole. Queste domande spesso ruotano attorno a previsioni basate su una raccolta di dati. +2. **Raccogliere e preparare i dati**. Per poter rispondere alla domanda, servono dati. La qualità e, a volte, la quantità dei dati determineranno quanto bene sarà possibile rispondere alla domanda iniziale. La visualizzazione dei dati è un aspetto importante di questa fase. Questa fase include anche la suddivisione dei dati in un gruppo di addestramento (training) e test per costruire un modello. +3. **Scegliere un metodo di addestramento**. A seconda della domanda e della natura dei dati, è necessario scegliere come si desidera addestrare un modello per riflettere al meglio i dati e fare previsioni accurate su di essi. Questa è la parte del processo di ML che richiede competenze specifiche e, spesso, una notevole quantità di sperimentazione. +4. **Addestrare il modello**. Usando i dati di addestramento, si utilizzeranno vari algoritmi per addestrare un modello a riconoscere modelli nei dati. Il modello potrebbe sfruttare pesi interni che possono essere regolati per privilegiare alcune parti dei dati rispetto ad altre per costruire un modello migliore. +5. **Valutare il modello**. Si utilizzano dati mai visti prima (i dati di test) da quelli raccolti per osservare le prestazioni del modello. +6. **Regolazione dei parametri**. In base alle prestazioni del modello, si può ripetere il processo utilizzando parametri differenti, o variabili, che controllano il comportamento degli algoritmi utilizzati per addestrare il modello. +7. **Prevedere**. Usare nuovi input per testare la precisione del modello. + +## Che domanda fare + +I computer sono particolarmente abili nello scoprire modelli nascosti nei dati. Questa caratteristica è molto utile per i ricercatori che hanno domande su un determinato campo a cui non è possibile rispondere facilmente creando un motore di regole basato su condizioni. Dato un compito attuariale, ad esempio, un data scientist potrebbe essere in grado di costruire manualmente regole sulla mortalità dei fumatori rispetto ai non fumatori. + +Quando molte altre variabili vengono introdotte nell'equazione, tuttavia, un modello ML potrebbe rivelarsi più efficiente per prevedere i tassi di mortalità futuri in base alla storia sanitaria passata. Un esempio più allegro potrebbe essere fare previsioni meteorologiche per il mese di aprile in una determinata località sulla base di dati che includono latitudine, longitudine, cambiamento climatico, vicinanza all'oceano, modelli della corrente a getto e altro ancora. + +✅ Questa [presentazione](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf) sui modelli meteorologici offre una prospettiva storica per l'utilizzo di ML nell'analisi meteorologica. + +## Attività di pre-costruzione + +Prima di iniziare a costruire il proprio modello, ci sono diverse attività da completare. Per testare la domanda e formare un'ipotesi basata sulle previsioni di un modello, occorre identificare e configurare diversi elementi. + +### Dati + +Per poter rispondere con sicurezza alla domanda, serve una buona quantità di dati del tipo giusto. Ci sono due cose da fare a questo punto: + +- **Raccogliere dati**. Tenendo presente la lezione precedente sull'equità nell'analisi dei dati, si raccolgano i dati con cura. Ci sia consapevolezza delle fonti di questi dati, di eventuali pregiudizi intrinseci che potrebbero avere e si documenti la loro origine. +- **Preparare i dati**. Ci sono diversi passaggi nel processo di preparazione dei dati. Potrebbe essere necessario raccogliere i dati e normalizzarli se provengono da fonti diverse. Si può migliorare la qualità e la quantità dei dati attraverso vari metodi come la conversione di stringhe in numeri (come si fa in [Clustering](../../../5-Clustering/1-Visualize/transaltions/README.it.md)). Si potrebbero anche generare nuovi dati, basati sull'originale (come si fa in [Classificazione](../../../4-Classification/1-Introduction/translations/README.it.md)). Si possono pulire e modificare i dati (come verrà fatto prima della lezione sull'[app Web](../../../3-Web-App/translations/README.it.md) ). Infine, si potrebbe anche aver bisogno di renderli casuali e mescolarli, a seconda delle proprie tecniche di addestramento. + +✅ Dopo aver raccolto ed elaborato i propri dati, si prenda un momento per vedere se la loro forma consentirà di rispondere alla domanda prevista. Potrebbe essere che i dati non funzionino bene nello svolgere il compito assegnato, come si scopre nelle lezioni di [Clustering](../../../5-Clustering/1-Visualize/translations/README.it.md)! + +### Selezione della variabile caratteristica + +Una [caratteristica](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) è una proprietà misurabile dei propri dati. In molti insiemi di dati è espressa come un'intestazione di colonna come "data", "dimensione" o "colore". La propria variabile caratteristica, solitamente rappresentata come `y` nel codice, rappresenta la risposta alla domanda che si sta cercando di porre ai propri dati: a dicembre, di che **colore** saranno le zucche più economiche? A San Francisco, quali quartieri avranno il miglior **prezzo** immobiliare? + +🎓 **Selezione ed estrazione della caratteristica** Come si fa a sapere quale variabile scegliere quando si costruisce un modello? Probabilmente si dovrà passare attraverso un processo di selezione o estrazione delle caratteristiche per scegliere le variabili giuste per il modello più efficace. Tuttavia, non è la stessa cosa: "L'estrazione delle caratteristiche crea nuove caratteristiche dalle funzioni delle caratteristiche originali, mentre la selezione delle caratteristiche restituisce un sottoinsieme delle caratteristiche". ([fonte](https://it.wikipedia.org/wiki/Selezione_delle_caratteristiche)) + +### Visualizzare i dati + +Un aspetto importante del bagaglio del data scientist è la capacità di visualizzare i dati utilizzando diverse eccellenti librerie come Seaborn o MatPlotLib. Rappresentare visivamente i propri dati potrebbe consentire di scoprire correlazioni nascoste che si possono sfruttare. Le visualizzazioni potrebbero anche aiutare a scoprire pregiudizi o dati sbilanciati (come si scopre in [Classificazione](../../../4-Classification/2-Classifiers-1/translations/README.it.md)). + +### Dividere l'insieme di dati + +Prima dell'addestramento, è necessario dividere l'insieme di dati in due o più parti di dimensioni diverse che rappresentano comunque bene i dati. + +- **Addestramento**. Questa parte dell'insieme di dati è adatta al proprio modello per addestrarlo. Questo insieme costituisce la maggior parte dell'insieme di dati originale. +- **Test**. Un insieme di dati di test è un gruppo indipendente di dati, spesso raccolti dai dati originali, che si utilizzano per confermare le prestazioni del modello creato. +- **Convalida**. Un insieme di convalida è un gruppo indipendente più piccolo di esempi da usare per ottimizzare gli iperparametri, o architettura, del modello per migliorarlo. A seconda delle dimensioni dei propri dati e della domanda che si sta ponendo, si potrebbe non aver bisogno di creare questo terzo insieme (come si nota in [Previsione delle Serie Temporali](../../../7-TimeSeries/1-Introduction/translations/README.it.md)). + +## Costruire un modello + +Utilizzando i dati di addestramento, l'obiettivo è costruire un modello o una rappresentazione statistica dei propri dati, utilizzando vari algoritmi per **addestrarlo** . L'addestramento di un modello lo espone ai dati e consente di formulare ipotesi sui modelli percepiti che scopre, convalida e accetta o rifiuta. + +### Decidere un metodo di addestramento + +A seconda della domanda e della natura dei dati, si sceglierà un metodo per addestrarlo. Passando attraverso [la documentazione di Scikit-learn](https://scikit-learn.org/stable/user_guide.html), che si usa in questo corso, si possono esplorare molti modi per addestrare un modello. A seconda della propria esperienza, si potrebbe dover provare diversi metodi per creare il modello migliore. È probabile che si attraversi un processo in cui i data scientist valutano le prestazioni di un modello fornendogli dati non visti, verificandone l'accuratezza, i pregiudizi e altri problemi che degradano la qualità e selezionando il metodo di addestramento più appropriato per l'attività da svolgere. + +### Allenare un modello + +Occorre armarsi dei propri dati di allenamento, per essere pronti per "adattarli" per creare un modello. Si noterà che in molte librerie ML si trova il codice "model.fit" - è in questo momento che si inviano i propri dati come un vettore di valori (di solito "X") e una variabile di caratteristica (di solito "y" ). + +### Valutare il modello + +Una volta completato il processo di addestramento (potrebbero essere necessarie molte iterazioni, o "epoche", per addestrare un modello di grandi dimensioni), si sarà in grado di valutare la qualità del modello utilizzando i dati di test per valutarne le prestazioni. Questi dati sono un sottoinsieme dei dati originali che il modello non ha analizzato in precedenza. Si può stampare una tabella di metriche sulla qualità del proprio modello. + +🎓 **Adattamento del modello** + +Nel contesto di machine learning, l'adattamento del modello si riferisce all'accuratezza della funzione sottostante del modello mentre tenta di analizzare dati con cui non ha familiarità. + +🎓 **Inadeguatezza** o **sovraadattamento** sono problemi comuni che degradano la qualità del modello, poiché il modello non si adatta abbastanza bene o troppo bene. Ciò fa sì che il modello esegua previsioni troppo allineate o troppo poco allineate con i suoi dati di addestramento. Un modello overfit (sovraaddestrato) prevede troppo bene i dati di addestramento perché ha appreso troppo bene i dettagli e il rumore dei dati. Un modello underfit (inadeguato) non è accurato in quanto non può né analizzare accuratamente i suoi dati di allenamento né i dati che non ha ancora "visto". + +![modello sovraaddestrato](../images/overfitting.png) +> Infografica di [Jen Looper](https://twitter.com/jenlooper) + +## Sintonia dei parametri + +Una volta completato l'addestramento iniziale, si osservi la qualità del modello e si valuti di migliorarlo modificando i suoi "iperparametri". Maggiori informazioni sul processo [nella documentazione](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa). + +## Previsione + +Questo è il momento in cui si possono utilizzare dati completamente nuovi per testare l'accuratezza del proprio modello. In un'impostazione ML "applicata", in cui si creano risorse Web per utilizzare il modello in produzione, questo processo potrebbe comportare la raccolta dell'input dell'utente (ad esempio, la pressione di un pulsante) per impostare una variabile e inviarla al modello per l'inferenza, oppure valutazione. + +In queste lezioni si scoprirà come utilizzare questi passaggi per preparare, costruire, testare, valutare e prevedere - tutti gesti di un data scientist e altro ancora, mentre si avanza nel proprio viaggio per diventare un ingegnere ML "full stack". + +--- + +## 🚀 Sfida + +Disegnare un diagramma di flusso che rifletta i passaggi di un professionista di ML. Dove ci si vede in questo momento nel processo? Dove si prevede che sorgeranno difficoltà? Cosa sembra facile? + +## [Quiz post-lezione](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) + +## Revisione e Auto Apprendimento + +Cercare online le interviste con i data scientist che discutono del loro lavoro quotidiano. Eccone [una](https://www.youtube.com/watch?v=Z3IjgbbCEfs). + +## Compito + +[Intervista a un data scientist](assignment.it.md) diff --git a/1-Introduction/translations/README.it.md b/1-Introduction/translations/README.it.md index ea29d1d3..a9460c26 100644 --- a/1-Introduction/translations/README.it.md +++ b/1-Introduction/translations/README.it.md @@ -1,22 +1,22 @@ -# Introduzione a machine learning - -In questa sezione del curriculum, verranno presentati i concetti di base sottostanti machine learning, di cosa si tratta, e si imparerà la sua storia e le tecniche utilizzate dai ricercatori per lavorarci. Si esplorerà insieme questo nuovo mondo di ML! - -![globo](../images/globe.jpg) -> Foto di Bill Oxford su Unsplash - -### Lezioni - -1. [Introduzione a machine learning](../1-intro-to-ML/translations/README.it.md) -1. [La storia di machine learning e dell'AI](../2-history-of-ML/translations/README.it.md) -1. [Equità e machine learning](../3-fairness/translations/README.it.md) -1. [Tecniche di machine learning](../4-techniques-of-ML/translations/README.it.md) -### Crediti - -"Introduzione a Machine Learning" è stato scritto con ♥️ da un team di persone tra cui [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) e [Jen Looper](https://twitter.com/jenlooper) - -"La Storia di Machine Learning" è stato scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Amy Boyd](https://twitter.com/AmyKateNicho) - -"Equità e Machine Learning" è stato scritto con ♥️ da [Tomomi Imura](https://twitter.com/girliemac) - -"Tecniche di Machine Learning" è stato scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Chris Noring](https://twitter.com/softchris) \ No newline at end of file +# Introduzione a machine learning + +In questa sezione del programma di studi, verranno presentati i concetti di base sottostanti machine learning, di cosa si tratta, e si imparerà la sua storia e le tecniche utilizzate dai ricercatori per lavorarci. Si esplorerà insieme questo nuovo mondo di ML! + +![globo](../images/globe.jpg) +> Foto di Bill Oxford su Unsplash + +### Lezioni + +1. [Introduzione a machine learning](../1-intro-to-ML/translations/README.it.md) +1. [La storia di machine learning e dell'AI](../2-history-of-ML/translations/README.it.md) +1. [Equità e machine learning](../3-fairness/translations/README.it.md) +1. [Tecniche di machine learning](../4-techniques-of-ML/translations/README.it.md) +### Crediti + +"Introduzione a Machine Learning" scritto con ♥️ da un team di persone tra cui [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) e [Jen Looper](https://twitter.com/jenlooper) + +"La Storia di Machine Learning" scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Amy Boyd](https://twitter.com/AmyKateNicho) + +"Equità e Machine Learning" scritto con ♥️ da [Tomomi Imura](https://twitter.com/girliemac) + +"Tecniche di Machine Learning" scritto con ♥️ da [Jen Looper](https://twitter.com/jenlooper) e [Chris Noring](https://twitter.com/softchris) \ No newline at end of file From bf6fd47c2d9804cd301b607f82bf8295828ae4ca Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 22:06:23 +0800 Subject: [PATCH 16/56] [WIP]translate 2.3 to Simplified Chinese --- .../3-Linear/translations/README.zh-cn.md | 331 ++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 2-Regression/3-Linear/translations/README.zh-cn.md diff --git a/2-Regression/3-Linear/translations/README.zh-cn.md b/2-Regression/3-Linear/translations/README.zh-cn.md new file mode 100644 index 00000000..2a60658b --- /dev/null +++ b/2-Regression/3-Linear/translations/README.zh-cn.md @@ -0,0 +1,331 @@ +# Build a regression model using Scikit-learn: regression two ways + +![Linear vs polynomial regression infographic](./images/linear-polynomial.png) +> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) +### Introduction + +So far you have explored what regression is with sample data gathered from the pumpkin pricing dataset that we will use throughout this lesson. You have also visualized it using Matplotlib. + +Now you are ready to dive deeper into regression for ML. In this lesson, you will learn more about two types of regression: _basic linear regression_ and _polynomial regression_, along with some of the math underlying these techniques. + +> Throughout this curriculum, we assume minimal knowledge of math, and seek to make it accessible for students coming from other fields, so watch for notes, 🧮 callouts, diagrams, and other learning tools to aid in comprehension. + +### Prerequisite + +You should be familiar by now with the structure of the pumpkin data that we are examining. You can find it preloaded and pre-cleaned in this lesson's _notebook.ipynb_ file. In the file, the pumpkin price is displayed per bushel in a new dataframe. Make sure you can run these notebooks in kernels in Visual Studio Code. + +### Preparation + +As a reminder, you are loading this data so as to ask questions of it. + +- When is the best time to buy pumpkins? +- What price can I expect of a case of miniature pumpkins? +- Should I buy them in half-bushel baskets or by the 1 1/9 bushel box? +Let's keep digging into this data. + +In the previous lesson, you created a Pandas dataframe and populated it with part of the original dataset, standardizing the pricing by the bushel. By doing that, however, you were only able to gather about 400 datapoints and only for the fall months. + +Take a look at the data that we preloaded in this lesson's accompanying notebook. The data is preloaded and an initial scatterplot is charted to show month data. Maybe we can get a little more detail about the nature of the data by cleaning it more. + +## A linear regression line + +As you learned in Lesson 1, the goal of a linear regression exercise is to be able to plot a line to: + +- **Show variable relationships**. Show the relationship between variables +- **Make predictions**. Make accurate predictions on where a new datapoint would fall in relationship to that line. + +It is typical of **Least-Squares Regression** to draw this type of line. The term 'least-squares' means that all the datapoints surrounding the regression line are squared and then added up. Ideally, that final sum is as small as possible, because we want a low number of errors, or `least-squares`. + +We do so since we want to model a line that has the least cumulative distance from all of our data points. We also square the terms before adding them since we are concerned with its magnitude rather than its direction. + +> **🧮 Show me the math** +> +> This line, called the _line of best fit_ can be expressed by [an equation](https://en.wikipedia.org/wiki/Simple_linear_regression): +> +> ``` +> Y = a + bX +> ``` +> +> `X` is the 'explanatory variable'. `Y` is the 'dependent variable'. The slope of the line is `b` and `a` is the y-intercept, which refers to the value of `Y` when `X = 0`. +> +>![calculate the slope](images/slope.png) +> +> First, calculate the slope `b`. Infographic by [Jen Looper](https://twitter.com/jenlooper) +> +> In other words, and referring to our pumpkin data's original question: "predict the price of a pumpkin per bushel by month", `X` would refer to the price and `Y` would refer to the month of sale. +> +>![complete the equation](images/calculation.png) +> +> Calculate the value of Y. If you're paying around $4, it must be April! Infographic by [Jen Looper](https://twitter.com/jenlooper) +> +> The math that calculates the line must demonstrate the slope of the line, which is also dependent on the intercept, or where `Y` is situated when `X = 0`. +> +> You can observe the method of calculation for these values on the [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) web site. Also visit [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) to watch how the numbers' values impact the line. + +## Correlation + +One more term to understand is the **Correlation Coefficient** between given X and Y variables. Using a scatterplot, you can quickly visualize this coefficient. A plot with datapoints scattered in a neat line have high correlation, but a plot with datapoints scattered everywhere between X and Y have a low correlation. + +A good linear regression model will be one that has a high (nearer to 1 than 0) Correlation Coefficient using the Least-Squares Regression method with a line of regression. + +✅ Run the notebook accompanying this lesson and look at the City to Price scatterplot. Does the data associating City to Price for pumpkin sales seem to have high or low correlation, according to your visual interpretation of the scatterplot? + + +## Prepare your data for regression + +Now that you have an understanding of the math behind this exercise, create a Regression model to see if you can predict which package of pumpkins will have the best pumpkin prices. Someone buying pumpkins for a holiday pumpkin patch might want this information to be able to optimize their purchases of pumpkin packages for the patch. + +Since you'll use Scikit-learn, there's no reason to do this by hand (although you could!). In the main data-processing block of your lesson notebook, add a library from Scikit-learn to automatically convert all string data to numbers: + +```python +from sklearn.preprocessing import LabelEncoder + +new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) +``` + +If you look at the new_pumpkins dataframe now, you see that all the strings are now numeric. This makes it harder for you to read but much more intelligible for Scikit-learn! +Now you can make more educated decisions (not just based on eyeballing a scatterplot) about the data that is best suited to regression. + +Try to find a good correlation between two points of your data to potentially build a good predictive model. As it turns out, there's only weak correlation between the City and Price: + +```python +print(new_pumpkins['City'].corr(new_pumpkins['Price'])) +0.32363971816089226 +``` + +However there's a bit better correlation between the Package and its Price. That makes sense, right? Normally, the bigger the produce box, the higher the price. + +```python +print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) +0.6061712937226021 +``` + +A good question to ask of this data will be: 'What price can I expect of a given pumpkin package?' + +Let's build this regression model + +## Building a linear model + +Before building your model, do one more tidy-up of your data. Drop any null data and check once more what the data looks like. + +```python +new_pumpkins.dropna(inplace=True) +new_pumpkins.info() +``` + +Then, create a new dataframe from this minimal set and print it out: + +```python +new_columns = ['Package', 'Price'] +lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + +lin_pumpkins +``` + +```output + Package Price +70 0 13.636364 +71 0 16.363636 +72 0 16.363636 +73 0 15.454545 +74 0 13.636364 +... ... ... +1738 2 30.000000 +1739 2 28.750000 +1740 2 25.750000 +1741 2 24.000000 +1742 2 24.000000 +415 rows × 2 columns +``` + +1. Now you can assign your X and y coordinate data: + + ```python + X = lin_pumpkins.values[:, :1] + y = lin_pumpkins.values[:, 1:2] + ``` +✅ What's going on here? You're using [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) to create arrays to populate `X` and `y`. + +2. Next, start the regression model-building routines: + + ```python + from sklearn.linear_model import LinearRegression + from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error + from sklearn.model_selection import train_test_split + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + lin_reg = LinearRegression() + lin_reg.fit(X_train,y_train) + + pred = lin_reg.predict(X_test) + + accuracy_score = lin_reg.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + Because the correlation isn't particularly good, the model produced isn't terribly accurate. + + ```output + Model Accuracy: 0.3315342327998987 + ``` + +3. You can visualize the line that's drawn in the process: + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, pred, color='blue', linewidth=3) + + plt.xlabel('Package') + plt.ylabel('Price') + + plt.show() + ``` + ![A scatterplot showing package to price relationship](./images/linear.png) + +4. Test the model against a hypothetical variety: + + ```python + lin_reg.predict( np.array([ [2.75] ]) ) + ``` + + The returned price for this mythological Variety is: + + ```output + array([[33.15655975]]) + ``` + +That number makes sense, if the logic of the regression line holds true. + +🎃 Congratulations, you just created a model that can help predict the price of a few varieties of pumpkins. Your holiday pumpkin patch will be beautiful. But you can probably create a better model! +## Polynomial regression + +Another type of linear regression is polynomial regression. While sometimes there's a linear relationship between variables - the bigger the pumpkin in volume, the higher the price - sometimes these relationships can't be plotted as a plane or straight line. + +✅ Here are [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data that could use polynomial regression + +Take another look at the relationship between Variety to Price in the previous plot. Does this scatterplot seem like it should necessarily be analyzed by a straight line? Perhaps not. In this case, you can try polynomial regression. + +✅ Polynomials are mathematical expressions that might consist of one or more variables and coefficients + +Polynomial regression creates a curved line to better fit nonlinear data. + +1. Let's recreate a dataframe populated with a segment of the original pumpkin data: + + ```python + new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] + poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') + + poly_pumpkins + ``` + +A good way to visualize the correlations between data in dataframes is to display it in a 'coolwarm' chart: + +2. Use the `Background_gradient()` method with `coolwarm` as its argument value: + + ```python + corr = poly_pumpkins.corr() + corr.style.background_gradient(cmap='coolwarm') + ``` + This code creates a heatmap: + ![A heatmap showing data correlation](./images/heatmap.png) + +Looking at this chart, you can visualize the good correlation between Package and Price. So you should be able to create a somewhat better model than the last one. +### Create a pipeline + +Scikit-learn includes a helpful API for building polynomial regression models - the `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). A 'pipeline' is created which is a chain of estimators. In this case, the pipeline includes polynomial features, or predictions that form a nonlinear path. + +1. Build out the X and y columns: + + ```python + X=poly_pumpkins.iloc[:,3:4].values + y=poly_pumpkins.iloc[:,4:5].values + ``` + +2. Create the pipeline by calling the `make_pipeline()` method: + + ```python + from sklearn.preprocessing import PolynomialFeatures + from sklearn.pipeline import make_pipeline + + pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + pipeline.fit(np.array(X_train), y_train) + + y_pred=pipeline.predict(X_test) + ``` + +### Create a sequence + +At this point, you need to create a new dataframe with _sorted_ data so that the pipeline can create a sequence. + +Add the following code: + + ```python + df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) + df.sort_values(by='x',inplace = True) + points = pd.DataFrame(df).to_numpy() + + plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) + plt.xlabel('Package') + plt.ylabel('Price') + plt.scatter(X,y, color="black") + plt.show() + ``` + +You created a new dataframe by calling `pd.DataFrame`. Then you sorted the values by calling `sort_values()`. Finally you created a polynomial plot: + +![A polynomial plot showing package to price relationship](./images/polynomial.png) + +You can see a curved line that fits your data better. + +Let's check the model's accuracy: + + ```python + accuracy_score = pipeline.score(X_train,y_train) + print('Model Accuracy: ', accuracy_score) + ``` + + And voila! + + ```output + Model Accuracy: 0.8537946517073784 + ``` + +That's better! Try to predict a price: + +### Do a prediction + +Can we input a new value and get a prediction? + +Call `predict()` to make a prediction: + + ```python + pipeline.predict( np.array([ [2.75] ]) ) + ``` + You are given this prediction: + + ```output + array([[46.34509342]]) + ``` + +It does make sense, given the plot! And, if this is a better model than the previous one, looking at the same data, you need to budget for these more expensive pumpkins! + +🏆 Well done! You created two regression models in one lesson. In the final section on regression, you will learn about logistic regression to determine categories. + +--- +## 🚀Challenge + +Test several different variables in this notebook to see how correlation corresponds to model accuracy. + +## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/) + +## Review & Self Study + +In this lesson we learned about Linear Regression. There are other important types of Regression. Read about Stepwise, Ridge, Lasso and Elasticnet techniques. A good course to study to learn more is the [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) + +## Assignment + +[Build a Model](assignment.md) From e859c7484c3066cf0d6e990ffe5732fe9268b50e Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 22:07:26 +0800 Subject: [PATCH 17/56] [WIP]translate 2.4 to Simplified Chinese --- .../4-Logistic/translations/README.zh-cn.md | 296 ++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 2-Regression/4-Logistic/translations/README.zh-cn.md diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md new file mode 100644 index 00000000..a4488c11 --- /dev/null +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -0,0 +1,296 @@ +# Logistic regression to predict categories + +![Logistic vs. linear regression infographic](./images/logistic-linear.png) +> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) + +## Introduction + +In this final lesson on Regression, one of the basic _classic_ ML techniques, we will take a look at Logistic Regression. You would use this technique to discover patterns to predict binary categories. Is this candy chocolate or not? Is this disease contagious or not? Will this customer choose this product or not? + +In this lesson, you will learn: + +- A new library for data visualization +- Techniques for logistic regression + +✅ Deepen your understanding of working with this type of regression in this [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) +## Prerequisite + +Having worked with the pumpkin data, we are now familiar enough with it to realize that there's one binary category that we can work with: `Color`. + +Let's build a logistic regression model to predict that, given some variables, _what color a given pumpkin is likely to be_ (orange 🎃 or white 👻). + +> Why are we talking about binary classification in a lesson grouping about regression? Only for linguistic convenience, as logistic regression is [really a classification method](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), albeit a linear-based one. Learn about other ways to classify data in the next lesson group. + +## Define the question + +For our purposes, we will express this as a binary: 'Orange' or 'Not Orange'. There is also a 'striped' category in our dataset but there are few instances of it, so we will not use it. It disappears once we remove null values from the dataset, anyway. + +> 🎃 Fun fact, we sometimes call white pumpkins 'ghost' pumpkins. They aren't very easy to carve, so they aren't as popular as the orange ones but they are cool looking! + +## About logistic regression + +Logistic regression differs from linear regression, which you learned about previously, in a few important ways. + +### Binary classification + +Logistic regression does not offer the same features as linear regression. The former offers a prediction about a binary category ("orange or not orange") whereas the latter is capable of predicting continual values, for example given the origin of a pumpkin and the time of harvest, _how much its price will rise_. + +![Pumpkin classification Model](./images/pumpkin-classifier.png) +> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) +### Other classifications + +There are other types of logistic regression, including multinomial and ordinal: + +- **Multinomial**, which involves having more than one category - "Orange, White, and Striped". +- **Ordinal**, which involves ordered categories, useful if we wanted to order our outcomes logically, like our pumpkins that are ordered by a finite number of sizes (mini,sm,med,lg,xl,xxl). + +![Multinomial vs ordinal regression](./images/multinomial-ordinal.png) +> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) + +### It's still linear + +Even though this type of Regression is all about 'category predictions', it still works best when there is a clear linear relationship between the dependent variable (color) and the other independent variables (the rest of the dataset, like city name and size). It's good to get an idea of whether there is any linearity dividing these variables or not. + +### Variables DO NOT have to correlate + +Remember how linear regression worked better with more correlated variables? Logistic regression is the opposite - the variables don't have to align. That works for this data which has somewhat weak correlations. + +### You need a lot of clean data + +Logistic regression will give more accurate results if you use more data; our small dataset is not optimal for this task, so keep that in mind. + +✅ Think about the types of data that would lend themselves well to logistic regression + +## Exercise - tidy the data + +First, clean the data a bit, dropping null values and selecting only some of the columns: + +1. Add the following code: + + ```python + from sklearn.preprocessing import LabelEncoder + + new_columns = ['Color','Origin','Item Size','Variety','City Name','Package'] + + new_pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1) + + new_pumpkins.dropna(inplace=True) + + new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform) + ``` + + You can always take a peek at your new dataframe: + + ```python + new_pumpkins.info + ``` + +### Visualization - side-by-side grid + +By now you have loaded up the [starter notebook](./notebook.ipynb) with pumpkin data once again and cleaned it so as to preserve a dataset containing a few variables, including `Color`. Let's visualize the dataframe in the notebook using a different library: [Seaborn](https://seaborn.pydata.org/index.html), which is built on Matplotlib which we used earlier. + +Seaborn offers some neat ways to visualize your data. For example, you can compare distributions of the data for each point in a side-by-side grid. + +1. Create such a grid by instantiating a `PairGrid`, using our pumpkin data `new_pumpkins`, followed by calling `map()`: + + ```python + import seaborn as sns + + g = sns.PairGrid(new_pumpkins) + g.map(sns.scatterplot) + ``` + + ![A grid of visualized data](images/grid.png) + + By observing data side-by-side, you can see how the Color data relates to the other columns. + + ✅ Given this scatterplot grid, what are some interesting explorations you can envision? + +### Use a swarm plot + +Since Color is a binary category (Orange or Not), it's called 'categorical data' and needs 'a more [specialized approach](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) to visualization'. There are other ways to visualize the relationship of this category with other variables. + +You can visualize variables side-by-side with Seaborn plots. + +1. Try a 'swarm' plot to show the distribution of values: + + ```python + sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins) + ``` + + ![A swarm of visualized data](images/swarm.png) + +### Violin plot + +A 'violin' type plot is useful as you can easily visualize the way that data in the two categories is distributed. Violin plots don't work so well with smaller datasets as the distribution is displayed more 'smoothly'. + +1. As parameters `x=Color`, `kind="violin"` and call `catplot()`: + + ```python + sns.catplot(x="Color", y="Item Size", + kind="violin", data=new_pumpkins) + ``` + + ![a violin type chart](images/violin.png) + + ✅ Try creating this plot, and other Seaborn plots, using other variables. + +Now that we have an idea of the relationship between the binary categories of color and the larger group of sizes, let's explore logistic regression to determine a given pumpkin's likely color. + +> **🧮 Show Me The Math** +> +> Remember how linear regression often used ordinary least squares to arrive at a value? Logistic regression relies on the concept of 'maximum likelihood' using [sigmoid functions](https://wikipedia.org/wiki/Sigmoid_function). A 'Sigmoid Function' on a plot looks like an 'S' shape. It takes a value and maps it to somewhere between 0 and 1. Its curve is also called a 'logistic curve'. Its formula looks like thus: +> +> ![logistic function](images/sigmoid.png) +> +> where the sigmoid's midpoint finds itself at x's 0 point, L is the curve's maximum value, and k is the curve's steepness. If the outcome of the function is more than 0.5, the label in question will be given the class '1' of the binary choice. If not, it will be classified as '0'. + +## Build your model + +Building a model to find these binary classification is surprisingly straightforward in Scikit-learn. + +1. Select the variables you want to use in your classification model and split the training and test sets calling `train_test_split()`: + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Origin','Item Size','Variety','City Name','Package'] + + X = new_pumpkins[Selected_features] + y = new_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +1. Now you can train your model, by calling `fit()` with your training data, and print out its result: + + ```python + from sklearn.model_selection import train_test_split + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + + Take a look at your model's scoreboard. It's not too bad, considering you have only about 1000 rows of data: + + ```output + precision recall f1-score support + + 0 0.85 0.95 0.90 166 + 1 0.38 0.15 0.22 33 + + accuracy 0.82 199 + macro avg 0.62 0.55 0.56 199 + weighted avg 0.77 0.82 0.78 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 1 0 0 1 0 0 0 1 0] + ``` + +## Better comprehension via a confusion matrix + +While you can get a scoreboard report [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) by printing out the items above, you might be able to understand your model more easily by using a [confusion matrix](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) to help us understand how the model is performing. + +> 🎓 A '[confusion matrix](https://wikipedia.org/wiki/Confusion_matrix)' (or 'error matrix') is a table that expresses your model's true vs. false positives and negatives, thus gauging the accuracy of predictions. + +1. To use a confusion metrics, call `confusin_matrix()`: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + Take a look at your model's confusion matrix: + + ```output + array([[162, 4], + [ 33, 0]]) + ``` + +What's going on here? Let's say our model is asked to classify items between two binary categories, category 'pumpkin' and category 'not-a-pumpkin'. + +- If your model predicts something as a pumpkin and it belongs to category 'pumpkin' in reality we call it a true positive, shown by the top left number. +- If your model predicts something as not a pumpkin and it belongs to category 'pumpkin' in reality we call it a false positive, shown by the top right number. +- If your model predicts something as a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a false negative, shown by the bottom left number. +- If your model predicts something as not a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a true negative, shown by the bottom right number. + +![Confusion Matrix](images/confusion-matrix.png) + +> Infographic by [Jen Looper](https://twitter.com/jenlooper) + +As you might have guessed it's preferable to have a larger number of true positives and true negatives and a lower number of false positives and false negatives, which implies that the model performs better. + +✅ Q: According to the confusion matrix, how did the model do? A: Not too bad; there are a good number of true positives but also several false negatives. + +Let's revisit the terms we saw earlier with the help of the confusion matrix's mapping of TP/TN and FP/FN: + +🎓 Precision: TP/(TP + FN) The fraction of relevant instances among the retrieved instances (e.g. which labels were well-labeled) + +🎓 Recall: TP/(TP + FP) The fraction of relevant instances that were retrieved, whether well-labeled or not + +🎓 f1-score: (2 * precision * recall)/(precision + recall) A weighted average of the precision and recall, with best being 1 and worst being 0 + +🎓 Support: The number of occurrences of each label retrieved + +🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) The percentage of labels predicted accurately for a sample. + +🎓 Macro Avg: The calculation of the unweighted mean metrics for each label, not taking label imbalance into account. + +🎓 Weighted Avg: The calculation of the mean metrics for each label, taking label imbalance into account by weighting them by their support (the number of true instances for each label). + +✅ Can you think which metric you should watch if you want your model to reduce the number of false negatives? +## Visualize the ROC curve of this model + +This is not a bad model; its accuracy is in the 80% range so ideally you could use it to predict the color of a pumpkin given a set of variables. + +Let's do one more visualization to see the so-called 'ROC' score: + +```python +from sklearn.metrics import roc_curve, roc_auc_score + +y_scores = model.predict_proba(X_test) +# calculate ROC curve +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) +sns.lineplot([0, 1], [0, 1]) +sns.lineplot(fpr, tpr) +``` +Using Seaborn again, plot the model's [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) or ROC. ROC curves are often used to get a view of the output of a classifier in terms of its true vs. false positives. "ROC curves typically feature true positive rate on the Y axis, and false positive rate on the X axis." Thus, the steepness of the curve and the space between the midpoint line and the curve matter: you want a curve that quickly heads up and over the line. In our case, there are false positives to start with, and then the line heads up and over properly: + +![ROC](./images/ROC.png) + +Finally, use Scikit-learn's [`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) to compute the actual 'Area Under the Curve' (AUC): + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` +The result is `0.6976998904709748`. Given that the AUC ranges from 0 to 1, you want a big score, since a model that is 100% correct in its predictions will have an AUC of 1; in this case, the model is _pretty good_. + +In future lessons on classifications, you will learn how to iterate to improve your model's scores. But for now, congratulations! You've completed these regression lessons! + +--- +## 🚀Challenge + +There's a lot more to unpack regarding logistic regression! But the best way to learn is to experiment. Find a dataset that lends itself to this type of analysis and build a model with it. What do you learn? tip: try [Kaggle](https://kaggle.com) for interesting datasets. +## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/) + +## Review & Self Study + +Read the first few pages of [this paper from Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) on some practical uses for logistic regression. Think about tasks that are better suited for one or the other type of regression tasks that we have studied up to this point. What would work best? + +## Assignment + +[Retrying this regression](assignment.md) From 717594285ef576327ca596606929cbbbbda60520 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:16:25 -0400 Subject: [PATCH 18/56] edit for paths for Indonesian translations --- 2-Regression/translations/README.id.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/2-Regression/translations/README.id.md b/2-Regression/translations/README.id.md index 6b228c14..da1fa193 100644 --- a/2-Regression/translations/README.id.md +++ b/2-Regression/translations/README.id.md @@ -3,7 +3,7 @@ Di Amerika Utara, labu seringkali diukir menjadi muka-muka seram untuk Halloween. Mari mencari tahu lebih banyak tentang sayur menarik ini! -![jack-o-lantern](./images/jack-o-lanterns.jpg) +![jack-o-lantern](../images/jack-o-lanterns.jpg) > Foto oleh Beth Teutschmann di Unsplash ## Apa yang kamu akan pelajari @@ -18,10 +18,10 @@ Selain itu, kamu akan disiapkan untuk mulai mengerjakan tugas *machine learning* ### Pelajaran -1. [Alat-alat seorang *data scientist*](1-Tools/README.md) -2. [Mengelola data](2-Data/README.md) -3. [Regresi linear dan polinomial](3-Linear/README.md) -4. [Regresi logistik](4-Logistic/README.md) +1. [Alat-alat seorang *data scientist*](1-Tools/translations/README.id.md) +2. [Mengelola data](2-Data/translations/README.id.md) +3. [Regresi linear dan polinomial](3-Linear/translations/README.id.md) +4. [Regresi logistik](4-Logistic/translations/README.id.md) --- ### Kredit From 6c46e9d882c19bf213425ef3c16504ee5dd43b32 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:17:27 -0400 Subject: [PATCH 19/56] editing Russian translation image path --- 2-Regression/translations/README.ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/2-Regression/translations/README.ru.md b/2-Regression/translations/README.ru.md index 58270106..074f0858 100644 --- a/2-Regression/translations/README.ru.md +++ b/2-Regression/translations/README.ru.md @@ -3,7 +3,7 @@ В Северной Америке на Хэллоуин из тыкв часто вырезают страшные лица. Давайте узнаем больше об этих восхитительных овощах! -! [jack-o-lanterns](./images/jack-o-lanterns.jpg) +![jack-o-lanterns](../images/jack-o-lanterns.jpg) > Фото Бет Тойчманн на Unsplash ## Что вы узнаете @@ -30,4 +30,4 @@ ♥ ️ Среди участников викторины: [Мухаммад Сакиб Хан Инан](https://twitter.com/Sakibinan) и [Орнелла Алтунян](https://twitter.com/ornelladotcom) -Набор данных по тыкве предлагается [этот проект на Kaggle](https://www.kaggle.com/usda/a-year-of-pumpkin-prices), а его данные взяты из [Стандартных отчетов по рынкам специальных культур на терминалах](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) распространяется Министерством сельского хозяйства США. Мы добавили несколько точек вокруг цвета на основе разнообразия, чтобы нормализовать распределение. Эти данные находятся в открытом доступе. \ No newline at end of file +Набор данных по тыкве предлагается [этот проект на Kaggle](https://www.kaggle.com/usda/a-year-of-pumpkin-prices), а его данные взяты из [Стандартных отчетов по рынкам специальных культур на терминалах](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) распространяется Министерством сельского хозяйства США. Мы добавили несколько точек вокруг цвета на основе разнообразия, чтобы нормализовать распределение. Эти данные находятся в открытом доступе. From 884ba41b520abd382e7c1db0e02516e31036f8d4 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:18:45 -0400 Subject: [PATCH 20/56] editing translation sketchnote path --- 2-Regression/1-Tools/translations/README.id.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-Regression/1-Tools/translations/README.id.md b/2-Regression/1-Tools/translations/README.id.md index 4345460a..b7ab4bf8 100644 --- a/2-Regression/1-Tools/translations/README.id.md +++ b/2-Regression/1-Tools/translations/README.id.md @@ -1,6 +1,6 @@ # Memulai dengan Python dan Scikit-learn untuk model regresi -![Ringkisan regresi dalam sebuah catatan sketsa](../../sketchnotes/ml-regression.png) +![Ringkisan regresi dalam sebuah catatan sketsa](../../../sketchnotes/ml-regression.png) > Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac) From 163f301675b75c216c2af90031b8b9cea7a3bd10 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:21:19 -0400 Subject: [PATCH 21/56] image path edits --- 2-Regression/2-Data/translations/README.id.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/2-Regression/2-Data/translations/README.id.md b/2-Regression/2-Data/translations/README.id.md index 4e932101..b9889ae8 100644 --- a/2-Regression/2-Data/translations/README.id.md +++ b/2-Regression/2-Data/translations/README.id.md @@ -1,6 +1,6 @@ # Membangun sebuah model regresi dengan Scikit-learn: siapkan dan visualisasikan data -> ![Infografik visualisasi data](./images/data-visualization.png) +![Infografik visualisasi data](../images/data-visualization.png) > Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/11/) @@ -164,7 +164,7 @@ Coba membuat beberapa grafik sederhana untuk menunjukkan *dataframe* baru yang b plt.show() ``` - ![Sebuah petak sebar yang menunjukkan hubungan antara harga dan bulan](./images/scatterplot.png) + ![Sebuah petak sebar yang menunjukkan hubungan antara harga dan bulan](../images/scatterplot.png) Apakah grafik ini berguna? Apa ada yang mengejutkanmu? @@ -181,7 +181,7 @@ Untuk menjadikan sebuah grafik menjadi berguna, biasanya datanya harus dikelompo plt.ylabel("Pumpkin Price") ``` - ![Sebuah diagram batang yang menunjukkan hubungan antara harga dan bulan](./images/barchart.png) + ![Sebuah diagram batang yang menunjukkan hubungan antara harga dan bulan](../images/barchart.png) Nah, ini lebih berguna! Kelihatannya visualisasi ini mengindikasi bahwa labu itu paling mahal pada bulan September dan Oktober. Apa itu sesuai ekspektasimu? Mengapa? @@ -199,4 +199,4 @@ Lihatlah beragam cara memvisualisasi data. Buatlah sebuah daftar dari aneka *lib ## Tugas -[Menjelajahi visualisasi](assignment.md) +[Menjelajahi visualisasi](../assignment.md) From b7936697a4741b833b9278cd2f2628ff5980fcdd Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:23:32 -0400 Subject: [PATCH 22/56] editing for paths --- 2-Regression/3-Linear/translations/README.id.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/2-Regression/3-Linear/translations/README.id.md b/2-Regression/3-Linear/translations/README.id.md index 548d2030..f2ae6b7c 100644 --- a/2-Regression/3-Linear/translations/README.id.md +++ b/2-Regression/3-Linear/translations/README.id.md @@ -1,6 +1,6 @@ # Bangun sebuah model regresi dengan Scikit-learn: regresi dua arah -![Infografik regresi linear vs polinomial](./images/linear-polynomial.png) +![Infografik regresi linear vs polinomial](../images/linear-polynomial.png) > Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) ### Pembukaan @@ -49,13 +49,13 @@ Kita melakukan itu sebab kita ingin memodelkan sebuah garis yang jarak kumulatif > > `X` adalah 'variabel penerang'. `Y` adalah 'variabel dependen'. Gradien garisnya adalah `b`, dan `a` adalah titik potong sumbu y yaitu nilai `Y` saat `X = 0`. > ->![hitunglah gradiennya](images/slope.png) +>![hitunglah gradiennya](../images/slope.png) > > Pertama, hitunglah gradien `b`. Infografik oleh [Jen Looper](https://twitter.com/jenlooper) > > Dalam kata lain, dan berhubungan pula dengan pertanyaan awal data labu kita "prediksikan harga satu bushel labu setiap bulan", `X` merujuk pada harganya, sedangkan `Y` akan merujuk pada bulan penjualan. > ->![lengkapilah persamaan ini](images/calculation.png) +>![lengkapilah persamaan ini](../images/calculation.png) > > Hitunglah nilai Y. Kalau harganya $4, artinya pasti April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper) > @@ -182,7 +182,7 @@ lin_pumpkins plt.show() ``` - ![Sebuah petak sebar yang menunjukkan hubungan antara paket dan harga](./images/linear.png) + ![Sebuah petak sebar yang menunjukkan hubungan antara paket dan harga](../images/linear.png) 3. Ujilah modelnya dengan sebuah jenis labu hipotetis: @@ -231,7 +231,7 @@ Sebuah cara bagus untuk memvisualisasi korelasi-korelasi antara data dalam *data ``` This code creates a heatmap: Kode ini membuat sebuah peta panas - ![Sebuah peta panas yang menunjukkan korelasi data](./images/heatmap.png) + ![Sebuah peta panas yang menunjukkan korelasi data](../images/heatmap.png) Melihat peta ini, kamu bisa memvisualisasikan korelasi yang baik antara Package dan Price. Jadi kamu seharusnya bisa membuat sebuah model yang lebih baik daripada yang sebelumnya. @@ -281,7 +281,7 @@ Tambahlah kode ini: Kamu membuat sebuah *dataframe* baru dengan fungsi `pd.DataFrame`. Lalu kamu mengurutkan isinya dengan fungsi `sort_values()`. Akhirnya kamu membuat sebuah bagan polinomial: -![Sebuah bagan polinomial yang menunjukkan hubungan antara paket dan harga](./images/polynomial.png) +![Sebuah bagan polinomial yang menunjukkan hubungan antara paket dan harga](../images/polynomial.png) Kamu bisa melihat garis lengkungnya yang lebih cocok terhadap datamu. @@ -332,4 +332,4 @@ Dalam pelajaran ini kita belajar tentang regresi linear. Ada banyak jenis regres ## Tugas -[Buatlah sebuah model](assignment.md) \ No newline at end of file +[Buatlah sebuah model](../assignment.md) From a4dfccbd0f22238429354b5e66cb6691dca90b8b Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:25:05 -0400 Subject: [PATCH 23/56] editing for paths for Indonesian translation --- .../4-Logistic/translations/README.id.md | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/2-Regression/4-Logistic/translations/README.id.md b/2-Regression/4-Logistic/translations/README.id.md index 6158e6d9..ac5a3a98 100644 --- a/2-Regression/4-Logistic/translations/README.id.md +++ b/2-Regression/4-Logistic/translations/README.id.md @@ -1,7 +1,8 @@ # Regresi logistik untuk memprediksi kategori-kategori -![Infografik regresi logistik vs. linear](./images/logistic-linear.png) +![Infografik regresi logistik vs. linear](../images/logistic-linear.png) > Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) + ## [Kuis pra-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) ## Pembukaan @@ -14,6 +15,7 @@ Dalam pelajaran ini, kamu akan belajar: - Teknik-teknik untuk regresi logistik ✅ Perdalamkan pemahamanmu dalam bekerja dengan regresi jenis ini dalam [modul pembelajaran ini](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) + ## Prasyarat Setelah bekerja dengan data labu, kita sekarang sudah terbiasa dengannya untuk menyadari bahwa adapula sebuah kategori binari yang kita dapat menggunakan: `Color` (warna). @@ -36,8 +38,9 @@ Regresi logistik berbeda dari regresi linear, jenis regresi yang kamu pelajari s Regresi logistik tidak mempunyai beberapa fitur regresi linear. Regresi logistik menyediakan sebuah prediksi tentang sebuah kategori binari (seperti "oranye atau bukan oranye"), sedangkan yang lainnya dapat memprediksi nilai-nilai kontinu. Contohnya, dengan mengetahui dari mana labu ini dan kapan dipanennya, regresi linear dapat memprediksi _berapa harganya akan naik_, namun regresi logistik tidak bisa. -![Model klasifikasi labu](./images/pumpkin-classifier.png) +![Model klasifikasi labu](../images/pumpkin-classifier.png) > Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded) + ### Klasifikasi lain Ditambah itu, ada banyak jenis regresi logistik, termasuk jenis multinomial dan ordinal: @@ -101,7 +104,7 @@ Seaborn menyediakan beberapa cara keren untuk memvisualisasi datamu. Contohnya, g.map(sns.scatterplot) ``` - ![Sebuah visualisasi *grid* data](images/grid.png) + ![Sebuah visualisasi *grid* data](../images/grid.png) Dengan mengobservasi datanya secara berdampingan, kamu bisa lihat bagaimana data warnanya berhubungan dengan kolom-kolom lainnya. @@ -119,7 +122,7 @@ Kamu bisa memvisualisasikan variabel-variabel secara berdampingan dengan bagan-b sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins) ``` - ![Sekawanan data yang divisualisasi](images/swarm.png) + ![Sekawanan data yang divisualisasi](../images/swarm.png) ### Bagan biola @@ -132,7 +135,7 @@ Sebuah bagan 'biola' itu berguna sebab kamu bisa memvisualisasi bagaimana data d kind="violin", data=new_pumpkins) ``` - ![sebuah bagan biola](images/violin.png) + ![sebuah bagan biola](../images/violin.png) ✅ Cobalah membuat bagan ini dan jenis-jenis bagan Seaborn lainnya dengan variabel-variabel lainnya. @@ -142,7 +145,7 @@ Sekarang kita sudah dapat bayangan hubungan antara kedua kategori binary warna d > > Ingat bagaiaman regresi linear seringkali menggunakan metode kuadrat terkecil untuk tiba pada sebuah nilai? Regresi logistik tergantung pada konsep 'kemungkinan terbesar' menggunakan [fungsi sigmoid](https://wikipedia.org/wiki/Sigmoid_function). Sebuah 'fungsi Sigmoid' terlihat seperti huruf 'S' dalam sistem koordinat Kartesius. Fungsi ini mengambil sebuah nilai dan 'mencorongkannya' menjadi sebuah nomor antara 0 dan 1. Kurva ini juga dipanggil sebuah 'kurva logistik'. Formulanya seperti ini: > -> ![Fungsi logistic](images/sigmoid.png) +> ![Fungsi logistic](../images/sigmoid.png) > > Titik tengah sigmoidnya terletak di sumbu X. L adalah nilai maksimum kurvanya. k adalah terjalnya kurvanya. Jika hasil fungsinya lebih dari 0.5, nilai yang diberikan kepada fungsi tersebut akan diklasifikasikan sebagai '1'. Kalau tidak, nilai itu akan diklasifikasikan sebagai '0'. @@ -227,7 +230,7 @@ Apa yang sedang terjadi di sini? Mari kita asumsi dulu bahwa model kita ditanyak - Kalau modelmu memprediksi sesuati sebagai sebuah labu tetapi sebenarnya bukan sebuah labu, itu disebut negatif palsu yang diindikasi angka di pojok kiri bawah. - Kalau modelmu memprediksi sesuati sebagai bukan sebuah labu dan memang benar sesuatu itu bukan sebuah labu, itu disebut negatif benar yang diindikasi angka di pojok kanan bawah. -![Matriks Kebingungan](images/confusion-matrix.png) +![Matriks Kebingungan](../images/confusion-matrix.png) > Infografik oleh [Jen Looper](https://twitter.com/jenlooper) @@ -257,6 +260,7 @@ Mari kita lihat kembali istilah-istilah yang kita lihat tadi dengan bantuan matr 🎓 Rata-rata Tertimbang: Hitungan rata-rata metrik setiap label dengan mempertimbangkan ketidakseimbangan label. Rata-ratanya tertimbang nilai Dukungan (jumlah kejadian dalam realita) setiap label. ✅ Apa kamu bisa tebak metrik apa yang harus dipantau untuk mengurangi jumlah negatif palsu modelmu? + ## Visualisasikan kurva ROC model ini Ini bukanlah sebuah model buruk. Akurasinya sekitar 80%, jadi sebenarnya bisa digunakan untuk memprediksi warna sebuah labu berdasarkan beberapa variabel. @@ -274,7 +278,7 @@ sns.lineplot(fpr, tpr) ``` Menggunakan Seaborn lagi, gambarlah [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) (ROC) model ini. Kurva ROC seringkali digunakan untuk menunjukkan output sebuah pembuat klasifikasi berdasarkan jumlah positif benar dan positif palsunya. "Kurva ROC biasanya menetapkan persentase positif benar di sumbu Y dan positif palsunya di sumbu X" (diterjemahkan). Maka, terjalnya kurva ini dan ruang antara garis titik tengah dan kurvanya penting: kamu mau sebuah kurva yang naik ke atas garisnya secepat mungkin. Dalam kasus ini, ada positif palsu di awal, terus kurvanya naik di atas garisnya dengan benar: -![ROC](./images/ROC.png) +![ROC](../images/ROC.png) Akhirnya, gunakanlah [API `roc_auc_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) Scikit-learn untuk menghitung 'Area Di Bawah Kurva'-nya (ADBK) secara persis: @@ -290,6 +294,7 @@ Nanti dalam pelajaran lebih lanjut tentang klasifikasi, kamu akan belajar bagaim ## 🚀 Tantangan Masih ada banyak tentang regresi logistik! Tetapi cara paling baik adalah untuk bereksperimen. Carilah sebuah *dataset* yang bisa diteliti seperti ini dan bangunlah sebuah model darinya. Apa yang kamu pelajari? Petunjuk: Coba [Kaggle](https://kaggle.com) untuk *dataset-dataset* menarik. + ## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/) ## Review & Pembelajaran mandiri @@ -298,4 +303,4 @@ Bacalah beberapa halaman pertama [makalah ini dari Stanford](https://web.stanfor ## Tugas -[Coba lagi regresi ini](assignment.md) +[Coba lagi regresi ini](../assignment.md) From 72be28e50e889de5d918c52b2b696cb74169aad8 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 10:42:35 -0400 Subject: [PATCH 24/56] fixing a bug in classification - save of a fresh dataframe for export --- 4-Classification/1-Introduction/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/4-Classification/1-Introduction/README.md b/4-Classification/1-Introduction/README.md index 38516901..4490131c 100644 --- a/4-Classification/1-Introduction/README.md +++ b/4-Classification/1-Introduction/README.md @@ -264,6 +264,12 @@ Now that you have cleaned the data, use [SMOTE](https://imbalanced-learn.org/dev The data is nice and clean, balanced, and very delicious! +1. The last step is to save your balanced data, including labels and features, into a new dataframe that can be exported into a file: + + ```python + transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') + ``` + 1. You can take one more look at the data using `transformed_df.head()` and `transformed_df.info()`. Save a copy of this data for use in future lessons: ```python From 9bfc6a9c9eaec1be0f6b735dbd239411b8131340 Mon Sep 17 00:00:00 2001 From: Alex Faria Date: Fri, 9 Jul 2021 16:09:55 +0100 Subject: [PATCH 25/56] Added readme in portuguese --- README.pt.md | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 README.pt.md diff --git a/README.pt.md b/README.pt.md new file mode 100644 index 00000000..460d8f05 --- /dev/null +++ b/README.pt.md @@ -0,0 +1,121 @@ +[![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 para Principiantes - Um Curso + +> 🌍 Viaja pelo mundo enquanto exploramos o Machine Learning através das culturas mundiais 🌍 + +Os Azure Cloud Advocates da Microsoft têm o gosto de oferecer um curso de 24 lições com a duração 12 semanas sobre **Machine Learning**. Neste curso, irás aprender o que algumas vezes chamamos de **machine learning clássico**, usando principalmente Scikit-learn como biblioteca e evitando deep learning, que será coberto no próximo curso 'IA para Iniciantes'. Combina também estas lições com o nosso próximo curso de 'Data Science para Iniciantes'. + +Viaja connosco ao redor do mundo enquanto aplicamos estas técnicas clássicas a dados de muitas áreas do mundo. Cada aula inclui questionários pré- e pós-aula, instruções escritas para completar a aula, uma solução, uma tarefa e muito mais. A nossa pedagogia baseada em projetos permite que aprendas enquanto constróis, uma forma comprovada de "colar"" as novas habilidades. + +**✍️ Muito obrigado aos nossos autores** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Ornella Altunyan, e Amy Boyd + +**🎨 Obrigado também aos nossos ilustradores** Tomomi Imura, Dasani Madipalli, e Jen Looper + +**🙏 Agradecimento especial 🙏 aos nossos autores Microsoft Student Ambassador, revisores e contribuidores**, notavelmente Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, e Snigdha Agarwal + +--- + +# Começando + +**Estudantes**, para usar este curso, faz fork no nosso repositório para a tua conta GitHub e completa os exercícios individualmente ou em grupo: + +- Começa com o teste pré-aula +- Lê a aula e completa as atividades, fazendo uma pausa e refletindo a cada verificação de conhecimento. +- Tenta criar os projetos compreendedo as aulas ao invés de executar o código da solução. No entanto, esse código está disponível nas pastas `/solution` em cada aula que contenha um projeto. +- Faz o teste pós-aula +- Completa um desafio +- Conclui a tarefa +- Depois de concluir uma aula em grupo, visita o [Quadro de discussão](https://github.com/microsoft/ML-For-Beginners/discussions) e "aprende em voz alta" preenchendo a rúbrica PAT apropriada. Um 'PAT' é uma ferramenta de avaliação de progresso que é uma rúbrica que preenches para promover a tua aprendizagem. Também podes reagir a outros PATs para que possamos aprender juntos. + +> Para um estudo mais aprofundado, recomendamos que sigas estes [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa) módulos e percursos de aprendizagem. + +**Professores**, [incluímos algumas sugestões](for-teachers.md) em como usar este curso. + +--- + +## Conhece a equipa + +[![Promo video](ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU 'Promo video') + +> 🎥 Clica na imagem acima para um vídeo sobre o projeto e as pessoas que o criaram! + +--- + +## Pedagogia + +Escolhemos dois princípios pedagógicos ao construir este curso: garantindo que seja um trabalho prático **baseado em projeto** e isso inclui **testes frequentes**. Adicionalmente, este currículo tem um **tema** comum para dar-lhe coesão. + +Ao garantir que o conteúdo esteja alinhado com os projetos, o processo torna-se mais envolvente para os estudantes e a retenção dos conceitos é aumentada. Além disso, um teste de baixo risco antes da aula define a intenção do estudante de aprender um tópico, enquanto que um segundo teste após a aula garante maior retenção. Este curso foi projetado para ser flexível e divertido e pode ser realizado no seu todo ou parcialmente. Os projetos começam pequenos e tornam-se cada vez mais complexos no final do ciclo de 12 semanas. Este currículo também inclui um pós-escrito sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. + +> Encontra o nosso [Código de Conduta](CODE_OF_CONDUCT.md), diretrizes de [Contribuição](CONTRIBUTING.md), e [Tradução](TRANSLATIONS.md). Agradecemos o teu feedback construtivo! + +## Cada aula inclui: + +- esboço opcional +- vídeo suplementar opcional +- teste de aquecimento pré-aula +- aula escrita +- para aulas baseadas em projetos, guias passo a passo sobre como contruir o projeto +- verificações de conhecimento +- um desafio +- leitura suplementar +- tarefa +- teste pós-aula + +> **Uma nota sobre testes**: Podes encontrar todos os testes [nesta app](https://jolly-sea-0a877260f.azurestaticapps.net), para um total de 50 testes de 3 perguntas cada. Eles estão vinculados às aulas, mas a aplicação do teste pode ser executada localmente; segue as intruções na pasta `quiz-app`. + +| Número de aula | Tópico | Agrupamento de Aulas | Objetivos de aprendizagem | Aula vinculada | Autor | +| :------------: | :-------------------------------------------------------------------: | :---------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------: | :----------: | +| 01 | Introdução ao machine learning | [Introdução](1-Introduction/README.md) | Aprender os conceitos básicos atrás do machine learning | [aula](1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | A História de machine learning | [Introdução](1-Introduction/README.md) | Aprender a história subjacente nesta área | [aula](1-Introduction/2-history-of-ML/README.md) | Jen e Amy | +| 03 | Justiça e machine learning | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os estudantes devem considerar ao construir e aplicar modelos de ML? | [aula](1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Técnicas para machine learning | [Introdução](1-Introduction/README.md) | Que técnicas os investigadores de ML usam para construir modelos de ML? | [aula](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | +| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Começando a usar Python e Scikit-learn para modelos de regressão | [aula](2-Regression/1-Tools/README.md) | Jen | +| 06 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Visualizar e limpar os dados em preparação para o ML | [aula](2-Regression/2-Data/README.md) | Jen | +| 07 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Construir modelos de regressão linear e polinomial | [aula](2-Regression/3-Linear/README.md) | Jen | +| 08 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Construir um modelo de regressão logística | [aula](2-Regression/4-Logistic/README.md) | Jen | +| 09 | Uma Web App 🔌 | [Web App](3-Web-App/README.md) | Criar uma web app para usar o teu modelo treinado | [aula](3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpar, preparar e visualizar os dados; introdução à classificação | [aula](4-Classification/1-Introduction/README.md) | Jen e Cassie | +| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [aula](4-Classification/2-Classifiers-1/README.md) | Jen e Cassie | +| 12 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [aula](4-Classification/3-Classifiers-2/README.md) | Jen e Cassie | +| 13 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Criar uma web app de recomendação usando o teu modelo | [aula](4-Classification/4-Applied/README.md) | Jen | +| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpar, preparar e visualizar os dados; Introdução ao clustering | [aula](5-Clustering/1-Visualize/README.md) | Jen | +| 15 | Explorando Gostos Musicais Nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explorar o método de agrupamento K-Means | [aula](5-Clustering/2-K-Means/README.md) | Jen | +| 16 | Introdução processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprender o básico sobre NLP construindo um bot simples | [aula](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tarefas NLP comuns ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofundar o conhecimento de NLP percebendo tarefas comuns exigidas ao lidar com estruturas de linguagem | [aula](6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tradução e análise de sentimento ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [aula](6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 1 | [aula](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 2 | [aula](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introdução previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução a previsão de séries temporais | [aula](7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Uso de Energia Mundial ⚡️ - previsão de série temporal com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [aula](7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | Introdução à aprendizagem por reforço | [Aprendizagem por reforço](8-Reinforcement/README.md) | Introdução à aprendizagem por reforço com Q-Learning | [aula](8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 24 | Ajuda o Pedro a escapar do lobo! 🐺 | [Aprendizagem por reforço](8-Reinforcement/README.md) | Ginásio de aprendizagem por reforço | [aula](8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Cenários reais de ML e aplicações | [ML na vida real](9-Real-World/README.md) | Aplicações interessantes e reveladoras do mundo real do ML clássico | [aula](9-Real-World/1-Applications/README.md) | Equipa | + +## Acesso Offline + +Podes usar este documento offline usando o [Docsify](https://docsify.js.org/#/). Dá fork neste repositório, [instala o Docsify](https://docsify.js.org/#/quickstart) no teu computador, e depois na pasta raiz deste repositório, escreve `docsify serve`. O site será executado na porta 3000 do teu localhost: `localhost:3000`. + +## PDFs + +Encontras um pdf do curso com links [aqui](pdf/readme.pdf) + +## Help Wanted! + +Gostarias de contribuir para uma tradução? Por favor lê as nossas [diretrizes de tradução](TRANSLATIONS.md) e adiciona o teu input [aqui](https://github.com/microsoft/ML-For-Beginners/issues/71) + +## Outros Cursos + +A nossa equipa produziu outros cursos! Confere: + +- [Web Dev para Iniciantes](https://aka.ms/webdev-beginners) +- [IoT para Iniciantes](https://aka.ms/iot-beginners) From 033659b7ed94bf0372b0714d6c43bbbc66a88bcf Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:26:21 +0800 Subject: [PATCH 26/56] Update README.zh-cn.md --- .../4-Logistic/translations/README.zh-cn.md | 211 +++++++++--------- 1 file changed, 106 insertions(+), 105 deletions(-) diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md index a4488c11..ce78aa06 100644 --- a/2-Regression/4-Logistic/translations/README.zh-cn.md +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -1,72 +1,73 @@ -# Logistic regression to predict categories +# 逻辑回归预测分类 -![Logistic vs. linear regression infographic](./images/logistic-linear.png) -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) +![逻辑与线性回归信息图](./images/logistic-linear.png) +> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) +## [课前测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) -## Introduction +## 介绍 -In this final lesson on Regression, one of the basic _classic_ ML techniques, we will take a look at Logistic Regression. You would use this technique to discover patterns to predict binary categories. Is this candy chocolate or not? Is this disease contagious or not? Will this customer choose this product or not? +在关于回归的最后一课中,我们将学习逻辑回归,这是经典的基本技术之一。您可以使用此技术来发现预测二元分类的模式。这是不是巧克力糖?这种病会传染吗?这个顾客会选择这个产品吗? -In this lesson, you will learn: +在本课中,您将学习: -- A new library for data visualization -- Techniques for logistic regression +- 用于数据可视化的新库 +- 逻辑回归技术 -✅ Deepen your understanding of working with this type of regression in this [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) -## Prerequisite +✅ 在此[学习模块](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) 中加深您对使用此类回归的理解 -Having worked with the pumpkin data, we are now familiar enough with it to realize that there's one binary category that we can work with: `Color`. +## 前提 -Let's build a logistic regression model to predict that, given some variables, _what color a given pumpkin is likely to be_ (orange 🎃 or white 👻). +使用南瓜数据后,我们现在对它已经足够熟悉了,可以意识到我们可以使用一个二元类别:`Color`。 -> Why are we talking about binary classification in a lesson grouping about regression? Only for linguistic convenience, as logistic regression is [really a classification method](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), albeit a linear-based one. Learn about other ways to classify data in the next lesson group. +让我们建立一个逻辑回归模型来预测,给定一些变量,_给定的南瓜可能是什么颜色_(橙色🎃或白色👻)。 -## Define the question +> 为什么我们在关于回归的课程分组中谈论二元分类? 只是为了语言上的方便,因为逻辑回归[真的是一种分类方法](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression),尽管是基于线性的。我们将在在下一课组中了解对数据进行分类的其他方法。 -For our purposes, we will express this as a binary: 'Orange' or 'Not Orange'. There is also a 'striped' category in our dataset but there are few instances of it, so we will not use it. It disappears once we remove null values from the dataset, anyway. +## 定义问题 -> 🎃 Fun fact, we sometimes call white pumpkins 'ghost' pumpkins. They aren't very easy to carve, so they aren't as popular as the orange ones but they are cool looking! +出于我们的目的,我们将其表示为二进制:“橙色”或“非橙色”。我们的数据集中还有一个“条纹”类别,但它的实例很少,所以我们不会使用它。无论如何,一旦我们从数据集中删除空值,它就会消失。 -## About logistic regression +> 🎃 有趣的是,我们有时称白南瓜为鬼南瓜。他们不是很容易雕刻,所以它们不像橙色的那么受欢迎,但它们看起来很酷! -Logistic regression differs from linear regression, which you learned about previously, in a few important ways. +## 关于逻辑回归 -### Binary classification +逻辑回归在一些重要方面与您之前了解的线性回归不同。 -Logistic regression does not offer the same features as linear regression. The former offers a prediction about a binary category ("orange or not orange") whereas the latter is capable of predicting continual values, for example given the origin of a pumpkin and the time of harvest, _how much its price will rise_. +### 二元分类 -![Pumpkin classification Model](./images/pumpkin-classifier.png) -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) -### Other classifications +逻辑回归不提供与线性回归相同的功能。前者提供关于二元类别(“橙色或非橙色”)的预测,而后者能够预测连续值,例如,给定南瓜的起源和收获时间,_其价格将上涨多少_。 -There are other types of logistic regression, including multinomial and ordinal: +![南瓜分类模型](./images/pumpkin-classifier.png) +> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) +### 其他分类 -- **Multinomial**, which involves having more than one category - "Orange, White, and Striped". -- **Ordinal**, which involves ordered categories, useful if we wanted to order our outcomes logically, like our pumpkins that are ordered by a finite number of sizes (mini,sm,med,lg,xl,xxl). +还有其他类型的逻辑回归,包括多项和有序: -![Multinomial vs ordinal regression](./images/multinomial-ordinal.png) -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) +- **多项**,涉及多个类别 - “橙色、白色和条纹”。 +- **有序**,涉及有序类别,如果我们想对我们的结果进行逻辑排序非常有用,例如我们的南瓜按有限数量的大小(mini、sm、med、lg、xl、xxl)排序。 -### It's still linear +![多项式与有序回归](./images/multinomial-ordinal.png) +> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) -Even though this type of Regression is all about 'category predictions', it still works best when there is a clear linear relationship between the dependent variable (color) and the other independent variables (the rest of the dataset, like city name and size). It's good to get an idea of whether there is any linearity dividing these variables or not. +### 仍然是线性的 -### Variables DO NOT have to correlate +尽管这种类型的回归都是关于“类别预测”的,但当因变量(颜色)和其他自变量(数据集的其余部分,如城市名称和大小)之间存在明显的线性关系时,它仍然效果最好。最好了解一下这些变量是否存在线性划分。 -Remember how linear regression worked better with more correlated variables? Logistic regression is the opposite - the variables don't have to align. That works for this data which has somewhat weak correlations. +### 变量不必相关 -### You need a lot of clean data +还记得线性回归如何更好地处理更多相关变量吗?逻辑回归是相反的——变量不必对齐。这适用于相关性较弱的数据。 -Logistic regression will give more accurate results if you use more data; our small dataset is not optimal for this task, so keep that in mind. +### 你需要大量干净的数据 -✅ Think about the types of data that would lend themselves well to logistic regression +如果使用更多数据,逻辑回归将给出更准确的结果;我们的小数据集对于这项任务不是最佳的,请记住这一点。 -## Exercise - tidy the data +✅ 考虑适合逻辑回归的数据类型 -First, clean the data a bit, dropping null values and selecting only some of the columns: +## 练习 - 整理数据 -1. Add the following code: +首先,稍微清理一下数据,删除空值并仅选择其中一些列: + +1. 添加以下代码: ```python from sklearn.preprocessing import LabelEncoder @@ -80,19 +81,19 @@ First, clean the data a bit, dropping null values and selecting only some of the new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform) ``` - You can always take a peek at your new dataframe: + 您可以随时查看新的数据帧: ```python new_pumpkins.info ``` -### Visualization - side-by-side grid +### 可视化 - 并列网格 -By now you have loaded up the [starter notebook](./notebook.ipynb) with pumpkin data once again and cleaned it so as to preserve a dataset containing a few variables, including `Color`. Let's visualize the dataframe in the notebook using a different library: [Seaborn](https://seaborn.pydata.org/index.html), which is built on Matplotlib which we used earlier. +到现在为止,您已经再次使用南瓜数据加载了[starter notebook](./notebook.ipynb)并对其进行了清理,以保留包含一些变量(包括`Color`)的数据集。让我们使用不同的库来可视化notebook中的数据帧:[Seaborn](https://seaborn.pydata.org/index.html),它是基于我们之前使用的Matplotlib构建的。 -Seaborn offers some neat ways to visualize your data. For example, you can compare distributions of the data for each point in a side-by-side grid. +Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可以比较并列网格中每个点的数据分布。 -1. Create such a grid by instantiating a `PairGrid`, using our pumpkin data `new_pumpkins`, followed by calling `map()`: +1. 通过实例化一个`PairGrid`,使用我们的南瓜数据`new_pumpkins`,然后调用`map()`来创建这样一个网格: ```python import seaborn as sns @@ -101,56 +102,56 @@ Seaborn offers some neat ways to visualize your data. For example, you can compa g.map(sns.scatterplot) ``` - ![A grid of visualized data](images/grid.png) + ![可视化数据网格](images/grid.png) - By observing data side-by-side, you can see how the Color data relates to the other columns. + 通过并列观察数据,您可以看到颜色数据与其他列的关系。 - ✅ Given this scatterplot grid, what are some interesting explorations you can envision? + ✅ 鉴于此散点图网格,您可以设想哪些有趣的探索? -### Use a swarm plot +### 使用分类散点图 -Since Color is a binary category (Orange or Not), it's called 'categorical data' and needs 'a more [specialized approach](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) to visualization'. There are other ways to visualize the relationship of this category with other variables. +由于颜色是一个二元类别(橙色或非橙色),它被称为“分类数据”,需要一种更[专业的方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)来可视化。还有其他方法可以可视化此类别与其他变量的关系。 -You can visualize variables side-by-side with Seaborn plots. +您可以使用Seaborn图并列可视化变量。 -1. Try a 'swarm' plot to show the distribution of values: +1. 尝试使用“分类散点”图来显示值的分布: ```python sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins) ``` - ![A swarm of visualized data](images/swarm.png) + ![分类散点图可视化数据](images/swarm.png) -### Violin plot +### 小提琴图 -A 'violin' type plot is useful as you can easily visualize the way that data in the two categories is distributed. Violin plots don't work so well with smaller datasets as the distribution is displayed more 'smoothly'. +“小提琴”类型的图很有用,因为您可以轻松地可视化两个类别中数据的分布方式。小提琴图不适用于较小的数据集,因为分布显示得更“平滑”。 -1. As parameters `x=Color`, `kind="violin"` and call `catplot()`: +1. 作为参数`x=Color`、`kind="violin"`并调用`catplot()`: ```python sns.catplot(x="Color", y="Item Size", kind="violin", data=new_pumpkins) ``` - ![a violin type chart](images/violin.png) + ![小提琴图](images/violin.png) - ✅ Try creating this plot, and other Seaborn plots, using other variables. + ✅ 尝试使用其他变量创建此图和其他Seaborn图。 -Now that we have an idea of the relationship between the binary categories of color and the larger group of sizes, let's explore logistic regression to determine a given pumpkin's likely color. +现在我们已经了解了颜色的二元类别与更大的尺寸组之间的关系,让我们探索逻辑回归来确定给定南瓜的可能颜色。 -> **🧮 Show Me The Math** +> **🧮 给我看看数学** > -> Remember how linear regression often used ordinary least squares to arrive at a value? Logistic regression relies on the concept of 'maximum likelihood' using [sigmoid functions](https://wikipedia.org/wiki/Sigmoid_function). A 'Sigmoid Function' on a plot looks like an 'S' shape. It takes a value and maps it to somewhere between 0 and 1. Its curve is also called a 'logistic curve'. Its formula looks like thus: +> 还记得线性回归如何经常使用普通最小二乘法来得出一个值吗?逻辑回归依赖于使用[sigmoid 函数](https://wikipedia.org/wiki/Sigmoid_function) 的“最大似然”概念。绘图上的“Sigmoid 函数”看起来像“S”形。它接受一个值并将其映射到0和1之间的某个位置。它的曲线也称为“逻辑曲线”。它的公式如下所示: > -> ![logistic function](images/sigmoid.png) +> ![逻辑函数](images/sigmoid.png) > -> where the sigmoid's midpoint finds itself at x's 0 point, L is the curve's maximum value, and k is the curve's steepness. If the outcome of the function is more than 0.5, the label in question will be given the class '1' of the binary choice. If not, it will be classified as '0'. +> 其中sigmoid的中点位于x的0点,L是曲线的最大值,k是曲线的陡度。如果函数的结果大于0.5,则所讨论的标签将被赋予二进制选择的类“1”。否则,它将被分类为“0”。 -## Build your model +## 建立你的模型 -Building a model to find these binary classification is surprisingly straightforward in Scikit-learn. +在Scikit-learn中构建模型来查找这些二元分类非常简单。 -1. Select the variables you want to use in your classification model and split the training and test sets calling `train_test_split()`: +1. 选择要在分类模型中使用的变量,并调用`train_test_split()`拆分训练集和测试集: ```python from sklearn.model_selection import train_test_split @@ -164,7 +165,7 @@ Building a model to find these binary classification is surprisingly straightfor ``` -1. Now you can train your model, by calling `fit()` with your training data, and print out its result: +2. 现在你可以训练你的模型,用你的训练数据调用`fit()`,并打印出它的结果: ```python from sklearn.model_selection import train_test_split @@ -180,7 +181,7 @@ Building a model to find these binary classification is surprisingly straightfor print('Accuracy: ', accuracy_score(y_test, predictions)) ``` - Take a look at your model's scoreboard. It's not too bad, considering you have only about 1000 rows of data: + 看看你的模型的记分板。考虑到您只有大约1000行数据,这还不错: ```output precision recall f1-score support @@ -200,63 +201,63 @@ Building a model to find these binary classification is surprisingly straightfor 0 0 0 1 0 1 0 0 1 0 0 0 1 0] ``` -## Better comprehension via a confusion matrix +## 通过混淆矩阵更好地理解 -While you can get a scoreboard report [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) by printing out the items above, you might be able to understand your model more easily by using a [confusion matrix](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) to help us understand how the model is performing. +虽然您可以通过获得记分板报告[条目](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report)把上面的项目打印出来,通过使用[混淆矩阵](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix)可以更容易地理解您的模型,帮助我们了解模型的性能。 -> 🎓 A '[confusion matrix](https://wikipedia.org/wiki/Confusion_matrix)' (or 'error matrix') is a table that expresses your model's true vs. false positives and negatives, thus gauging the accuracy of predictions. +> 🎓 “[混淆矩阵](https://wikipedia.org/wiki/Confusion_matrix)”(或“误差矩阵”)是一个表格,用于表示模型的真假阳性和假阴性,从而衡量预测的准确性。 -1. To use a confusion metrics, call `confusin_matrix()`: +1. 要使用混淆指标,请调用 `confusin_matrix()`: ```python from sklearn.metrics import confusion_matrix confusion_matrix(y_test, predictions) ``` - Take a look at your model's confusion matrix: + 看看你的模型的混淆矩阵: ```output array([[162, 4], [ 33, 0]]) ``` -What's going on here? Let's say our model is asked to classify items between two binary categories, category 'pumpkin' and category 'not-a-pumpkin'. +这里发生了什么?假设我们的模型被要求对两个二元类别之间的项目进行分类,即类别“南瓜”和类别“非南瓜”。 -- If your model predicts something as a pumpkin and it belongs to category 'pumpkin' in reality we call it a true positive, shown by the top left number. -- If your model predicts something as not a pumpkin and it belongs to category 'pumpkin' in reality we call it a false positive, shown by the top right number. -- If your model predicts something as a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a false negative, shown by the bottom left number. -- If your model predicts something as not a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a true negative, shown by the bottom right number. +- 如果您的模型将某物预测为南瓜并且它实际上属于“南瓜”类别,我们将其称为真阳性,由左上角的数字显示。 +- 如果您的模型预测某物不是南瓜,并且它实际上属于“南瓜”类别,我们将其称为假阳性,如右上角的数字所示。 +- 如果您的模型将某物预测为南瓜并且它实际上属于“非南瓜”类别,我们将其称为假阴性,由左下角的数字显示。 +- 如果您的模型预测某物不是南瓜,并且它实际上属于“非南瓜”类别,我们将其称为真阴性,如右下角的数字所示。 -![Confusion Matrix](images/confusion-matrix.png) +![混淆矩阵](images/confusion-matrix.png) -> Infographic by [Jen Looper](https://twitter.com/jenlooper) +> 作者[Jen Looper](https://twitter.com/jenlooper) -As you might have guessed it's preferable to have a larger number of true positives and true negatives and a lower number of false positives and false negatives, which implies that the model performs better. +正如您可能已经猜到的那样,最好有更多的真阳性和真阴性以及较少的假阳性和假阴性,这意味着模型性能更好。 -✅ Q: According to the confusion matrix, how did the model do? A: Not too bad; there are a good number of true positives but also several false negatives. +✅ Q:根据混淆矩阵,模型怎么样? A:还不错;有很多真阳性,但也有一些假阴性。 -Let's revisit the terms we saw earlier with the help of the confusion matrix's mapping of TP/TN and FP/FN: +让我们借助混淆矩阵对TP/TN和FP/FN的映射,重新审视一下我们之前看到的术语: -🎓 Precision: TP/(TP + FN) The fraction of relevant instances among the retrieved instances (e.g. which labels were well-labeled) +🎓 准确率:TP/(TP+FN)检索实例中相关实例的分数(例如,哪些标签标记得很好) -🎓 Recall: TP/(TP + FP) The fraction of relevant instances that were retrieved, whether well-labeled or not +🎓 召回率: TP/(TP + FP) 检索到的相关实例的比例,无论是否标记良好 -🎓 f1-score: (2 * precision * recall)/(precision + recall) A weighted average of the precision and recall, with best being 1 and worst being 0 +🎓 F1分数: (2 * 准确率 * 召回率)/(准确率 + 召回率) 准确率和召回率的加权平均值,最好为1,最差为0 -🎓 Support: The number of occurrences of each label retrieved +🎓 Support:检索到的每个标签的出现次数 -🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) The percentage of labels predicted accurately for a sample. +🎓 准确度:(TP + TN)/(TP + TN + FP + FN) 为样本准确预测的标签百分比。 -🎓 Macro Avg: The calculation of the unweighted mean metrics for each label, not taking label imbalance into account. +🎓 宏平均值: 计算每个标签的未加权平均指标,不考虑标签不平衡。 -🎓 Weighted Avg: The calculation of the mean metrics for each label, taking label imbalance into account by weighting them by their support (the number of true instances for each label). +🎓 加权平均值:计算每个标签的平均指标,通过按支持度(每个标签的真实实例数)加权来考虑标签不平衡。 -✅ Can you think which metric you should watch if you want your model to reduce the number of false negatives? -## Visualize the ROC curve of this model +✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗? +## 可视化该模型的ROC曲线 -This is not a bad model; its accuracy is in the 80% range so ideally you could use it to predict the color of a pumpkin given a set of variables. +这不是一个糟糕的模型;它的准确率在80%范围内,因此理想情况下,您可以使用它来预测给定一组变量的南瓜颜色。 -Let's do one more visualization to see the so-called 'ROC' score: +让我们再做一个可视化来查看所谓的“ROC”分数 ```python from sklearn.metrics import roc_curve, roc_auc_score @@ -267,30 +268,30 @@ fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) sns.lineplot([0, 1], [0, 1]) sns.lineplot(fpr, tpr) ``` -Using Seaborn again, plot the model's [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) or ROC. ROC curves are often used to get a view of the output of a classifier in terms of its true vs. false positives. "ROC curves typically feature true positive rate on the Y axis, and false positive rate on the X axis." Thus, the steepness of the curve and the space between the midpoint line and the curve matter: you want a curve that quickly heads up and over the line. In our case, there are false positives to start with, and then the line heads up and over properly: +再次使用Seaborn,绘制模型的[接收操作特性](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)或ROC。 ROC曲线通常用于根据分类器的真假阳性来了解分类器的输出。“ROC曲线通常具有Y轴上的真阳性率和X轴上的假阳性率。” 因此,曲线的陡度以及中点线与曲线之间的空间很重要:您需要一条快速向上并越过直线的曲线。在我们的例子中,一开始就有误报,然后这条线正确地向上和重复: ![ROC](./images/ROC.png) -Finally, use Scikit-learn's [`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) to compute the actual 'Area Under the Curve' (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 auc = roc_auc_score(y_test,y_scores[:,1]) print(auc) ``` -The result is `0.6976998904709748`. Given that the AUC ranges from 0 to 1, you want a big score, since a model that is 100% correct in its predictions will have an AUC of 1; in this case, the model is _pretty good_. - -In future lessons on classifications, you will learn how to iterate to improve your model's scores. But for now, congratulations! You've completed these regression lessons! +结果是`0.6976998904709748`。 鉴于AUC的范围从0到1,您需要一个高分,因为预测100%正确的模型的AUC为1;在这种情况下,模型_相当不错_。 +在以后的分类课程中,您将学习如何迭代以提高模型的分数。但是现在,恭喜!您已经完成了这些回归课程! --- -## 🚀Challenge +## 🚀挑战 + +关于逻辑回归,还有很多东西需要解开!但最好的学习方法是实验。找到适合此类分析的数据集并用它构建模型。你学到了什么?小贴士:尝试[Kaggle](https://kaggle.com)获取有趣的数据集。 -There's a lot more to unpack regarding logistic regression! But the best way to learn is to experiment. Find a dataset that lends itself to this type of analysis and build a model with it. What do you learn? tip: try [Kaggle](https://kaggle.com) for interesting datasets. -## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/) +## [课后测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/16/) -## Review & Self Study +## 复习与自学 -Read the first few pages of [this paper from Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) on some practical uses for logistic regression. Think about tasks that are better suited for one or the other type of regression tasks that we have studied up to this point. What would work best? +阅读[斯坦福大学的这篇论文](https://web.stanford.edu/~jurafsky/slp3/5.pdf)的前几页关于逻辑回归的一些实际应用。想想那些更适合于我们目前所研究的一种或另一种类型的回归任务的任务。什么最有效? -## Assignment +## 任务 -[Retrying this regression](assignment.md) +[重试此回归](assignment.md) From a05577934bba29fb454ea4fec862a586c019b3fd Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:38:17 +0800 Subject: [PATCH 27/56] Update README.zh-cn.md --- .../4-Logistic/translations/README.zh-cn.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md index ce78aa06..1b1e8524 100644 --- a/2-Regression/4-Logistic/translations/README.zh-cn.md +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -6,14 +6,14 @@ ## 介绍 -在关于回归的最后一课中,我们将学习逻辑回归,这是经典的基本技术之一。您可以使用此技术来发现预测二元分类的模式。这是不是巧克力糖?这种病会传染吗?这个顾客会选择这个产品吗? +在关于回归的最后一课中,我们将学习逻辑回归,这是经典的基本技术之一。你可以使用此技术来发现预测二元分类的模式。这是不是巧克力糖?这种病会传染吗?这个顾客会选择这个产品吗? -在本课中,您将学习: +在本课中,你将学习: - 用于数据可视化的新库 - 逻辑回归技术 -✅ 在此[学习模块](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) 中加深您对使用此类回归的理解 +✅ 在此[学习模块](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa) 中加深你对使用此类回归的理解 ## 前提 @@ -31,7 +31,7 @@ ## 关于逻辑回归 -逻辑回归在一些重要方面与您之前了解的线性回归不同。 +逻辑回归在一些重要方面与你之前了解的线性回归不同。 ### 二元分类 @@ -81,7 +81,7 @@ new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform) ``` - 您可以随时查看新的数据帧: + 你可以随时查看新的数据帧: ```python new_pumpkins.info @@ -89,9 +89,9 @@ ### 可视化 - 并列网格 -到现在为止,您已经再次使用南瓜数据加载了[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()`来创建这样一个网格: @@ -104,15 +104,15 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 ![可视化数据网格](images/grid.png) - 通过并列观察数据,您可以看到颜色数据与其他列的关系。 + 通过并列观察数据,你可以看到颜色数据与其他列的关系。 - ✅ 鉴于此散点图网格,您可以设想哪些有趣的探索? + ✅ 鉴于此散点图网格,你可以设想哪些有趣的探索? ### 使用分类散点图 由于颜色是一个二元类别(橙色或非橙色),它被称为“分类数据”,需要一种更[专业的方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)来可视化。还有其他方法可以可视化此类别与其他变量的关系。 -您可以使用Seaborn图并列可视化变量。 +你可以使用Seaborn图并列可视化变量。 1. 尝试使用“分类散点”图来显示值的分布: @@ -124,7 +124,7 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 ### 小提琴图 -“小提琴”类型的图很有用,因为您可以轻松地可视化两个类别中数据的分布方式。小提琴图不适用于较小的数据集,因为分布显示得更“平滑”。 +“小提琴”类型的图很有用,因为你可以轻松地可视化两个类别中数据的分布方式。小提琴图不适用于较小的数据集,因为分布显示得更“平滑”。 1. 作为参数`x=Color`、`kind="violin"`并调用`catplot()`: @@ -181,7 +181,7 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 print('Accuracy: ', accuracy_score(y_test, predictions)) ``` - 看看你的模型的记分板。考虑到您只有大约1000行数据,这还不错: + 看看你的模型的记分板。考虑到你只有大约1000行数据,这还不错: ```output precision recall f1-score support @@ -203,7 +203,7 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 ## 通过混淆矩阵更好地理解 -虽然您可以通过获得记分板报告[条目](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report)把上面的项目打印出来,通过使用[混淆矩阵](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix)可以更容易地理解您的模型,帮助我们了解模型的性能。 +虽然你可以通过获得记分板报告[条目](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report)把上面的项目打印出来,通过使用[混淆矩阵](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix)可以更容易地理解你的模型,帮助我们了解模型的性能。 > 🎓 “[混淆矩阵](https://wikipedia.org/wiki/Confusion_matrix)”(或“误差矩阵”)是一个表格,用于表示模型的真假阳性和假阴性,从而衡量预测的准确性。 @@ -223,16 +223,16 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 这里发生了什么?假设我们的模型被要求对两个二元类别之间的项目进行分类,即类别“南瓜”和类别“非南瓜”。 -- 如果您的模型将某物预测为南瓜并且它实际上属于“南瓜”类别,我们将其称为真阳性,由左上角的数字显示。 -- 如果您的模型预测某物不是南瓜,并且它实际上属于“南瓜”类别,我们将其称为假阳性,如右上角的数字所示。 -- 如果您的模型将某物预测为南瓜并且它实际上属于“非南瓜”类别,我们将其称为假阴性,由左下角的数字显示。 -- 如果您的模型预测某物不是南瓜,并且它实际上属于“非南瓜”类别,我们将其称为真阴性,如右下角的数字所示。 +- 如果你的模型将某物预测为南瓜并且它实际上属于“南瓜”类别,我们将其称为真阳性,由左上角的数字显示。 +- 如果你的模型预测某物不是南瓜,并且它实际上属于“南瓜”类别,我们将其称为假阳性,如右上角的数字所示。 +- 如果你的模型将某物预测为南瓜并且它实际上属于“非南瓜”类别,我们将其称为假阴性,由左下角的数字显示。 +- 如果你的模型预测某物不是南瓜,并且它实际上属于“非南瓜”类别,我们将其称为真阴性,如右下角的数字所示。 ![混淆矩阵](images/confusion-matrix.png) > 作者[Jen Looper](https://twitter.com/jenlooper) -正如您可能已经猜到的那样,最好有更多的真阳性和真阴性以及较少的假阳性和假阴性,这意味着模型性能更好。 +正如你可能已经猜到的那样,最好有更多的真阳性和真阴性以及较少的假阳性和假阴性,这意味着模型性能更好。 ✅ Q:根据混淆矩阵,模型怎么样? A:还不错;有很多真阳性,但也有一些假阴性。 @@ -255,7 +255,7 @@ Seaborn提供了一些巧妙的方法来可视化您的数据。例如,您可 ✅ 如果你想让你的模型减少假阴性的数量,你能想出应该关注哪个指标吗? ## 可视化该模型的ROC曲线 -这不是一个糟糕的模型;它的准确率在80%范围内,因此理想情况下,您可以使用它来预测给定一组变量的南瓜颜色。 +这不是一个糟糕的模型;它的准确率在80%范围内,因此理想情况下,你可以使用它来预测给定一组变量的南瓜颜色。 让我们再做一个可视化来查看所谓的“ROC”分数 @@ -268,7 +268,7 @@ fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) sns.lineplot([0, 1], [0, 1]) 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) @@ -278,9 +278,9 @@ sns.lineplot(fpr, tpr) auc = roc_auc_score(y_test,y_scores[:,1]) print(auc) ``` -结果是`0.6976998904709748`。 鉴于AUC的范围从0到1,您需要一个高分,因为预测100%正确的模型的AUC为1;在这种情况下,模型_相当不错_。 +结果是`0.6976998904709748`。 鉴于AUC的范围从0到1,你需要一个高分,因为预测100%正确的模型的AUC为1;在这种情况下,模型_相当不错_。 -在以后的分类课程中,您将学习如何迭代以提高模型的分数。但是现在,恭喜!您已经完成了这些回归课程! +在以后的分类课程中,你将学习如何迭代以提高模型的分数。但是现在,恭喜!你已经完成了这些回归课程! --- ## 🚀挑战 From 4c0395572cafaa7edf34360e71c42cceb6468243 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:39:41 +0800 Subject: [PATCH 28/56] Update README.zh-cn.md --- .../translations/README.zh-cn.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md index f14d54ae..12e5aae0 100644 --- a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md +++ b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md @@ -8,24 +8,24 @@ ### 介绍 -欢迎来到这个经典机器学习的初学者课程!无论您是这个主题的新手,还是一个有经验的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") > 🎥 单击上图观看视频:麻省理工学院的 John Guttag 介绍机器学习 ### 机器学习入门 -在开始本课程之前,您需要设置计算机能在本地运行Jupyter Notebooks。 +在开始本课程之前,你需要设置计算机能在本地运行Jupyter Notebooks。 -- **按照这些视频里的讲解配置您的计算机**。了解有关如何在此[视频集](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)中设置计算机的更多信息。 -- **学习Python**. 还建议您对[Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa),我们在本课程中使用的一种对数据科学家有用的编程语言,有一个基本的了解。 -- **学习Node.js和JavaScript**。在本课程中,我们在构建web应用程序时也使用过几次JavaScript,因此您需要有[node](https://nodejs.org)和[npm](https://www.npmjs.com/) 以及[Visual Studio Code](https://code.visualstudio.com/)用于Python和JavaScript开发。 -- **创建GitHub帐户**。既然你在[GitHub](https://github.com)上找到我们,您可能已经有了一个帐户,但如果没有,请创建一个帐户,然后fork此课程自己使用(也给我们一颗星星吧😊) +- **按照这些视频里的讲解配置你的计算机**。了解有关如何在此[视频集](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6)中设置计算机的更多信息。 +- **学习Python**. 还建议你对[Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa),我们在本课程中使用的一种对数据科学家有用的编程语言,有一个基本的了解。 +- **学习Node.js和JavaScript**。在本课程中,我们在构建web应用程序时也使用过几次JavaScript,因此你需要有[node](https://nodejs.org)和[npm](https://www.npmjs.com/) 以及[Visual Studio Code](https://code.visualstudio.com/)用于Python和JavaScript开发。 +- **创建GitHub帐户**。既然你在[GitHub](https://github.com)上找到我们,你可能已经有了一个帐户,但如果没有,请创建一个帐户,然后fork此课程自己使用(也给我们一颗星星吧😊) - **探索Scikit-learn**. 熟悉[Scikit-learn]([https://scikit-learn.org/stable/user_guide.html),我们在这些课程中引用的一组ML库。 ### 什么是机器学习? -术语“机器学习”是当今最流行和最常用的术语之一。 如果您对科技有某种程度的熟悉,那么很可能您至少听说过这个术语一次,无论您在哪个领域工作。然而,机器学习的机制对大多数人来说是一个谜。 对于机器学习初学者来说,这个主题有时会让人感到不知所措。 因此,了解机器学习的实质是什么,并通过实例一步一步地了解机器学习是很重要的。 +术语“机器学习”是当今最流行和最常用的术语之一。 如果你对科技有某种程度的熟悉,那么很可能你至少听说过这个术语一次,无论你在哪个领域工作。然而,机器学习的机制对大多数人来说是一个谜。 对于机器学习初学者来说,这个主题有时会让人感到不知所措。 因此,了解机器学习的实质是什么,并通过实例一步一步地了解机器学习是很重要的。 ![机器学习趋势曲线](images/hype.png) @@ -43,11 +43,11 @@ > 显示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来介绍我们所谓的“经典机器学习”,这是一个许多学生用来学习基础知识的优秀库。要理解更广泛的人工智能或深度学习的概念,机器学习的基础知识是必不可少的,所以我们想在这里提供它。 -在本课程中,您将学习: +在本课程中,你将学习: - 机器学习的核心概念 - 机器学习的历史 @@ -94,7 +94,7 @@ --- ## 🚀 挑战 -在纸上或使用[Excalidraw](https://excalidraw.com/)等在线应用程序绘制草图,了解您对AI、ML、深度学习和数据科学之间差异的理解。添加一些关于这些技术擅长解决的问题的想法。 +在纸上或使用[Excalidraw](https://excalidraw.com/)等在线应用程序绘制草图,了解你对AI、ML、深度学习和数据科学之间差异的理解。添加一些关于这些技术擅长解决的问题的想法。 ## [阅读后测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2/) From 439ffc2e367e4bf8511d3ac657336078432ec5a8 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:40:46 +0800 Subject: [PATCH 29/56] Update README.zh-cn.md --- 1-Introduction/2-history-of-ML/translations/README.zh-cn.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md index 0491f865..c8f74e69 100644 --- a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md @@ -12,7 +12,7 @@ ## 主要发现 - 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的名字命名,用于描述基于先前状态的一系列可能事件。 - 1957 [感知器](https://wikipedia.org/wiki/Perceptron)是美国心理学家Frank Rosenblatt发明的一种线性分类器,是深度学习发展的基础。 - 1967 [最近邻](https://wikipedia.org/wiki/Nearest_neighbor)是一种最初设计用于映射路线的算法。 在ML中,它用于检测模式。 @@ -22,7 +22,7 @@ ✅ 做点调查。在ML和AI的历史上,还有哪些日期是重要的? ## 1950: 会思考的机器 -Alan Turing,一个真正杰出的人,[在2019年被公众投票选出](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 作为20世纪最伟大的科学家,他认为有助于为“会思考的机器”的概念打下基础。他通过创建 [图灵测试](https://www.bbc.com/news/technology-18475646)来解决反对者和他自己对这一概念的经验证据的需求,您将在我们的 NLP 课程中进行探索。 +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: 达特茅斯夏季研究项目 @@ -47,7 +47,7 @@ Alan Turing,一个真正杰出的人,[在2019年被公众投票选出](https ![Shakey, 智能机器人](images/shakey.jpg) > 1972 年的Shakey -* Eliza,一个早期的“聊天机器人”,可以与人交谈并充当原始的“治疗师”。 您将在NLP课程中了解有关Eliza的更多信息。 +* Eliza,一个早期的“聊天机器人”,可以与人交谈并充当原始的“治疗师”。 你将在NLP课程中了解有关Eliza的更多信息。 ![Eliza, 机器人](images/eliza.png) > Eliza的一个版本,一个聊天机器人 From 05bd6631d3fb00833d1f1157114574eafa481146 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:41:26 +0800 Subject: [PATCH 30/56] Update README.zh-cn.md --- .../3-fairness/translations/README.zh-cn.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/1-Introduction/3-fairness/translations/README.zh-cn.md b/1-Introduction/3-fairness/translations/README.zh-cn.md index bb43a027..55f0d21a 100644 --- a/1-Introduction/3-fairness/translations/README.zh-cn.md +++ b/1-Introduction/3-fairness/translations/README.zh-cn.md @@ -7,11 +7,11 @@ ## 介绍 -在本课程中,您将开始了解机器学习如何影响我们的日常生活。截至目前,系统和模型已经参与到日常决策任务中,例如医疗诊断或发现欺诈。因此,这些模型运行良好,并为每个人提供公平的结果非常重要。 +在本课程中,你将开始了解机器学习如何影响我们的日常生活。截至目前,系统和模型已经参与到日常决策任务中,例如医疗诊断或发现欺诈。因此,这些模型运行良好,并为每个人提供公平的结果非常重要。 -想象一下,当您用于构建这些模型的数据缺少某些人口统计信息时会发生什么情况,例如种族、性别、政治观点、宗教,或者不成比例地代表了这些人口统计信息。当模型的输出被解释为有利于某些人口统计学的时候呢?申请结果如何? +想象一下,当你用于构建这些模型的数据缺少某些人口统计信息时会发生什么情况,例如种族、性别、政治观点、宗教,或者不成比例地代表了这些人口统计信息。当模型的输出被解释为有利于某些人口统计学的时候呢?申请结果如何? -在本课中,您将: +在本课中,你将: - 提高你对机器学习中公平的重要性的认识。 - 了解公平相关的危害。 @@ -42,7 +42,7 @@ 与公平相关的主要危害可分为: - **分配**,如果一个性别或种族比另一个更受青睐。 -- **服务质量**。 如果您针对一种特定场景训练数据,但实际情况要复杂得多,则会导致服务性能不佳。 +- **服务质量**。 如果你针对一种特定场景训练数据,但实际情况要复杂得多,则会导致服务性能不佳。 - **刻板印象**。 将给定的组与预先分配的属性相关联。 - **诋毁**。 不公平地批评和标记某事或某人。 - **代表性过高或过低**。这种想法是,某个群体在某个行业中不被看到,而这个行业一直在提升,这是造成伤害的原因。 @@ -104,11 +104,11 @@ 开发过程中做出的错误假设也会导致不公平。例如,旨在根据人脸图像预测谁将犯罪的面部分析系统可能会导致破坏性假设。这可能会对错误分类的人造成重大伤害。 -## 了解您的模型并建立公平性 +## 了解你的模型并建立公平性 -尽管公平性的许多方面都没有包含在量化公平性指标中,并且不可能从系统中完全消除偏见以保证公平性,但您仍然有责任尽可能多地检测和缓解公平性问题。 +尽管公平性的许多方面都没有包含在量化公平性指标中,并且不可能从系统中完全消除偏见以保证公平性,但你仍然有责任尽可能多地检测和缓解公平性问题。 -当您使用机器学习模型时,通过确保模型的可解释性以及评估和减轻不公平性来理解模型非常重要。 +当你使用机器学习模型时,通过确保模型的可解释性以及评估和减轻不公平性来理解模型非常重要。 让我们使用贷款选择示例来作为分析案例,以确定每个因素对预测的影响程度。 @@ -136,7 +136,7 @@ 你已经确定了伤害和受影响的群体,在本例中,是按性别划分的。现在,使用量化因子来分解它们的度量。例如,使用下面的数据,你可以看到女性的假阳性率最大,男性的假阳性率最小,而对于假阴性则相反。 -✅ 在以后关于聚类的课程中,您将看到如何在代码中构建这个“混淆矩阵” +✅ 在以后关于聚类的课程中,你将看到如何在代码中构建这个“混淆矩阵” | | 假阳性率 | 假阴性率 | 数量 | | ---------- | ------------------- | ------------------- | ----- | @@ -147,7 +147,7 @@ 这张桌子告诉我们几件事。首先,我们注意到数据中的未列出性别的人相对较少。数据是有偏差的,所以你需要小心解释这些数字。 -在本例中,我们有3个组和2个度量。当我们考虑我们的系统如何影响贷款申请人的客户群时,这可能就足够了,但是当您想要定义更多的组时,您可能需要将其提取到更小的摘要集。为此,您可以添加更多的度量,例如每个假阴性和假阳性的最大差异或最小比率。 +在本例中,我们有3个组和2个度量。当我们考虑我们的系统如何影响贷款申请人的客户群时,这可能就足够了,但是当你想要定义更多的组时,你可能需要将其提取到更小的摘要集。为此,你可以添加更多的度量,例如每个假阴性和假阳性的最大差异或最小比率。 ✅ 停下来想一想:还有哪些群体可能会受到贷款申请的影响? @@ -159,9 +159,9 @@ ### Fairlearn -[Fairlearn](https://fairlearn.github.io/) 是一个开源Python包,可让您评估系统的公平性并减轻不公平性。 +[Fairlearn](https://fairlearn.github.io/) 是一个开源Python包,可让你评估系统的公平性并减轻不公平性。 -该工具可帮助您评估模型的预测如何影响不同的组,使您能够通过使用公平性和性能指标来比较多个模型,并提供一组算法来减轻二元分类和回归中的不公平性。 +该工具可帮助你评估模型的预测如何影响不同的组,使你能够通过使用公平性和性能指标来比较多个模型,并提供一组算法来减轻二元分类和回归中的不公平性。 - 通过查看Fairlearn的[GitHub](https://github.com/fairlearn/fairlearn/)了解如何使用不同的组件 @@ -189,7 +189,7 @@ ## [课后测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/) ## 复习与自学 -在本课中,您学习了机器学习中公平和不公平概念的一些基础知识。 +在本课中,你学习了机器学习中公平和不公平概念的一些基础知识。 观看本次研讨会,深入探讨以下主题: From a7bc4300905b24c36f7b6bbafed490e3e0a2c4d7 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Fri, 9 Jul 2021 23:42:17 +0800 Subject: [PATCH 31/56] Update README.zh-cn.md --- .../translations/README.zh-cn.md | 153 +++++++++++++++--- 1 file changed, 130 insertions(+), 23 deletions(-) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md index 156639c3..519ab683 100644 --- a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md @@ -1,6 +1,6 @@ # 机器学习技术 -构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述您需要了解的主要技术。 您会: +构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述你需要了解的主要技术。 你会: - 在高层次上理解支持机器学习的过程。 - 探索基本概念,例如“模型”、“预测”和“训练数据”。 @@ -11,11 +11,11 @@ 在较高的层次上,创建机器学习(ML)过程的工艺包括许多步骤: 1. **决定问题**。 大多数机器学习过程都是从提出一个简单的条件程序或基于规则的引擎无法回答的问题开始的。 这些问题通常围绕基于数据集合的预测展开。 -2. **收集和准备数据**。为了能够回答您的问题,您需要数据。数据的质量(有时是数量)将决定您回答最初问题的能力。可视化数据是这个阶段的一个重要方面。此阶段还包括将数据拆分为训练和测试组以构建模型。 -3. **选择一种训练方法**。根据您的问题和数据的性质,您需要选择如何训练模型以最好地反映您的数据并对其进行准确预测。这是您的ML过程的一部分,需要特定的专业知识,并且通常需要大量的实验。 -4. **训练模型**。使用您的训练数据,您将使用各种算法来训练模型以识别数据中的模式。该模型可能会利用可以调整的内部权重来使数据的某些部分优于其他部分,从而构建更好的模型。 -5. **评估模型**。您使用收集到的集合中从未见过的数据(您的测试数据)来查看模型的性能。 -6. **参数调整**。根据模型的性能,您可以使用不同的参数或变量重做该过程,这些参数或变量控制用于训练模型的算法的行为。 +2. **收集和准备数据**。为了能够回答你的问题,你需要数据。数据的质量(有时是数量)将决定你回答最初问题的能力。可视化数据是这个阶段的一个重要方面。此阶段还包括将数据拆分为训练和测试组以构建模型。 +3. **选择一种训练方法**。根据你的问题和数据的性质,你需要选择如何训练模型以最好地反映你的数据并对其进行准确预测。这是你的ML过程的一部分,需要特定的专业知识,并且通常需要大量的实验。 +4. **训练模型**。使用你的训练数据,你将使用各种算法来训练模型以识别数据中的模式。该模型可能会利用可以调整的内部权重来使数据的某些部分优于其他部分,从而构建更好的模型。 +5. **评估模型**。你使用收集到的集合中从未见过的数据(你的测试数据)来查看模型的性能。 +6. **参数调整**。根据模型的性能,你可以使用不同的参数或变量重做该过程,这些参数或变量控制用于训练模型的算法的行为。 7. **预测**。使用新输入来测试模型的准确性。 ## 要问什么问题 @@ -28,48 +28,48 @@ ## 预构建任务 -在开始构建模型之前,您需要完成多项任务。要测试您的问题并根据模型的预测形成假设,您需要识别和配置多个元素。 +在开始构建模型之前,你需要完成多项任务。要测试你的问题并根据模型的预测形成假设,你需要识别和配置多个元素。 ### Data -为了能够确定地回答您的问题,您需要大量正确类型的数据。 此时您需要做两件事: +为了能够确定地回答你的问题,你需要大量正确类型的数据。 此时你需要做两件事: - **收集数据**。记住之前关于数据分析公平性的课程,小心收集数据。请注意此数据的来源、它可能具有的任何固有偏见,并记录其来源。 -- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,您可能需要整理数据并对其进行标准化。您可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的那样)。您还可以根据原始数据生成新数据(正如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的那样)。您可以清理和编辑数据(就像我们在 [Web App](../3-Web-App/README.md)课程之前所做的那样)。最后,您可能还需要对其进行随机化和打乱,具体取决于您的训练技术。 +- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,你可能需要整理数据并对其进行标准化。你可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的那样)。你还可以根据原始数据生成新数据(正如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的那样)。你可以清理和编辑数据(就像我们在 [Web App](../3-Web-App/README.md)课程之前所做的那样)。最后,你可能还需要对其进行随机化和打乱,具体取决于你的训练技术。 -✅ 在收集和处理您的数据后,花点时间看看它的形状是否能让您解决您的预期问题。正如我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在您的给定任务中表现不佳! +✅ 在收集和处理你的数据后,花点时间看看它的形状是否能让你解决你的预期问题。正如我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在你的给定任务中表现不佳! ### 选择特征变量 -[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可衡量属性。在许多数据集中,它表示为列标题,如“日期”、“大小”或“颜色”。您的特征变量(通常在代码中表示为`y`)代表您试图对数据提出的问题的答案:在12月,哪种**颜色**的南瓜最便宜?在旧金山,哪些街区的房地产**价格**最好? +[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可衡量属性。在许多数据集中,它表示为列标题,如“日期”、“大小”或“颜色”。你的特征变量(通常在代码中表示为`y`)代表你试图对数据提出的问题的答案:在12月,哪种**颜色**的南瓜最便宜?在旧金山,哪些街区的房地产**价格**最好? -🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?您可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) +🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?你可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) ### 可视化数据 -数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示您的数据可能会让您发现可以利用的隐藏关联。 您的可视化还可以帮助您发现偏见或不平衡的数据(正如我们在 [分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 +数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 ### 拆分数据集 -在训练之前,您需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 +在训练之前,你需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 -- **训练**。这部分数据集适合您的模型进行训练。这个集合构成了原始数据集的大部分。 +- **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。 - **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。 -- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据您的数据大小和您提出的问题,您可能不需要构建第三组(正如我们在[时间序列预测](../7-TimeSeries/1-Introduction/README.md)中所述)。 +- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../7-TimeSeries/1-Introduction/README.md)中所述)。 ## 建立模型 -使用您的训练数据,您的目标是构建模型或数据的统计表示,并使用各种算法对其进行**训练**。训练模型将其暴露给数据,并允许它对其发现、验证和接受或拒绝的感知模式做出假设。 +使用你的训练数据,你的目标是构建模型或数据的统计表示,并使用各种算法对其进行**训练**。训练模型将其暴露给数据,并允许它对其发现、验证和接受或拒绝的感知模式做出假设。 ### 决定一种训练方法 -根据您的问题和数据的性质,您将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 您可以探索多种训练模型的方法。 根据您的经验,您可能需要尝试多种不同的方法来构建最佳模型。您可能会经历一个过程,在该过程中,数据科学家通过提供未见过的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 +根据你的问题和数据的性质,你将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 你可以探索多种训练模型的方法。 根据你的经验,你可能需要尝试多种不同的方法来构建最佳模型。你可能会经历一个过程,在该过程中,数据科学家通过提供未见过的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 ### 训练模型 -有了您的训练数据,您就可以“拟合”它以创建模型。您会注意到,在许多ML库中,您会找到代码'model.fit'——此时您将数据作为值数组(通常为'X')和特征变量(通常为'y')发送)。 +有了你的训练数据,你就可以“拟合”它以创建模型。你会注意到,在许多ML库中,你会找到代码'model.fit'——此时你将数据作为值数组(通常为'X')和特征变量(通常为'y')发送)。 ### 评估模型 -训练过程完成后(训练大型模型可能需要多次迭代或“时期”),您将能够通过使用测试数据来衡量模型的性能来评估模型的质量。此数据是模型先前未分析的原始数据的子集。 您可以打印出有关模型质量的指标表。 +训练过程完成后(训练大型模型可能需要多次迭代或“时期”),你将能够通过使用测试数据来衡量模型的性能来评估模型的质量。此数据是模型先前未分析的原始数据的子集。 你可以打印出有关模型质量的指标表。 🎓 **模型拟合 ** @@ -86,15 +86,122 @@ ## 预测 -这是您可以使用全新数据来测试模型准确性的时刻。在“应用”ML设置中,您正在构建Web资源以在生产中使用模型,此过程可能涉及收集用户输入(例如按下按钮)以设置变量并将其发送到模型进行推理,或者评估。 +这是你可以使用全新数据来测试模型准确性的时刻。在“应用”ML设置中,你正在构建Web资源以在生产中使用模型,此过程可能涉及收集用户输入(例如按下按钮)以设置变量并将其发送到模型进行推理,或者评估。 -在这些课程中,您将了解如何使用这些步骤来准备、构建、测试、评估和预测—所有这些都是数据科学家的姿态,而且随着您在成为一名“全栈”ML工程师的旅程中取得进展,您将了解更多。 +在这些课程中,你将了解如何使用这些步骤来准备、构建、测试、评估和预测—所有这些都是数据科学家的姿态,而且随着你在成为一名“全栈”ML工程师的旅程中取得进展,你将了解更多。 --- ## 🚀挑战 -画一个流程图,反映ML的步骤。在这个过程中,您认为自己现在在哪里?您预测您在哪里会遇到困难?什么对您来说很容易? +画一个流程图,反映ML的步骤。在这个过程中,你认为自己现在在哪里?你预测你在哪里会遇到困难?什么对你来说很容易? + +## [阅读后测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) + +## 复习与自学 + +在线搜索对讨论日常工作的数据科学家的采访。 这是[其中之一](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 + +## 任务 + +[采访一名数据科学家](assignment.md) +# 机器学习技术 + +构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述你需要了解的主要技术。 你会: + +- 在高层次上理解支持机器学习的过程。 +- 探索基本概念,例如“模型”、“预测”和“训练数据”。 + +## [课前测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/) +## 介绍 + +在较高的层次上,创建机器学习(ML)过程的工艺包括许多步骤: + +1. **决定问题**。 大多数机器学习过程都是从提出一个简单的条件程序或基于规则的引擎无法回答的问题开始的。 这些问题通常围绕基于数据集合的预测展开。 +2. **收集和准备数据**。为了能够回答你的问题,你需要数据。数据的质量(有时是数量)将决定你回答最初问题的能力。可视化数据是这个阶段的一个重要方面。此阶段还包括将数据拆分为训练和测试组以构建模型。 +3. **选择一种训练方法**。根据你的问题和数据的性质,你需要选择如何训练模型以最好地反映你的数据并对其进行准确预测。这是你的ML过程的一部分,需要特定的专业知识,并且通常需要大量的实验。 +4. **训练模型**。使用你的训练数据,你将使用各种算法来训练模型以识别数据中的模式。该模型可能会利用可以调整的内部权重来使数据的某些部分优于其他部分,从而构建更好的模型。 +5. **评估模型**。你使用收集到的集合中从未见过的数据(你的测试数据)来查看模型的性能。 +6. **参数调整**。根据模型的性能,你可以使用不同的参数或变量重做该过程,这些参数或变量控制用于训练模型的算法的行为。 +7. **预测**。使用新输入来测试模型的准确性。 + +## 要问什么问题 + +计算机特别擅长发现数据中的隐藏模式。此实用程序对于对给定领域有疑问的研究人员非常有帮助,这些问题无法通过创建基于条件的规则引擎来轻松回答。例如,给定一项精算任务,数据科学家可能能够围绕吸烟者与非吸烟者的死亡率构建手工规则。 + +然而,当将许多其他变量纳入等式时,ML模型可能会更有效地根据过去的健康史预测未来的死亡率。一个更令人愉快的例子可能是根据包括纬度、经度、气候变化、与海洋的接近程度、急流模式等在内的数据对给定位置的4月份进行天气预报。 + +✅ 这个关于天气模型的[幻灯片](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf)为在天气分析中使用机器学习提供了一个历史视角。 + +## 预构建任务 + +在开始构建模型之前,你需要完成多项任务。要测试你的问题并根据模型的预测形成假设,你需要识别和配置多个元素。 + +### Data + +为了能够确定地回答你的问题,你需要大量正确类型的数据。 此时你需要做两件事: + +- **收集数据**。记住之前关于数据分析公平性的课程,小心收集数据。请注意此数据的来源、它可能具有的任何固有偏见,并记录其来源。 +- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,你可能需要整理数据并对其进行标准化。你可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的那样)。你还可以根据原始数据生成新数据(正如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的那样)。你可以清理和编辑数据(就像我们在 [Web App](../3-Web-App/README.md)课程之前所做的那样)。最后,你可能还需要对其进行随机化和打乱,具体取决于你的训练技术。 + +✅ 在收集和处理你的数据后,花点时间看看它的形状是否能让你解决你的预期问题。正如我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在你的给定任务中表现不佳! + +### 选择特征变量 + +[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可衡量属性。在许多数据集中,它表示为列标题,如“日期”、“大小”或“颜色”。你的特征变量(通常在代码中表示为`y`)代表你试图对数据提出的问题的答案:在12月,哪种**颜色**的南瓜最便宜?在旧金山,哪些街区的房地产**价格**最好? + +🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?你可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) +### 可视化数据 + +数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 +### 拆分数据集 + +在训练之前,你需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 + +- **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。 +- **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。 +- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../7-TimeSeries/1-Introduction/README.md)中所述)。 + +## 建立模型 + +使用你的训练数据,你的目标是构建模型或数据的统计表示,并使用各种算法对其进行**训练**。训练模型将其暴露给数据,并允许它对其发现、验证和接受或拒绝的感知模式做出假设。 + +### 决定一种训练方法 + +根据你的问题和数据的性质,你将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 你可以探索多种训练模型的方法。 根据你的经验,你可能需要尝试多种不同的方法来构建最佳模型。你可能会经历一个过程,在该过程中,数据科学家通过提供未见过的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 + +### 训练模型 + +有了你的训练数据,你就可以“拟合”它以创建模型。你会注意到,在许多ML库中,你会找到代码'model.fit'——此时你将数据作为值数组(通常为'X')和特征变量(通常为'y')发送)。 + +### 评估模型 + +训练过程完成后(训练大型模型可能需要多次迭代或“时期”),你将能够通过使用测试数据来衡量模型的性能来评估模型的质量。此数据是模型先前未分析的原始数据的子集。 你可以打印出有关模型质量的指标表。 + +🎓 **模型拟合 ** + +在机器学习的背景下,模型拟合是指模型在尝试分析不熟悉的数据时其底层功能的准确性。 + +🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。 + +![过拟合模型 ](images/overfitting.png) +> 作者[Jen Looper](https://twitter.com/jenlooper) + +## 参数调优 + +初始训练完成后,观察模型的质量并考虑通过调整其“超参数”来改进它。[在此文档中](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa)阅读有关该过程的更多信息。 + +## 预测 + +这是你可以使用全新数据来测试模型准确性的时刻。在“应用”ML设置中,你正在构建Web资源以在生产中使用模型,此过程可能涉及收集用户输入(例如按下按钮)以设置变量并将其发送到模型进行推理,或者评估。 + +在这些课程中,你将了解如何使用这些步骤来准备、构建、测试、评估和预测—所有这些都是数据科学家的姿态,而且随着你在成为一名“全栈”ML工程师的旅程中取得进展,你将了解更多。 + +--- + +## 🚀挑战 + +画一个流程图,反映ML的步骤。在这个过程中,你认为自己现在在哪里?你预测你在哪里会遇到困难?什么对你来说很容易? ## [阅读后测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) From 96a1ea345015c47827430ba94392ce59dee7ee5e Mon Sep 17 00:00:00 2001 From: kenya-sk Date: Sat, 10 Jul 2021 01:19:27 +0900 Subject: [PATCH 32/56] translate README of 2-Regression/1-Tools --- .../1-Tools/translations/README.ja.md | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 2-Regression/1-Tools/translations/README.ja.md diff --git a/2-Regression/1-Tools/translations/README.ja.md b/2-Regression/1-Tools/translations/README.ja.md new file mode 100644 index 00000000..ce4cde15 --- /dev/null +++ b/2-Regression/1-Tools/translations/README.ja.md @@ -0,0 +1,218 @@ +# 回帰モデルについてPythonとScikit-learnから始めましょう + +![回帰の要約についてのスケッチノート](../../../sketchnotes/ml-regression.png) + +> [Tomomi Imura](https://www.twitter.com/girlie_mac) によって制作されたスケッチノート + +## [講義前クイズ](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/) + +## イントロダクション + +これらの4つのレッスンでは、回帰モデルを構築する方法について学びます。回帰モデルが何をするためのものなのかは、後ほど説明します。しかし、何かを始める前にプロセスを開始するための適切なツールが用意されていることを確認してください! + +このレッスンでは、以下のことを学びます。 + +- ローカル環境で機械学習タスクを実行するための設定 +- Jupyter Notebookの使い方 +- Scikit-learnのインストールと使い方 +- 線形回帰に関するハンズオン + +## インストールと設定 + +[![VisualStudioCodeでのPythonの使用方法](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "VisualStudioCodeでのPythonの使用方法") + +> 🎥 上の画像をクリックするとビデオが再生されます: VisualStudioCodeでのPythonの使用方法 + +1. **Pythonのインストール**: [Python](https://www.python.org/downloads/) がコンピュータにインストールされていることを確認してください。Pythonは多くのデータサイエンス、機械学習のタスクで使用します。ほとんどのコンピュータシステムにはPythonがすでにインストールされています。一部のユーザのセットアップを簡単にするために [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa) を利用することもできます。 + + しかし、Pythonを使っていると時に異なるバージョンを必要とする場合があります。そのため、[仮想環境](https://docs.python.org/3/library/venv.html) を利用すると便利です。 + + +2. **Visual Studio Codeのインストール**: Visual Studio Codeがコンピュータにインストールされていることを確認してください。[こちらの手順](https://code.visualstudio.com/) でVisual Studio Codeをインストールしてください。このコースでは、Visual Studio CodeでPythonを使用しますので [Visual Studio Codeの設定](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa) をブラッシュアップしておくといいです。 + + > この [学習モジュール](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にインストールする場合は、上記リンク先のページに特別な説明があります。 + + +4. **Jupyter Notebookのインストール**: [Jupyter package](https://pypi.org/project/jupyter/) をインストールする必要があります。 + +## MLのオーサリング環境 + +**ノートブック**を利用して、Pythonコードでの開発や機械学習モデルの作成を行います。このような種類のファイルは、データサイエンティストにとって一般的なツールであり、接尾辞または拡張子が `.ipynb` であることで識別できます。 + +ノートブックは、開発者がコードを書くと同時に、そのコードにメモを加えたり、文書を書いたりすることができるインタラクティブな環境です。そのため、実験や研究を目的としたプロジェクトに非常に役立ちます。 + +### エクササイズ - ノートブックでの作業 + +フォルダの中に _notebook.ipynb_ というファイルが入っています。 + +1. Visual Studio Codeで _notebook.ipynb_ を開いてください。 + + JupyterサーバーはPython3+が起動した状態でスタートします。ノートブックの中には、コードを「実行」できる部分があります。再生ボタンのようなアイコンを選択すると、コードブロックを実行することができます。 + + +2. `md`アイコンを選択して、**# Welcome to your notebook** というテキストの簡単なマークダウンを追加してみましょう. + + 次に、Pythonのコードを追加します。 + + +3. コードブロックで **print('hello notebook')** と入力してください。 + + +4. 矢印を選択するとコードが実行されます。 + + 以下のような結果が出力されます: + + ```output + hello notebook + ``` + +![VS Codeで開いたノートブック](../images/notebook.png) + +コードにコメントを追加することで、ノートブックをセルフドキュメント化することができます。 + +✅ ウェブ開発者とデータサイエンティストの仕事環境がどれほど違うか、ちょっと考えてみてください。 + +## Scikit-learnを使ってみましょう + +さて、ローカル環境にPythonがセットアップされ、Jupyter notebookに慣れてきたところで、Scikit-learn(「science」のように「sci」と発音してください)にも同様に慣れていきましょう。Scikit-learnは、MLタスクを実行するための [広範なAPI](https://scikit-learn.org/stable/modules/classes.html#api-ref) を提供しています。 + +同社の [Webサイト](https://scikit-learn.org/stable/getting_started.html) には次のような説明があります。"Scikit-learnは、教師あり、教師なしの学習をサポートするオープンソースの機械学習ライブラリです。また、モデルのフィッティング、データの前処理、モデルの選択と評価、その他多くのユーティリティーのための様々なツールを提供しています。" + +このコースでは、Scikit-learnやその他のツールを使って機械学習モデルを構築し、私たちが「伝統的な機械学習」と呼ぶタスクを実行します。ニューラルネットワークやディープラーニングについては、近日公開予定の「AI for Beginners」カリキュラムで詳しく解説しますので、意図的に避けています。 + +Scikit-learnは、モデルを構築し、評価を行って実際に利用するということが簡単にできます。主に数値データの使用に焦点を当てており、学習ツールとして使用するための既製のデータセットがいくつか含まれています。また、事前に構築済みのモデルもいくつか含まれています。では、Scikit-learnであらかじめ用意されているデータを使って、最初のMLモデルを構築するプロセスを体験しましょう。 + +## エクササイズ - 初めてのScikit-learnノートブック + +> このチュートリアルはScikit-learnのWebサイトに掲載されている [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) を参考にしています。 + +このレッスンに関連する _notebook.ipynb_ ファイルで、「ゴミ箱」アイコンを押して全てのセルを消去します。 + +このセクションでは、学習用にScikit-learnに組み込まれた、糖尿病に関する小さなデータセットを扱います。糖尿病患者の治療法をテストしたい場合を想像してみてください。機械学習モデルは、変数の組み合わせに基づいて、どの患者がその治療法によく反応するかを判断するのに役立つかもしれません。非常に基本的な回帰モデルであっても、視覚化することで、理論的な臨床試験を整理するのに役立つ変数に関する情報が得られるかもしれません。 + +✅ 回帰には様々な種類があり、求める答えによってどの手法を選ぶかが異なります。例えば、ある人の年齢が与えられて身長を予測したい場合には、**数値**を求めたいので線形回帰を利用します。ある種類の料理がビーガンとみなされるべきかどうかを発見することに興味がある場合は、**カテゴリーの割り当て**を求めているので、ロジスティック回帰を使用するでしょう。ロジスティック回帰については後ほど詳しく説明します。いくつかのデータについて、どのような手法がより適切であるかを少し考えてみてください。 + +では、今回のタスクに取り掛かりましょう。 + +### ライブラリのインポート + +このタスクでは、いくつかのライブラリをインポートします。 + +- **matplotlib**: 便利な [グラフ作成ツール](https://matplotlib.org/) です。今回はこれを使って折れ線グラフを作成します。 +- **numpy**: [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) はPythonで数値データを扱うための便利なライブラリです。 +- **sklearn**: Scikit-learnのライブラリです。 + +作業に役立つライブラリをいくつか紹介します。 + +1. 以下のコードを入力してインポートを追加します。 + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + 上記では、`matplottlib`と`numpy`をインポートし、`sklearn`から`datasets`、`linear_model`、`model_selection`をインポートしています。`model_selection`はデータをトレーニングセットとテストセットに分割する際に使用します。 + +### 糖尿病のデータセット + +組み込みの [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) には、糖尿病に関する442サンプルのデータが含まれており、10個の変数が含まれています。 + +age: 年齢 +bmi: ボディマス指数 +bp: 平均血圧 +s1 tc: T細胞(白血球の一種) + +✅ このデータセットには、糖尿病に関する研究に重要な変数として「性別」の概念が含まれています。多くの医療データセットには、このようなバイナリ分類が含まれています。このような分類が、人口のある部分を治療から排除する可能性があることについて、少し考えてみましょう。 + +では、Xとyのデータを読み込みます。 + +> 🎓 今回は教師あり学習なので、「y」で表されるターゲットが必要なことを覚えておいてください。 + +新しいコードセルで、`load_diabetes()` を呼び出して糖尿病データセットを読み込みます。入力の `return_X_y=True` は、`X` がデータ行列であり、`y` が回帰の対象であることを示しています。 + +1. データ行列の形とその最初の要素を表示するために、いくつかのprintコマンドを追加します。 + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + `load_diabetes()` のレスポンスとしてタプルが返ってきます。タプルの2つの値をそれぞれ `X`と` y`に割り当てます。詳しくは、 [タプルについて](https://wikipedia.org/wiki/Tuple) を確認してください。 + + このデータは、442個のアイテムで構成されており、一つのアイテムは10個の要素を持つ配列であることがわかります。 + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ データと回帰対象の関係について少し考えてみましょう。線形回帰では、特徴量Xとターゲット変数yの関係を予測します。ドキュメントで、糖尿病データセットの [ターゲット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) を見つけることができますか?そのターゲットを踏まえて、このデータセットは何を示していますか? + + +2. 次に、numpyの`newaxis`関数を使って新しい配列を作成することで、プロットするためのデータセットの一部を選択します。最終的には線形回帰を使用することで、決まったパターンに従って、このデータの値の間に線を生成します。 + + ```python + X = X[:, np.newaxis, 2] + ``` + + ✅ いつでも、データをprintして、その形を確認することができます。 + + +3. データをプロットする準備ができたので、このデータセットの数字の論理的な分割を機械が判断できるかどうかを確認してみましょう。そのためには、データ(X)とターゲット(y)の両方をトレーニングセットとテストセットに分ける必要があります。Scikit-learnには、これを行うための簡単な方法が用意されています。 + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + + +4. これで、モデルをトレーニングする準備が整いました!線形回帰モデルを読み込み、Xとyのトレーニングセットに `model.fit()` を適用して、モデルの学習を行います。 + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` は、TensorFlowなどのMLライブラリでよく見かける関数です。 + + +5. 次に、`predict()` 関数を使って、テストデータに対する予測を行います。これは、データグループ間の線を引くために使用されます。 + + ```python + y_pred = model.predict(X_test) + ``` + +6. さて、いよいよデータをプロットして表示してみましょう。Matplotlibはこの作業にとても便利なツールです。テストデータの全てのXとyに関する散布図を作成し、モデルの予測を使用することでデータグループ間の最も適切な場所に線を引きます。 + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.show() + ``` + + ![糖尿病周辺のデータポイントを示す散布図](../images/scatterplot.png) + + ✅ ここで何が起こっているのか、少し考えてみましょう。直線がたくさんの小さなデータの点を通っていますが、正確には何をしているのでしょうか?この直線を使って、見たことのない新しいデータポイントがプロットのy軸との関係でどこに当てはまるかを予測することができるはずだということがわかりますか?このモデルの実用的な使い方を言葉にしてみてください。 + +おめでとうございます!あなたは初めて線形回帰モデルを構築し、それを使って予測を行い、それをプロットで表示しました! + +--- +## 🚀チャレンジ + +このデータセットから別の変数をプロットしてください。ヒント: `X = X[:, np.newaxis, 2]` の行を編集する。今回のデータセットのターゲットである、糖尿病という病気の進行について、どのような発見があるのでしょうか? +## [講義後クイズ](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) + +## レビュー & 自主学習 + +このチュートリアルでは、単変量回帰や重回帰ではなく、単純な線形回帰を扱いました。これらの手法の違いについて少し調べてみるか、この [ビデオ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) を見てみましょう。 + +回帰の概念について詳しく調べ、この手法でどのような質問に答えられるかを考えてみましょう。この [チュートリアル](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) で理解を深めることもできます。 + +## 課題 + +[異なるデータセット](assignment.md) From eba28539614343b13be21f3eb3783f3cbcb96e46 Mon Sep 17 00:00:00 2001 From: kenya-sk Date: Sat, 10 Jul 2021 01:39:23 +0900 Subject: [PATCH 33/56] README of 2-Regression/1-Tools translated to JP --- 2-Regression/1-Tools/translations/README.ja.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/2-Regression/1-Tools/translations/README.ja.md b/2-Regression/1-Tools/translations/README.ja.md index ce4cde15..0bebf16d 100644 --- a/2-Regression/1-Tools/translations/README.ja.md +++ b/2-Regression/1-Tools/translations/README.ja.md @@ -8,7 +8,7 @@ ## イントロダクション -これらの4つのレッスンでは、回帰モデルを構築する方法について学びます。回帰モデルが何をするためのものなのかは、後ほど説明します。しかし、何かを始める前にプロセスを開始するための適切なツールが用意されていることを確認してください! +この章で用意されている4つのレッスンでは、回帰モデルを構築する方法について学びます。回帰モデルが何をするためのものなのかは、後ほど説明します。しかし、何かを始める前にプロセスを開始するための適切なツールが用意されていることを確認してください! このレッスンでは、以下のことを学びます。 @@ -73,7 +73,7 @@ コードにコメントを追加することで、ノートブックをセルフドキュメント化することができます。 -✅ ウェブ開発者とデータサイエンティストの仕事環境がどれほど違うか、ちょっと考えてみてください。 +✅ ウェブ開発者とデータサイエンティストの開発環境がどれほど違うか、ちょっと考えてみてください。 ## Scikit-learnを使ってみましょう @@ -199,17 +199,17 @@ s1 tc: T細胞(白血球の一種) ✅ ここで何が起こっているのか、少し考えてみましょう。直線がたくさんの小さなデータの点を通っていますが、正確には何をしているのでしょうか?この直線を使って、見たことのない新しいデータポイントがプロットのy軸との関係でどこに当てはまるかを予測することができるはずだということがわかりますか?このモデルの実用的な使い方を言葉にしてみてください。 -おめでとうございます!あなたは初めて線形回帰モデルを構築し、それを使って予測を行い、それをプロットで表示しました! +おめでとうございます!初めて線形回帰モデルを構築し、それを使って予測を行い、結果をプロットで表示しました! --- ## 🚀チャレンジ -このデータセットから別の変数をプロットしてください。ヒント: `X = X[:, np.newaxis, 2]` の行を編集する。今回のデータセットのターゲットである、糖尿病という病気の進行について、どのような発見があるのでしょうか? +このデータセットから別の変数を選択してプロットしてください。ヒント: `X = X[:, np.newaxis, 2]` の行を編集する。今回のデータセットのターゲットである、糖尿病という病気の進行について、どのような発見があるのでしょうか? ## [講義後クイズ](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/) ## レビュー & 自主学習 -このチュートリアルでは、単変量回帰や重回帰ではなく、単純な線形回帰を扱いました。これらの手法の違いについて少し調べてみるか、この [ビデオ](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) で理解を深めることもできます。 From 791e61d1ecda4663714dd2e346b18fa83d5cfe55 Mon Sep 17 00:00:00 2001 From: kenya-sk Date: Sat, 10 Jul 2021 01:45:16 +0900 Subject: [PATCH 34/56] remove draft --- 2-Regression/translations/README.ja.md | 32 -------------------------- 1 file changed, 32 deletions(-) delete mode 100644 2-Regression/translations/README.ja.md diff --git a/2-Regression/translations/README.ja.md b/2-Regression/translations/README.ja.md deleted file mode 100644 index dd58ff9a..00000000 --- a/2-Regression/translations/README.ja.md +++ /dev/null @@ -1,32 +0,0 @@ -# 機械学習のための回帰モデル -## トピック: 北米のカボチャ価格に関する回帰モデル 🎃 - -北米では、ハロウィンのためにカボチャはよく怖い顔に彫られています。そんな魅力的な野菜についてもっと知りましょう! - -![jack-o-lanterns](../images/jack-o-lanterns.jpg) -> Beth TeutschmannによってUnsplashに投稿された写真 - -## 今回学ぶこと -この章のレッスンでは、機械学習の文脈における回帰の種類について説明します。回帰モデルは変数間の"関係"を決定するのに役立ちます。このタイプのモデルは、長さ、温度、年齢などの値を予測し、データポイントの分析をすることで変数間の関係性を明らかにします。 - -今回のレッスンでは、線形回帰とロジスティック回帰の違いやどのように使い分けるかを説明します。 - -データサイエンティストの共通開発環境であるノートブックを管理するためのVisual Studio Codeの構成や機械学習のタスクを開始するための準備を行います。また、機械学習用のライブラリであるScikit-learnを利用し最初のモデルを構築します。この章では回帰モデルに焦点を当てます。 - -> 回帰モデルを学習するのに役立つローコードツールがあります。ぜひ[Azure ML for this task](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-15963-cxa)を使ってみてください。 - -### レッスン - -1. [商売道具](../1-Tools/README.md) -2. [データ管理](../2-Data/README.md) -3. [線形回帰と多項式回帰](../3-Linear/README.md) -4. [ロジスティック回帰](../4-Logistic/README.md) - ---- -### クレジット - -"機械学習と回帰"は、[Jen Looper](https://twitter.com/jenlooper)によって制作されました。 - -クイズの貢献者: [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan)と[Ornella Altunyan](https://twitter.com/ornelladotcom) - -pumpkin datasetは、[こちらのKaggleプロジェクト](https://www.kaggle.com/usda/a-year-of-pumpkin-prices)で提案されています。このデータは、アメリカ合衆国農務省が配布している[Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)が元になっています。私たちは、分布を正規化するために多様性を元に色についていくつか追加を行っています。このデータはパブリックドメインです。 From 5f6db59a11949f4bc568e64e838a3de09ca4c2b7 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 13:13:10 -0400 Subject: [PATCH 35/56] editing image paths --- 1-Introduction/1-intro-to-ML/translations/README.zh-cn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md index 12e5aae0..ff8d0700 100644 --- a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md +++ b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md @@ -27,7 +27,7 @@ 术语“机器学习”是当今最流行和最常用的术语之一。 如果你对科技有某种程度的熟悉,那么很可能你至少听说过这个术语一次,无论你在哪个领域工作。然而,机器学习的机制对大多数人来说是一个谜。 对于机器学习初学者来说,这个主题有时会让人感到不知所措。 因此,了解机器学习的实质是什么,并通过实例一步一步地了解机器学习是很重要的。 -![机器学习趋势曲线](images/hype.png) +![机器学习趋势曲线](../images/hype.png) > 谷歌趋势显示了“机器学习”一词最近的“趋势曲线” @@ -39,7 +39,7 @@ 尽管这些术语可能会混淆,但机器学习 (ML) 是人工智能的一个重要子集。 **机器学习关注使用专门的算法来发现有意义的信息,并从感知数据中找到隐藏的模式,以证实理性的决策过程**。 -![人工智能、机器学习、深度学习、数据科学](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) From 1ca33b8b1b519e4b05c06dcc90b00547128eed4f Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 13:15:25 -0400 Subject: [PATCH 36/56] updating image paths --- .../2-history-of-ML/translations/README.zh-cn.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md index c8f74e69..51e66ecd 100644 --- a/1-Introduction/2-history-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/2-history-of-ML/translations/README.zh-cn.md @@ -1,6 +1,6 @@ # 机器学习的历史 -![机器学习历史概述](../../sketchnotes/ml-history.png) +![机器学习历史概述](../../../sketchnotes/ml-history.png) > 作者[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [课前测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/) @@ -44,12 +44,12 @@ Alan Turing,一个真正杰出的人,[在2019年被公众投票选出](https * [机器人Shakey](https://wikipedia.org/wiki/Shakey_the_robot),他们可以“聪明地”操纵和决定如何执行任务。 - ![Shakey, 智能机器人](images/shakey.jpg) + ![Shakey, 智能机器人](../images/shakey.jpg) > 1972 年的Shakey * Eliza,一个早期的“聊天机器人”,可以与人交谈并充当原始的“治疗师”。 你将在NLP课程中了解有关Eliza的更多信息。 - ![Eliza, 机器人](images/eliza.png) + ![Eliza, 机器人](../images/eliza.png) > Eliza的一个版本,一个聊天机器人 * “积木世界”是一个微观世界的例子,在那里积木可以堆叠和分类,并且可以测试教机器做出决策的实验。 使用[SHRDLU](https://wikipedia.org/wiki/SHRDLU)等库构建的高级功能有助于推动语言处理向前发展。 @@ -113,4 +113,4 @@ Alan Turing,一个真正杰出的人,[在2019年被公众投票选出](https ## 任务 -[创建时间线](assignment.md) +[创建时间线](../assignment.md) From 67ebfed74fa4a090b98b0c8b2ad3a2d17129323d Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 13:16:25 -0400 Subject: [PATCH 37/56] updating image paths --- 1-Introduction/3-fairness/translations/README.zh-cn.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-Introduction/3-fairness/translations/README.zh-cn.md b/1-Introduction/3-fairness/translations/README.zh-cn.md index 55f0d21a..02f41777 100644 --- a/1-Introduction/3-fairness/translations/README.zh-cn.md +++ b/1-Introduction/3-fairness/translations/README.zh-cn.md @@ -1,6 +1,6 @@ # 机器学习中的公平性 -![机器学习中的公平性概述](../../sketchnotes/ml-fairness.png) +![机器学习中的公平性概述](../../../sketchnotes/ml-fairness.png) > 作者[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [课前测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/) @@ -67,9 +67,9 @@ 机器翻译中存在着刻板的性别观。在将“他是护士,她是医生”翻译成土耳其语时,遇到了一些问题。土耳其语是一种无性别的语言,它有一个代词“o”来表示单数第三人称,但把这个句子从土耳其语翻译成英语,会产生“她是护士,他是医生”这样的刻板印象和错误。 -![翻译成土耳其语](images/gender-bias-translate-en-tr.png) +![翻译成土耳其语](../images/gender-bias-translate-en-tr.png) -![翻译成英语](images/gender-bias-translate-tr-en.png) +![翻译成英语](../images/gender-bias-translate-tr-en.png) ### 诋毁 @@ -82,7 +82,7 @@ 有倾向性的图像搜索结果就是一个很好的例子。在搜索男性比例等于或高于女性的职业的图片时,比如工程或首席执行官,要注意那些更倾向于特定性别的结果。 -![必应CEO搜索](images/ceos.png) +![必应CEO搜索](../images/ceos.png) > 在Bing上搜索“CEO”会得到非常全面的结果 这五种主要类型的危害不是相互排斥的,一个单一的系统可以表现出一种以上的危害。此外,每个案例的严重程度各不相同。例如,不公平地给某人贴上罪犯的标签比给形象贴上错误的标签要严重得多。然而,重要的是要记住,即使是相对不严重的伤害也会让人感到疏远或被孤立,累积的影响可能会非常压抑。 @@ -211,4 +211,4 @@ ## 任务 -[探索Fairlearn](assignment.md) +[探索Fairlearn](../assignment.md) From db3cf5c3a688d1e73d0c879eb006deddb54d974b Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 9 Jul 2021 13:18:05 -0400 Subject: [PATCH 38/56] fixing path issues --- .../translations/README.zh-cn.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md index 519ab683..d54494ef 100644 --- a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md @@ -46,14 +46,14 @@ 🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?你可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) ### 可视化数据 -数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 +数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 ### 拆分数据集 在训练之前,你需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 - **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。 - **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。 -- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../7-TimeSeries/1-Introduction/README.md)中所述)。 +- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中所述)。 ## 建立模型 @@ -77,7 +77,7 @@ 🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。 -![过拟合模型 ](images/overfitting.png) +![过拟合模型 ](../images/overfitting.png) > 作者[Jen Looper](https://twitter.com/jenlooper) ## 参数调优 @@ -104,7 +104,7 @@ ## 任务 -[采访一名数据科学家](assignment.md) +[采访一名数据科学家](../assignment.md) # 机器学习技术 构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述你需要了解的主要技术。 你会: @@ -142,9 +142,9 @@ 为了能够确定地回答你的问题,你需要大量正确类型的数据。 此时你需要做两件事: - **收集数据**。记住之前关于数据分析公平性的课程,小心收集数据。请注意此数据的来源、它可能具有的任何固有偏见,并记录其来源。 -- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,你可能需要整理数据并对其进行标准化。你可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的那样)。你还可以根据原始数据生成新数据(正如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的那样)。你可以清理和编辑数据(就像我们在 [Web App](../3-Web-App/README.md)课程之前所做的那样)。最后,你可能还需要对其进行随机化和打乱,具体取决于你的训练技术。 +- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,你可能需要整理数据并对其进行标准化。你可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../../5-Clustering/1-Visualize/README.md)中所做的那样)。你还可以根据原始数据生成新数据(正如我们在[分类](../../../4-Classification/1-Introduction/README.md)中所做的那样)。你可以清理和编辑数据(就像我们在 [Web App](../../3-Web-App/README.md)课程之前所做的那样)。最后,你可能还需要对其进行随机化和打乱,具体取决于你的训练技术。 -✅ 在收集和处理你的数据后,花点时间看看它的形状是否能让你解决你的预期问题。正如我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在你的给定任务中表现不佳! +✅ 在收集和处理你的数据后,花点时间看看它的形状是否能让你解决你的预期问题。正如我们在[聚类](../../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在你的给定任务中表现不佳! ### 选择特征变量 @@ -153,14 +153,14 @@ 🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?你可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) ### 可视化数据 -数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 +数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 ### 拆分数据集 在训练之前,你需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 - **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。 - **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。 -- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../7-TimeSeries/1-Introduction/README.md)中所述)。 +- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中所述)。 ## 建立模型 @@ -184,7 +184,7 @@ 🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。 -![过拟合模型 ](images/overfitting.png) +![过拟合模型 ](../images/overfitting.png) > 作者[Jen Looper](https://twitter.com/jenlooper) ## 参数调优 @@ -211,4 +211,4 @@ ## 任务 -[采访一名数据科学家](assignment.md) +[采访一名数据科学家](../assignment.md) From 83a83b54f0e78555b38d57a2b1dcb63299cad278 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 11:22:32 +0800 Subject: [PATCH 39/56] Update README.zh-cn.md --- .../4-Logistic/translations/README.zh-cn.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md index 1b1e8524..6a421ca1 100644 --- a/2-Regression/4-Logistic/translations/README.zh-cn.md +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -1,6 +1,6 @@ # 逻辑回归预测分类 -![逻辑与线性回归信息图](./images/logistic-linear.png) +![逻辑与线性回归信息图](../images/logistic-linear.png) > 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) ## [课前测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/15/) @@ -37,7 +37,7 @@ 逻辑回归不提供与线性回归相同的功能。前者提供关于二元类别(“橙色或非橙色”)的预测,而后者能够预测连续值,例如,给定南瓜的起源和收获时间,_其价格将上涨多少_。 -![南瓜分类模型](./images/pumpkin-classifier.png) +![南瓜分类模型](../images/pumpkin-classifier.png) > 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) ### 其他分类 @@ -46,7 +46,7 @@ - **多项**,涉及多个类别 - “橙色、白色和条纹”。 - **有序**,涉及有序类别,如果我们想对我们的结果进行逻辑排序非常有用,例如我们的南瓜按有限数量的大小(mini、sm、med、lg、xl、xxl)排序。 -![多项式与有序回归](./images/multinomial-ordinal.png) +![多项式与有序回归](../images/multinomial-ordinal.png) > 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) ### 仍然是线性的 @@ -102,7 +102,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如,你可 g.map(sns.scatterplot) ``` - ![可视化数据网格](images/grid.png) + ![可视化数据网格](../images/grid.png) 通过并列观察数据,你可以看到颜色数据与其他列的关系。 @@ -143,7 +143,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如,你可 > > 还记得线性回归如何经常使用普通最小二乘法来得出一个值吗?逻辑回归依赖于使用[sigmoid 函数](https://wikipedia.org/wiki/Sigmoid_function) 的“最大似然”概念。绘图上的“Sigmoid 函数”看起来像“S”形。它接受一个值并将其映射到0和1之间的某个位置。它的曲线也称为“逻辑曲线”。它的公式如下所示: > -> ![逻辑函数](images/sigmoid.png) +> ![逻辑函数](../images/sigmoid.png) > > 其中sigmoid的中点位于x的0点,L是曲线的最大值,k是曲线的陡度。如果函数的结果大于0.5,则所讨论的标签将被赋予二进制选择的类“1”。否则,它将被分类为“0”。 @@ -228,7 +228,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如,你可 - 如果你的模型将某物预测为南瓜并且它实际上属于“非南瓜”类别,我们将其称为假阴性,由左下角的数字显示。 - 如果你的模型预测某物不是南瓜,并且它实际上属于“非南瓜”类别,我们将其称为真阴性,如右下角的数字所示。 -![混淆矩阵](images/confusion-matrix.png) +![混淆矩阵](../images/confusion-matrix.png) > 作者[Jen Looper](https://twitter.com/jenlooper) @@ -294,4 +294,4 @@ print(auc) ## 任务 -[重试此回归](assignment.md) +[重试此回归](../assignment.md) From c1e9bd3aa93813a4b600456b7051daf8d08032a7 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 11:25:50 +0800 Subject: [PATCH 40/56] Update README.zh-cn.md --- 1-Introduction/1-intro-to-ML/translations/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md index ff8d0700..8693ff20 100644 --- a/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md +++ b/1-Introduction/1-intro-to-ML/translations/README.zh-cn.md @@ -104,4 +104,4 @@ ## 任务 -[启动并运行](assignment.md) +[启动并运行](../assignment.md) From 0b0857076165a7bd3c9f1241d8a7bf6a6eaef5b0 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 11:28:14 +0800 Subject: [PATCH 41/56] Update README.zh-cn.md --- .../translations/README.zh-cn.md | 106 ------------------ 1 file changed, 106 deletions(-) diff --git a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md index d54494ef..d01d5bbf 100644 --- a/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md +++ b/1-Introduction/4-techniques-of-ML/translations/README.zh-cn.md @@ -1,110 +1,4 @@ -# 机器学习技术 - -构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述你需要了解的主要技术。 你会: - -- 在高层次上理解支持机器学习的过程。 -- 探索基本概念,例如“模型”、“预测”和“训练数据”。 - -## [课前测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/) -## 介绍 - -在较高的层次上,创建机器学习(ML)过程的工艺包括许多步骤: - -1. **决定问题**。 大多数机器学习过程都是从提出一个简单的条件程序或基于规则的引擎无法回答的问题开始的。 这些问题通常围绕基于数据集合的预测展开。 -2. **收集和准备数据**。为了能够回答你的问题,你需要数据。数据的质量(有时是数量)将决定你回答最初问题的能力。可视化数据是这个阶段的一个重要方面。此阶段还包括将数据拆分为训练和测试组以构建模型。 -3. **选择一种训练方法**。根据你的问题和数据的性质,你需要选择如何训练模型以最好地反映你的数据并对其进行准确预测。这是你的ML过程的一部分,需要特定的专业知识,并且通常需要大量的实验。 -4. **训练模型**。使用你的训练数据,你将使用各种算法来训练模型以识别数据中的模式。该模型可能会利用可以调整的内部权重来使数据的某些部分优于其他部分,从而构建更好的模型。 -5. **评估模型**。你使用收集到的集合中从未见过的数据(你的测试数据)来查看模型的性能。 -6. **参数调整**。根据模型的性能,你可以使用不同的参数或变量重做该过程,这些参数或变量控制用于训练模型的算法的行为。 -7. **预测**。使用新输入来测试模型的准确性。 - -## 要问什么问题 - -计算机特别擅长发现数据中的隐藏模式。此实用程序对于对给定领域有疑问的研究人员非常有帮助,这些问题无法通过创建基于条件的规则引擎来轻松回答。例如,给定一项精算任务,数据科学家可能能够围绕吸烟者与非吸烟者的死亡率构建手工规则。 - -然而,当将许多其他变量纳入等式时,ML模型可能会更有效地根据过去的健康史预测未来的死亡率。一个更令人愉快的例子可能是根据包括纬度、经度、气候变化、与海洋的接近程度、急流模式等在内的数据对给定位置的4月份进行天气预报。 - -✅ 这个关于天气模型的[幻灯片](https://www2.cisl.ucar.edu/sites/default/files/0900%20June%2024%20Haupt_0.pdf)为在天气分析中使用机器学习提供了一个历史视角。 - -## 预构建任务 - -在开始构建模型之前,你需要完成多项任务。要测试你的问题并根据模型的预测形成假设,你需要识别和配置多个元素。 - -### Data - -为了能够确定地回答你的问题,你需要大量正确类型的数据。 此时你需要做两件事: - -- **收集数据**。记住之前关于数据分析公平性的课程,小心收集数据。请注意此数据的来源、它可能具有的任何固有偏见,并记录其来源。 -- **准备数据**。数据准备过程有几个步骤。如果数据来自不同的来源,你可能需要整理数据并对其进行标准化。你可以通过各种方法提高数据的质量和数量,例如将字符串转换为数字(就像我们在[聚类](../../5-Clustering/1-Visualize/README.md)中所做的那样)。你还可以根据原始数据生成新数据(正如我们在[分类](../../4-Classification/1-Introduction/README.md)中所做的那样)。你可以清理和编辑数据(就像我们在 [Web App](../3-Web-App/README.md)课程之前所做的那样)。最后,你可能还需要对其进行随机化和打乱,具体取决于你的训练技术。 - -✅ 在收集和处理你的数据后,花点时间看看它的形状是否能让你解决你的预期问题。正如我们在[聚类](../../5-Clustering/1-Visualize/README.md)课程中发现的那样,数据可能在你的给定任务中表现不佳! - -### 选择特征变量 - -[特征](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)是数据的可衡量属性。在许多数据集中,它表示为列标题,如“日期”、“大小”或“颜色”。你的特征变量(通常在代码中表示为`y`)代表你试图对数据提出的问题的答案:在12月,哪种**颜色**的南瓜最便宜?在旧金山,哪些街区的房地产**价格**最好? - -🎓 **特征选择和特征提取** 构建模型时如何知道选择哪个变量?你可能会经历一个特征选择或特征提取的过程,以便为性能最好的模型选择正确的变量。然而,它们不是一回事:“特征提取是从基于原始特征的函数中创建新特征,而特征选择返回特征的一个子集。”([来源](https://wikipedia.org/wiki/Feature_selection)) -### 可视化数据 - -数据科学家工具包的一个重要方面是能够使用多个优秀的库(例如 Seaborn 或 MatPlotLib)将数据可视化。直观地表示你的数据可能会让你发现可以利用的隐藏关联。 你的可视化还可以帮助你发现偏见或不平衡的数据(正如我们在 [分类](../../../4-Classification/2-Classifiers-1/README.md)中发现的那样)。 -### 拆分数据集 - -在训练之前,你需要将数据集拆分为两个或多个大小不等但仍能很好地代表数据的部分。 - -- **训练**。这部分数据集适合你的模型进行训练。这个集合构成了原始数据集的大部分。 -- **测试**。测试数据集是一组独立的数据,通常从原始数据中收集,用于确认构建模型的性能。 -- **验证**。验证集是一个较小的独立示例组,用于调整模型的超参数或架构,以改进模型。根据你的数据大小和你提出的问题,你可能不需要构建第三组(正如我们在[时间序列预测](../../7-TimeSeries/1-Introduction/README.md)中所述)。 - -## 建立模型 - -使用你的训练数据,你的目标是构建模型或数据的统计表示,并使用各种算法对其进行**训练**。训练模型将其暴露给数据,并允许它对其发现、验证和接受或拒绝的感知模式做出假设。 - -### 决定一种训练方法 - -根据你的问题和数据的性质,你将选择一种方法来训练它。逐步完成 [Scikit-learn的文档](https://scikit-learn.org/stable/user_guide.html) - 我们在本课程中使用 - 你可以探索多种训练模型的方法。 根据你的经验,你可能需要尝试多种不同的方法来构建最佳模型。你可能会经历一个过程,在该过程中,数据科学家通过提供未见过的数据来评估模型的性能,检查准确性、偏差和其他降低质量的问题,并为手头的任务选择最合适的训练方法。 - -### 训练模型 - -有了你的训练数据,你就可以“拟合”它以创建模型。你会注意到,在许多ML库中,你会找到代码'model.fit'——此时你将数据作为值数组(通常为'X')和特征变量(通常为'y')发送)。 - -### 评估模型 - -训练过程完成后(训练大型模型可能需要多次迭代或“时期”),你将能够通过使用测试数据来衡量模型的性能来评估模型的质量。此数据是模型先前未分析的原始数据的子集。 你可以打印出有关模型质量的指标表。 - -🎓 **模型拟合 ** - -在机器学习的背景下,模型拟合是指模型在尝试分析不熟悉的数据时其底层功能的准确性。 - -🎓 **欠拟合**和**过拟合**是降低模型质量的常见问题,因为模型拟合得不够好或太好。这会导致模型做出与其训练数据过于紧密对齐或过于松散对齐的预测。 过拟合模型对训练数据的预测太好,因为它已经很好地了解了数据的细节和噪声。欠拟合模型并不准确,因为它既不能准确分析其训练数据,也不能准确分析尚未“看到”的数据。 - -![过拟合模型 ](../images/overfitting.png) -> 作者[Jen Looper](https://twitter.com/jenlooper) - -## 参数调优 - -初始训练完成后,观察模型的质量并考虑通过调整其“超参数”来改进它。[在此文档中](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-15963-cxa)阅读有关该过程的更多信息。 - -## 预测 - -这是你可以使用全新数据来测试模型准确性的时刻。在“应用”ML设置中,你正在构建Web资源以在生产中使用模型,此过程可能涉及收集用户输入(例如按下按钮)以设置变量并将其发送到模型进行推理,或者评估。 - -在这些课程中,你将了解如何使用这些步骤来准备、构建、测试、评估和预测—所有这些都是数据科学家的姿态,而且随着你在成为一名“全栈”ML工程师的旅程中取得进展,你将了解更多。 - ---- -## 🚀挑战 - -画一个流程图,反映ML的步骤。在这个过程中,你认为自己现在在哪里?你预测你在哪里会遇到困难?什么对你来说很容易? - -## [阅读后测验](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/) - -## 复习与自学 - -在线搜索对讨论日常工作的数据科学家的采访。 这是[其中之一](https://www.youtube.com/watch?v=Z3IjgbbCEfs)。 - -## 任务 - -[采访一名数据科学家](../assignment.md) # 机器学习技术 构建、使用和维护机器学习模型及其使用的数据的过程与许多其他开发工作流程截然不同。 在本课中,我们将揭开该过程的神秘面纱,并概述你需要了解的主要技术。 你会: From e0cc55e0cdfd48ce79e88fac5a6a7957d5e4d7a9 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 16:13:09 +0800 Subject: [PATCH 42/56] Update README.zh-cn.md --- 2-Regression/4-Logistic/translations/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md index 6a421ca1..2bd4d4cb 100644 --- a/2-Regression/4-Logistic/translations/README.zh-cn.md +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -139,7 +139,7 @@ Seaborn提供了一些巧妙的方法来可视化你的数据。例如,你可 现在我们已经了解了颜色的二元类别与更大的尺寸组之间的关系,让我们探索逻辑回归来确定给定南瓜的可能颜色。 -> **🧮 给我看看数学** +> **🧮 数学知识** > > 还记得线性回归如何经常使用普通最小二乘法来得出一个值吗?逻辑回归依赖于使用[sigmoid 函数](https://wikipedia.org/wiki/Sigmoid_function) 的“最大似然”概念。绘图上的“Sigmoid 函数”看起来像“S”形。它接受一个值并将其映射到0和1之间的某个位置。它的曲线也称为“逻辑曲线”。它的公式如下所示: > From d690b9e65d7c1f48c1761d5284e833d510903e76 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 18:16:07 +0800 Subject: [PATCH 43/56] Update README.zh-cn.md --- 2-Regression/4-Logistic/translations/README.zh-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-Regression/4-Logistic/translations/README.zh-cn.md b/2-Regression/4-Logistic/translations/README.zh-cn.md index 2bd4d4cb..52453de5 100644 --- a/2-Regression/4-Logistic/translations/README.zh-cn.md +++ b/2-Regression/4-Logistic/translations/README.zh-cn.md @@ -270,7 +270,7 @@ sns.lineplot(fpr, tpr) ``` 再次使用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): From 01c8a7cc94efb7b3908609b22fd46ea577843ad2 Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 18:17:05 +0800 Subject: [PATCH 44/56] done --- .../3-Linear/translations/README.zh-cn.md | 199 +++++++++--------- 1 file changed, 100 insertions(+), 99 deletions(-) diff --git a/2-Regression/3-Linear/translations/README.zh-cn.md b/2-Regression/3-Linear/translations/README.zh-cn.md index 2a60658b..7bb46c45 100644 --- a/2-Regression/3-Linear/translations/README.zh-cn.md +++ b/2-Regression/3-Linear/translations/README.zh-cn.md @@ -1,82 +1,81 @@ -# Build a regression model using Scikit-learn: regression two ways +# 使用Scikit-learn构建回归模型:两种方式的回归 -![Linear vs polynomial regression infographic](./images/linear-polynomial.png) -> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) -### Introduction +![线性与多项式回归信息图](../images/linear-polynomial.png) +> 作者[Dasani Madipalli](https://twitter.com/dasani_decoded) +## [课前测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) +### 介绍 -So far you have explored what regression is with sample data gathered from the pumpkin pricing dataset that we will use throughout this lesson. You have also visualized it using Matplotlib. +到目前为止,您已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。您还使用Matplotlib对其进行了可视化。 -Now you are ready to dive deeper into regression for ML. In this lesson, you will learn more about two types of regression: _basic linear regression_ and _polynomial regression_, along with some of the math underlying these techniques. +现在您已准备好深入研究ML的回归。 在本课中,您将详细了解两种类型的回归:_基本线性回归_和_多项式回归_,以及这些技术背后的一些数学知识。 -> Throughout this curriculum, we assume minimal knowledge of math, and seek to make it accessible for students coming from other fields, so watch for notes, 🧮 callouts, diagrams, and other learning tools to aid in comprehension. +> 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。 -### Prerequisite +### 前提 -You should be familiar by now with the structure of the pumpkin data that we are examining. You can find it preloaded and pre-cleaned in this lesson's _notebook.ipynb_ file. In the file, the pumpkin price is displayed per bushel in a new dataframe. Make sure you can run these notebooks in kernels in Visual Studio Code. +您现在应该熟悉我们正在检查的南瓜数据的结构。您可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中,南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。 -### Preparation +### 准备 -As a reminder, you are loading this data so as to ask questions of it. +提醒一下,您正在加载此数据以提出问题。 -- When is the best time to buy pumpkins? -- What price can I expect of a case of miniature pumpkins? -- Should I buy them in half-bushel baskets or by the 1 1/9 bushel box? -Let's keep digging into this data. +- 什么时候买南瓜最好? +- 一箱微型南瓜的价格是多少? +- 我应该买半蒲式耳还是1 1/9蒲式耳? +让我们继续深入研究这些数据。 -In the previous lesson, you created a Pandas dataframe and populated it with part of the original dataset, standardizing the pricing by the bushel. By doing that, however, you were only able to gather about 400 datapoints and only for the fall months. +在上一课中,您创建了一个Pandas dataframe并用原始数据集的一部分填充它,按蒲式耳标准化定价。但是,通过这样做,您只能收集大约400个数据点,而且只能收集秋季月份的数据。 -Take a look at the data that we preloaded in this lesson's accompanying notebook. The data is preloaded and an initial scatterplot is charted to show month data. Maybe we can get a little more detail about the nature of the data by cleaning it more. +看看我们在本课随附的notebook中预加载的数据。数据已预加载,并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。 -## A linear regression line +## 线性回归线 -As you learned in Lesson 1, the goal of a linear regression exercise is to be able to plot a line to: +正如您在第1课中学到的,线性回归练习的目标是能够绘制一条线以便: -- **Show variable relationships**. Show the relationship between variables -- **Make predictions**. Make accurate predictions on where a new datapoint would fall in relationship to that line. +- **显示变量关系**。 显示变量之间的关系 +- **作出预测**。 准确预测新数据点与该线的关系。 -It is typical of **Least-Squares Regression** to draw this type of line. The term 'least-squares' means that all the datapoints surrounding the regression line are squared and then added up. Ideally, that final sum is as small as possible, because we want a low number of errors, or `least-squares`. +绘制这种类型的线是**最小二乘回归**的典型做法。术语“最小二乘法”意味着将回归线周围的所有数据点平方,然后相加。理想情况下,最终和尽可能小,因为我们希望错误数量较少,或“最小二乘法”。 -We do so since we want to model a line that has the least cumulative distance from all of our data points. We also square the terms before adding them since we are concerned with its magnitude rather than its direction. +我们这样做是因为我们想要对一条与所有数据点的累积距离最小的线进行建模。我们还在添加它们之前对这些项进行平方,因为我们关心的是它的大小而不是它的方向。 -> **🧮 Show me the math** +> **🧮 数学知识** > -> This line, called the _line of best fit_ can be expressed by [an equation](https://en.wikipedia.org/wiki/Simple_linear_regression): +> 这条线称为_最佳拟合线_,可以用[一个等式](https://en.wikipedia.org/wiki/Simple_linear_regression)表示: > > ``` > Y = a + bX > ``` > -> `X` is the 'explanatory variable'. `Y` is the 'dependent variable'. The slope of the line is `b` and `a` is the y-intercept, which refers to the value of `Y` when `X = 0`. +> `X`是“解释变量”。`Y`是“因变量”。直线的斜率是`b`,`a`是y轴截距,指的是`X = 0`时`Y`的值。 > ->![calculate the slope](images/slope.png) +>![计算斜率](../images/slope.png) > -> First, calculate the slope `b`. Infographic by [Jen Looper](https://twitter.com/jenlooper) +> 首先,计算斜率`b`。作者[Jen Looper](https://twitter.com/jenlooper) > -> In other words, and referring to our pumpkin data's original question: "predict the price of a pumpkin per bushel by month", `X` would refer to the price and `Y` would refer to the month of sale. +> 换句话说,参考我们的南瓜数据的原始问题:“按月预测每蒲式耳南瓜的价格”,`X`指的是价格,`Y`指的是销售月份。 > ->![complete the equation](images/calculation.png) +>![完成等式](../images/calculation.png) > -> Calculate the value of Y. If you're paying around $4, it must be April! Infographic by [Jen Looper](https://twitter.com/jenlooper) +> 计算Y的值。如果你支付大约4美元,那一定是四月!作者[Jen Looper](https://twitter.com/jenlooper) > -> The math that calculates the line must demonstrate the slope of the line, which is also dependent on the intercept, or where `Y` is situated when `X = 0`. +> 计算直线的数学必须证明直线的斜率,这也取决于截距,或者当`X = 0`时`Y`所在的位置。 > -> You can observe the method of calculation for these values on the [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) web site. Also visit [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) to watch how the numbers' values impact the line. +> 您可以在[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。 -## Correlation +## 相关性 -One more term to understand is the **Correlation Coefficient** between given X and Y variables. Using a scatterplot, you can quickly visualize this coefficient. A plot with datapoints scattered in a neat line have high correlation, but a plot with datapoints scattered everywhere between X and Y have a low correlation. +另一个需要理解的术语是给定X和Y变量之间的**相关系数**。使用散点图,您可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性,但数据点散布在X和Y之间的图具有低相关性。 -A good linear regression model will be one that has a high (nearer to 1 than 0) Correlation Coefficient using the Least-Squares Regression method with a line of regression. +一个好的线性回归模型将是一个用最小二乘回归法与直线回归得到的高(更接近于1)相关系数的模型。 -✅ Run the notebook accompanying this lesson and look at the City to Price scatterplot. Does the data associating City to Price for pumpkin sales seem to have high or low correlation, according to your visual interpretation of the scatterplot? +✅ 运行本课随附的notebook并查看City to Price散点图。根据您对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性? +## 为回归准备数据 -## Prepare your data for regression +现在您已经了解了本练习背后的数学原理,可以创建一个回归模型,看看您是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。 -Now that you have an understanding of the math behind this exercise, create a Regression model to see if you can predict which package of pumpkins will have the best pumpkin prices. Someone buying pumpkins for a holiday pumpkin patch might want this information to be able to optimize their purchases of pumpkin packages for the patch. - -Since you'll use Scikit-learn, there's no reason to do this by hand (although you could!). In the main data-processing block of your lesson notebook, add a library from Scikit-learn to automatically convert all string data to numbers: +由于您将使用Scikit-learn,因此没有理由手动执行此操作(尽管您可以!)。在课程notebook的主要数据处理块中,从Scikit-learn添加一个库以自动将所有字符串数据转换为数字: ```python from sklearn.preprocessing import LabelEncoder @@ -84,37 +83,38 @@ from sklearn.preprocessing import LabelEncoder new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) ``` -If you look at the new_pumpkins dataframe now, you see that all the strings are now numeric. This makes it harder for you to read but much more intelligible for Scikit-learn! -Now you can make more educated decisions (not just based on eyeballing a scatterplot) about the data that is best suited to regression. +如果您现在查看new_pumpkins dataframe,您会看到所有字符串现在都是数字。这让你更难阅读,但对Scikit-learn来说更容易理解! + +现在,您可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。 -Try to find a good correlation between two points of your data to potentially build a good predictive model. As it turns out, there's only weak correlation between the City and Price: +尝试在数据的两点之间找到良好的相关性,以构建良好的预测模型。事实证明,城市和价格之间只有微弱的相关性: ```python print(new_pumpkins['City'].corr(new_pumpkins['Price'])) 0.32363971816089226 ``` -However there's a bit better correlation between the Package and its Price. That makes sense, right? Normally, the bigger the produce box, the higher the price. +然而,包装和它的价格之间有更好的相关性。这是有道理的,对吧?通常,农产品箱越大,价格越高。 ```python print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) 0.6061712937226021 ``` -A good question to ask of this data will be: 'What price can I expect of a given pumpkin package?' +对这些数据提出的一个很好的问题是:“我可以期望给定的南瓜包装的价格是多少?” -Let's build this regression model +让我们建立这个回归模型 -## Building a linear model +## 建立线性模型 -Before building your model, do one more tidy-up of your data. Drop any null data and check once more what the data looks like. +在构建模型之前,再对数据进行一次整理。删除任何空数据并再次检查数据的样子。 ```python new_pumpkins.dropna(inplace=True) new_pumpkins.info() ``` -Then, create a new dataframe from this minimal set and print it out: +然后,从这个最小集合创建一个新的dataframe并将其打印出来: ```python new_columns = ['Package', 'Price'] @@ -139,15 +139,15 @@ lin_pumpkins 415 rows × 2 columns ``` -1. Now you can assign your X and y coordinate data: +1. 现在您可以分配X和y坐标数据: ```python X = lin_pumpkins.values[:, :1] y = lin_pumpkins.values[:, 1:2] ``` -✅ What's going on here? You're using [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) to create arrays to populate `X` and `y`. +✅ 这里发生了什么?您正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。 -2. Next, start the regression model-building routines: +2. 接下来,开始回归模型构建例程: ```python from sklearn.linear_model import LinearRegression @@ -164,13 +164,13 @@ lin_pumpkins print('Model Accuracy: ', accuracy_score) ``` - Because the correlation isn't particularly good, the model produced isn't terribly accurate. + 因为相关性不是特别好,所以生成的模型不是非常准确。 ```output Model Accuracy: 0.3315342327998987 ``` -3. You can visualize the line that's drawn in the process: +3. 您可以将过程中绘制的线条可视化: ```python plt.scatter(X_test, y_test, color='black') @@ -181,37 +181,37 @@ lin_pumpkins plt.show() ``` - ![A scatterplot showing package to price relationship](./images/linear.png) + ![散点图显示包装与价格的关系](../images/linear.png) -4. Test the model against a hypothetical variety: +4. 针对假设的品种测试模型: ```python lin_reg.predict( np.array([ [2.75] ]) ) ``` - The returned price for this mythological Variety is: + 这个神话般的品种的价格是: ```output array([[33.15655975]]) ``` -That number makes sense, if the logic of the regression line holds true. +如果回归线的逻辑成立,这个数字是有意义的。 -🎃 Congratulations, you just created a model that can help predict the price of a few varieties of pumpkins. Your holiday pumpkin patch will be beautiful. But you can probably create a better model! -## Polynomial regression +🎃 恭喜你,你刚刚创建了一个模型,可以帮助预测几个南瓜品种的价格。你的节日南瓜地会很漂亮的。但是你可以创造一个更好的模型! -Another type of linear regression is polynomial regression. While sometimes there's a linear relationship between variables - the bigger the pumpkin in volume, the higher the price - sometimes these relationships can't be plotted as a plane or straight line. +## 多项式回归 -✅ Here are [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data that could use polynomial regression +另一种线性回归是多项式回归。虽然有时变量之间存在线性关系——南瓜的体积越大,价格就越高——但有时这些关系不能绘制成平面或直线。 -Take another look at the relationship between Variety to Price in the previous plot. Does this scatterplot seem like it should necessarily be analyzed by a straight line? Perhaps not. In this case, you can try polynomial regression. +✅ 这里有可以使用多项式回归数据的[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8) -✅ Polynomials are mathematical expressions that might consist of one or more variables and coefficients +再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,您可以尝试多项式回归。 -Polynomial regression creates a curved line to better fit nonlinear data. +✅ 多项式是可能由一个或多个变量和系数组成的数学表达式 -1. Let's recreate a dataframe populated with a segment of the original pumpkin data: +多项式回归创建一条曲线以更好地拟合非线性数据。 +1. 让我们重新创建一个填充了原始南瓜数据片段的dataframe: ```python new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') @@ -219,30 +219,31 @@ Polynomial regression creates a curved line to better fit nonlinear data. poly_pumpkins ``` -A good way to visualize the correlations between data in dataframes is to display it in a 'coolwarm' chart: +可视化dataframe中数据之间相关性的一种好方法是将其显示在“coolwarm”图表中: -2. Use the `Background_gradient()` method with `coolwarm` as its argument value: +2. 使用`Background_gradient()`方法和`coolwarm`作为其参数值: ```python corr = poly_pumpkins.corr() corr.style.background_gradient(cmap='coolwarm') ``` - This code creates a heatmap: - ![A heatmap showing data correlation](./images/heatmap.png) + 这段代码创建了一个热图: + ![显示数据相关性的热图](../images/heatmap.png) + +查看此图表,您可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。 -Looking at this chart, you can visualize the good correlation between Package and Price. So you should be able to create a somewhat better model than the last one. -### Create a pipeline +### 创建管道 -Scikit-learn includes a helpful API for building polynomial regression models - the `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). A 'pipeline' is created which is a chain of estimators. In this case, the pipeline includes polynomial features, or predictions that form a nonlinear path. +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. Build out the X and y columns: +1. 构建X和y列: ```python X=poly_pumpkins.iloc[:,3:4].values y=poly_pumpkins.iloc[:,4:5].values ``` -2. Create the pipeline by calling the `make_pipeline()` method: +2. 通过调用`make_pipeline()`方法创建管道: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,11 +258,11 @@ Scikit-learn includes a helpful API for building polynomial regression models - y_pred=pipeline.predict(X_test) ``` -### Create a sequence +### 创建序列 -At this point, you need to create a new dataframe with _sorted_ data so that the pipeline can create a sequence. +此时,您需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。 -Add the following code: +添加以下代码: ```python df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) @@ -275,57 +276,57 @@ Add the following code: plt.show() ``` -You created a new dataframe by calling `pd.DataFrame`. Then you sorted the values by calling `sort_values()`. Finally you created a polynomial plot: +您通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图: -![A polynomial plot showing package to price relationship](./images/polynomial.png) +![显示包装与价格关系的多项式图](../images/polynomial.png) -You can see a curved line that fits your data better. +您可以看到更适合您的数据的曲线。 -Let's check the model's accuracy: +让我们检查模型的准确性: ```python accuracy_score = pipeline.score(X_train,y_train) print('Model Accuracy: ', accuracy_score) ``` - And voila! + 瞧! ```output Model Accuracy: 0.8537946517073784 ``` -That's better! Try to predict a price: +这样好多了!试着预测一个价格: -### Do a prediction +### 做个预测 -Can we input a new value and get a prediction? +我们可以输入一个新值并得到一个预测吗? -Call `predict()` to make a prediction: +调用`predict()`进行预测: ```python pipeline.predict( np.array([ [2.75] ]) ) ``` - You are given this prediction: + 你会得到这样的预测: ```output array([[46.34509342]]) ``` -It does make sense, given the plot! And, if this is a better model than the previous one, looking at the same data, you need to budget for these more expensive pumpkins! +参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算! -🏆 Well done! You created two regression models in one lesson. In the final section on regression, you will learn about logistic regression to determine categories. +🏆 干得不错!您在一节课中创建了两个回归模型。在回归的最后一节中,您将了解逻辑回归以确定类别。 --- -## 🚀Challenge +## 🚀挑战 -Test several different variables in this notebook to see how correlation corresponds to model accuracy. +在此notebook中测试几个不同的变量,以查看相关性与模型准确性的对应关系。 -## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/) +## [课后测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/) -## Review & Self Study +## 复习与自学 -In this lesson we learned about Linear Regression. There are other important types of Regression. Read about Stepwise, Ridge, Lasso and Elasticnet techniques. A good course to study to learn more is the [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +在本课中,我们学习了线性回归。还有其他重要的回归类型。了解Stepwise、Ridge、Lasso和Elasticnet技术。学习更多信息的好课程是[斯坦福统计学习课程](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) -## Assignment +## 任务 -[Build a Model](assignment.md) +[构建模型](../assignment.md) From 03d7069e4b16c12fac8bfab00e53338abe8df7ae Mon Sep 17 00:00:00 2001 From: feiyun0112 Date: Sat, 10 Jul 2021 19:48:50 +0800 Subject: [PATCH 45/56] Update README.zh-cn.md --- .../3-Linear/translations/README.zh-cn.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/2-Regression/3-Linear/translations/README.zh-cn.md b/2-Regression/3-Linear/translations/README.zh-cn.md index 7bb46c45..55c4d293 100644 --- a/2-Regression/3-Linear/translations/README.zh-cn.md +++ b/2-Regression/3-Linear/translations/README.zh-cn.md @@ -5,32 +5,32 @@ ## [课前测](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/) ### 介绍 -到目前为止,您已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。您还使用Matplotlib对其进行了可视化。 +到目前为止,你已经通过从我们将在本课程中使用的南瓜定价数据集收集的样本数据探索了什么是回归。你还使用Matplotlib对其进行了可视化。 -现在您已准备好深入研究ML的回归。 在本课中,您将详细了解两种类型的回归:_基本线性回归_和_多项式回归_,以及这些技术背后的一些数学知识。 +现在你已准备好深入研究ML的回归。 在本课中,你将详细了解两种类型的回归:_基本线性回归_和_多项式回归_,以及这些技术背后的一些数学知识。 > 在整个课程中,我们假设数学知识最少,并试图让来自其他领域的学生也能接触到它,因此请使用笔记、🧮标注、图表和其他学习工具以帮助理解。 ### 前提 -您现在应该熟悉我们正在检查的南瓜数据的结构。您可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中,南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。 +你现在应该熟悉我们正在检查的南瓜数据的结构。你可以在本课的_notebook.ipynb_文件中找到它。 在这个文件中,南瓜的价格显示在一个新的dataframe 中。确保可以在Visual Studio Code代码的内核中运行这些notebooks。 ### 准备 -提醒一下,您正在加载此数据以提出问题。 +提醒一下,你正在加载此数据以提出问题。 - 什么时候买南瓜最好? - 一箱微型南瓜的价格是多少? - 我应该买半蒲式耳还是1 1/9蒲式耳? 让我们继续深入研究这些数据。 -在上一课中,您创建了一个Pandas dataframe并用原始数据集的一部分填充它,按蒲式耳标准化定价。但是,通过这样做,您只能收集大约400个数据点,而且只能收集秋季月份的数据。 +在上一课中,你创建了一个Pandas dataframe并用原始数据集的一部分填充它,按蒲式耳标准化定价。但是,通过这样做,你只能收集大约400个数据点,而且只能收集秋季月份的数据。 看看我们在本课随附的notebook中预加载的数据。数据已预加载,并绘制了初始散点图以显示月份数据。也许我们可以通过更多地清理数据来获得更多关于数据性质的细节。 ## 线性回归线 -正如您在第1课中学到的,线性回归练习的目标是能够绘制一条线以便: +正如你在第1课中学到的,线性回归练习的目标是能够绘制一条线以便: - **显示变量关系**。 显示变量之间的关系 - **作出预测**。 准确预测新数据点与该线的关系。 @@ -61,21 +61,21 @@ > > 计算直线的数学必须证明直线的斜率,这也取决于截距,或者当`X = 0`时`Y`所在的位置。 > -> 您可以在[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。 +> 你可以在[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)网站上观察这些值的计算方法。另请访问[这个最小二乘计算器](https://www.mathsisfun.com/data/least-squares-calculator.html)以观察数字的值如何影响直线。 ## 相关性 -另一个需要理解的术语是给定X和Y变量之间的**相关系数**。使用散点图,您可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性,但数据点散布在X和Y之间的图具有低相关性。 +另一个需要理解的术语是给定X和Y变量之间的**相关系数**。使用散点图,你可以快速可视化该系数。数据点散布在一条直线上的图具有高相关性,但数据点散布在X和Y之间的图具有低相关性。 一个好的线性回归模型将是一个用最小二乘回归法与直线回归得到的高(更接近于1)相关系数的模型。 -✅ 运行本课随附的notebook并查看City to Price散点图。根据您对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性? +✅ 运行本课随附的notebook并查看City to Price散点图。根据你对散点图的视觉解释,将南瓜销售的城市与价格相关联的数据似乎具有高相关性或低相关性? ## 为回归准备数据 -现在您已经了解了本练习背后的数学原理,可以创建一个回归模型,看看您是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。 +现在你已经了解了本练习背后的数学原理,可以创建一个回归模型,看看你是否可以预测哪个南瓜包装的南瓜价格最优惠。为节日购买南瓜的人可能希望此信息能够优化他们如何购买南瓜包装。 -由于您将使用Scikit-learn,因此没有理由手动执行此操作(尽管您可以!)。在课程notebook的主要数据处理块中,从Scikit-learn添加一个库以自动将所有字符串数据转换为数字: +由于你将使用Scikit-learn,因此没有理由手动执行此操作(尽管你可以!)。在课程notebook的主要数据处理块中,从Scikit-learn添加一个库以自动将所有字符串数据转换为数字: ```python from sklearn.preprocessing import LabelEncoder @@ -83,9 +83,9 @@ from sklearn.preprocessing import LabelEncoder new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) ``` -如果您现在查看new_pumpkins dataframe,您会看到所有字符串现在都是数字。这让你更难阅读,但对Scikit-learn来说更容易理解! +如果你现在查看new_pumpkins dataframe,你会看到所有字符串现在都是数字。这让你更难阅读,但对Scikit-learn来说更容易理解! -现在,您可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。 +现在,你可以对最适合回归的数据做出更有根据的决策(不仅仅是基于观察散点图)。 尝试在数据的两点之间找到良好的相关性,以构建良好的预测模型。事实证明,城市和价格之间只有微弱的相关性: @@ -139,13 +139,13 @@ lin_pumpkins 415 rows × 2 columns ``` -1. 现在您可以分配X和y坐标数据: +1. 现在你可以分配X和y坐标数据: ```python X = lin_pumpkins.values[:, :1] y = lin_pumpkins.values[:, 1:2] ``` -✅ 这里发生了什么?您正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。 +✅ 这里发生了什么?你正在使用[Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295)来创建数组来填充`X`和`y`。 2. 接下来,开始回归模型构建例程: @@ -170,7 +170,7 @@ lin_pumpkins Model Accuracy: 0.3315342327998987 ``` -3. 您可以将过程中绘制的线条可视化: +3. 你可以将过程中绘制的线条可视化: ```python plt.scatter(X_test, y_test, color='black') @@ -205,7 +205,7 @@ lin_pumpkins ✅ 这里有可以使用多项式回归数据的[更多示例](https://online.stat.psu.edu/stat501/lesson/9/9.8) -再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,您可以尝试多项式回归。 +再看一下上图中品种与价格之间的关系。这个散点图看起来是否应该用一条直线来分析?也许不是。在这种情况下,你可以尝试多项式回归。 ✅ 多项式是可能由一个或多个变量和系数组成的数学表达式 @@ -230,7 +230,7 @@ lin_pumpkins 这段代码创建了一个热图: ![显示数据相关性的热图](../images/heatmap.png) -查看此图表,您可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。 +查看此图表,你可以直观地看到Package和Price之间的良好相关性。所以你应该能够创建一个比上一个更好的模型。 ### 创建管道 @@ -260,7 +260,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi ### 创建序列 -此时,您需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。 +此时,你需要使用_排序好的_数据创建一个新的dataframe ,以便管道可以创建序列。 添加以下代码: @@ -276,11 +276,11 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi plt.show() ``` -您通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图: +你通过调用`pd.DataFrame`创建了一个新的dataframe。然后通过调用`sort_values()`对值进行排序。最后你创建了一个多项式图: ![显示包装与价格关系的多项式图](../images/polynomial.png) -您可以看到更适合您的数据的曲线。 +你可以看到更适合你的数据的曲线。 让我们检查模型的准确性: @@ -314,7 +314,7 @@ Scikit-learn包含一个用于构建多项式回归模型的有用API - `make_pi 参照图像,这确实有道理!而且,如果这是一个比前一个更好的模型,看同样的数据,你需要为这些更昂贵的南瓜做好预算! -🏆 干得不错!您在一节课中创建了两个回归模型。在回归的最后一节中,您将了解逻辑回归以确定类别。 +🏆 干得不错!你在一节课中创建了两个回归模型。在回归的最后一节中,你将了解逻辑回归以确定类别。 --- ## 🚀挑战 From 28b1b7534cc79fcd973d7e89fe41d067c21f41ab Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 13:12:11 -0400 Subject: [PATCH 46/56] Delete lesson-card.md --- .github/ISSUE_TEMPLATE/lesson-card.md | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/lesson-card.md diff --git a/.github/ISSUE_TEMPLATE/lesson-card.md b/.github/ISSUE_TEMPLATE/lesson-card.md deleted file mode 100644 index 71ebeba6..00000000 --- a/.github/ISSUE_TEMPLATE/lesson-card.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Lesson Card -about: Add a Lesson Card -title: "[LESSON]" -labels: '' -assignees: '' - ---- - -- [ ] quiz 1 -- [ ] written content -- [ ] quiz 2 -- [ ] challenge -- [ ] extra reading -- [ ] assignment From a5f032abc0e7c92ffc5cbc78a47c7db8ed1a4a98 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 13:12:18 -0400 Subject: [PATCH 47/56] Delete lesson_elements.md --- .github/ISSUE_TEMPLATE/lesson_elements.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/lesson_elements.md diff --git a/.github/ISSUE_TEMPLATE/lesson_elements.md b/.github/ISSUE_TEMPLATE/lesson_elements.md deleted file mode 100644 index eef18922..00000000 --- a/.github/ISSUE_TEMPLATE/lesson_elements.md +++ /dev/null @@ -1,6 +0,0 @@ -- [ ] quiz 1 -- [ ] written content -- [ ] quiz 2 -- [ ] challenge -- [ ] extra reading -- [ ] assignment From 7c3f8002a1173f0d0f87da12285781aa97bc2cc2 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 21:58:16 -0400 Subject: [PATCH 48/56] moving Portuguese base translation to proper folder --- README.pt.md => translations/README.pt.md | 58 +++++++++++------------ 1 file changed, 29 insertions(+), 29 deletions(-) rename README.pt.md => translations/README.pt.md (55%) diff --git a/README.pt.md b/translations/README.pt.md similarity index 55% rename from README.pt.md rename to translations/README.pt.md index 460d8f05..fe759ef2 100644 --- a/README.pt.md +++ b/translations/README.pt.md @@ -38,7 +38,7 @@ Viaja connosco ao redor do mundo enquanto aplicamos estas técnicas clássicas a > Para um estudo mais aprofundado, recomendamos que sigas estes [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-15963-cxa) módulos e percursos de aprendizagem. -**Professores**, [incluímos algumas sugestões](for-teachers.md) em como usar este curso. +**Professores**, [incluímos algumas sugestões](../for-teachers.md) em como usar este curso. --- @@ -56,7 +56,7 @@ Escolhemos dois princípios pedagógicos ao construir este curso: garantindo que Ao garantir que o conteúdo esteja alinhado com os projetos, o processo torna-se mais envolvente para os estudantes e a retenção dos conceitos é aumentada. Além disso, um teste de baixo risco antes da aula define a intenção do estudante de aprender um tópico, enquanto que um segundo teste após a aula garante maior retenção. Este curso foi projetado para ser flexível e divertido e pode ser realizado no seu todo ou parcialmente. Os projetos começam pequenos e tornam-se cada vez mais complexos no final do ciclo de 12 semanas. Este currículo também inclui um pós-escrito sobre aplicações reais de ML, que pode ser usado como crédito extra ou como base para discussão. -> Encontra o nosso [Código de Conduta](CODE_OF_CONDUCT.md), diretrizes de [Contribuição](CONTRIBUTING.md), e [Tradução](TRANSLATIONS.md). Agradecemos o teu feedback construtivo! +> Encontra o nosso [Código de Conduta](../CODE_OF_CONDUCT.md), diretrizes de [Contribuição](../CONTRIBUTING.md), e [Tradução](../TRANSLATIONS.md). Agradecemos o teu feedback construtivo! ## Cada aula inclui: @@ -75,31 +75,31 @@ Ao garantir que o conteúdo esteja alinhado com os projetos, o processo torna-se | Número de aula | Tópico | Agrupamento de Aulas | Objetivos de aprendizagem | Aula vinculada | Autor | | :------------: | :-------------------------------------------------------------------: | :---------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------: | :----------: | -| 01 | Introdução ao machine learning | [Introdução](1-Introduction/README.md) | Aprender os conceitos básicos atrás do machine learning | [aula](1-Introduction/1-intro-to-ML/README.md) | Muhammad | -| 02 | A História de machine learning | [Introdução](1-Introduction/README.md) | Aprender a história subjacente nesta área | [aula](1-Introduction/2-history-of-ML/README.md) | Jen e Amy | -| 03 | Justiça e machine learning | [Introdução](1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os estudantes devem considerar ao construir e aplicar modelos de ML? | [aula](1-Introduction/3-fairness/README.md) | Tomomi | -| 04 | Técnicas para machine learning | [Introdução](1-Introduction/README.md) | Que técnicas os investigadores de ML usam para construir modelos de ML? | [aula](1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | -| 05 | Introdução à regressão | [Regressão](2-Regression/README.md) | Começando a usar Python e Scikit-learn para modelos de regressão | [aula](2-Regression/1-Tools/README.md) | Jen | -| 06 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Visualizar e limpar os dados em preparação para o ML | [aula](2-Regression/2-Data/README.md) | Jen | -| 07 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Construir modelos de regressão linear e polinomial | [aula](2-Regression/3-Linear/README.md) | Jen | -| 08 | Preços das abóboras norte americanas 🎃 | [Regressão](2-Regression/README.md) | Construir um modelo de regressão logística | [aula](2-Regression/4-Logistic/README.md) | Jen | -| 09 | Uma Web App 🔌 | [Web App](3-Web-App/README.md) | Criar uma web app para usar o teu modelo treinado | [aula](3-Web-App/1-Web-App/README.md) | Jen | -| 10 | Introdução à classificação | [Classificação](4-Classification/README.md) | Limpar, preparar e visualizar os dados; introdução à classificação | [aula](4-Classification/1-Introduction/README.md) | Jen e Cassie | -| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Introdução aos classificadores | [aula](4-Classification/2-Classifiers-1/README.md) | Jen e Cassie | -| 12 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Mais classificadores | [aula](4-Classification/3-Classifiers-2/README.md) | Jen e Cassie | -| 13 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](4-Classification/README.md) | Criar uma web app de recomendação usando o teu modelo | [aula](4-Classification/4-Applied/README.md) | Jen | -| 14 | Introdução ao clustering | [Clustering](5-Clustering/README.md) | Limpar, preparar e visualizar os dados; Introdução ao clustering | [aula](5-Clustering/1-Visualize/README.md) | Jen | -| 15 | Explorando Gostos Musicais Nigerianos 🎧 | [Clustering](5-Clustering/README.md) | Explorar o método de agrupamento K-Means | [aula](5-Clustering/2-K-Means/README.md) | Jen | -| 16 | Introdução processamento de linguagem natural ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprender o básico sobre NLP construindo um bot simples | [aula](6-NLP/1-Introduction-to-NLP/README.md) | Stephen | -| 17 | Tarefas NLP comuns ☕️ | [Processamento de linguagem natural](6-NLP/README.md) | Aprofundar o conhecimento de NLP percebendo tarefas comuns exigidas ao lidar com estruturas de linguagem | [aula](6-NLP/2-Tasks/README.md) | Stephen | -| 18 | Tradução e análise de sentimento ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [aula](6-NLP/3-Translation-Sentiment/README.md) | Stephen | -| 19 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 1 | [aula](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | -| 20 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 2 | [aula](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | -| 21 | Introdução previsão de séries temporais | [Séries temporais](7-TimeSeries/README.md) | Introdução a previsão de séries temporais | [aula](7-TimeSeries/1-Introduction/README.md) | Francesca | -| 22 | ⚡️ Uso de Energia Mundial ⚡️ - previsão de série temporal com ARIMA | [Séries temporais](7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [aula](7-TimeSeries/2-ARIMA/README.md) | Francesca | -| 23 | Introdução à aprendizagem por reforço | [Aprendizagem por reforço](8-Reinforcement/README.md) | Introdução à aprendizagem por reforço com Q-Learning | [aula](8-Reinforcement/1-QLearning/README.md) | Dmitry | -| 24 | Ajuda o Pedro a escapar do lobo! 🐺 | [Aprendizagem por reforço](8-Reinforcement/README.md) | Ginásio de aprendizagem por reforço | [aula](8-Reinforcement/2-Gym/README.md) | Dmitry | -| Postscript | Cenários reais de ML e aplicações | [ML na vida real](9-Real-World/README.md) | Aplicações interessantes e reveladoras do mundo real do ML clássico | [aula](9-Real-World/1-Applications/README.md) | Equipa | +| 01 | Introdução ao machine learning | [Introdução](../1-Introduction/README.md) | Aprender os conceitos básicos atrás do machine learning | [aula](../1-Introduction/1-intro-to-ML/README.md) | Muhammad | +| 02 | A História de machine learning | [Introdução](../1-Introduction/README.md) | Aprender a história subjacente nesta área | [aula](../1-Introduction/2-history-of-ML/README.md) | Jen e Amy | +| 03 | Justiça e machine learning | [Introdução](../1-Introduction/README.md) | Quais são as questões filosóficas importantes sobre justiça que os estudantes devem considerar ao construir e aplicar modelos de ML? | [aula](../1-Introduction/3-fairness/README.md) | Tomomi | +| 04 | Técnicas para machine learning | [Introdução](../1-Introduction/README.md) | Que técnicas os investigadores de ML usam para construir modelos de ML? | [aula](../1-Introduction/4-techniques-of-ML/README.md) | Chris e Jen | +| 05 | Introdução à regressão | [Regressão](../2-Regression/README.md) | Começando a usar Python e Scikit-learn para modelos de regressão | [aula](../2-Regression/1-Tools/README.md) | Jen | +| 06 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Visualizar e limpar os dados em preparação para o ML | [aula](../2-Regression/2-Data/README.md) | Jen | +| 07 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Construir modelos de regressão linear e polinomial | [aula](../2-Regression/3-Linear/README.md) | Jen | +| 08 | Preços das abóboras norte americanas 🎃 | [Regressão](../2-Regression/README.md) | Construir um modelo de regressão logística | [aula](../2-Regression/4-Logistic/README.md) | Jen | +| 09 | Uma Web App 🔌 | [Web App](../3-Web-App/README.md) | Criar uma web app para usar o teu modelo treinado | [aula](../3-Web-App/1-Web-App/README.md) | Jen | +| 10 | Introdução à classificação | [Classificação](../4-Classification/README.md) | Limpar, preparar e visualizar os dados; introdução à classificação | [aula](../4-Classification/1-Introduction/README.md) | Jen e Cassie | +| 11 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](../4-Classification/README.md) | Introdução aos classificadores | [aula](../4-Classification/2-Classifiers-1/README.md) | Jen e Cassie | +| 12 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](../4-Classification/README.md) | Mais classificadores | [aula](../4-Classification/3-Classifiers-2/README.md) | Jen e Cassie | +| 13 | Deliciosas cozinhas asiáticas e indianas 🍜 | [Classificação](../4-Classification/README.md) | Criar uma web app de recomendação usando o teu modelo | [aula](../4-Classification/4-Applied/README.md) | Jen | +| 14 | Introdução ao clustering | [Clustering](../5-Clustering/README.md) | Limpar, preparar e visualizar os dados; Introdução ao clustering | [aula](../5-Clustering/1-Visualize/README.md) | Jen | +| 15 | Explorando Gostos Musicais Nigerianos 🎧 | [Clustering](../5-Clustering/README.md) | Explorar o método de agrupamento K-Means | [aula](../5-Clustering/2-K-Means/README.md) | Jen | +| 16 | Introdução processamento de linguagem natural ☕️ | [Processamento de linguagem natural](../6-NLP/README.md) | Aprender o básico sobre NLP construindo um bot simples | [aula](../6-NLP/1-Introduction-to-NLP/README.md) | Stephen | +| 17 | Tarefas NLP comuns ☕️ | [Processamento de linguagem natural](../6-NLP/README.md) | Aprofundar o conhecimento de NLP percebendo tarefas comuns exigidas ao lidar com estruturas de linguagem | [aula](../6-NLP/2-Tasks/README.md) | Stephen | +| 18 | Tradução e análise de sentimento ♥️ | [Processamento de linguagem natural](../6-NLP/README.md) | Tradução e análise de sentimento com Jane Austen | [aula](../6-NLP/3-Translation-Sentiment/README.md) | Stephen | +| 19 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](../6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 1 | [aula](../6-NLP/4-Hotel-Reviews-1/README.md) | Stephen | +| 20 | Hotéis romanticos da Europa ♥️ | [Processamento de linguagem natural](../6-NLP/README.md) | Análise de sentimento com avaliações de hotéis, 2 | [aula](../6-NLP/5-Hotel-Reviews-2/README.md) | Stephen | +| 21 | Introdução previsão de séries temporais | [Séries temporais](../7-TimeSeries/README.md) | Introdução a previsão de séries temporais | [aula](../7-TimeSeries/1-Introduction/README.md) | Francesca | +| 22 | ⚡️ Uso de Energia Mundial ⚡️ - previsão de série temporal com ARIMA | [Séries temporais](../7-TimeSeries/README.md) | Previsão de séries temporais com ARIMA | [aula](../7-TimeSeries/2-ARIMA/README.md) | Francesca | +| 23 | Introdução à aprendizagem por reforço | [Aprendizagem por reforço](../8-Reinforcement/README.md) | Introdução à aprendizagem por reforço com Q-Learning | [aula](../8-Reinforcement/1-QLearning/README.md) | Dmitry | +| 24 | Ajuda o Pedro a escapar do lobo! 🐺 | [Aprendizagem por reforço](../8-Reinforcement/README.md) | Ginásio de aprendizagem por reforço | [aula](../8-Reinforcement/2-Gym/README.md) | Dmitry | +| Postscript | Cenários reais de ML e aplicações | [ML na vida real](../9-Real-World/README.md) | Aplicações interessantes e reveladoras do mundo real do ML clássico | [aula](../9-Real-World/1-Applications/README.md) | Equipa | ## Acesso Offline @@ -107,11 +107,11 @@ Podes usar este documento offline usando o [Docsify](https://docsify.js.org/#/). ## PDFs -Encontras um pdf do curso com links [aqui](pdf/readme.pdf) +Encontras um pdf do curso com links [aqui](../pdf/readme.pdf) ## Help Wanted! -Gostarias de contribuir para uma tradução? Por favor lê as nossas [diretrizes de tradução](TRANSLATIONS.md) e adiciona o teu input [aqui](https://github.com/microsoft/ML-For-Beginners/issues/71) +Gostarias de contribuir para uma tradução? Por favor lê as nossas [diretrizes de tradução](../TRANSLATIONS.md) e adiciona o teu input [aqui](https://github.com/microsoft/ML-For-Beginners/issues/71) ## Outros Cursos From cc77e973a6378e3f00926d065bd6ac92ca737176 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 22:00:24 -0400 Subject: [PATCH 49/56] promo video image fix --- translations/README.pt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README.pt.md b/translations/README.pt.md index fe759ef2..6985cbf4 100644 --- a/translations/README.pt.md +++ b/translations/README.pt.md @@ -44,7 +44,7 @@ Viaja connosco ao redor do mundo enquanto aplicamos estas técnicas clássicas a ## Conhece a equipa -[![Promo video](ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU 'Promo video') +[![Promo video](../ml-for-beginners.png)](https://youtu.be/Tj1XWrDSYJU "Promo video") > 🎥 Clica na imagem acima para um vídeo sobre o projeto e as pessoas que o criaram! From 85b2d840ac2485e7fdf8466649b7322f6f42963c Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 22:02:26 -0400 Subject: [PATCH 50/56] Create translation_tasks.md --- .github/ISSUE_TEMPLATE/translation_tasks.md | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/translation_tasks.md diff --git a/.github/ISSUE_TEMPLATE/translation_tasks.md b/.github/ISSUE_TEMPLATE/translation_tasks.md new file mode 100644 index 00000000..e349d8b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/translation_tasks.md @@ -0,0 +1,61 @@ +- [ ] Base README.md +- [ ] Quizzes +- [ ] Introduction base README + - [ ] Intro to ML README + - [ ] Intro to ML assignment + - [ ] History of ML README + - [ ] History of ML assignment + - [ ] Fairness README + - [ ] Fairness assignment + - [ ] Techniques of ML README + - [ ] Techniques of ML assignment +- [ ] Regression base README + - [ ] Tools README + - [ ] Tools assignment + - [ ] Data README + - [ ] Data assignment + - [ ] Linear README + - [ ] Linear assignment + - [ ] Logistic README + - [ ] Logistic assignment +- [ ] Web app base README + - [ ] Web app README + - [ ] Web app assignment +- [ ] Classification base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] Classifiers 1 README + - [ ] Classifiers 1 assignment + - [ ] Classifiers 2 README + - [ ] Classifiers 2 assignment + - [ ] Applied README + - [ ] Applied assignment +- [ ] Clustering base README + - [ ] Visualize README + - [ ] Visualize assignment + - [ ] K-means README + - [ ] K-means assignment +- [ ] NLP base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] Tasks README + - [ ] Tasks assignment + - [ ] Translation README + - [ ] Translation assignment + - [ ] Reviews 1 README + - [ ] Reviews 1 assignment + - [ ] Reviews 2 README + - [ ] Reviews 2 assignment +- [ ] Time Series base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] ARIMA README + - [ ] ARIMA assignment +- [ ] Reinforcement base README + - [ ] QLearning README + - [ ] QLearning assignment + - [ ] gym README + - [ ] gym assignment +- [ ] Real World base README + - [ ] Real World README + - [ ] Real World assignment From 7dce88fb2d41859fd5e2d3b2b34ca24f9c05217b Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 22:09:23 -0400 Subject: [PATCH 51/56] Delete translation_tasks.md --- .github/ISSUE_TEMPLATE/translation_tasks.md | 61 --------------------- 1 file changed, 61 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/translation_tasks.md diff --git a/.github/ISSUE_TEMPLATE/translation_tasks.md b/.github/ISSUE_TEMPLATE/translation_tasks.md deleted file mode 100644 index e349d8b4..00000000 --- a/.github/ISSUE_TEMPLATE/translation_tasks.md +++ /dev/null @@ -1,61 +0,0 @@ -- [ ] Base README.md -- [ ] Quizzes -- [ ] Introduction base README - - [ ] Intro to ML README - - [ ] Intro to ML assignment - - [ ] History of ML README - - [ ] History of ML assignment - - [ ] Fairness README - - [ ] Fairness assignment - - [ ] Techniques of ML README - - [ ] Techniques of ML assignment -- [ ] Regression base README - - [ ] Tools README - - [ ] Tools assignment - - [ ] Data README - - [ ] Data assignment - - [ ] Linear README - - [ ] Linear assignment - - [ ] Logistic README - - [ ] Logistic assignment -- [ ] Web app base README - - [ ] Web app README - - [ ] Web app assignment -- [ ] Classification base README - - [ ] Intro README - - [ ] Intro assignment - - [ ] Classifiers 1 README - - [ ] Classifiers 1 assignment - - [ ] Classifiers 2 README - - [ ] Classifiers 2 assignment - - [ ] Applied README - - [ ] Applied assignment -- [ ] Clustering base README - - [ ] Visualize README - - [ ] Visualize assignment - - [ ] K-means README - - [ ] K-means assignment -- [ ] NLP base README - - [ ] Intro README - - [ ] Intro assignment - - [ ] Tasks README - - [ ] Tasks assignment - - [ ] Translation README - - [ ] Translation assignment - - [ ] Reviews 1 README - - [ ] Reviews 1 assignment - - [ ] Reviews 2 README - - [ ] Reviews 2 assignment -- [ ] Time Series base README - - [ ] Intro README - - [ ] Intro assignment - - [ ] ARIMA README - - [ ] ARIMA assignment -- [ ] Reinforcement base README - - [ ] QLearning README - - [ ] QLearning assignment - - [ ] gym README - - [ ] gym assignment -- [ ] Real World base README - - [ ] Real World README - - [ ] Real World assignment From 3a448bbb498a89140b90e8f812890fe9cd5be01e Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 22:11:09 -0400 Subject: [PATCH 52/56] Update issue templates --- .../ISSUE_TEMPLATE/translations-checklist.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/translations-checklist.md diff --git a/.github/ISSUE_TEMPLATE/translations-checklist.md b/.github/ISSUE_TEMPLATE/translations-checklist.md new file mode 100644 index 00000000..4cbf5774 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/translations-checklist.md @@ -0,0 +1,70 @@ +--- +name: Translations Checklist +about: These are all the files that need to be translated +title: "[TRANSLATIONS]" +labels: translations +assignees: '' + +--- + +- [ ] Base README.md +- [ ] Quizzes +- [ ] Introduction base README + - [ ] Intro to ML README + - [ ] Intro to ML assignment + - [ ] History of ML README + - [ ] History of ML assignment + - [ ] Fairness README + - [ ] Fairness assignment + - [ ] Techniques of ML README + - [ ] Techniques of ML assignment +- [ ] Regression base README + - [ ] Tools README + - [ ] Tools assignment + - [ ] Data README + - [ ] Data assignment + - [ ] Linear README + - [ ] Linear assignment + - [ ] Logistic README + - [ ] Logistic assignment +- [ ] Web app base README + - [ ] Web app README + - [ ] Web app assignment +- [ ] Classification base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] Classifiers 1 README + - [ ] Classifiers 1 assignment + - [ ] Classifiers 2 README + - [ ] Classifiers 2 assignment + - [ ] Applied README + - [ ] Applied assignment +- [ ] Clustering base README + - [ ] Visualize README + - [ ] Visualize assignment + - [ ] K-means README + - [ ] K-means assignment +- [ ] NLP base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] Tasks README + - [ ] Tasks assignment + - [ ] Translation README + - [ ] Translation assignment + - [ ] Reviews 1 README + - [ ] Reviews 1 assignment + - [ ] Reviews 2 README + - [ ] Reviews 2 assignment +- [ ] Time Series base README + - [ ] Intro README + - [ ] Intro assignment + - [ ] ARIMA README + - [ ] ARIMA assignment +- [ ] Reinforcement base README + - [ ] QLearning README + - [ ] QLearning assignment + - [ ] gym README + - [ ] gym assignment +- [ ] Real World base README + - [ ] Real World README + - [ ] Real World assignment From 96ce28c03a5d8304a841c1c3b29df02e412ed9e6 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Sat, 10 Jul 2021 22:28:09 -0400 Subject: [PATCH 53/56] Update README.ru.md path edit for Russian translation images --- 8-Reinforcement/translations/README.ru.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/8-Reinforcement/translations/README.ru.md b/8-Reinforcement/translations/README.ru.md index 6d621750..939554b4 100644 --- a/8-Reinforcement/translations/README.ru.md +++ b/8-Reinforcement/translations/README.ru.md @@ -3,7 +3,7 @@ Reinforcement learning (обучение с подкреплением), RL, р Представьте, что у вас есть смоделированная среда, такая как фондовый рынок. Что произойдет, если вы введете определенное правило. Имеет ли это положительный или отрицательный эффект? Если происходит что-то негативное, вам нужно принять это _негативное подкрепление_, извлечь из него урок и изменить курс. Если это положительный результат, вам нужно использовать это _положительное подкрепление_. -![peter and the wolf](images/peter.png) +![peter and the wolf](../images/peter.png) > Петьке и его друзьям нужно спастись от голодного волка! Автор изображения [Jen Looper](https://twitter.com/jenlooper) @@ -22,8 +22,8 @@ Reinforcement learning (обучение с подкреплением), RL, р В предыдущих разделах вы видели два примера проблем машинного обучения: -- **Supervised**, где у нас есть наборы данных, которые предлагают примеры решений проблемы, которую мы хотим решить. [Классификация](../4-Classification/README.md) и [регрессия] (../ 2-Регрессия / README.md) являются контролируемыми учебными задачами. -- **Unsupervised**, в котором у нас нет помеченных данных обучения. Основным примером unsupervised learning является [Кластеризация](../5-Clustering/README.md). +- **Supervised**, где у нас есть наборы данных, которые предлагают примеры решений проблемы, которую мы хотим решить. [Классификация](../../4-Classification/README.md) и [регрессия] (../ 2-Регрессия / README.md) являются контролируемыми учебными задачами. +- **Unsupervised**, в котором у нас нет помеченных данных обучения. Основным примером unsupervised learning является [Кластеризация](../../5-Clustering/README.md). В этом разделе мы познакомим вас с новым типом задач обучения, которые не требуют маркированных данных обучения. Есть несколько типов таких проблем: @@ -44,9 +44,9 @@ Reinforcement learning (обучение с подкреплением), RL, р ## Уроки -1. [Введение в обучение с подкреплением и Q-Learning](1-QLearning/README.md) -2. [Использование тренажерного зала](2-Gym/README.md) +1. [Введение в обучение с подкреплением и Q-Learning](../1-QLearning/README.md) +2. [Использование тренажерного зала](../2-Gym/README.md) ## Благодарности -«Введение в обучение с подкреплением» написано с ♥ ️[Дмитрием Сошниковым](http://soshnikov.com) \ No newline at end of file +«Введение в обучение с подкреплением» написано с ♥ ️[Дмитрием Сошниковым](http://soshnikov.com) From 371cbdc10f3524572b702ebb6bcc4cbf9e02fdc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20=C3=87a=C4=9Fatay=20K=C3=B6se?= Date: Sun, 11 Jul 2021 21:15:39 +0300 Subject: [PATCH 54/56] add: Turkish quiz translations --- quiz-app/src/App.vue | 1 + quiz-app/src/assets/translations/index.js | 2 + quiz-app/src/assets/translations/tr.json | 2815 +++++++++++++++++++++ 3 files changed, 2818 insertions(+) create mode 100644 quiz-app/src/assets/translations/tr.json diff --git a/quiz-app/src/App.vue b/quiz-app/src/App.vue index ea282b44..78482d49 100644 --- a/quiz-app/src/App.vue +++ b/quiz-app/src/App.vue @@ -5,6 +5,7 @@
diff --git a/quiz-app/src/assets/translations/index.js b/quiz-app/src/assets/translations/index.js index ffcbad94..e4abf6eb 100644 --- a/quiz-app/src/assets/translations/index.js +++ b/quiz-app/src/assets/translations/index.js @@ -1,10 +1,12 @@ // index.js import en from './en.json'; +import tr from './tr.json'; //export const defaultLocale = 'en'; const messages = { en: en[0], + tr: tr[0], }; export default messages; diff --git a/quiz-app/src/assets/translations/tr.json b/quiz-app/src/assets/translations/tr.json new file mode 100644 index 00000000..c07894a0 --- /dev/null +++ b/quiz-app/src/assets/translations/tr.json @@ -0,0 +1,2815 @@ +[ + { + "title": "Yeni Başlayanlar için Makine Öğrenimi: Kısa Sınavlar", + "complete": "Tebrikler, testi tamamladınız!", + "error": "Üzgünüz, tekrar deneyin", + "quizzes": [ + { + "id": 1, + "title": "Makine Öğrenmesine Giriş: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Makine öğrenimi uygulamaları her yerdedir", + "answerOptions": [ + { + "answerText": "Doğru", + "isCorrect": "true" + }, + { + "answerText": "Yanlış", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Klasik ML(Makine Öğrenimi) ile derin öğrenme arasındaki teknik fark nedir?", + "answerOptions": [ + { + "answerText": "ilk olarak klasik makine öğrenimi icat edildi", + "isCorrect": "false" + }, + { + "answerText": "sinir ağlarının kullanımı", + "isCorrect": "true" + }, + { + "answerText": "robotlarda derin öğrenme kullanılır", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir işletme neden makine öğrenimi stratejilerini kullanmak isteyebilir?", + "answerOptions": [ + { + "answerText": "çok boyutlu problemlerin çözümünü otomatikleştirmek için", + "isCorrect": "false" + }, + { + "answerText": "müşteri türüne göre bir alışveriş deneyimini özelleştirmek için", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 2, + "title": "Makine Öğrenmesine Giriş: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Makine öğrenimi algoritmaları aşağıdakilerin hangisini simüle etmek içindir?", + "answerOptions": [ + { + "answerText": "akıllı makineler", + "isCorrect": "false" + }, + { + "answerText": "insan beyni", + "isCorrect": "true" + }, + { + "answerText": "orangutanlar", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Klasik ML tekniğine bir örnek nedir?", + "answerOptions": [ + { + "answerText": "doğal dil işleme", + "isCorrect": "true" + }, + { + "answerText": "derin öğrenme", + "isCorrect": "false" + }, + { + "answerText": "Sinir Ağları", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Neden herkes makine öğreniminin temellerini öğrenmeli?", + "answerOptions": [ + { + "answerText": "ML öğrenmek eğlencelidir ve herkes için erişilebilirdir", + "isCorrect": "false" + }, + { + "answerText": "ML stratejileri birçok endüstri ve alanda kullanılıyor", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 3, + "title": "Makine Öğreniminin Tarihçesi: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "'Yapay zeka' terimi yaklaşık olarak ne zaman ortaya çıktı?", + "answerOptions": [ + { + "answerText": "1980'ler", + "isCorrect": "false" + }, + { + "cevapText": "1950'ler", + "isCorrect": "true" + }, + { + "answerText": "1930'lar", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Hangisi makine öğreniminin ilk öncülerinden biridir?", + "answerOptions": [ + { + "answerText": "Alan Turing", + "isCorrect": "true" + }, + { + "answerText": "Bill Gates", + "isCorrect": "false" + }, + { + "answerText": "Robot Shakey", + "isCorrect": "false" + } + ] + }, + { + "questionText": "1970'lerde yapay zekâdaki ilerlemenin yavaşlamasının nedenlerinden biri nedir?", + "answerOptions": [ + { + "answerText": "Sınırlı işlem gücü", + "isCorrect": "true" + }, + { + "answerText": "Yeterli kalifiye mühendis olmaması", + "isCorrect": "false" + }, + { + "answerText": "Ülkeler arası çatışmalar", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 4, + "title": "Makine Öğreniminin Tarihçesi: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "'Düzensiz' bir yapay zeka sistemi örneği nedir?", + "answerOptions": [ + { + "cevapText": "ELIZA", + "isCorrect": "true" + }, + { + "answerText": "HACKML", + "isCorrect": "false" + }, + { + "answerText": "SSYSTEM", + "isCorrect": "false" + } + ] + }, + { + "questionText": "'Altın Yıllar'da geliştirilen bir teknoloji örneği nedir?", + "answerOptions": [ + { + "answerText": "Dünya Blokları", + "isCorrect": "true" + }, + { + "cevapText": "Jibo", + "isCorrect": "false" + }, + { + "answerText": "Robot köpekler", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Yapay zeka alanının yaratılması ve genişletilmesinde hangi olay temel oluşturmuştur?", + "answerOptions": [ + { + "answerText": "Turing Testi", + "isCorrect": "false" + }, + { + "answerText": "Dartmouth Yaz Araştırma Projesi", + "isCorrect": "true" + }, + { + "answerText": "AI Kışı", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 5, + "title": "Adillik ve Makine Öğrenimi: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Makine Öğreniminde adaletsizlik ne şekilde olabilir?", + "answerOptions": [ + { + "answerText": "kasıtlı olarak", + "isCorrect": "false" + }, + { + "answerText": "istemeden", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "ML'deki 'haksızlık' terimi şu anlama gelir:", + "answerOptions": [ + { + "answerText": "bir grup insana zarar verilmesi", + "isCorrect": "true" + }, + { + "answerText": "bir kişiye zarar verilmesi", + "isCorrect": "false" + }, + { + "answerText": "insanların çoğuna zarar verilmesi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Hangisi beş ana zarar türüdür?", + "answerOptions": [ + { + "answerText": "tahsis, hizmet kalitesi, klişeleştirme, aşağılama ve gereğinden fazla veya eksik temsil", + "isCorrect": "true" + }, + { + "answerText": "yerleştirme, hizmet kalitesi, klişeleştirme, aşağılama ve gereğinden fazla veya eksik temsil", + "isCorrect": "false" + }, + { + "answerText": "tahsis, hizmet kalitesi, stereofoni, aşağılama ve fazla veya eksik temsil", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 6, + "title": "Adillik ve Makine Öğrenimi: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Bir modeldeki adaletsizlik şundan kaynaklanabilir", + "answerOptions": [ + { + "answerText": "geçmiş verilere aşırı güven", + "isCorrect": "true" + }, + { + "answerText": "geçmiş verilere yetersiz güven", + "isCorrect": "false" + }, + { + "answerText": "geçmiş verilere çok yakın durmak", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Haksızlığı azaltmak için ne yapabilirsiniz?", + "answerOptions": [ + { + "answerText": "zararları ve etkilenen grupları tanımlarım", + "isCorrect": "false" + }, + { + "answerText": "adalet ölçütlerini tanımlarım", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin her ikisi de", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Fairlearn paketi hangisini yapabilir?", + "answerOptions": [ + { + "answerText": "adalet ve performans ölçütlerini kullanarak birden çok modeli karşılaştırır", + "isCorrect": "true" + }, + { + "answerText": "ihtiyaçlarınıza en uygun modeli seçer", + "isCorrect": "false" + }, + { + "answerText": "Neyin adil olup neyin olmadığına karar vermenize yardımcı olur", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 7, + "title": "Araçlar ve Teknikler: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Bir model oluştururken şunları yapmalısınız:", + "answerOptions": [ + { + "answerText": "verilerinizi hazırlamalı, ardından modelinizi eğitmelisiniz", + "isCorrect": "true" + }, + { + "answerText": "bir eğitim yöntemi seçip, ardından verilerinizi hazırlamalısınız", + "isCorrect": "false" + }, + { + "answerText": "parametreleri ayarlamalı, ardından modelinizi eğitmelisiniz", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Verilerinizin ___ makine öğrenimi modelinizin kalitesini etkiler", + "answerOptions": [ + { + "answerText": "miktarı", + "isCorrect": "false" + }, + { + "answerText": "şekli", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Bir özellik değişkeni:", + "answerOptions": [ + { + "answerText": "verilerinizin kalitesini gösteren bir değişkendir", + "isCorrect": "false" + }, + { + "answerText": "verilerinizin ölçülebilir bir özelliğini gösteren bir değişkendir", + "isCorrect": "true" + }, + { + "answerText": "verilerinizin bir satırıdır", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 8, + "title": "Araçlar ve Teknikler: Ders Sonrası Test", + "quiz": [ + { + "questionText": "Verilerinizi görselleştirmelisiniz çünkü", + "answerOptions": [ + { + "answerText": "aykırı değerleri keşfedebilirsiniz", + "isCorrect": "false" + }, + { + "answerText": "önyargı için potansiyel bir sebebi keşfedebilirsiniz", + "isCorrect": "true" + }, + { + "answerText": "bunların her ikisi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Verilerinizi şu şekilde bölün:", + "answerOptions": [ + { + "answerText": "eğitim ve turing setleri", + "isCorrect": "false" + }, + { + "answerText": "eğitim ve test setleri", + "isCorrect": "true" + }, + { + "answerText": "doğrulama ve değerlendirme setleri", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Çeşitli ML kütüphanelerinde modelin eğitim sürecini başlatmak için yaygın bir komut şudur:", + "answerOptions": [ + { + "answerText": "model.travel", + "isCorrect": "false" + }, + { + "answerText": "model.train", + "isCorrect": "false" + }, + { + "answerText": "model.fit", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 9, + "title": "Regresyona Giriş: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Bu değişkenlerden hangisi sayısal bir değişkendir?", + "answerOptions": [ + { + "answerText": "Yükseklik", + "isCorrect": "true" + }, + { + "answerText": "Cinsiyet", + "isCorrect": "false" + }, + { + "answerText": "Saç Rengi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bu değişkenlerden hangisi kategorik bir değişkendir?", + "answerOptions": [ + { + "answerText": "Kalp Atış Hızı", + "isCorrect": "false" + }, + { + "answerText": "Kan Tipi", + "isCorrect": "true" + }, + { + "answerText": "Ağırlık", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bu problemlerden hangisi Regresyon analizine dayalı bir problemdir?", + "answerOptions": [ + { + "answerText": "Öğrencinin final sınav notlarını tahmin etme", + "isCorrect": "true" + }, + { + "answerText": "Kişinin kan grubunu tahmin etme", + "isCorrect": "false" + }, + { + "answerText": "Bir e-postanın spam (gereksiz) olup olmadığını tahmin etme", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 10, + "title": "Regresyona Giriş: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Makine Öğrenimi modelinizin eğitim doğruluğu %95 ve test doğruluğu %30 ise buna ne denir?", + "answerOptions": [ + { + "answerText": "Aşırı öğrenme", + "isCorrect": "true" + }, + { + "answerText": "Eksik öğrenme", + "isCorrect": "false" + }, + { + "answerText": "Çift öğrenme", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir dizi özellikten önemli özellikleri belirleme sürecine ne denir?", + "answerOptions": [ + { + "answerText": "Özellik Çıkarma", + "isCorrect": "false" + }, + { + "answerText": "Özellik Boyutu Azaltma", + "isCorrect": "false" + }, + { + "answerText": "Özellik Seçimi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Scikit Learn kütüphanesinin 'train_test_split()' metodunu/fonksiyonunu kullanarak bir veri setini belirli bir oranda eğitim ve test veri setine bölme işlemine ne ad verilir?", + "answerOptions": [ + { + "answerText": "Çapraz doğrulama", + "isCorrect": "false" + }, + { + "answerText": "Dışarıda bırakma (Hold-out) doğrulaması", + "isCorrect": "true" + }, + { + "answerText": "Birini dışarıda bırakma (Leave one out) doğrulaması", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 11, + "title": "Regresyon için Verileri Hazırlayın ve Görselleştirin: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Verilerin görselleştirilmesi için bu Python modüllerinden hangisi kullanılır?", + "answerOptions": [ + { + "answerText": "Numpy", + "isCorrect": "false" + }, + { + "answerText": "Scikit-learn", + "isCorrect": "false" + }, + { + "answerText": "Matplotlib", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Veri setinizdeki veri noktalarının yayılımını veya diğer özelliklerini anlamak istiyorsanız yapmanız gereken nedir?", + "answerOptions": [ + { + "answerText": "Veri Görselleştirme", + "isCorrect": "true" + }, + { + "answerText": "Veri Ön İşlemesi", + "isCorrect": "false" + }, + { + "answerText": "Eğitim Test Bölümü", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bunlardan hangisi bir Makine Öğrenimi projesinde Veri Görselleştirme adımının bir parçasıdır?", + "answerOptions": [ + { + "answerText": "Belirli bir Makine Öğrenimi algoritması kullanma", + "isCorrect": "false" + }, + { + "answerText": "Farklı çizim yöntemlerini kullanarak verilerin görsel bir temsilini oluşturma", + "isCorrect": "true" + }, + { + "answerText": "Bir veri kümesinin değerlerini normalleştirme", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 12, + "title": "Regresyon için Verileri Hazırlayın ve Görselleştirin: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Verisetinizde kayıp verilerin varlığını kontrol etmek istiyorsanız, derste gördüklerinize göre aşağıdaki kod parçacıklarından hangisi doğrudur? Verisetinizin 'dataset' adlı bir değişkende Pandas Dataframe objesi olarak tutulduğunu varsayın.", + "answerOptions": [ + { + "answerText": "dataset.isnull().sum()", + "isCorrect": "true" + }, + { + "answerText": "findMissing(dataset)", + "isCorrect": "false" + }, + { + "answerText": "sum(null(dataset))", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Veri kümenizden farklı veri noktası gruplarının yayılımını anlamak istediğinizde bu çizim yöntemlerinden hangisi yararlıdır?", + "answerOptions": [ + { + "answerText": "Dağılım Grafiği", + "isCorrect": "false" + }, + { + "answerText": "Çizgi Grafiği", + "isCorrect": "false" + }, + { + "answerText": "Çubuk Grafiği", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Veri Görselleştirme size ne söyleyemez?", + "answerOptions": [ + { + "answerText": "Veri noktaları arasındaki ilişkiler", + "isCorrect": "false" + }, + { + "answerText": "Veri kümesinin toplandığı kaynak", + "isCorrect": "true" + }, + { + "answerText": "Veri kümesinde aykırı değerlerin varlığı", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 13, + "title": "Doğrusal ve Polinom Regresyon: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Matplotlib bir ", + "answerOptions": [ + { + "answerText": "çizim kütüphanesidir", + "isCorrect": "false" + }, + { + "answerText": "veri görselleştirme kütüphanesidir", + "isCorrect": "true" + }, + { + "answerText": "ödünç kitap kütüphanesidir", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Doğrusal Regresyon, değişkenler arasındaki ilişkileri çizmek için aşağıdakileri kullanır", + "answerOptions": [ + { + "answerText": "düz bir çizgi", + "isCorrect": "true" + }, + { + "answerText": "bir daire", + "isCorrect": "false" + }, + { + "answerText": "bir eğri", + "isCorrect": "false" + } + ] + }, + { + "questionText": "İyi bir Doğrusal Regresyon modelinin ___ Korelasyon Katsayısı vardır", + "answerOptions": [ + { + "answerText": "düşük", + "isCorrect": "false" + }, + { + "answerText": "yüksek", + "isCorrect": "true" + }, + { + "cevapText": "düz", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 14, + "title": "Doğrusal ve Polinom Regresyon: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Verileriniz doğrusal değilse, ___ tipi bir Regresyon deneyin", + "answerOptions": [ + { + "answerText": "doğrusal", + "isCorrect": "false" + }, + { + "answerText": "küresel", + "isCorrect": "false" + }, + { + "answerText": "polinom", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Bunların tümü Regresyon yöntemleridir", + "answerOptions": [ + { + "answerText": "Falsestep, Ridge, Lasso ve Elasticnet", + "isCorrect": "false" + }, + { + "answerText": "Kademeli, Ridge, Lasso ve Elasticnet", + "isCorrect": "true" + }, + { + "answerText": "Kademeli, Ridge, Lariat ve Elasticnet", + "isCorrect": "false" + } + ] + }, + { + "questionText": "En Küçük Kareler Regresyonunda, regresyon çizgisini çevreleyen tüm veri noktalarının regresyon çizgisine olan mesafelerinin", + "answerOptions": [ + { + "answerText": "kareleri alınır ve sonra çıkarılır", + "isCorrect": "false" + }, + { + "answerText": "çarpımı kullanılır", + "isCorrect": "false" + }, + { + "answerText": "kareleri alınır ve sonra toplanır", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 15, + "title": "Lojistik Regresyon: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Hangisini tahmin etmek için Lojistik Regresyon kullanılır", + "answerOptions": [ + { + "answerText": "bir elmanın olgun olup olmadığı", + "isCorrect": "true" + }, + { + "answerText": "Bir ayda kaç bilet satılabileceği", + "isCorrect": "false" + }, + { + "answerText": "yarın 18.00'de gökyüzünün ne renge döneceği", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Lojistik Regresyon Türleri şunları içerir", + "answerOptions": [ + { + "answerText": "çok terimli ve kardinal", + "isCorrect": "false" + }, + { + "answerText": "çok terimli ve sıralı", + "isCorrect": "true" + }, + { + "answerText": "asıl ve sıralı", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Verilerinizin korelasyonları zayıf ise kullanılacak en iyi Regresyon türü:", + "answerOptions": [ + { + "answerText": "Lojistik", + "isCorrect": "true" + }, + { + "answerText": "Doğrusal", + "isCorrect": "false" + }, + { + "answerText": "Kardinal", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 16, + "title": "Lojistik Regresyon: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Seaborn ne tür bir kütüphanedir?", + "answerOptions": [ + { + "answerText": "veri görselleştirme kütüphanesi", + "isCorrect": "true" + }, + { + "answerText": "haritalama kütüphanesi", + "isCorrect": "false" + }, + { + "answerText": "matematiksel kütüphanesi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir karışıklık matrisi şu şekilde de bilinir:", + "answerOptions": [ + { + "answerText": "hata matrisi", + "isCorrect": "true" + }, + { + "answerText": "doğruluk matrisi", + "isCorrect": "false" + }, + { + "answerText": "isabet matrisi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "İyi bir modelde şunlar bulunur:", + "answerOptions": [ + { + "answerText": "karışıklık matrisinde çok sayıda yanlış pozitif ve gerçek negatif", + "isCorrect": "false" + }, + { + "answerText": "karışıklık matrisinde çok sayıda gerçek pozitif ve gerçek negatif", + "isCorrect": "true" + }, + { + "answerText": "karışıklık matrisinde çok sayıda doğru pozitif ve yanlış negatif", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 17, + "title": "Web Uygulaması Oluşturun: Ders Öncesi Test", + "quiz": [ + { + "questionText": "ONNX ne anlama gelir?", + "answerOptions": [ + { + "answerText": "Sinir Ağı Değişimi üzerinden", + "isCorrect": "false" + }, + { + "answerText": "Açık Sinir Ağı Değişimi", + "isCorrect": "true" + }, + { + "answerText": "Çıkış Sinir Ağı Değişimi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Flask, yaratıcıları tarafından nasıl tanımlanır?", + "answerOptions": [ + { + "answerText": "mini framework", + "isCorrect": "false" + }, + { + "answerText": "büyük framework", + "isCorrect": "false" + }, + { + "answerText": "mikro framework", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Python'un Pickle modülü ne işe yarar", + "answerOptions": [ + { + "answerText": "Bir Python nesnesini serileştirir", + "isCorrect": "false" + }, + { + "answerText": "Bir Python nesnesini serileştirilmiş halden geri getirir", + "isCorrect": "false" + }, + { + "answerText": "Bir Python nesnesini serileştirir ve serileştirilmiş halden geri getirir", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 18, + "title": "Web Uygulaması Oluşturun: Ders Sonrası Test", + "quiz": [ + { + "questionText": "Python kullanarak web üzerinde önceden eğitilmiş bir modeli barındırmak için kullanabileceğimiz araçlar nelerdir?", + "answerOptions": [ + { + "answerText": "Flask", + "isCorrect": "true" + }, + { + "answerText": "TensorFlow.js", + "isCorrect": "false" + }, + { + "answerText": "onnx.js", + "isCorrect": "false" + } + ] + }, + { + "questionText": "SaaS ne anlama gelir?", + "answerOptions": [ + { + "answerText": "Hizmet Olarak Sistem", + "isCorrect": "false" + }, + { + "answerText": "Hizmet Olarak Yazılım", + "isCorrect": "true" + }, + { + "answerText": "Hizmet Olarak Güvenlik", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Scikit-learn'ün LabelEncoder kitaplığı ne işe yarar?", + "answerOptions": [ + { + "answerText": "Verileri alfabetik olarak kodlar", + "isCorrect": "true" + }, + { + "answerText": "Verileri sayısal olarak kodlar", + "isCorrect": "false" + }, + { + "answerText": "Verileri seri olarak kodlar", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 19, + "title": "Sınıflandırma 1: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Sınıflandırma, şununla birçok ortak noktası olan bir denetimli öğrenme şeklidir", + "answerOptions": [ + { + "answerText": "Zaman Serileri", + "isCorrect": "false" + }, + { + "answerText": "Regresyon teknikleri", + "isCorrect": "true" + }, + { + "cevapText": "NLP", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Sınıflandırma hangi soruyu yanıtlamaya yardımcı olabilir?", + "answerOptions": [ + { + "answerText": "Bu e-posta spam mı değil mi?", + "isCorrect": "true" + }, + { + "answerText": "Domuzlar uçabilir mi?", + "isCorrect": "false" + }, + { + "answerText": "Hayatın anlamı nedir?", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Sınıflandırma tekniklerini kullanmanın ilk adımı nedir?", + "answerOptions": [ + { + "answerText": "bir veri kümesinin sınıflarını oluşturma", + "isCorrect": "false" + }, + { + "answerText": "verilerinizi temizleme ve dengeleme", + "isCorrect": "true" + }, + { + "answerText": "bir gruba veya sonuca veri noktası atama", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 20, + "title": "Sınıflandırma 1: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Çok sınıflı soru nedir?", + "answerOptions": [ + { + "answerText": "veri noktalarını birden çok sınıfa sınıflandırma görevi", + "isCorrect": "true" + }, + { + "answerText": "veri noktalarını birkaç sınıftan birine sınıflandırma görevi", + "isCorrect": "true" + }, + { + "answerText": "veri noktalarını birden çok yolla temizleme görevi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Sınıflandırıcılarınızın probleminizi çözmesine yardımcı olmak için tekrarlayan veya yardımcı olmayan verileri temizlemek önemlidir.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Verilerinizi dengelemek için en iyi neden nedir?", + "answerOptions": [ + { + "answerText": "Dengesiz veriler görselleştirmelerde kötü görünüyor", + "isCorrect": "false" + }, + { + "answerText": "Bir ML modeli bir sınıfa doğru eğilmeyeceğinden, verilerinizi dengelemek daha iyi sonuçlar verir", + "isCorrect": "true" + }, + { + "answerText": "Verilerinizi dengelemek size daha fazla veri noktası sağlar", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 21, + "title": "Sınıflandırma 2: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Dengeli, temiz veriler en iyi sınıflandırma sonuçlarını verir", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Doğru sınıflandırıcıyı nasıl seçersiniz?", + "answerOptions": [ + { + "answerText": "Hangi senaryolar için hangi sınıflandırıcıların en iyi çalıştığını öğrenirsiniz", + "isCorrect": "false" + }, + { + "answerText": "Eğitimli tahmin ve kontrol", + "isCorrect": "false" + }, + { + "answerText": "Yukarıdakilerin ikisi de", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Sınıflandırma bir:", + "answerOptions": [ + { + "cevapText": "NLP türüdür", + "isCorrect": "false" + }, + { + "answerText": "Denetimli Öğrenme türüdür", + "isCorrect": "true" + }, + { + "answerText": "Programlama dilidir", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 22, + "title": "Sınıflandırma 2: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "'Çözücü' nedir?", + "answerOptions": [ + { + "answerText": "Çalışmanızı kontrol eden kişi", + "isCorrect": "false" + }, + { + "answerText": "optimizasyon probleminde kullanılacak algoritma", + "isCorrect": "true" + }, + { + "answerText": "bir makine öğrenimi tekniği", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bu derste hangi sınıflandırıcıyı kullandık?", + "answerOptions": [ + { + "answerText": "Lojistik Regresyon", + "isCorrect": "true" + }, + { + "answerText": "Karar Ağaçları", + "isCorrect": "false" + }, + { + "answerText": "Bire-Tüm Çok Sınıflı Sınıflandırıcı", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Sınıflandırma algoritmasının beklendiği gibi çalışıp çalışmadığını nasıl anlarsınız?", + "answerOptions": [ + { + "answerText": "Tahminlerinin doğruluğunu kontrol ederek", + "isCorrect": "true" + }, + { + "answerText": "Diğer algoritmalara karşı kontrol ederek", + "isCorrect": "false" + }, + { + "answerText": "Bu algoritmanın benzer sorunları çözmede ne kadar iyi olduğuna dair geçmiş verilere bakarak", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 23, + "title": "Sınıflandırma 3: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Denemek için iyi bir ilk sınıflandırıcı:", + "answerOptions": [ + { + "answerText": "Doğrusal SVC", + "isCorrect": "true" + }, + { + "answerText": "K-Means", + "isCorrect": "false" + }, + { + "answerText": "Mantıksal SVC", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Düzenlileştirme şunu kontrol eder:", + "answerOptions": [ + { + "answerText": "parametrelerin etkisi", + "isCorrect": "true" + }, + { + "answerText": "eğitim hızının etkisi", + "isCorrect": "false" + }, + { + "answerText": "aykırı değerlerin etkisi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "K-Neighbors (K-Komşu) sınıflandırıcısı şunlar ne için kullanılabilir?", + "answerOptions": [ + { + "answerText": "denetimli öğrenme", + "isCorrect": "false" + }, + { + "answerText": "denetimsiz öğrenme", + "isCorrect": "false" + }, + { + "answerText": "bunların her ikisi", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 24, + "title": "Sınıflandırma 3: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Destek-Vektör sınıflandırıcıları ne ne için kullanılabilir?", + "answerOptions": [ + { + "answerText": "sınıflandırma", + "isCorrect": "false" + }, + { + "answerText": "regresyon", + "isCorrect": "false" + }, + { + "answerText": "bunların her ikisi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Random Forest, ___ bir sınıflandırıcıdır", + "answerOptions": [ + { + "answerText": "topluluk türü", + "isCorrect": "true" + }, + { + "answerText": "dağınık türden", + "isCorrect": "false" + }, + { + "answerText": "birleştirici türden", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Adaboost şunlarla tanınır:", + "answerOptions": [ + { + "answerText": "yanlış sınıflandırılmış öğelerin ağırlıklarına odaklanma", + "isCorrect": "true" + }, + { + "answerText": "aykırı değerlere odaklanma", + "isCorrect": "false" + }, + { + "answerText": "yanlış verilere odaklanma", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 25, + "title": "Sınıflandırma 4: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Öneri sistemleri ne için kullanılabilir?", + "answerOptions": [ + { + "answerText": "İyi bir restoran önermek", + "isCorrect": "false" + }, + { + "answerText": "Denenecek moda önerileri", + "isCorrect": "false" + }, + { + "answerText": "Bunların her ikisi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Bir web uygulamasına bir model gömmek, onun çevrimdışı özellikli olmasına yardımcı olur", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Onnx Runtime ne için kullanılabilir?", + "answerOptions": [ + { + "answerText": "Modelleri bir web uygulamasında çalıştırmak", + "isCorrect": "true" + }, + { + "answerText": "Model eğitmek", + "isCorrect": "false" + }, + { + "answerText": "Hiperparametre ayarlamak", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 26, + "title": "Sınıflandırma 4: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Netron uygulaması size ne konuda yardımcı olur?", + "answerOptions": [ + { + "answerText": "Verileri görselleştirir", + "isCorrect": "false" + }, + { + "answerText": "Modelinizin yapısını görselleştirir", + "isCorrect": "true" + }, + { + "answerText": "Web uygulamanızı test eder", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Scikit-learn modelinizi, Onnx ile kullanacak şekilde dönüştürmek için aşağıdakilerin hangisini kullanabilirsiniz?", + "answerOptions": [ + { + "answerText": "sklearn-app", + "isCorrect": "false" + }, + { + "answerText": "sklearn-web", + "isCorrect": "false" + }, + { + "answerText": "sklearn-onnx", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Modelinizi bir web uygulamasında kullanmaya ne denir?", + "answerOptions": [ + { + "answerText": "çıkarım", + "isCorrect": "true" + }, + { + "answerText": "parazit", + "isCorrect": "false" + }, + { + "answerText": "sigorta", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 27, + "title": "Kümelemeye Giriş: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Kümelemenin gerçek hayattan bir örneği şu olabilir", + "answerOptions": [ + { + "answerText": "Yemek sofrasını kurmak", + "isCorrect": "false" + }, + { + "answerText": "Çamaşırları ayırmak", + "isCorrect": "true" + }, + { + "answerText": "Bakkal alışverişi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bu sektörlerde kümeleme teknikleri kullanılabilir", + "answerOptions": [ + { + "answerText": "bankacılık", + "isCorrect": "false" + }, + { + "answerText": "e-ticaret", + "isCorrect": "false" + }, + { + "answerText": "bunların her ikisi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Kümeleme hangi eğitim türündendir?", + "answerOptions": [ + { + "answerText": "denetimli öğrenme", + "isCorrect": "false" + }, + { + "answerText": "denetimsiz öğrenme", + "isCorrect": "true" + }, + { + "answerText": "pekiştirmeli öğrenme", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 28, + "title": "Kümelemeye Giriş: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Öklid geometrisi, şunların düzenine dayanır:", + "answerOptions": [ + { + "answerText": "eksenler", + "isCorrect": "true" + }, + { + "answerText": "eğriler", + "isCorrect": "false" + }, + { + "answerText": "küreler", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Kümeleme verilerinizin yoğunluğu ne ile ilgilidir?", + "answerOptions": [ + { + "answerText": "gürültü", + "isCorrect": "true" + }, + { + "answerText": "derinlik", + "isCorrect": "false" + }, + { + "answerText": "geçerlilik", + "isCorrect": "false" + } + ] + }, + { + "questionText": "En iyi bilinen kümeleme algoritması nedir?", + "answerOptions": [ + { + "answerText": "k-means", + "isCorrect": "true" + }, + { + "answerText": "k-middle", + "isCorrect": "false" + }, + { + "answerText": "k-mart", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 29, + "title": "K-Means Kümelemesi: Pre-Lecture Quiz", + "quiz": [ + { + "questionText": "K-Means şu alandan türetilmiştir:", + "answerOptions": [ + { + "answerText": "elektrik mühendisliği", + "isCorrect": "false" + }, + { + "answerText": "sinyal işleme", + "isCorrect": "true" + }, + { + "answerText": "hesaplamalı dilbilim", + "isCorrect": "false" + } + ] + }, + { + "questionText": "İyi bir Silhouette puanı şu anlama gelir:", + "answerOptions": [ + { + "answerText": "kümeler iyi ayrılmış ve iyi tanımlanmış", + "isCorrect": "true" + }, + { + "answerText": "birkaç küme var", + "isCorrect": "false" + }, + { + "answerText": "birçok küme var", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Varyans:", + "answerOptions": [ + { + "answerText": "ortalamadan farkların karelerinin ortalaması", + "isCorrect": "false" + }, + { + "answerText": "çok yüksek olursa kümeleme açısından sorun oluşturur", + "isCorrect": "false" + }, + { + "answerText": "bunların her ikisi", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 30, + "title": "K-Means Kümelemesi: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Bir Voronoi diyagramı şunları gösterir:", + "answerOptions": [ + { + "answerText": "bir kümenin varyansı", + "isCorrect": "false" + }, + { + "answerText": "bir kümenin çekirdeği ve bölgesi", + "isCorrect": "true" + }, + { + "answerText": "bir kümenin ataleti", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Atalet:", + "answerOptions": [ + { + "answerText": "kümelerin kendi içinde ne kadar tutarlı olduğunun bir ölçüsü", + "isCorrect": "true" + }, + { + "answerText": "kümelerin ne kadar hareket ettiğinin bir ölçüsü", + "isCorrect": "false" + }, + { + "answerText": "küme kalitesinin bir ölçüsü", + "isCorrect": "false" + } + ] + }, + { + "questionText": "K-Means'i kullanmak için önce 'k' değerini belirlemelisiniz", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 31, + "title": "NLP'ye Giriş: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "NLP bu derslerde ne anlama geliyor?", + "answerOptions": [ + { + "answerText": "Sinirsel Dil İşleme", + "isCorrect": "false" + }, + { + "answerText": "Doğal dil işleme", + "isCorrect": "true" + }, + { + "answerText": "Doğal Dilbilimsel İşleme", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Eliza ne gibi davranan eski bir bottur?", + "answerOptions": [ + { + "answerText": "terapist", + "isCorrect": "true" + }, + { + "answerText": "doktor", + "isCorrect": "false" + }, + { + "answerText": "hemşire", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Alan Turing'in 'Turing Testi' bir bilgisayarın hangi özelliklerini belirlemeye çalışır?", + "answerOptions": [ + { + "answerText": "insandan ayırt edilememe", + "isCorrect": "false" + }, + { + "answerText": "düşünme", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 32, + "title": "NLP'ye Giriş: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Joseph Weizenbaum hangi botu icat etti?", + "answerOptions": [ + { + "answerText": "Elisha", + "isCorrect": "false" + }, + { + "cevapText": "Eliza", + "isCorrect": "true" + }, + { + "answerText": "Eloise", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir konuşma botu şuna dayalı olarak çıktı verir", + "answerOptions": [ + { + "answerText": "Önceden tanımlanmış seçenekleri rastgele seçme", + "isCorrect": "false" + }, + { + "answerText": "Girdileri analiz etme ve makine zekasını kullanma", + "isCorrect": "false" + }, + { + "answerText": "Bunların her ikisi", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Botu nasıl daha etkili hale getirirsiniz?", + "answerOptions": [ + { + "answerText": "Daha fazla soru sorarak", + "isCorrect": "false" + }, + { + "answerText": "Daha fazla veri besleyerek ve buna göre eğiterek", + "isCorrect": "true" + }, + { + "answerText": "Bot aptaldır, öğrenemez :(", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 33, + "title": "NLP Görevleri: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Jetonlaştırma", + "answerOptions": [ + { + "answerText": "Metni noktalama işaretleri ile böler", + "isCorrect": "false" + }, + { + "answerText": "Metni ayrı jetonlara (kelimelere) böler", + "isCorrect": "true" + }, + { + "answerText": "Metni cümlelere böler", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Yerleştirmeler", + "answerOptions": [ + { + "answerText": "kelimelerin kümelenebilmesi için metin verilerini sayılara dönüştürür", + "isCorrect": "true" + }, + { + "answerText": "kelimeleri tümcelere yerleştirir", + "isCorrect": "false" + }, + { + "answerText": "cümleleri paragraflara yerleştirir", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Konuşma Bölümleri Etiketleme", + "answerOptions": [ + { + "answerText": "cümleleri konuşma bölümlerine böler", + "isCorrect": "false" + }, + { + "answerText": "jetonlaştırılmış sözcükleri alır ve bunları konuşmanın bölümlerine göre etiketler", + "isCorrect": "true" + }, + { + "answerText": "cümleleri diyagram haline getirir", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 34, + "title": "NLP Görevleri: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Kelimelerin ne sıklıkta tekrarlandığına dair bir sözlük oluşturun:", + "answerOptions": [ + { + "answerText": "Kelime ve Cümle Sözlüğü", + "isCorrect": "false" + }, + { + "answerText": "Kelime ve Cümle Sıklıkları", + "isCorrect": "true" + }, + { + "answerText": "Kelime ve Cümle Kitaplığı", + "isCorrect": "false" + } + ] + }, + { + "questionText": "N-gram terimi ne anlama gelir?", + "answerOptions": [ + { + "answerText": "Bir metin, belirli bir uzunluktaki sözcük dizilerine bölünebilir", + "isCorrect": "true" + }, + { + "answerText": "Bir kelime, belirli bir uzunluktaki karakter dizilerine bölünebilir", + "isCorrect": "false" + }, + { + "answerText": "Bir metin, belirli bir uzunlukta paragraflara bölünebilir", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Duygu analizi", + "answerOptions": [ + { + "answerText": "olumluluk veya olumsuzluk için bir ifadeyi analiz eder", + "isCorrect": "true" + }, + { + "answerText": "duygusallık için bir ifadeyi analiz eder", + "isCorrect": "false" + }, + { + "answerText": "üzüntü için bir ifadeyi analiz eder", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 35, + "title": "NLP ve Çeviri: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Naif çeviri", + "answerOptions": [ + { + "answerText": "yalnızca sözcükleri çevirir", + "isCorrect": "true" + }, + { + "answerText": "cümle yapısını çevirir", + "isCorrect": "false" + }, + { + "answerText": "duyguları çevirir", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir metin *korpusu* ne anlama gelir?", + "answerOptions": [ + { + "answerText": "Az sayıda metin", + "isCorrect": "false" + }, + { + "answerText": "Çok sayıda metin", + "isCorrect": "true" + }, + { + "answerText": "Bir standart metin", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Bir ML modelinde model oluşturmak için yeterli insan çevirisi varsa, aşağıdakilerden hangisi yapılabilir?", + "answerOptions": [ + { + "answerText": "çevirileri kısaltılabilir", + "isCorrect": "false" + }, + { + "answerText": "çeviriler standartlaştırılabilir", + "isCorrect": "false" + }, + { + "answerText": "çevirilerin doğruluğu iyileştirilebilir", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 36, + "title": "NLP ve Çeviri: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "TextBlob'un çeviri kitaplığının altında yatan şey nedir?", + "answerOptions": [ + { + "answerText": "Google Çeviri", + "isCorrect": "true" + }, + { + "answerText": "Bing", + "isCorrect": "false" + }, + { + "answerText": "Özel bir makine öğrenimi modeli", + "isCorrect": "false" + } + ] + }, + { + "questionText": "`blob.translate`i kullanmak için neye ihtiyacınız vardır?", + "answerOptions": [ + { + "answerText": "internet bağlantısı", + "isCorrect": "true" + }, + { + "answerText": "bir sözlük", + "isCorrect": "false" + }, + { + "answerText": "JavaScript", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Duygu analizi yapmak için nasıl bir ML yaklaşımı izlenmelidir?", + "answerOptions": [ + { + "answerText": "Manuel olarak oluşturulan görüşlere ve puanlara Regresyon teknikleri uygulanır ve kalıplar aranır", + "isCorrect": "false" + }, + { + "answerText": "NLP teknikleri manuel olarak oluşturulan görüşlere ve puanlara uygulanır ve kalıplar aranır", + "isCorrect": "true" + }, + { + "answerText": "Manuel olarak oluşturulan görüşlere ve puanlara Kümeleme teknikleri uygulanır ve kalıplar aranır", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 37, + "title": "NLP 4: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Bir insan tarafından yazılan veya konuşulan metinlerden hangi bilgileri alabiliriz?", + "answerOptions": [ + { + "answerText": "kalıplar ve frekanslar", + "isCorrect": "false" + }, + { + "answerText": "duygu ve anlam", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Duygu analizi nedir?", + "answerOptions": [ + { + "answerText": "bir aile yadigarının manevi değeri olup olmadığına dair bir araştırma", + "isCorrect": "false" + }, + { + "answerText": "duygusal durumları ve öznel bilgileri sistematik olarak tanımlama, çıkarma, ölçme ve inceleme yöntemi", + "isCorrect": "true" + }, + { + "answerText": "Birinin üzgün mü mutlu mu olduğunu anlama yeteneği", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Otel incelemeleri, Python ve duygu analizi veri kümesi kullanılarak hangi soru yanıtlanabilir?", + "answerOptions": [ + { + "answerText": "İncelemelerde en sık kullanılan kelime ve deyimler nelerdir?", + "isCorrect": "true" + }, + { + "answerText": "En iyi havuz hangi tesiste bulunur?", + "isCorrect": "false" + }, + { + "answerText": "Bu otelde vale park hizmeti var mı?", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 38, + "title": "NLP 4: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "NLP'nin özü nedir?", + "answerOptions": [ + { + "answerText": "insan dilini mutlu veya üzgün olarak sınıflandırmak", + "isCorrect": "false" + }, + { + "answerText": "insanın yapmasına gerek kalmadan anlamı veya duyguyu yorumlamak", + "isCorrect": "true" + }, + { + "answerText": "duygudaki aykırı değerleri bulma ve inceleme", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Verileri temizlerken arayabileceğiniz bazı şeyler nelerdir?", + "answerOptions": [ + { + "answerText": "diğer dillerdeki karakterler", + "isCorrect": "false" + }, + { + "answerText": "boş satırlar veya sütunlar", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Üzerinde işlem yapmadan önce verilerinizi ve zaaflarını anlamak önemlidir.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 39, + "title": "NLP 5: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Verileri analiz etmeden önce temizlemek neden önemlidir?", + "answerOptions": [ + { + "answerText": "Bazı sütunlarda eksik veya yanlış veriler olabilir", + "isCorrect": "false" + }, + { + "answerText": "Dağınık veriler, veri kümesi hakkında yanlış sonuçlara yol açabilir", + "isCorrect": "false" + }, + { + "answerText": "Yukarıdakilerin ikisi de", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Verileri temizlemek için bir strateji örneği nedir?", + "answerOptions": [ + { + "answerText": "belirli bir soruyu yanıtlamak için yararlı olmayan sütunları/satırları kaldırma", + "isCorrect": "true" + }, + { + "answerText": "hipotezinize uymayan doğrulanmış değerlerden kurtulma", + "isCorrect": "false" + }, + { + "answerText": "aykırı değerleri ayrı bir tabloya taşımak ve eşleşip eşleşmediklerini görmek için o tablo için hesaplamaları çalıştırmak", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Verileri bir Etiket sütunu kullanarak kategorilere ayırmak faydalı olabilir.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 40, + "title": "NLP 5: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Kullandığımız veri setinin amacı nedir?", + "answerOptions": [ + { + "answerText": "Dünyadaki oteller için kaç tane olumlu ve olumsuz yorum olduğunu görmek", + "isCorrect": "false" + }, + { + "answerText": "En iyi oteli seçmemize yardımcı olacak duyguları ve sütunları eklemek", + "isCorrect": "true" + }, + { + "answerText": "İnsanların belirli yorumları neden bıraktığını analiz etmek", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Duruş sözcükleri nelerdir?", + "answerOptions": [ + { + "answerText": "Bir cümlenin duygusunu değiştirmeyen yaygın İngilizce kelimeler", + "isCorrect": "false" + }, + { + "answerText": "duygu analizini hızlandırmak için kaldırabileceğiniz kelimeler", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Duygu analizini test etmek için, aynı inceleme için gözden geçirenin puanıyla eşleştiğinden emin olun.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 41, + "title": "Zaman Serisine Giriş: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Zaman Serisi Tahmini şu durumlarda yararlıdır", + "answerOptions": [ + { + "answerText": "gelecekteki maliyetlerin belirlenmesi", + "isCorrect": "false" + }, + { + "answerText": "gelecekteki fiyatlandırmayı tahmin etme", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin her ikisi de", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Zaman serisi:", + "answerOptions": [ + { + "answerText": "uzayda ardışık eşit aralıklı noktalardır", + "isCorrect": "false" + }, + { + "answerText": "zamanda ardışık eşit aralıklı noktalardır", + "isCorrect": "true" + }, + { + "answerText": "uzay ve zamanda ardışık eşit aralıklı noktalardır", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Zaman serileri şurada kullanılabilir:", + "answerOptions": [ + { + "answerText": "deprem tahmini", + "isCorrect": "true" + }, + { + "answerText": "bilgisayarlı görü", + "isCorrect": "false" + }, + { + "answerText": "renk analizi", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 42, + "title": "Zaman Serisine Giriş: Ders Sonrası Test", + "quiz": [ + { + "questionText": "Zaman serisi trendleri nedir?", + "answerOptions": [ + { + "answerText": "Zaman içinde ölçülebilir artış ve azalışlar", + "isCorrect": "true" + }, + { + "answerText": "Zamanla gerçekleşen azalmanın ölçümü", + "isCorrect": "false" + }, + { + "answerText": "Zaman içinde artışlar ve azalışlar arasındaki boşluklar", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Aykırı değerler", + "answerOptions": [ + { + "answerText": "standart veri varyansına yakın noktalardır", + "isCorrect": "false" + }, + { + "answerText": "standart veri varyansından çok uzak noktalardır", + "isCorrect": "true" + }, + { + "answerText": "standart veri varyansının dahilindeki noktalardır", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Zaman Serisi Tahmini en çok şunlar için yararlıdır", + "answerOptions": [ + { + "answerText": "Ekonometri", + "isCorrect": "true" + }, + { + "answerText": "Tarih", + "isCorrect": "false" + }, + { + "answerText": "Kütüphaneler", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 43, + "title": "Zaman Serisi ARIMA: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "ARIMA'nın açılımı", + "answerOptions": [ + { + "answerText": "Otomatik Regresif İntegral Hareketli Ortalama", + "isCorrect": "false" + }, + { + "answerText": "Otomatik Regresif Entegre Hareketli Eylem", + "isCorrect": "false" + }, + { + "answerText": "Otomatik Regresif Entegre Hareketli Ortalama", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Durağanlık neyi ifade eder?", + "answerOptions": [ + { + "answerText": "Zaman içinde kaydırıldığında özellikleri değişmeyen veriler", + "isCorrect": "false" + }, + { + "answerText": "Zaman içinde kaydırıldığında dağılımı değişmeyen veriler", + "isCorrect": "true" + }, + { + "answerText": "Zaman içinde kaydırıldığında dağılımı değişen veriler", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Farklandırma", + "answerOptions": [ + { + "answerText": "trendi ve mevsimselliği dengeler", + "isCorrect": "false" + }, + { + "answerText": "trendi ve mevsimselliği artırır", + "isCorrect": "false" + }, + { + "answerText": "trendi ve mevsimselliği ortadan kaldırır", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 44, + "title": "Zaman Serisi ARIMA: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "ARIMA, bir modeli zaman serisi verilerinin özel formuna şu şekilde uydurmak için kullanılır:", + "answerOptions": [ + { + "answerText": "mümkün olduğunca düz", + "isCorrect": "false" + }, + { + "answerText": "mümkün olduğunca yakından", + "isCorrect": "true" + }, + { + "answerText": "dağılım grafikleri aracılığıyla", + "isCorrect": "false" + } + ] + }, + { + "questionText": "SARIMAX ne için kullanılır?", + "answerOptions": [ + { + "answerText": "mevsimsel ARIMA modellerini yönetmek", + "isCorrect": "true" + }, + { + "answerText": "özel ARIMA modellerini yönetmek", + "isCorrect": "false" + }, + { + "answerText": "istatistiksel ARIMA modellerini yönetmek", + "isCorrect": "false" + } + ] + }, + { + "questionText": "'Walk-Forward' doğrulama şunları içerir", + "answerOptions": [ + { + "answerText": "bir modelin doğrulanırken aşamalı olarak yeniden değerlendirilmesi", + "isCorrect": "false" + }, + { + "answerText": "bir modelin doğrulanırken aşamalı olarak yeniden eğitilmesi", + "isCorrect": "true" + }, + { + "answerText": "bir modelin doğrulanırken aşamalı olarak yeniden yapılandırılması", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 45, + "title": "Pekiştirmeli Öğrenme 1: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Pekiştirmeli öğrenme nedir?", + "answerOptions": [ + { + "answerText": "birine bir şeyi anlayana kadar tekrar tekrar öğretmek", + "isCorrect": "false" + }, + { + "answerText": "bir aracının bazı ortamlardaki en uygun davranışını birçok deney çalıştırarak deşifre eden bir öğrenme tekniği", + "isCorrect": "true" + }, + { + "answerText": "birden çok deneyin aynı anda nasıl çalıştırılacağını anlamak", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Eylem politikası nedir?", + "answerOptions": [ + { + "answerText": "herhangi bir durumda eylemi döndüren bir fonksiyon", + "isCorrect": "true" + }, + { + "answerText": "bir eşyayı iade edip edemeyeceğinizi söyleyen bir belge", + "isCorrect": "false" + }, + { + "answerText": "rastgele bir amaç için kullanılan bir fonksiyon", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Ödül fonksiyonu, ortamın her durumu için bir puan döndürür.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "true" + }, + { + "answerText": "yanlış", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 46, + "title": "Pekiştirmeli Öğrenme 1: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Q-öğrenme nedir?", + "answerOptions": [ + { + "answerText": "her durumun 'iyiliğini' kaydetmek için bir mekanizma", + "isCorrect": "false" + }, + { + "answerText": "eylem politikasının bir Q-Tablosu tarafından tanımlandığı bir algoritma", + "isCorrect": "false" + }, + { + "answerText": "yukarıdakilerin tümü", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Q-Tablosu hangi değerler için rastgele yürüyüş ilkesine karşılık gelir?", + "answerOptions": [ + { + "answerText": "hepsi eşit olan değerler", + "isCorrect": "true" + }, + { + "cevapText": "-0.25", + "isCorrect": "false" + }, + { + "answerText": "tüm farklı değerler", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Dersimizde öğrenme süreci boyunca keşif kullanmak, sömürü kullanmaktan daha iyiydi.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "false" + }, + { + "answerText": "yanlış", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 47, + "title": "Pekiştirmeli Öğrenme 2: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Satranç ve Go, süreğen durumları olan oyunlardır.", + "answerOptions": [ + { + "cevapText": "doğru", + "isCorrect": "false" + }, + { + "answerText": "yanlış", + "isCorrect": "true" + } + ] + }, + { + "questionText": "CartPole sorunu nedir?", + "answerOptions": [ + { + "answerText": "aykırı değerleri ortadan kaldırmak için bir işlem", + "isCorrect": "false" + }, + { + "answerText": "alışveriş sepetinizi optimize etmek için bir yöntem", + "isCorrect": "false" + }, + { + "answerText": "dengelemenin basitleştirilmiş bir versiyonu", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Bir oyunda potansiyel durumların farklı senaryolarını oynamak için hangi aracı kullanabiliriz?", + "answerOptions": [ + { + "answerText": "tahmin ve kontrol", + "isCorrect": "false" + }, + { + "answerText": "simülasyon ortamları", + "isCorrect": "true" + }, + { + "answerText": "durum geçiş testi", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 48, + "title": "Pekiştirmeli Öğrenme 2: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Bir ortamda tüm olası eylemleri nerede tanımlarız?", + "answerOptions": [ + { + "answerText": "metodlar", + "isCorrect": "false" + }, + { + "answerText": "eylem uzayı", + "isCorrect": "true" + }, + { + "answerText": "eylem listesi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Sözlükte anahtar/değer çifti olarak hangi çifti kullandık?", + "answerOptions": [ + { + "answerText": "anahtar olarak (durum, eylem), değer olarak Q-Table girdisi", + "isCorrect": "true" + }, + { + "answerText": "anahtar olarak durum, değer olarak eylem", + "isCorrect": "false" + }, + { + "answerText": "anahtar olarak qvalues fonksiyonunun ​​değeri, değer olarak eylem", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Q-öğrenme sırasında kullandığımız hiperparametreler nelerdir?", + "answerOptions": [ + { + "answerText": "q-tablo değeri, mevcut ödül, rastgele eylem", + "isCorrect": "false" + }, + { + "answerText": "öğrenme hızı, indirim faktörü, keşif/sömürü faktörü", + "isCorrect": "true" + }, + { + "answerText": "kümülatif ödüller, öğrenme hızı, keşif faktörü", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 49, + "title": "Gerçek Dünya Uygulamaları: Ders Öncesi Sınav", + "quiz": [ + { + "questionText": "Finans sektöründeki bir makine öğrenimi uygulaması örneği nedir?", + "answerOptions": [ + { + "answerText": "Müşteri deneyimini NLP kullanarak kişiselleştirme", + "isCorrect": "false" + }, + { + "answerText": "Doğrusal regresyon kullanarak servet yönetimi", + "isCorrect": "true" + }, + { + "answerText": "Zaman Serilerini kullanarak enerji yönetimi", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Hastaneler, yeniden hastaneye yatacak hastaların yönetimi için hangi ML tekniğini kullanabilir?", + "answerOptions": [ + { + "answerText": "Kümeleme", + "isCorrect": "true" + }, + { + "answerText": "Zaman Serileri", + "isCorrect": "false" + }, + { + "cevapText": "NLP", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Enerji yönetimi için Zaman Serilerini kullanma örneği nedir?", + "answerOptions": [ + { + "answerText": "Hareket algılayan hayvanlar", + "isCorrect": "false" + }, + { + "answerText": "Akıllı parkmetreler", + "isCorrect": "true" + }, + { + "answerText": "Orman yangınlarının takibi", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 50, + "title": "Gerçek Dünya Uygulamaları: Ders Sonrası Sınav", + "quiz": [ + { + "questionText": "Kredi kartı dolandırıcılığını tespit etmek için hangi ML tekniği kullanılabilir?", + "answerOptions": [ + { + "answerText": "Regresyon", + "isCorrect": "false" + }, + { + "answerText": "Kümeleme", + "isCorrect": "true" + }, + { + "cevapText": "NLP", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Orman yönetiminde hangi ML tekniği örneklendirilmiştir?", + "answerOptions": [ + { + "answerText": "Pekiştirilmiş Öğrenme", + "isCorrect": "true" + }, + { + "answerText": "Zaman Serileri", + "isCorrect": "false" + }, + { + "cevapText": "NLP", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Hangisi Sağlık Hizmetleri sektöründe bir makine öğrenimi uygulaması örneğidir?", + "answerOptions": [ + { + "answerText": "Regresyon kullanarak öğrenci davranışının tahmin edilmesi", + "isCorrect": "false" + }, + { + "answerText": "Sınıflandırıcılar kullanarak klinik araştırmaların yönetimi", + "isCorrect": "true" + }, + { + "answerText": "Sınıflandırıcılar kullanarak hayvanların hareketlerinin algılaması", + "isCorrect": "false" + } + ] + } + ] + } + ] + } +] \ No newline at end of file From ccd8331e4fee255e73068f1f3329ac03fd2c297a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20=C3=87a=C4=9Fatay=20K=C3=B6se?= Date: Mon, 12 Jul 2021 05:11:13 +0300 Subject: [PATCH 55/56] Translate 1.1 and 1.2 to Turkish --- .../1-intro-to-ML/translations/README.tr.md | 114 +++++++++++++++++ .../translations/assignment.tr.md | 9 ++ .../2-history-of-ML/translations/README.tr.md | 117 ++++++++++++++++++ .../translations/assignment.tr.md | 11 ++ 4 files changed, 251 insertions(+) create mode 100644 1-Introduction/1-intro-to-ML/translations/README.tr.md create mode 100644 1-Introduction/1-intro-to-ML/translations/assignment.tr.md create mode 100644 1-Introduction/2-history-of-ML/translations/README.tr.md create mode 100644 1-Introduction/2-history-of-ML/translations/assignment.tr.md diff --git a/1-Introduction/1-intro-to-ML/translations/README.tr.md b/1-Introduction/1-intro-to-ML/translations/README.tr.md new file mode 100644 index 00000000..cfa7e127 --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/README.tr.md @@ -0,0 +1,114 @@ +# Makine Öğrenimine Giriş + +[![ML, AI, Derin öğrenme - Farkları nelerdir?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, Derin öğrenme - Farkları nelerdir?") + +> 🎥 Makine öğrenimi, yapay zeka ve derin öğrenme arasındaki farkı tartışan bir video için yukarıdaki resme tıklayın. + +## [Ders öncesi sınav](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/1?loc=tr) + +### Introduction + +Yeni başlayanlar için klasik makine öğrenimi üzerine olan bu kursa hoş geldiniz! İster bu konuda tamamen yeni olun, ister belli bir alandaki bilgilerini tazelemek isteyen deneyimli bir makine öğrenimi uygulayıcısı olun, aramıza katılmanızdan mutluluk duyarız! Makine öğrenimi çalışmanız için samimi bir başlangıç ​​noktası oluşturmak istiyoruz ve [geri bildiriminizi](https://github.com/microsoft/ML-For-Beginners/discussions) değerlendirmekten, yanıtlamaktan ve hayata geçirmekten memnuniyet duyarız. + +[![Makine Öğrenimine Giriş](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "Makine Öğrenimine Giriş") + +> 🎥 Video için yukarıdaki resme tıklayın: MIT'den John Guttag, makine öğrenimini tanıtıyor +### Makine Öğrenimine Başlamak + +Bu müfredata başlamadan önce, bilgisayarınızın yerel olarak (Jupyter) not defterlerini çalıştırmak için hazır olması gerekir. + +- **Makinenizi bu videolar rehberliğinde yapılandırın**. Bu [video setinde](https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6) makinenizi nasıl kuracağınız hakkında daha fazla bilgi edinin. +- **Python öğrenin**. Ayrıca, veri bilimciler için faydalı bir programlama dili olan ve bu derslerde kullandığımız [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa) programlama dili hakkında temel bilgilere sahip olmanız da önerilir. +- **Node.js ve JavaScript'i öğrenin**. Web uygulamaları oluştururken de bu kursta JavaScript'i birkaç kez kullanıyoruz, bu nedenle [node](https://nodejs.org), [npm](https://www.npmjs.com/) ve ayrıca hem Python hem de JavaScript geliştirme için kullanılabilen [Visual Studio Code](https://code.visualstudio.com/) yüklü olmalıdır. +- **GitHub hesabı oluşturun**. Bizi burada [GitHub](https://github.com) üzerinde bulduğunuza göre, zaten bir hesabınız olabilir, ancak mevcut değilse, bir tane hesap oluşturun ve ardından bu müfredatı kendi başınıza kullanmak için çatallayın (fork). (Bize de yıldız vermekten çekinmeyin 😊) +- **Scikit-learn'ü keşfedin**. Bu derslerde referans verdiğimiz, bir dizi ML kütüphanesinden oluşan [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) hakkında bilgi edinin. + +### Makine öğrenimi nedir? + +'Makine öğrenimi' terimi, günümüzün en popüler ve sık kullanılan terimlerinden biridir. Hangi alanda çalışırsanız çalışın, teknolojiyle ilgili bir tür aşinalığınız varsa, bu terimi en az bir kez duymuş olma ihtimaliniz yüksektir. Bununla birlikte, makine öğreniminin mekanikleri, yani çalışma prensipleri, çoğu insan için bir gizemdir. Makine öğrenimine yeni başlayan biri için konu bazen bunaltıcı gelebilir. Bu nedenle, makine öğreniminin gerçekte ne olduğunu anlamak ve pratik örnekler üzerinden adım adım öğrenmek önemlidir. + +![ML heyecan eğrisi](../images/hype.png) + +> Google Trendler, 'makine öğrenimi' teriminin son 'heyecan eğrisini' gösteriyor + +Büyüleyici gizemlerle dolu bir evrende yaşıyoruz. Stephen Hawking, Albert Einstein ve daha pek çoğu gibi büyük bilim adamları, hayatlarını çevremizdeki dünyanın gizemlerini ortaya çıkaran anlamlı bilgiler aramaya adadılar. Öğrenmenin insani yönü de budur: insan evladı yeni şeyler öğrenir ve yetişkinliğe doğru büyüdükçe her yıl kendi dünyasının yapısını ortaya çıkarır. + +Bir çocuğun beyni ve duyuları, çevrelerindeki gerçekleri algılar ve çocuğun, öğrenilen kalıpları tanımlamak için mantıksal kurallar oluşturmasına yardımcı olan gizli yaşam kalıplarını yavaş yavaş öğrenir. İnsan beyninin öğrenme süreci, insanı bu dünyanın en gelişmiş canlısı yapar. Gizli kalıpları keşfederek sürekli öğrenmek ve sonra bu kalıplar üzerinde yenilik yapmak, yaşamımız boyunca kendimizi giderek daha iyi hale getirmemizi sağlar. Bu öğrenme kapasitesi ve gelişen kabiliyet, [beyin plastisitesi](https://www.simplypsychology.org/brain-plasticity.html) adı verilen bir kavramla ilgilidir. Yüzeysel olarak, insan beyninin öğrenme süreci ile makine öğrenimi kavramları arasında bazı motivasyonel benzerlikler çizebiliriz. + +[İnsan beyni](https://www.livescience.com/29365-human-brain.html) gerçek dünyadaki şeyleri algılar, algılanan bilgileri işler, mantıksal kararlar verir ve koşullara göre belirli eylemler gerçekleştirir. Akıllıca davranmak dediğimiz şey buydu işte. Bir makineye akıllı davranış sürecinin bir kopyasını programladığımızda buna yapay zeka (İngilizce haliyle artificial intelligence, kısaca **AI**) denir. + +Terimler karıştırılabilse de, makine öğrenimi (İngilizce haliyle machine learning, kısaca **ML**), yapay zekanın önemli bir alt kümesidir. **ML, mantıklı karar verme sürecini desteklemek için anlamlı bilgileri ortaya çıkarmak ve algılanan verilerden gizli kalıpları bulmak için özel algoritmalar kullanmakla ilgilenir**. + +![AI, ML, derin öğrenme, veri bilimi](../images/ai-ml-ds.png) + +> Yapay zeka, makine öğrenimi, derin öğrenme ve veri bilimi arasındaki ilişkileri gösteren bir diyagram. Bu infografik, [şu grafikten](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-) ilham alan [Jen Looper](https://twitter.com/jenlooper) tarafından hazırlanmıştır. + +> AI (Artificial Intelligence): Yapay zekâ +> ML(Machine Learning): Makine öğrenimi +> Deep Learning: Derin Öğrenme +> Data Science: Veri bilimi + +## Bu kursta neler öğreneceksiniz + +Bu müfredatta, yalnızca yeni başlayanların bilmesi gereken makine öğreniminin temel kavramlarını ele alacağız. 'Klasik makine öğrenimi' dediğimiz şeyi, öncelikle birçok öğrencinin temel bilgileri öğrenmek için kullandığı mükemmel bir kütüphane olan Scikit-learn'ü kullanarak ele alıyoruz. Daha geniş yapay zeka veya derin öğrenme kavramlarını anlamak için, güçlü bir temel makine öğrenimi bilgisi vazgeçilmezdir ve bu yüzden onu burada sunmak istiyoruz. + +Bu kursta şunları öğreneceksiniz: + +- makine öğreniminin temel kavramları +- ML'nin tarihi +- ML ve adillik +- regresyon ML teknikleri +- sınıflandırma ML teknikleri +- kümeleme ML teknikleri +- doğal dil işleme ML teknikleri +- zaman serisi tahmini ML teknikleri +- pekiştirmeli öğrenme +- ML için gerçek-dünya uygulamaları + +## Neyi kapsamayacağız + +- derin öğrenme +- sinir ağları +- yapay zeka + +Daha iyi bir öğrenme deneyimi sağlamak için, farklı bir müfredatta tartışacağımız sinir ağları, 'derin öğrenme' (sinir ağlarını kullanarak çok katmanlı modeller oluşturma) ve yapay zekânın karmaşıklıklarından kaçınacağız. Ayrıca, bu daha geniş alanın bu yönüne odaklanmak için yakında çıkacak bir veri bilimi müfredatı sunacağız. + +## Neden makine öğrenimi üzerinde çalışmalısınız? + +Sistemler perspektifinden makine öğrenimi, akıllı kararlar almaya yardımcı olmak için verilerden gizli kalıpları öğrenebilen otomatik sistemlerin oluşturulması olarak tanımlanır. + +Bu motivasyon, insan beyninin dış dünyadan algıladığı verilere dayanarak belirli şeyleri nasıl öğrendiğinden bir miktar esinlenmiştir. + +✅ Bir işletmenin, sabit kurallara dayalı bir karar aracı oluşturmak yerine neden makine öğrenimi stratejilerini kullanmayı denemek isteyebileceklerini bir an için düşünün. + +### Makine öğrenimi uygulamaları + +Makine öğrenimi uygulamaları artık neredeyse her yerde ve akıllı telefonlarımız, internete bağlı cihazlarımız ve diğer sistemlerimiz tarafından üretilen, toplumlarımızda akan veriler kadar yaygın hale gelmiş durumda. Son teknoloji makine öğrenimi algoritmalarının muazzam potansiyelini göz önünde bulunduran araştırmacılar, bu algoritmaların çok boyutlu ve çok disiplinli gerçek hayat problemlerini çözme yeteneklerini araştırıyorlar ve oldukça olumlu sonuçlar alıyorlar. + +**Makine öğrenimini birçok şekilde kullanabilirsiniz**: + +- Bir hastanın tıbbi geçmişinden veya raporlarından hastalık olasılığını tahmin etmek +- Hava olaylarını tahmin etmek için hava durumu verilerini kullanmak +- Bir metnin duygu durumunu anlamak +- Propagandanın yayılmasını durdurmak için sahte haberleri tespit etmek + +Finans, ekonomi, yer bilimi, uzay araştırmaları, biyomedikal mühendislik, bilişsel bilim ve hatta beşeri bilimlerdeki alanlar, kendi alanlarının zorlu ve ağır veri işleme sorunlarını çözmek için makine öğrenimini tekniklerini kullanmaya başladılar. + +Makine öğrenimi, gerçek dünyadan veya oluşturulan verilerden anlamlı içgörüler bularak örüntü bulma sürecini otomatikleştirir. Diğerlerinin yanı sıra iş, sağlık ve finansal uygulamalarda son derece değerli olduğunu kanıtlamıştır. + +Yakın gelecekte, yaygın olarak benimsenmesi nedeniyle makine öğreniminin temellerini anlamak, tüm alanlardan insanlar için bir zorunluluk olacak. + +--- +## 🚀 Meydan Okuma + +Kağıt üzerinde veya [Excalidraw](https://excalidraw.com/) gibi çevrimiçi bir uygulama kullanarak AI, makine öğrenimi, derin öğrenme ve veri bilimi arasındaki farkları anladığınızdan emin olun. Bu tekniklerin her birinin çözmede iyi olduğu bazı problem fikirleri ekleyin. + +## [Ders sonrası test](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2?loc=tr) + +## İnceleme ve Bireysel Çalışma + +Bulutta makine öğrenimi algoritmalarıyla nasıl çalışabileceğiniz hakkında daha fazla bilgi edinmek için bu [Eğitim Patikasını](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-15963-cxa) izleyin. + +## Ödev + +[Haydi başlayalım!](assignment.tr.md) \ No newline at end of file diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.tr.md b/1-Introduction/1-intro-to-ML/translations/assignment.tr.md new file mode 100644 index 00000000..55abaf23 --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/assignment.tr.md @@ -0,0 +1,9 @@ +# Haydi Başlayalım + +## Talimatlar + +Bu not-verilmeyen ödevde, Python bilgilerinizi tazelemeli, geliştirme ortamınızı çalışır duruma getirmeli ve not defterlerini çalıştırabilmelisiniz. + +Bu [Python Eğitim Patikasını](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-15963-cxa) bitirin ve ardından bu tanıtım videolarını izleyerek sistem kurulumunuzu yapın : + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/README.tr.md b/1-Introduction/2-history-of-ML/translations/README.tr.md new file mode 100644 index 00000000..a67f45ec --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/README.tr.md @@ -0,0 +1,117 @@ +# Makine öğreniminin tarihi + +![Bir taslak-notta makine öğrenimi geçmişinin özeti](../../../sketchnotes/ml-history.png) +> [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından hazırlanan taslak-not + +## [Ders öncesi test](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3?loc=tr) + +Bu derste, makine öğrenimi ve yapay zeka tarihindeki önemli kilometre taşlarını inceleyeceğiz. + +Bir alan olarak yapay zekanın (AI) tarihi, makine öğreniminin tarihi ile iç içedir, çünkü makine öğrenimini destekleyen algoritmalar ve bilgi-işlem kapasitesindeki ilerlemeler, yapay zekanın gelişimini beslemektedir. Ayrı bilim alanlanları olarak bu alanlar 1950'lerde belirginleşmeye başlarken, önemli [algoritmik, istatistiksel, matematiksel, hesaplamalı ve teknik keşiflerin](https://wikipedia.org/wiki/Timeline_of_machine_learning) bir kısmı bu dönemden önce gelmiş ve bir kısmı da bu dönem ile örtüşmüştür. Aslında, insanlar [yüzlerce yıldır](https://wikipedia.org/wiki/History_of_artificial_intelligence) bu soruları düşünüyorlar: bu makale bir 'düşünen makine' fikrinin tarihsel entelektüel temellerini tartışıyor. + +## Önemli keşifler + +- 1763, 1812 - [Bayes Teoremi](https://tr.wikipedia.org/wiki/Bayes_teoremi) ve öncülleri. Bu teorem ve uygulamaları, önceki bilgilere dayalı olarak meydana gelen bir olayın olasılığını tanımlayan çıkarımın temelini oluşturur. +- 1805 - [En Küçük Kareler Teorisi](https://tr.wikipedia.org/wiki/En_k%C3%BC%C3%A7%C3%BCk_kareler_y%C3%B6ntemi), Fransız matematikçi Adrien-Marie Legendre tarafından bulunmuştur. Regresyon ünitemizde öğreneceğiniz bu teori, makine öğrenimi modelini veriye uydurmada yardımcı olur. +- 1913 - Rus matematikçi Andrey Markov'un adını taşıyan [Markov Zincirleri](https://tr.wikipedia.org/wiki/Markov_zinciri), önceki bir duruma dayalı olası olaylar dizisini tanımlamak için kullanılır. +- 1957 - [Algılayıcı (Perceptron)](https://tr.wikipedia.org/wiki/Perceptron), derin öğrenmedeki ilerlemelerin temelini oluşturan Amerikalı psikolog Frank Rosenblatt tarafından icat edilen bir tür doğrusal sınıflandırıcıdır. +- 1967 - [En Yakın Komşu](https://wikipedia.org/wiki/Nearest_neighbor), orijinal olarak rotaları haritalamak için tasarlanmış bir algoritmadır. Bir ML bağlamında kalıpları tespit etmek için kullanılır. +- 1970 - [Geri Yayılım](https://wikipedia.org/wiki/Backpropagation), [ileri beslemeli sinir ağlarını](https://wikipedia.org/wiki/Feedforward_neural_network) eğitmek için kullanılır. +- 1982 - [Tekrarlayan Sinir Ağları](https://wikipedia.org/wiki/Recurrent_neural_network), zamansal grafikler oluşturan ileri beslemeli sinir ağlarından türetilen yapay sinir ağlarıdır. + +✅ Biraz araştırma yapın. Makine öğrenimi ve yapay zeka tarihinde önemli olan başka hangi tarihler öne çıkıyor? + +## 1950: Düşünen makineler + +[2019'da halk tarafından](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20. yüzyılın en büyük bilim adamı seçilen gerçekten dikkate değer bir kişi olan Alan Turing'in, 'düşünebilen makine' kavramının temellerini attığı kabul edilir. Kendisine karşı çıkanlara yanıt olması için ve bu kavramın deneysel kanıtlarını bulma ihtiyacı sebebiyle, NLP derslerimizde keşfedeceğiniz [Turing Testi'ni](https://www.bbc.com/news/technology-18475646) oluşturdu. + +## 1956: Dartmouth Yaz Araştırma Projesi + +"Yapay zeka üzerine Dartmouth Yaz Araştırma Projesi", bir alan olarak yapay zeka için çığır açan bir olaydı ve burada 'yapay zeka' terimi ortaya çıktı ([kaynak](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + +> Öğrenmenin her yönü veya zekanın diğer herhangi bir özelliği, prensipte o kadar kesin bir şekilde tanımlanabilir ki, onu simüle etmek için bir makine yapılabilir. + +Baş araştırmacı, matematik profesörü John McCarthy, "öğrenmenin her yönünün veya zekanın diğer herhangi bir özelliğinin prensipte oldukça kesin bir şekilde tanımlanabileceği varsayımına dayanarak, onu simüle etmek için bir makine yapılabileceği" varsayımının doğru olmasını umarak ilerliyordu. Katılımcılar arasında bu alanın bir diğer önderi olan Marvin Minsky de vardı. + +Çalıştay, "sembolik yöntemlerin yükselişi, sınırlı alanlara odaklanan sistemler (ilk uzman sistemler) ve tümdengelimli sistemlere karşı tümevarımlı sistemler" dahil olmak üzere çeşitli tartışmaları başlatmış ve teşvik etmiştir. ([kaynak](https://tr.wikipedia.org/wiki/Dartmouth_Konferans%C4%B1)). + +## 1956 - 1974: "Altın yıllar" + +1950'lerden 70'lerin ortalarına kadar, yapay zekanın birçok sorunu çözebileceği umuduyla iyimserlik arttı. 1967'de Marvin Minsky kendinden emin bir şekilde "Bir nesil içinde... 'yapay zeka' yaratma sorunu büyük ölçüde çözülecek" dedi. (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall) + +Doğal dil işleme araştırmaları gelişti, aramalar iyileştirildi ve daha güçlü hale getirildi, ve basit görevlerin sade dil talimatları kullanılarak tamamlandığı 'mikro dünyalar' kavramı yaratıldı. + +Araştırmalar, devlet kurumları tarafından iyi finanse edildi, hesaplamalar ve algoritmalarda ilerlemeler kaydedildi ve akıllı makinelerin prototipleri yapıldı. Bu makinelerden bazıları şunlardır: + +* [Robot Shakey](https://wikipedia.org/wiki/Shakey_the_robot), manevra yapabilir ve görevleri 'akıllıca' nasıl yerine getireceğine karar verebilir. + + ![Shakey, akıllı bir robot](../images/shakey.jpg) + > 1972'de Shakey + +* Erken bir 'sohbet botu' olan Eliza, insanlarla sohbet edebilir ve ilkel bir 'terapist' gibi davranabilirdi. NLP derslerinde Eliza hakkında daha fazla bilgi edineceksiniz. + + ![Eliza, bir bot](../images/eliza.png) + > Bir sohbet robotu olan Eliza'nın bir versiyonu + +* "Dünya Blokları", blokların üst üste koyulabilecekleri, sıralanabilecekleri ve karar vermeyi öğreten makinelerdeki deneylerin test edilebileceği bir mikro dünyaya örnekti. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) gibi kütüphanelerle oluşturulan gelişmeler, dil işlemeyi ilerletmeye yardımcı oldu. + + [![SHRDLU ile Dünya Blokları](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ile Dünya Blokları" ) + + > 🎥 Video için yukarıdaki resme tıklayın: SHRDLU ile Dünya Blokları + +## 1974 - 1980: "Yapay Zekâ Kışı" + +1970'lerin ortalarına gelindiğinde, 'akıllı makineler' yapmanın karmaşıklığının hafife alındığı ve mevcut hesaplama gücü göz önüne alındığında, verilen vaatlerin abartıldığı ortaya çıktı. Finansman kurudu ve alana olan güven azaldı. Güveni etkileyen bazı sorunlar şunlardı: + +- **Kısıtlıklar**. Hesaplama gücü çok sınırlıydı. +- **Kombinasyonel patlama**. Hesaplama gücü ve yeteneğinde paralel bir evrim olmaksızın, bilgisayarlardan daha fazla soru istendikçe, eğitilmesi gereken parametre miktarı katlanarak arttı. +- **Veri eksikliği**. Algoritmaları test etme, geliştirme ve iyileştirme sürecini engelleyen bir veri kıtlığı vardı. +- **Doğru soruları mı soruyoruz?**. Sorulan sorular sorgulanmaya başlandı. Araştırmacılar mevcut yaklaşımları eleştirmeye başladı: + - Turing testleri, diğer fikirlerin yanı sıra, "Çin odası teorisi" aracılığıyla sorgulanmaya başlandı. Bu teori, "dijital bir bilgisayar, programlanarak dili anlıyormuş gibi gösterilebilir fakat gerçek bir dil anlayışı elde edilemez" savını öne sürmektedir. ([kaynak](https://plato.stanford.edu/entries/chinese-room/) + - "Terapist" ELIZA gibi yapay zekaların topluma tanıtılmasının etiğine meydan okundu. + +Aynı zamanda, çeşitli yapay zekâ düşünce okulları oluşmaya başladı. ["dağınık" ile "düzenli AI"](https://wikipedia.org/wiki/Neats_and_scruffies) uygulamaları arasında bir ikilem kuruldu. _Dağınık_ laboratuvarlar, istenen sonuçları elde edene kadar programlar üzerinde saatlerce ince ayar yaptı. _Düzenli_ laboratuvarlar "mantık ve biçimsel problem çözmeye odaklandı". ELIZA ve SHRDLU, iyi bilinen _dağınık_ sistemlerdi. 1980'lerde, ML sistemlerinin sonuçlarını tekrarlanabilir hale getirmek için talep ortaya çıktıkça, sonuçları daha açıklanabilir olduğu için _düzenli_ yaklaşım yavaş yavaş ön plana çıktı. + +## 1980'ler: Uzman sistemler + +Alan büyüdükçe, şirketlere olan faydası daha net hale geldi ve 1980'lerde 'uzman sistemlerin' yaygınlaşması da bu şekilde meydana geldi. "Uzman sistemler, yapay zeka (AI) yazılımlarının gerçek anlamda başarılı olan ilk formları arasındaydı." ([kaynak](https://tr.wikipedia.org/wiki/Uzman_sistemler)). + +Bu sistem türü aslında kısmen iş gereksinimlerini tanımlayan bir kural aracından ve yeni gerçekleri çıkarmak için kurallar sisteminden yararlanan bir çıkarım aracından oluşan bir _melezdir_. + +Bu çağda aynı zamanda sinir ağlarına artan ilgi de görülmüştür. + +## 1987 - 1993: Yapay Zeka 'Soğuması' + +Özelleşmiş uzman sistem donanımının yaygınlaşması, talihsiz bir şekilde bunları aşırı özelleşmiş hale getirdi. Kişisel bilgisayarların yükselişi de bu büyük, özelleşmiş, merkezi sistemlerle rekabet etti. Bilgisayarın demokratikleşmesi başlamıştı ve sonunda modern büyük veri patlamasının yolunu açtı. + +## 1993 - 2011 + +Bu çağ, daha önce veri ve hesaplama gücü eksikliğinden kaynaklanan bazı sorunları çözebilmek için ML ve AI için yeni bir dönemi getirdi. Veri miktarı hızla artmaya başladı ve özellikle 2007'de akıllı telefonun ortaya çıkmasıyla birlikte iyisiyle kötüsüyle daha yaygın bir şekilde ulaşılabilir hale geldi. Hesaplama gücü katlanarak arttı ve algoritmalar da onunla birlikte gelişti. Geçmişin başıboş günleri gitmiş, yerine giderek olgunlaşan gerçek bir disipline dönüşüm başlamıştı. + +## Şimdi + +Günümüzde makine öğrenimi ve yapay zeka hayatımızın neredeyse her alanına dokunuyor. Bu çağ, bu algoritmaların insan yaşamı üzerindeki risklerinin ve potansiyel etkilerinin dikkatli bir şekilde anlaşılmasını gerektirmektedir. Microsoft'tan Brad Smith'in belirttiği gibi, "Bilgi teknolojisi, gizlilik ve ifade özgürlüğü gibi temel insan hakları korumalarının kalbine giden sorunları gündeme getiriyor. Bu sorunlar, bu ürünleri yaratan teknoloji şirketlerinin sorumluluğunu artırıyor. Bizim açımızdan bakıldığında, düşünceli hükümet düzenlemeleri ve kabul edilebilir kullanımlar etrafında normların geliştirilmesi için de bir çağrı niteliği taşıyor." ([kaynak](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/) )). + +Geleceğin neler getireceğini birlikte göreceğiz, ancak bu bilgisayar sistemlerini ve çalıştırdıkları yazılım ve algoritmaları anlamak önemlidir. Bu müfredatın, kendi kararlarınızı verebilmeniz için daha iyi bir anlayış kazanmanıza yardımcı olacağını umuyoruz. + +[![Derin öğrenmenin tarihi](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "Derin öğrenmenin tarihi") +> 🎥 Video için yukarıdaki resme tıklayın: Yann LeCun bu derste derin öğrenmenin tarihini tartışıyor + +--- +## 🚀Meydan okuma + +Bu tarihi anlardan birine girin ve arkasındaki insanlar hakkında daha fazla bilgi edinin. Büyüleyici karakterler var ve kültürel bir boşlukta hiçbir bilimsel keşif yaratılmadı. Ne keşfedersiniz? + +## [Ders sonrası test](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4?loc=tr) + +## İnceleme ve Bireysel Çalışma + +İşte izlenmesi ve dinlenmesi gerekenler: + +[Amy Boyd'un yapay zekanın evrimini tartıştığı bu podcast](http://runasradio.com/Shows/Show/739) + +[![Amy Boyd ile Yapay Zekâ'nın tarihi](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd ile Yapay Zekâ'nın tarihi") + +## Ödev + +[Bir zaman çizelgesi oluşturun](assignment.tr.md) \ No newline at end of file diff --git a/1-Introduction/2-history-of-ML/translations/assignment.tr.md b/1-Introduction/2-history-of-ML/translations/assignment.tr.md new file mode 100644 index 00000000..f0e87763 --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/assignment.tr.md @@ -0,0 +1,11 @@ +# Bir zaman çizelgesi oluşturun + +## Talimatlar + +[Bu repoyu](https://github.com/Digital-Humanities-Toolkit/timeline-builder) kullanarak; algoritmaların, matematiğin, istatistiğin, AI veya ML'in veya bunların bir kombinasyonunun tarihinin bazı yönlerinin bir zaman çizelgesini oluşturun. Bir kişiye, bir fikre veya bir düşüncenin uzun bir zamanına odaklanabilirsiniz. Multimedya öğeleri eklediğinizden emin olun. + +## Değerlendirme Listesi + +| | Takdir edilesi | Yeterli | İyileştirilmesi Lazım | +| -------- | ------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------- | +| Kriterler | Zaman çizelgesi bir GitHub sayfası olarak yayınlanmış | Kod eksik ve henüz yayınlanmamış | Zaman çizelgesi eksik, iyi araştırılmamış ve yayınlanmamış | \ No newline at end of file From 603c255e5733d26cd518dc1bd6eb33f862cddd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20=C3=87a=C4=9Fatay=20K=C3=B6se?= Date: Mon, 12 Jul 2021 05:12:52 +0300 Subject: [PATCH 56/56] fix: erraneous translation of some object keys --- quiz-app/src/assets/translations/tr.json | 42 ++++++++++++------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/quiz-app/src/assets/translations/tr.json b/quiz-app/src/assets/translations/tr.json index c07894a0..050bbd2a 100644 --- a/quiz-app/src/assets/translations/tr.json +++ b/quiz-app/src/assets/translations/tr.json @@ -126,7 +126,7 @@ "isCorrect": "false" }, { - "cevapText": "1950'ler", + "answerText": "1950'ler", "isCorrect": "true" }, { @@ -179,7 +179,7 @@ "questionText": "'Düzensiz' bir yapay zeka sistemi örneği nedir?", "answerOptions": [ { - "cevapText": "ELIZA", + "answerText": "ELIZA", "isCorrect": "true" }, { @@ -200,7 +200,7 @@ "isCorrect": "true" }, { - "cevapText": "Jibo", + "answerText": "Jibo", "isCorrect": "false" }, { @@ -734,7 +734,7 @@ "isCorrect": "true" }, { - "cevapText": "düz", + "answerText": "düz", "isCorrect": "false" } ] @@ -1042,7 +1042,7 @@ "isCorrect": "true" }, { - "cevapText": "NLP", + "answerText": "NLP", "isCorrect": "false" } ] @@ -1108,7 +1108,7 @@ "questionText": "Sınıflandırıcılarınızın probleminizi çözmesine yardımcı olmak için tekrarlayan veya yardımcı olmayan verileri temizlemek önemlidir.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -1144,7 +1144,7 @@ "questionText": "Dengeli, temiz veriler en iyi sınıflandırma sonuçlarını verir", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -1174,7 +1174,7 @@ "questionText": "Sınıflandırma bir:", "answerOptions": [ { - "cevapText": "NLP türüdür", + "answerText": "NLP türüdür", "isCorrect": "false" }, { @@ -1385,7 +1385,7 @@ "questionText": "Bir web uygulamasına bir model gömmek, onun çevrimdışı özellikli olmasına yardımcı olur", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -1683,7 +1683,7 @@ "questionText": "K-Means'i kullanmak için önce 'k' değerini belirlemelisiniz", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -1763,7 +1763,7 @@ "isCorrect": "false" }, { - "cevapText": "Eliza", + "answerText": "Eliza", "isCorrect": "true" }, { @@ -2135,7 +2135,7 @@ "questionText": "Üzerinde işlem yapmadan önce verilerinizi ve zaaflarını anlamak önemlidir.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -2188,7 +2188,7 @@ "questionText": "Verileri bir Etiket sütunu kullanarak kategorilere ayırmak faydalı olabilir.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -2241,7 +2241,7 @@ "questionText": "Duygu analizini test etmek için, aynı inceleme için gözden geçirenin puanıyla eşleştiğinden emin olun.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -2522,7 +2522,7 @@ "questionText": "Ödül fonksiyonu, ortamın her durumu için bir puan döndürür.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "true" }, { @@ -2562,7 +2562,7 @@ "isCorrect": "true" }, { - "cevapText": "-0.25", + "answerText": "-0.25", "isCorrect": "false" }, { @@ -2575,7 +2575,7 @@ "questionText": "Dersimizde öğrenme süreci boyunca keşif kullanmak, sömürü kullanmaktan daha iyiydi.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "false" }, { @@ -2594,7 +2594,7 @@ "questionText": "Satranç ve Go, süreğen durumları olan oyunlardır.", "answerOptions": [ { - "cevapText": "doğru", + "answerText": "doğru", "isCorrect": "false" }, { @@ -2729,7 +2729,7 @@ "isCorrect": "false" }, { - "cevapText": "NLP", + "answerText": "NLP", "isCorrect": "false" } ] @@ -2769,7 +2769,7 @@ "isCorrect": "true" }, { - "cevapText": "NLP", + "answerText": "NLP", "isCorrect": "false" } ] @@ -2786,7 +2786,7 @@ "isCorrect": "false" }, { - "cevapText": "NLP", + "answerText": "NLP", "isCorrect": "false" } ]