Merge branch 'main' of https://github.com/kenya-sk/ML-For-Beginners into 2.2
commit
695e99216c
@ -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
|
@ -1,6 +0,0 @@
|
||||
- [ ] quiz 1
|
||||
- [ ] written content
|
||||
- [ ] quiz 2
|
||||
- [ ] challenge
|
||||
- [ ] extra reading
|
||||
- [ ] assignment
|
@ -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
|
@ -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)
|
@ -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
|
@ -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)
|
@ -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 |
|
@ -0,0 +1,11 @@
|
||||
# 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 |
|
@ -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)
|
@ -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 |
|
@ -0,0 +1,22 @@
|
||||
# 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 <a href="https://unsplash.com/@bill_oxford?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Bill Oxford</a> su <a href="https://unsplash.com/s/photos/globe?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
### 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)
|
@ -0,0 +1,208 @@
|
||||
# Memulai dengan Python dan Scikit-learn untuk model regresi
|
||||
|
||||
![Ringkisan regresi dalam sebuah catatan sketsa](../../../sketchnotes/ml-regression.png)
|
||||
|
||||
> Catatan sketsa oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
|
||||
|
||||
## [Kuis Pra-ceramah](https://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*. 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).
|
||||
|
||||
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`.
|
||||
|
||||
*Notebook* adalah sebuah lingkungan interaktif yang memungkinkan seorang *developer* untuk menulis kode, catatan, dan dokumentasi mengenai kode tersebut sehingga menjadi sangat berguna untuk proyek eksperimental ataupun riset.
|
||||
|
||||
### Latihan - bekerja dengan sebuah *notebook*
|
||||
|
||||
Dalam folder ini, kamu akan menemukan file _notebook.ipynb_.
|
||||
|
||||
1. Buka _notebook.ipynb_ dalam Visual Studio Code.
|
||||
|
||||
Sebuah server Jupyter akan mulai dengan Python 3+. Kamu akan menemukan bagian-bagian *notebook* yang dapat di-`run` (dijalankan). Bagian-bagian tersebut adalah carikan-carikan kode. Kamu bisa menjalankan secarik kode dengan mengklik tombol ▶.
|
||||
|
||||
2. Pilih ikon `md` dan tambahlah sedikit *markdown*: **# Selamat datang di *notebook* saya!**
|
||||
|
||||
Lalu, tambahlah sedikit kode Python.
|
||||
|
||||
3. Ketik **print('hello notebook')** dalam blok kode.
|
||||
|
||||
4. Klik ▶ untuk menjalankan kode.
|
||||
|
||||
Hasilnya harusnya ini:
|
||||
|
||||
```output
|
||||
hello notebook
|
||||
```
|
||||
|
||||
![Sebuah *notebook* yang dibuka di VS Code](images/notebook.png)
|
||||
|
||||
Kamu bisa menyelipkan catatan-catatan antara kodemu untuk mendokumentasi *notebook*-nya.
|
||||
|
||||
✅ Pikirkanlah sejenak bagaimana lingkungan seorang *web developer* berbeda dengan lingkungan seorang *data scientist*.
|
||||
|
||||
## Berjalan dengan Scikit-learn
|
||||
|
||||
Sekarang, Python sudah siap dalam lingkungan lokalmu, dan kamu sudah nyaman bekerja dengan *Jupyter notebook*. Marilah membiasakan diri dengan Scikit-learn (dilafalkan `saikit lern`; huruf `e` dalam `lern` seperti `e` dalam kata `Perancis`). Scikit-learn menyediakan sebuah [API ekstensif](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu kamu mengerjakan tugas ML.
|
||||
|
||||
Berdasarkan [situs mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn" adalah sebuah *open-source library* untuk *machine-learning* yang dapat digunakan untuk *supervised* dan *unsupervised learning*. Scikit-learn juga menyediakan beragam alat untuk *model-fitting*, *data preprocessing*, seleksi dan evaluasi model, dll.
|
||||
|
||||
Dalam kursus ini, kamu akan menggunakan Scikit-learn dan beberapa alat lainnya untuk membangun model *machine-learning* untuk mengerjakan apa yang kami panggil tugas '*machine-learning* tradisional'. Kami sengaja menghindari *neural networks* dan *deep learning* sebab mereka akan dibahas dengan lebih lengkap dalam kurikulum 'AI untuk pemula' nanti.
|
||||
|
||||
Scikit-learn memudahkan pembangunan dan evaluasi model-model. Dia terutama fokus pada menggunakan data numerik dan mempunyai beberapa *dataset* yang siap sedia untuk digunakan sebagai alat belajar. Dia juga mempunyai model yang sudah dibangun untuk murid-murid untuk langsung coba. Mari menjelajahi proses memuat data yang sudah disiapkan dan menggunakan model ML pengestimasian pertama menggunakan Scikit-learn dengan data sederhana.
|
||||
|
||||
|
||||
## Latihan - Scikit-learn *notebook* pertamamu
|
||||
|
||||
> Tutorial ini terinspirasi [contoh regresi linear ini](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di situs Scikit-learn.
|
||||
|
||||
Dalam file _notebook.ipynb_ dari pelajaran ini, kosongkan semua sel dengan mengklik tombol berlambang 'tempat sampah'.
|
||||
|
||||
Dalam bagian ini, kamu akan bekerja dengan sebuah *dataset* kecil tentang diabetes yang datang bersama dengan Scikit-learn yang dimaksud sebagai bahan ajaran. Bayangkan bahwa kamu ingin mencoba sebuah cara pengobatan untuk pasien diabetes. Model *machine learning* mungkin dapat membantu kamu menentukan pasien mana merespon lebih baik pada pengobatan tersebut berdasarkan kombinasi-kombinasi variabel. Bahkan sebuah model regresi yang sederhana, saat divisualisasikan, dapat menunjukkanmu informasi tentang variabel-variabel yang dapat membantu kamu mengorganisasikan uji-uji klinis teoritismu.
|
||||
|
||||
✅ Ada banyak macam metode regresi, dan yang mana yang kamu pilih tergantung pada jawaban yang kamu sedang cari. Kalau kamu ingin memprediksi tinggi badan seseorang dari usianya, kamu bisa menggunakan regresi linear, karena kamu mencari sebuah **nilai numerik**. Kalau kamu tertarik pada apa sebuah jenis kuliner sebaiknya dianggap sebagai vegan atau tidak, kamu sedang mencari sebuah **kategorisasi/klasifikasi**; kamu bisa menggunakan regresi logistik. Kamu akan belajar lebih banyak tentang regresi logistik nanti. Pikirkan dahulu beberapa pertanyaan yang kamu bisa tanyakan dari data yang ada dan metode yang mana akan paling cocok.
|
||||
|
||||
Mari mulai mengerjakan tugas ini.
|
||||
|
||||
### Impor *library*
|
||||
|
||||
Untuk tugas ini, kita akan mengimpor beberapa *library*:
|
||||
|
||||
- **matplotlib**. Sebuah [alat untuk membuat grafik](https://matplotlib.org/) yang kita akan gunakan untuk membuat sebuah grafik garis.
|
||||
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah sebuah *library* berguna untuk menangani data numerik di Python.
|
||||
- **sklearn**. Ini adalah *library* Scikit-learn.
|
||||
|
||||
Imporlah *library-library* yang akan membantu dengan tugasmu.
|
||||
|
||||
1. Tambahlah impor dengan mengetik kode berikut:
|
||||
|
||||
```python
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from sklearn import datasets, linear_model, model_selection
|
||||
```
|
||||
|
||||
Di atas, kamu sedang mengimpor `matplottlib`, `numpy`. Selain itu, kamu juga sedang mengimpor `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk memisahkan data menjadi set latihan dan set ujian.
|
||||
|
||||
### *Dataset* diabetes
|
||||
|
||||
[*Dataset* diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) mencakupi 442 sampel data mengenai diabetes dengan 10 variabel utama, termasuk:
|
||||
|
||||
- age: usia dalam tahun
|
||||
- bmi: *body mass index*
|
||||
- bp: tekanan darah rata-rata
|
||||
- s1 tc: Sel T (sejenis cel darah putih)
|
||||
|
||||
✅ *Dataset* ini juga mempunyai konsep 'jenis kelamin' sebagai sebuah variabel utama yang penting dalam riset diabetes. Banyak *dataset* medis mempunyai klasifikasi binari ini. Pikirkan sejenak bagaimana kategorisasi seperti yang ini dapat mengecualikan bagian tertentu dari sebuah populasi dari pengobatan.
|
||||
|
||||
Sekarang, muatkan data X dan y.
|
||||
|
||||
> 🎓 Ingatlah, ini adalah *supervised learning*, jadi kita perlu sebuah target (dinamakan 'y').
|
||||
|
||||
Dalam sebuah sel kode yang baru, muatkan *dataset* diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menunjukkan bahwa `X` adalah sebuah matriks data dan `y` adalah target regresi.
|
||||
|
||||
1. Tambah beberapa instruksi *print* untuk menunjukkan ukuran data matriks dan elemen pertama matriks tersebut.
|
||||
```python
|
||||
X, y = datasets.load_diabetes(return_X_y=True)
|
||||
print(X.shape)
|
||||
print(X[0])
|
||||
```
|
||||
|
||||
Respon yang didapati adalah sebuah *tuple*. Kamu sedang menetapkan kedua nilai pertama dalam *tuple* itu ke dalam `X` dan `y` secara berturut. Pelajari lebih banyak [tentant *tuples*](https://wikipedia.org/wiki/Tuple).
|
||||
|
||||
Kamu bisa melihat bahwa data ini berupa 422 nilai yang disusun menjadi beberapa `array` dengan 10 elemen:
|
||||
|
||||
```text
|
||||
(442, 10)
|
||||
[ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
|
||||
-0.04340085 -0.00259226 0.01990842 -0.01764613]
|
||||
```
|
||||
|
||||
✅ Pikirkan sejenak tentang hubungan antara data dan target regresi. Apa kamu bisa menemukan [targetnya](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk *database* diabetes dalam dokumentasinya? Mengetahui targetnya, apa yang *dataset* ini sedang mendemonstrasikan?
|
||||
|
||||
2. Lalu, pilih sebuah porsi dataset ini untuk digambarkan dengan menyusuninya menjadi sebuah `array` baru dengan fungsi `newaxis` dari `numpy`. Kita akan menggunakan regresi linear untuk menggambar sebuah garis antara nilai-nilai dalam data ini sesuai dengan pola yang ditentukannya.
|
||||
|
||||
```python
|
||||
X = X[:, np.newaxis, 2]
|
||||
```
|
||||
|
||||
✅ Kapanpun, *print*-lah datanya untuk memeriksa bentuknya.
|
||||
|
||||
3. Sekarang datanya sudah siap untuk digambar. Kamu bisa melihat jikalau sebuah mesin dapat menentukan sebuah perpisahan logika dari nomor-nomor *dataset* ini. Untuk melakukan itu, kamu harus memisahkan data (X) dan target (y) menjadi set latihan dan set ujian. Scikit-learn juga memberi cara untuk melakukan itu; kamu bisa memisahkan data ujianmu pada titik tertentu.
|
||||
|
||||
```python
|
||||
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
|
||||
```
|
||||
|
||||
4. Sekarang, kamu sudah siap untuk melatihkan modelmu! Muatkan dahulu data regresi linear dan latihkan modelmu dengan set X dan y-mu dengan `model.fit()`:
|
||||
|
||||
```python
|
||||
model = linear_model.LinearRegression()
|
||||
model.fit(X_train, y_train)
|
||||
```
|
||||
|
||||
✅ `model.fit()` adalah sebuah fungsi yang akan kamu temukan dalam banyak *library* ML seperti TensorFlow.
|
||||
|
||||
5. Lalu, buatlah sebuah prediksi dengan data ujianmu dengan fungsi `predict()`. Ini akan digunakan untuk menggambar sebuah garis antara grup-grup data.
|
||||
|
||||
```python
|
||||
y_pred = model.predict(X_test)
|
||||
```
|
||||
|
||||
6. Sekarang waktunya untuk menggambar data dalam sebuah grafik. Matplotlib adalah sebuah alat yang sangat berguna untuk melakukan itu. Buatlah sebuah petak sebar dari semua X dan y dari set ujian dan gunakan prediksi yang dihasilkan untuk menggambar sebuah garis di tempat yang paling cocok antara grup-grup data modelnya.
|
||||
|
||||
```python
|
||||
plt.scatter(X_test, y_test, color='black')
|
||||
plt.plot(X_test, y_pred, color='blue', linewidth=3)
|
||||
plt.show()
|
||||
```
|
||||
|
||||
![sebuah petak sebar yang menunjukkan titik-titik data sekitar diabetes](./images/scatterplot.png)
|
||||
|
||||
✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus membentang tengah-tengah titik-titik kecil data. Tetapi apa yang sedang garis itu lakukan? Apa kamu bisa melihat bagaimana kamu bisa menggunakan garis ini untuk memprediksi di mana sebuah titik data baru yang tidak pernah dilihat sebelumnya kemungkinan besar akan terletak berhubungan dengan sumbu y grafik ini? Coba jelaskan dalam kata-kata kegunaan praktis model ini.
|
||||
|
||||
Selamat, kamu telah membangun model regresi linear pertamamu, membuat sebuah prediksi darinya, dan menunjukkannya dalam sebuah grafik!
|
||||
|
||||
---
|
||||
## Tantangan
|
||||
|
||||
Gambarkan sebuah variabel yang beda dari *dataset* ini. Petunjuk: edit baris ini: `X = X[:, np.newaxis, 2]`. Mengetahui target *dataset* ini, apa yang kamu bisa menemukan tentang kemajuan diabetes sebagai sebuah penyakit?
|
||||
## [Kuis pasca-ceramah](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/)
|
||||
|
||||
## Review & Pembelajaran Mandiri
|
||||
|
||||
Dalam tutorial ini, kamu bekerja dengan sebuah model regresi linear yang sederhana daripada regresi linear univariat atau berganda. Bacalah sedikit tentang perbedaan antara metode-metode ini atau tontonlah [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
|
||||
|
||||
Bacalah lebih banyak tentang konsep regresi dan pikirkanlah tentang jenis pertanyaan apa saja yang bisa dijawab teknik ini. Cobalah [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) untuk memperdalam pemahamanmu.
|
||||
|
||||
## Tugas
|
||||
|
||||
[*Dataset* yang beda](assignment.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)
|
@ -0,0 +1,306 @@
|
||||
# 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)
|
@ -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 <a href="https://unsplash.com/@teutschmann?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Beth Teutschmann</a> di <a href="https://unsplash.com/s/photos/jack-o-lanterns?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
|
||||
## 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 titik-titik 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/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
|
||||
|
||||
"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*).
|
@ -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;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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)
|
Loading…
Reference in new issue