I denne lektion lærte du om Responsible AI Toolbox, et "open-source, community-drevet projekt, der hjælper dataforskere med at analysere og forbedre AI-systemer." Til denne opgave skal du udforske en af RAI Toolbox's [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) og rapportere dine fund i en opgave eller præsentation.
I denne lektion lærte du om Responsible AI Toolbox, et "open-source, fællesskabsdrevet projekt til at hjælpe datavidenskabsfolk med at analysere og forbedre AI-systemer." Til denne opgave skal du udforske et af RAI Toolbox's [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) og rapportere dine fund i et papir eller en præsentation.
| | En opgave eller PowerPoint-præsentation fremlægges, der diskuterer Fairlearns systemer, den notebook, der blev kørt, og de konklusioner, der blev draget fra at køre den | En opgave fremlægges uden konklusioner | Ingen opgave fremlægges |
| | Et papir eller en powerpoint-præsentation præsenteres, der diskuterer Fairlearns systemer, den notebook, der blev kørt, og de konklusioner, der blev draget ved at køre den | Et papir præsenteres uden konklusioner | Intet papir præsenteres |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål bør betragtes som den autoritative kilde. For vigtig information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
# Byg en regressionsmodel med Scikit-learn: regression på fire måder
# Byg en regressionsmodel ved hjælp af Scikit-learn: regression på fire måder

> Infografik af [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
## Begynderbemærkning
> ### [Denne lektion er også tilgængelig i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introduktion
Lineær regression bruges, når vi vil forudsige en **numerisk værdi** (for eksempel huspris, temperatur eller salg).
Den fungerer ved at finde en ret linje, der bedst repræsenterer forholdet mellem inputfunktioner og output.
Indtil nu har du udforsket, hvad regression er, med eksempeldata fra græskarpris-datasættet, som vi vil bruge gennem hele denne lektion. Du har også visualiseret det med Matplotlib.
I denne lektion fokuserer vi på at forstå konceptet, før vi udforsker mere avancerede regressionsteknikker.

> Infografik af [Dasani Madipalli](https://twitter.com/dasani_decoded)
Nu er du klar til at dykke dybere ned i regression for maskinlæring. Mens visualisering hjælper dig med at forstå data, ligger den virkelige styrke i maskinlæring i _træning af modeller_. Modeller trænes på historiske data for automatisk at fange dataafhængigheder, og de giver dig mulighed for at forudsige resultater for nye data, som modellen ikke har set før.
> ### [Denne lektion findes på R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introduktion
I denne lektion vil du lære mere om to typer regression: _grundlæggende lineær regression_ og _polynomisk regression_, sammen med noget af den matematik, der ligger bag disse teknikker. Disse modeller vil give os mulighed for at forudsige græskarpriser baseret på forskellige inputdata.
Indtil nu har du udforsket, hvad regression er med prøve-data indsamlet fra græskarpris-datasættet, som vi vil bruge igennem hele denne lektion. Du har også visualiseret det ved hjælp af Matplotlib.
[](https://youtu.be/CRxFT8oTDMg "ML for begyndere - Forståelse af lineær regression")
Nu er du klar til at dykke dybere ned i regression inden for ML. Mens visualisering gør det muligt at forstå data, kommer den egentlige kraft ved maskinlæring fra _træning af modeller_. Modeller trænes på historiske data for automatisk at fange dataafhængigheder, og de giver dig mulighed for at forudsige resultater for nye data, som modellen ikke har set før.
I denne lektion vil du lære mere om to typer regression: _basal lineær regression_ og _polynomiel regression_, sammen med noget af den matematik, der ligger til grund for disse teknikker. Disse modeller vil give os mulighed for at forudsige græskarpriser afhængigt af forskellige inputdata.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klik på billedet ovenfor for en kort videooversigt over lineær regression.
> Gennem hele dette pensum antager vi minimal viden om matematik og søger at gøre det tilgængeligt for studerende fra andre områder, så hold øje med noter, 🧮 callouts, diagrammer og andre læringsværktøjer, der kan hjælpe med forståelsen.
> I hele dette pensum antager vi minimal matematikkundskab og søger at gøre det tilgængeligt for studerende med baggrund fra andre felter, så hold øje med noter, 🧮 forklaringer, diagrammer og andre læringsværktøjer til hjælp med forståelsen.
### Forudsætninger
### Forudsætning
Du bør nu være bekendt med strukturen af græskardataene, som vi undersøger. Du kan finde det forudindlæst og forudrenset i denne lektions _notebook.ipynb_-fil. I filen vises græskarprisen pr. bushel i en ny data frame. Sørg for, at du kan køre disse notebooks i kerner i Visual Studio Code.
Du bør nu være bekendt med strukturen i græskardataene, som vi undersøger. Du kan finde det forudindlæst og forudrense i denne lektions _notebook.ipynb_-fil. I filen vises græskarprisen pr. bushel i en ny data frame. Sørg for, at du kan køre disse notebooks i kerner i Visual Studio Code.
### Forberedelse
Som en påmindelse indlæser du disse data for at stille spørgsmål til dem.
Som en påmindelse læser du disse data ind for at kunne stille spørgsmål til dem.
- Hvornår er det bedste tidspunkt at købe græskar?
- Hvilken pris kan jeg forvente for en kasse med miniaturegræskar?
- Skal jeg købe dem i halv-bushel kurve eller i 1 1/9 bushel kasser?
Lad os fortsætte med at grave i disse data.
- Hvornår er det bedste tidspunkt at købe græskar?
- Hvilken pris kan jeg forvente for en kasse miniaturegræskar?
- Skal jeg købe dem i halvbushel-kurve eller i 1 1/9 bushel-kasser?
I den forrige lektion oprettede du en Pandas data frame og fyldte den med en del af det originale datasæt, hvor du standardiserede prisen pr. bushel. Ved at gøre det var du dog kun i stand til at samle omkring 400 datapunkter og kun for efterårsmånederne.
Lad os blive ved med at grave i disse data.
Tag et kig på de data, der er forudindlæst i denne lektions tilhørende notebook. Dataene er forudindlæst, og et indledende scatterplot er oprettet for at vise månedsdata. Måske kan vi få lidt mere detaljeret information om dataenes natur ved at rense dem yderligere.
I den foregående lektion oprettede du en Pandas data frame og fyldte den med en del af det oprindelige datasæt, hvor priserne blev standardiseret pr. bushel. Ved at gøre det kunne du dog kun samle omkring 400 datapunkter og kun for efterårsmånederne.
Tag et kig på de data, vi forudindlæste i denne lektions ledsagende notebook. Dataene er forudindlæst, og et indledende spredningsdiagram er tegnet for at vise månedsdata. Måske kan vi få lidt mere indsigt i dataenes natur ved at rense det yderligere.
## En lineær regressionslinje
Som du lærte i Lektion 1, er målet med en lineær regressionsøvelse at kunne plotte en linje for at:
- **Vis variableforhold**. Vis forholdet mellem variabler
- **Lav forudsigelser**. Lav præcise forudsigelser om, hvor et nyt datapunkt vil falde i forhold til den linje.
Det er typisk for **Least-Squares Regression** at tegne denne type linje. Udtrykket 'least-squares' betyder, at alle datapunkterne omkring regressionslinjen kvadreres og derefter lægges sammen. Ideelt set er den endelige sum så lille som muligt, fordi vi ønsker et lavt antal fejl, eller `least-squares`.
- **Vise variabelrelationer**. Vise forholdet mellem variable
- **Foretage forudsigelser**. Foretage præcise forudsigelser om, hvor et nyt datapunkt vil falde i forhold til den linje.
Det er typisk for **Minste Kvadraters Regression** at tegne denne type linje. Udtrykket "Minste Kvadrater" henviser til processen med at minimere den samlede fejl i vores model. For hvert datapunkt måler vi den lodrette afstand (kaldet residual) mellem det faktiske punkt og vores regressionslinje.
Vi gør dette, fordi vi ønsker at modellere en linje, der har den mindste kumulative afstand fra alle vores datapunkter. Vi kvadrerer også termerne, før vi lægger dem sammen, da vi er interesserede i deres størrelse snarere end deres retning.
Vi kvadrerer disse afstande af to hovedårsager:
> **🧮 Vis mig matematikken**
>
> Denne linje, kaldet _linjen for bedste pasform_, kan udtrykkes ved [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
1. **Størrelse frem for retning:** Vi vil behandle en fejl på -5 på samme måde som en fejl på +5. Kvadrering gør alle værdier positive.
2. **Straffe for afvigere:** Kvadrering giver større vægt til større fejl og tvinger linjen til at holde sig tættere på punkter, som er langt væk.
Derefter lægger vi alle disse kvadrerede værdier sammen. Vores mål er at finde den specifikke linje, hvor dette endelige summen er mindst (mindste mulige værdi)—deraf navnet "Minste Kvadrater".
> **🧮 Vis mig matematikken**
>
> Denne linje, kaldet _den bedste tilpassede linje_, kan udtrykkes ved [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` er den 'forklarende variabel'. `Y` er den 'afhængige variabel'. Hældningen af linjen er `b`, og `a` er y-skæringen, som refererer til værdien af `Y`, når `X = 0`.
> Først beregnes hældningen `b`. Infografik af [Jen Looper](https://twitter.com/jenlooper)
>
> Med andre ord, og med henvisning til det oprindelige spørgsmål om græskardata: "forudsige prisen på et græskar pr. bushel efter måned", ville `X` referere til prisen, og `Y` ville referere til salgsdatoen.
> Beregn værdien af Y. Hvis du betaler omkring $4, må det være april! Infografik af [Jen Looper](https://twitter.com/jenlooper)
>
> Matematikken, der beregner linjen, skal demonstrere hældningen af linjen, som også afhænger af skæringspunktet, eller hvor `Y` er placeret, når `X = 0`.
>
> Du kan se metoden til beregning af disse værdier på [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) webstedet. Besøg også [denne Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) for at se, hvordan talværdierne påvirker linjen.
>
> `X` er den 'forklarende variabel'. `Y` er den 'afhængige variabel'. Hældningen af linjen er `b` og `a` er skæringspunktet med y-aksen, hvilket henviser til værdien af `Y` når `X = 0`.
> Først beregnes hældningen `b`. Infografik af [Jen Looper](https://twitter.com/jenlooper)
>
> Med andre ord, og med henvisning til vores græskardatas oprindelige spørgsmål: "forudsig prisen på et græskar pr. bushel efter måned", ville `X` referere til prisen og `Y` henvise til salgs-måneden.
> Beregn værdien af Y. Hvis du betaler omkring 4 $, må det være april! Infografik af [Jen Looper](https://twitter.com/jenlooper)
>
> Matematikken, der beregner linjen, skal demonstrere hældningen på linjen, som også afhænger af skæringspunktet, eller hvor `Y` er placeret, når `X = 0`.
>
> Du kan se beregningsmetoden for disse værdier på [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) websitet. Besøg også [denne mindst-kvadrater-lommeregner](https://www.mathsisfun.com/data/least-squares-calculator.html) for at se, hvordan værdiernes tal påvirker linjen.
## Korrelation
Et andet begreb, du skal forstå, er **korrelationskoefficienten** mellem givne X- og Y-variabler. Ved hjælp af et scatterplot kan du hurtigt visualisere denne koefficient. Et plot med datapunkter spredt i en pæn linje har høj korrelation, men et plot med datapunkter spredt overalt mellem X og Y har lav korrelation.
Et begreb mere at forstå er **Korrelationskoefficienten** mellem givne X- og Y-variable. Ved hjælp af et spredningsdiagram kan du hurtigt visualisere denne koefficient. En graf med datapunkter spredt i en pæn linje har høj korrelation, mens en graf med datapunkter spredt overalt mellem X og Y har lav korrelation.
En god lineær regressionsmodel vil være en, der har en høj (nærmere 1 end 0) korrelationskoefficient ved hjælp af Least-Squares Regression-metoden med en regressionslinje.
En god lineær regressionsmodel vil være en, der har en høj (tættere på 1 end 0) korrelationskoefficient ved brug af Minste Kvadraters-regressionsmetoden med en regressionslinje.
✅ Kør notebooken, der ledsager denne lektion, og kig på scatterplottet for måned til pris. Ser dataene, der forbinder måned til pris for græskarsalg, ud til at have høj eller lav korrelation ifølge din visuelle fortolkning af scatterplottet? Ændrer det sig, hvis du bruger en mere detaljeret måling i stedet for `Month`, fx *dag i året* (dvs. antal dage siden årets begyndelse)?
✅ Kør notebook'en til denne lektion og se på spredningsdiagrammet for måned og pris. Virker dataene, der forbinder måned til pris for græskarsalg, til at have høj eller lav korrelation baseret på din visuelle fortolkning af spredningsdiagrammet? Ændres det, hvis du bruger en mere finmasket måling i stedet for `Month`, f.eks. *dag på året* (dvs. antal dage siden årets start)?
I koden nedenfor antager vi, at vi har renset dataene og opnået en data frame kaldet `new_pumpkins`, der ligner følgende:
I koden nedenfor antager vi, at vi har renset dataene og opnået en data frame kaldet `new_pumpkins`, som ligner følgende:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kasser | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kasser | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kasser | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kasser | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel-kasser | 15.0 | 15.0 | 13.636364
> Koden til at rense dataene er tilgængelig i [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Vi har udført de samme rengøringsskridt som i den forrige lektion og har beregnet `DayOfYear`-kolonnen ved hjælp af følgende udtryk:
> Koden til at rense dataene findes i [`notebook.ipynb`](notebook.ipynb). Vi har udført de samme rensningsskridt som i den foregående lektion og har beregnet `DayOfYear` kolonnen ved hjælp af følgende udtryk:
Nu hvor du har en forståelse af matematikken bag lineær regression, lad os oprette en regressionsmodel for at se, om vi kan forudsige, hvilken pakke græskar der vil have de bedste græskarpriser. En person, der køber græskar til en feriegræskarplads, vil måske have denne information for at optimere sine køb af græskarpakker til pladsen.
Nu hvor du har en forståelse for matematikken bag lineær regression, lad os oprette en regressionsmodel for at se, om vi kan forudsige, hvilken pakke med græskar der vil have de bedste priser. En person, der køber græskar til en ferie-græskarmark, kunne have brug for denne information for at optimere deres køb af græskarpakker til markedet.
## Søger efter korrelation
[](https://youtu.be/uoRq-lW2eQo "ML for begyndere - Søger efter korrelation: Nøglen til lineær regression")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klik på billedet ovenfor for en kort videooversigt over korrelation.
Fra den forrige lektion har du sandsynligvis set, at gennemsnitsprisen for forskellige måneder ser sådan ud:
Fra den foregående lektion har du sandsynligvis set, at gennemsnitsprisen for forskellige måneder ser sådan ud:
<imgalt="Gennemsnitspris pr. måned" src="../../../../translated_images/da/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Gennemsnitspris efter måned" src="../../../../translated_images/da/barchart.a833ea9194346d76.webp"width="50%"/>
Dette antyder, at der bør være en vis korrelation, og vi kan prøve at træne en lineær regressionsmodel til at forudsige forholdet mellem `Month` og `Price`, eller mellem `DayOfYear` og `Price`. Her er scatterplottet, der viser sidstnævnte forhold:
Dette tyder på, at der burde være en vis korrelation, og vi kan prøve at træne en lineær regressionsmodel til at forudsige forholdet mellem `Month` og `Price`, eller mellem `DayOfYear` og `Price`. Her er spredningsdiagrammet, der viser sidstnævnte forhold:
<imgalt="Scatterplot af pris vs. dag i året" src="../../../../translated_images/da/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Spredningsdiagram over pris vs. dag på året" src="../../../../translated_images/da/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Lad os se, om der er en korrelation ved hjælp af funktionen`corr`:
Lad os se, om der er en korrelation ved hjælp af `corr`funktionen:
Det ser ud til, at korrelationen er ret lille, -0.15 for `Month` og -0.17 for `DayOfMonth`, men der kunne være et andet vigtigt forhold. Det ser ud til, at der er forskellige prisgrupper, der svarer til forskellige græskartyper. For at bekræfte denne hypotese, lad os plotte hver græskarkategori med en anden farve. Ved at sende en `ax`-parameter til scatter-plotfunktionen kan vi plotte alle punkter på samme graf:
Det ser ud til, at korrelationen er ret lille, -0.15 for `Month` og -0.17 for `DayOfMonth`, men der kunne være en anden vigtig sammenhæng. Det ser ud til, at der er forskellige grupper af priser svarende til forskellige græskarsorter. For at bekræfte denne hypotese, lad os plotte hver græskarkategori med en anden farve. Ved at sende en `ax` parameter til `scatter` plotting-funktionen kan vi plotte alle punkter på samme graf:
```python
ax=None
@ -127,75 +140,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Scatterplot af pris vs. dag i året" src="../../../../translated_images/da/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Spredningsdiagram over pris vs. dag på året" src="../../../../translated_images/da/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Hvis vi nu beregner korrelationen mellem `Price` og `DayOfYear` ved hjælp af funktionen `corr`, får vi noget som`-0.27` - hvilket betyder, at det giver mening at træne en forudsigelsesmodel.
Hvis vi nu beregner korrelationen mellem `Price` og `DayOfYear` ved hjælp af `corr` funktionen, får vi noget i retning af`-0.27` - hvilket betyder, at det giver mening at træne en forudsigelsesmodel.
> Før du træner en lineær regressionsmodel, er det vigtigt at sikre, at vores data er rene. Lineær regression fungerer ikke godt med manglende værdier, så det giver mening at fjerne alle tomme celler:
> Før vi træner en lineær regressionsmodel, er det vigtigt at sikre, at vores data er rensede. Lineær regression fungerer ikke godt med manglende værdier, så det giver mening at fjerne alle tomme celler:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
En anden tilgang ville være at udfylde de tomme værdier med gennemsnitsværdier fra den tilsvarende kolonne.
## Simpel lineær regression
[](https://youtu.be/e4c_UP2fSjg "ML for begyndere - Lineær og polynomisk regression med Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klik på billedet ovenfor for en kort videooversigt over lineær og polynomisk regression.
> 🎥 Klik på billedet ovenfor for en kort videooversigt over lineær og polynomiel regression.
For at træne vores lineære regressionsmodel vil vi bruge **Scikit-learn**-biblioteket.
For at træne vores lineære regressionsmodel vil vi bruge **Scikit-learn**biblioteket.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Vi starter med at adskille inputværdier (features) og det forventede output (label) i separate numpy-arrays:
Vi starter med at adskille inputværdier (features) og den forventede output (label) i separate numpy-arrays:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Bemærk, at vi var nødt til at udføre `reshape` på inputdataene, for at Linear Regression-pakken kunne forstå dem korrekt. Lineær Regression forventer et 2D-array som input, hvor hver række af arrayet svarer til en vektor af inputfunktioner. I vores tilfælde, da vi kun har én input, har vi brug for et array med form N×1, hvor N er datamængdens størrelse.
> Bemærk, at vi var nødt til at udføre `reshape` på inputdataene, for at Linear Regression-pakken kunne forstå det korrekt. Lineær regression forventer et 2D-array som input, hvor hver række i arrayet svarer til en vektor af inputfeatures. I vores tilfælde, da vi kun har én input, har vi brug for et array med formen N×1, hvor N er datasættets størrelse.
Derefter skal vi opdele dataene i trænings- og testdatasæt, så vi kan validere vores model efter træning:
Derefter skal vi splitte dataene op i trænings- og testdatasæt, så vi kan validere vores model efter træning:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Endelig tager det kun to linjer kode at træne den faktiske lineære regressionsmodel. Vi definerer `LinearRegression`-objektet og tilpasser det til vores data ved hjælp af metoden `fit`:
Endelig tager træningen af den faktiske lineære regressionsmodel kun to kodelinjer. Vi definerer et `LinearRegression`-objekt og fitter det til vores data ved hjælp af `fit`-metoden:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression`-objektet indeholder efter `fit`-processen alle koefficienterne for regressionen, som kan tilgås ved hjælp af `.coef_`-egenskaben. I vores tilfælde er der kun én koefficient, som bør være omkring `-0.017`. Det betyder, at priserne ser ud til at falde lidt med tiden, men ikke meget, omkring 2 cent pr. dag. Vi kan også tilgå skæringspunktet for regressionen med Y-aksen ved hjælp af `lin_reg.intercept_` - det vil være omkring `21` i vores tilfælde, hvilket indikerer prisen i begyndelsen af året.
`LinearRegression`-objektet efter `fit`-ning indeholder alle koefficienterne for regressionen, som kan tilgås ved hjælp af `.coef_`-egenskaben. I vores tilfælde er der kun én koefficient, som burde være omkring `-0.017`. Det betyder, at priserne tilsyneladende falder lidt over tid, men ikke for meget, omkring 2 cent per dag. Vi kan også tilgå skæringspunktet for regressionen med Y-aksen ved hjælp af `lin_reg.intercept_` - det vil være omkring `21` i vores tilfælde, hvilket angiver prisen i begyndelsen af året.
For at se, hvor præcis vores model er, kan vi forudsige priser på et testdatasæt og derefter måle, hvor tæt vores forudsigelser er på de forventede værdier. Dette kan gøres ved hjælp af mean square error (MSE)-metrikken, som er gennemsnittet af alle kvadrerede forskelle mellem forventet og forudsagt værdi.
For at se hvor nøjagtig vores model er, kan vi forudsige priser på et testdatasæt, og derefter måle hvor tæt vores forudsigelser er på de forventede værdier. Dette kan gøres ved hjælp af mean square error (MSE) målemetrik, som er gennemsnittet af alle kvadrerede forskelle mellem forventede og forudsagte værdier.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +216,37 @@ pred = lin_reg.predict(X_test)
Vores fejl ser ud til at ligge omkring 2 punkter, hvilket svarer til ~17%. Ikke så godt. En anden indikator for modelkvalitet er **bestemmelseskoefficienten**, som kan beregnes sådan her:
Vores fejl ser ud til at være omkring 2 point, hvilket er ~17%. Ikke så godt. En anden indikator for modellens kvalitet er **determinationskoefficienten**, som kan opnås på denne måde:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Hvis værdien er 0, betyder det, at modellen ikke tager inputdata i betragtning og fungerer som den *dårligste lineære forudsigelse*, hvilket simpelthen er gennemsnitsværdien af resultatet. Værdien 1 betyder, at vi kan forudsige alle forventede output perfekt. I vores tilfælde er koefficienten omkring 0,06, hvilket er ret lavt.
Hvis værdien er 0, betyder det, at modellen ikke tager inputdata i betragtning, og fungerer som den *værste lineære forudsigelse*, som simpelthen er gennemsnitsværdien af resultatet. Værdien 1 betyder, at vi perfekt kan forudsige alle forventede output. I vores tilfælde er koefficienten omkring 0,06, hvilket er ganske lavt.
Vi kan også plotte testdata sammen med regressionslinjen for bedre at se, hvordan regression fungerer i vores tilfælde:
Vi kan også plotte testdata sammen med regressionslinjen for bedre at se, hvordan regressionen fungerer i vores tilfælde:
En anden type lineær regression er polynomisk regression. Mens der nogle gange er en lineær sammenhæng mellem variabler - jo større græskar i volumen, jo højere pris - kan disse sammenhænge nogle gange ikke plottes som et plan eller en lige linje.
En anden type lineær regression er polynomiel regression. Selvom der nogle gange er et lineært forhold mellem variabler - jo større græskar i volumen, desto højere pris - kan disse forhold til tider ikke plottes som et plan eller en lige linje.
✅ Her er [nogle flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data, der kunne bruge polynomisk regression.
✅ Her er [nogle flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data, som kunne bruge polynomiel regression
Tag et nyt kig på sammenhængen mellem dato og pris. Ser dette scatterplot ud som om det nødvendigvis skal analyseres med en lige linje? Kan priser ikke svinge? I dette tilfælde kan du prøve polynomisk regression.
Tag endnu et kig på forholdet mellem Dato og Pris. Ser dette scatterplot ud som om det nødvendigvis skal analyseres med en lige linje? Kan priser ikke svinge? I dette tilfælde kan du prøve polynomiel regression.
✅ Polynomier er matematiske udtryk, der kan bestå af en eller flere variabler og koefficienter.
✅ Polynomier er matematiske udtryk, som kan bestå af en eller flere variable og koefficienter
Polynomisk regression skaber en buet linje for bedre at tilpasse sig ikke-lineære data. I vores tilfælde, hvis vi inkluderer en kvadreret `DayOfYear`-variabel i inputdata, burde vi kunne tilpasse vores data med en parabolsk kurve, som vil have et minimum på et bestemt tidspunkt i løbet af året.
Polynomiel regression skaber en buet linje for bedre at tilpasse ikke-lineære data. I vores tilfælde, hvis vi medtager et kvadreret `DayOfYear`-variabel i inputdata, bør vi kunne tilpasse vores data med en parabolsk kurve, som vil have et minimum på et bestemt tidspunkt i løbet af året.
Scikit-learn inkluderer en nyttig [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) til at kombinere forskellige trin i databehandlingen. En **pipeline** er en kæde af **estimators**. I vores tilfælde vil vi oprette en pipeline, der først tilføjer polynomiske funktioner til vores model og derefter træner regressionen:
Scikit-learn inkluderer en nyttig [pipelineAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) til at kombinere forskellige trin i databehandlingen sammen. En **pipeline** er en kæde af **estimators**. I vores tilfælde vil vi skabe en pipeline, der først tilføjer polynomielle features til vores model, og derefter træner regressionen:
```python
from sklearn.preprocessing import PolynomialFeatures
Ved at bruge `PolynomialFeatures(2)` betyder det, at vi vil inkludere alle anden-gradspolynomier fra inputdata. I vores tilfælde vil det blot betyde `DayOfYear`<sup>2</sup>, men givet to inputvariabler X og Y, vil dette tilføje X<sup>2</sup>, XY og Y<sup>2</sup>. Vi kan også bruge polynomier af højere grad, hvis vi ønsker det.
At bruge `PolynomialFeatures(2)` betyder, at vi vil inkludere alle andengradspolynomier fra inputdata. I vores tilfælde vil det bare betyde `DayOfYear`<sup>2</sup>, men givet to inputvariabler X og Y, vil dette tilføje X<sup>2</sup>, XY og Y<sup>2</sup>. Vi kan også bruge polynomier med højere grad, hvis vi ønsker.
Pipelines kan bruges på samme måde som det originale `LinearRegression`-objekt, dvs. vi kan `fit` pipelinen og derefter bruge `predict` til at få forudsigelsesresultater. Her er grafen, der viser testdata og tilnærmningskurven:
Pipelines kan bruges på samme måde som det oprindelige `LinearRegression`-objekt, dvs. vi kan `fit` pipelinen og derefter bruge `predict` til at få forudsigelsesresultater. Her er grafen, der viser testdata og tilpasningskurven:
Ved at bruge polynomisk regression kan vi få en lidt lavere MSE og højere bestemmelseskoefficient, men ikke markant. Vi skal tage andre funktioner i betragtning!
Med polynomiel regression kan vi opnå lidt lavere MSE og højere determination, men ikke signifikant. Vi skal tage andre features i betragtning!
> Du kan se, at de laveste græskarpriser observeres omkring Halloween. Hvordan kan du forklare dette?
> Du kan se, at de laveste græskarpriser observeres et sted omkring Halloween. Hvordan kan du forklare dette?
🎃 Tillykke, du har lige oprettet en model, der kan hjælpe med at forudsige prisen på tærtegræskar. Du kan sandsynligvis gentage den samme procedure for alle græskartyper, men det ville være tidskrævende. Lad os nu lære, hvordan man tager græskarsort i betragtning i vores model!
🎃 Tillykke, du har netop skabt en model, der kan hjælpe med at forudsige prisen på tærtegræskar. Du kan sikkert gentage den samme procedure for alle græskartyper, men det ville være kedeligt. Lad os nu lære, hvordan vi tager græskarvariant i betragtning i vores model!
## Kategoriske Funktioner
## Kategoriske Features
I en ideel verden ønsker vi at kunne forudsige priser for forskellige græskarsorter ved hjælp af den samme model. Dog er kolonnen `Variety` noget anderledes end kolonner som `Month`, fordi den indeholder ikke-numeriske værdier. Sådanne kolonner kaldes **kategoriske**.
I en ideel verden vil vi kunne forudsige priser for forskellige græskarvarianter ved hjælp af den samme model. Men `Variety`-kolonnen er lidt anderledes end kolonner som `Month`, fordi den indeholder ikke-numeriske værdier. Sådanne kolonner kaldes **kategoriske**.
[](https://youtu.be/DYGliioIAE0 "ML for begyndere - Kategoriske funktioner med lineær regression")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Klik på billedet ovenfor for en kort videooversigt om brug af kategoriske funktioner.
> 🎥 Klik på billedet ovenfor for en kort videooversigt over brugen af kategoriske features.
Her kan du se, hvordan gennemsnitsprisen afhænger af sorten:
Her kan du se, hvordan gennemsnitsprisen afhænger af variant:
<imgalt="Gennemsnitspris efter sort" src="../../../../translated_images/da/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/da/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
For at tage sorten i betragtning skal vi først konvertere den til numerisk form, eller **kode** den. Der er flere måder, vi kan gøre det på:
For at tage variant i betragtning, skal vi først konvertere den til numerisk form, eller **encode** den. Der er flere måder, vi kan gøre det på:
* Enkel **numerisk kodning** vil oprette en tabel over forskellige sorter og derefter erstatte sortsnavnet med et indeks i den tabel. Dette er ikke den bedste idé for lineær regression, fordi lineær regression tager den faktiske numeriske værdi af indekset og tilføjer det til resultatet, multipliceret med en koefficient. I vores tilfælde er forholdet mellem indeksnummeret og prisen klart ikke-lineært, selv hvis vi sørger for, at indeksene er ordnet på en bestemt måde.
* **One-hot kodning** vil erstatte kolonnen `Variety` med 4 forskellige kolonner, én for hver sort. Hver kolonne vil indeholde `1`, hvis den tilsvarende række er af en given sort, og `0` ellers. Dette betyder, at der vil være fire koefficienter i lineær regression, én for hver græskarsort, ansvarlig for "startpris" (eller rettere "ekstrapris") for den pågældende sort.
* Simpel **numerisk encoding** bygger en tabel over forskellige varianter og erstatter derefter variantnavnet med et indeks i tabellen. Dette er ikke den bedste ide for lineær regression, fordi lineær regression tager den faktiske numeriske værdi af indekset og lægger det til resultatet, multipliceret med en koefficient. I vores tilfælde er forholdet mellem indeksnummer og pris tydeligt ikke-lineært, selv hvis vi sørger for, at indeksene er ordnet på en bestemt måde.
* **One-hot encoding** vil erstatte `Variety`-kolonnen med 4 forskellige kolonner, en for hver variant. Hver kolonne vil indeholde `1`, hvis den tilsvarende række er af den givne variant, og `0` ellers. Det betyder, at der vil være fire koefficienter i lineær regression, én for hver græskarvariant, ansvarlig for "startpris" (eller snarere "ekstra pris") for netop denne variant.
Koden nedenfor viser, hvordan vi kan one-hot kode en sort:
Koden nedenfor viser, hvordan vi kan one-hot encode en variant:
For at træne lineær regression ved hjælp af one-hot kodet sort som input skal vi blot initialisere `X` og `y` data korrekt:
For at træne lineær regression ved brug af one-hot encoded variant som input, skal vi blot initialisere `X` og `y` data korrekt:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Resten af koden er den samme som den, vi brugte ovenfor til at træne lineær regression. Hvis du prøver det, vil du se, at den gennemsnitlige kvadratiske fejl er omtrent den samme, men vi får en meget højere bestemmelseskoefficient (~77%). For at få endnu mere præcise forudsigelser kan vi tage flere kategoriske funktioner i betragtning samt numeriske funktioner som `Month` eller `DayOfYear`. For at få én stor array af funktioner kan vi bruge `join`:
Resten af koden er den samme, som vi brugte ovenfor til at træne lineær regression. Hvis du prøver det, vil du se, at mean squared error er omtrent det samme, men vi får en meget højere determinationskoefficient (~77%). For at få endnu mere præcise forudsigelser kan vi tage flere kategoriske features i betragtning, såvel som numeriske features, såsom `Month` eller `DayOfYear`. For at få et stort array af features kan vi bruge `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +320,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Her tager vi også `City` og `Package` type i betragtning, hvilket giver os MSE 2.84 (10%) og bestemmelse 0.94!
Her tager vi også hensyn til `City` og `Package`-type, hvilket giver os MSE 2,84 (10%) og determination 0,94!
## Samlet set
## At samle det hele
For at lave den bedste model kan vi bruge kombinerede (one-hot kodede kategoriske + numeriske) data fra ovenstående eksempel sammen med polynomisk regression. Her er den komplette kode for din bekvemmelighed:
For at lave den bedste model kan vi bruge kombinerede (one-hot encoded kategoriske + numeriske) data fra ovenstående eksempel sammen med polynomiel regression. Her er den komplette kode for din bekvemmelighed:
```python
# set up training data
# opsæt træningsdata
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# lav trænings- og testopdeling
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Dette burde give os den bedste bestemmelseskoefficient på næsten 97% og MSE=2.23 (~8% forudsigelsesfejl).
Dette skulle give os den bedste determinationskoefficient på næsten 97%, og MSE=2,23 (~8% fejl i forudsigelsen).
| Model | MSE | Bestemmelse |
|-------|-----|-------------|
| `DayOfYear` Lineær | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polynomisk | 2.73 (17.0%) | 0.08 |
| `Variety` Lineær | 5.24 (19.7%) | 0.77 |
| Alle funktioner Lineær | 2.84 (10.5%) | 0.94 |
| Alle funktioner Polynomisk | 2.23 (8.25%) | 0.97 |
| Model | MSE | Determination |
|-------|-----|---------------|
| `DayOfYear` Lineær | 2,77 (17,2%) | 0,07 |
| `DayOfYear` Polynomiel | 2,73 (17,0%) | 0,08 |
| `Variety` Lineær | 5,24 (19,7%) | 0,77 |
| Alle features Lineær | 2,84 (10,5%) | 0,94 |
| Alle features Polynomiel | 2,23 (8,25%) | 0,97 |
🏆 Godt gået! Du har oprettet fire regressionsmodeller i én lektion og forbedret modelkvaliteten til 97%. I den sidste sektion om regression vil du lære om logistisk regression til at bestemme kategorier.
🏆 Godt klaret! Du har skabt fire regressionsmodeller i én lektion og forbedret modelkvaliteten til 97%. I den sidste sektion om regression vil du lære om logistisk regression til bestemmelse af kategorier.
---
## 🚀Udfordring
Test flere forskellige variabler i denne notebook for at se, hvordan korrelation svarer til modelnøjagtighed.
Test flere forskellige variable i denne notesbog for at se, hvordan korrelation svarer til modelnøjagtighed.
## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/)
## Gennemgang & Selvstudie
I denne lektion lærte vi om lineær regression. Der er andre vigtige typer af regression. Læs om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kursus at studere for at lære mere er [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
I denne lektion lærte vi om lineær regression. Der findes andre vigtige typer regression. Læs om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kursus at studere for at lære mere er [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Opgave
## Opgave
[Byg en model](assignment.md)
---
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiske oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
I denne anden lektion om klassifikation vil du udforske flere måder at klassificere numeriske data på. Du vil også lære om konsekvenserne ved at vælge én klassifikator frem for en anden.
I denne anden klassificeringslektion vil du udforske flere måder at klassificere numeriske data på. Du vil også lære om konsekvenserne ved at vælge den ene klassifikator frem for den anden.
## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
Vi antager, at du har gennemført de tidligere lektioner og har et renset datasæt i din `data`-mappe kaldet _cleaned_cuisines.csv_ i roden af denne 4-lektionsmappe.
Vi antager, at du har gennemført de tidligere lektioner og har et renset datasæt i din `data`-mappe kaldet _cleaned_cuisines.csv_ i roden af denne 4-lektionsmappe.
### Forberedelse
Vi har indlæst din _notebook.ipynb_-fil med det rensede datasæt og har opdelt det i X- og y-dataframes, klar til modelbygning.
Vi har indlæst din _notebook.ipynb_-fil med det rensede datasæt og delt det op i X og y dataframes, klar til modelbyggerprocessen.
## Et klassifikationskort
## Et klassificeringskort
Tidligere lærte du om de forskellige muligheder, du har, når du klassificerer data ved hjælp af Microsofts snydeark. Scikit-learn tilbyder et lignende, men mere detaljeret snydeark, der kan hjælpe dig med yderligere at indsnævre dine estimators (et andet ord for klassifikatorer):
Tidligere lærte du om de forskellige muligheder, du har ved klassificering af data ved hjælp af Microsofts snydeark. Scikit-learn tilbyder et lignende, men mere detaljeret snydeark, der yderligere kan hjælpe med at indsnævre dine estimeringsmetoder (et andet ord for klassifikatorer):

> Tip: [besøg dette kort online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) og klik dig igennem for at læse dokumentationen.

> Tip: [besøg dette kort online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) og klik dig igennem stien for at læse dokumentationen.
### Planen
@ -25,18 +25,18 @@ Dette kort er meget nyttigt, når du har et klart overblik over dine data, da du
- Vi har >50 prøver
- Vi ønsker at forudsige en kategori
- Vi har mærkede data
- Vi har mærket data
- Vi har færre end 100K prøver
- ✨ Vi kan vælge en Linear SVC
- Hvis det ikke virker, da vi har numeriske data
- Vi kan prøve en ✨ KNeighbors Classifier
- Hvis det ikke virker, prøv ✨ SVC og ✨ Ensemble Classifiers
- Kan vi prøve en ✨ KNeighbors Classifier
- Hvis det stadig ikke virker, prøv ✨ SVC og ✨ Ensemble Classifiers
Dette er en meget nyttig vej at følge.
Dette er en meget nyttig rute at følge.
## Øvelse - opdel dataene
## Øvelse - del dataene
Følg denne vej, og start med at importere nogle biblioteker, der skal bruges.
Følgende denne sti bør vi starte med at importere nogle biblioteker til brug.
1. Importér de nødvendige biblioteker:
@ -50,17 +50,17 @@ Følg denne vej, og start med at importere nogle biblioteker, der skal bruges.
Support-Vector clustering (SVC) er en del af Support-Vector-maskinerne inden for ML-teknikker (læs mere om disse nedenfor). I denne metode kan du vælge en 'kernel' for at beslutte, hvordan mærkerne skal grupperes. Parameteren 'C' refererer til 'regularization', som regulerer parametrenes indflydelse. Kernelen kan være en af [flere](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); her sætter vi den til 'linear' for at sikre, at vi udnytter Linear SVC. Sandsynlighed er som standard 'false'; her sætter vi den til 'true' for at indsamle sandsynlighedsvurderinger. Vi sætter den tilfældige tilstand til '0' for at blande dataene og få sandsynligheder.
Support-Vector clustering (SVC) er en del af Support-Vector maskiner-familien af ML-teknikker (lær mere om disse nedenfor). Med denne metode kan du vælge en ‘kernel’ for at bestemme, hvordan etiketterne skal grupperes. Parameteren ‘C’ refererer til ‘regularisering’, som regulerer parametrenes indflydelse. Kernelen kan være en af [flere](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); her sætter vi den til ‘linear’ for at sikre, at vi udnytter linear SVC. Probability er som standard sat til ‘false’; her sætter vi den til ‘true’ for at indsamle sandsynlighedsskøn. Vi sætter random state til ‘0’ for at blande dataene og få sandsynligheder.
### Øvelse - anvend en Linear SVC
### Øvelse - anvend en linear SVC
Start med at oprette et array af klassifikatorer. Du vil gradvist tilføje til dette array, mens vi tester.
@ -68,13 +68,13 @@ Start med at oprette et array af klassifikatorer. Du vil gradvist tilføje til d
2. Træn din model ved hjælp af Linear SVC og udskriv en rapport:
2. Træn din model med Linear SVC og udskriv en rapport:
```python
n_classifiers = len(classifiers)
@ -107,19 +107,19 @@ Start med at oprette et array af klassifikatorer. Du vil gradvist tilføje til d
## K-Neighbors klassifikator
K-Neighbors er en del af "neighbors"-familien af ML-metoder, som kan bruges til både superviseret og usuperviseret læring. I denne metode oprettes et foruddefineret antal punkter, og data samles omkring disse punkter, så generaliserede mærker kan forudsiges for dataene.
K-Neighbors hører til i "neighbors"-familien af ML-metoder, som kan bruges til både overvåget og ikke-overvåget læring. I denne metode oprettes et foruddefineret antal punkter, og data samles omkring disse punkter, så generaliserede etiketter kan forudsiges for dataene.
### Øvelse - anvend K-Neighbors klassifikatoren
Den tidligere klassifikator var god og fungerede godt med dataene, men måske kan vi opnå bedre nøjagtighed. Prøv en K-Neighbors klassifikator.
Den forrige klassifikator var god og fungerede godt med dataene, men måske kan vi få bedre nøjagtighed. Prøv en K-Neighbors klassifikator.
1. Tilføj en linje til dit klassifikator-array (tilføj et komma efter Linear SVC-elementet):
1. Tilføj en linje til dit klassifikator-array (tilføj et komma efter Linear SVC-objektet):
```python
'KNN classifier': KNeighborsClassifier(C),
```
Resultatet er lidt dårligere:
Resultatet er en smule dårligere:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -136,15 +136,15 @@ Den tidligere klassifikator var god og fungerede godt med dataene, men måske ka
weighted avg 0.76 0.74 0.74 1199
```
✅ Lær om [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Læs om [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support Vector Classifier
Support-Vector klassifikatorer er en del af [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine)-familien af ML-metoder, der bruges til klassifikations- og regressionopgaver. SVM'er "kortlægger træningseksempler til punkter i rummet" for at maksimere afstanden mellem to kategorier. Efterfølgende data kortlægges ind i dette rum, så deres kategori kan forudsiges.
Support-Vector klassifikatorer er en del af [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) familien af ML-metoder, der bruges til klassificering og regressionsopgaver. SVM'er "afbilder træningseksempler til punkter i rummet" for at maksimere afstanden mellem to kategorier. Efterfølgende data afbildes i dette rum, så deres kategori kan forudsiges.
### Øvelse - anvend en Support Vector Classifier
Lad os prøve at opnå lidt bedre nøjagtighed med en Support Vector Classifier.
Lad os prøve på en lidt bedre nøjagtighed med en Support Vector Classifier.
1. Tilføj et komma efter K-Neighbors-elementet, og tilføj derefter denne linje:
@ -169,11 +169,11 @@ Lad os prøve at opnå lidt bedre nøjagtighed med en Support Vector Classifier.
weighted avg 0.84 0.83 0.83 1199
```
✅ Lær om [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Læs om [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ensemble Classifiers
## Ensemble klassifikatorer
Lad os følge stien helt til slutningen, selvom den tidligere test var ret god. Lad os prøve nogle 'Ensemble Classifiers', specifikt Random Forest og AdaBoost:
Lad os følge stien helt til enden, selvom den tidligere test var ganske god. Lad os prøve nogle 'Ensemble Classifiers', specifikt Random Forest og AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Lær om [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Læs om [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
Denne metode inden for Machine Learning "kombinerer forudsigelserne fra flere basismodeller" for at forbedre modellens kvalitet. I vores eksempel brugte vi Random Trees og AdaBoost.
Denne metode inden for Maskinlæring "kombinerer forudsigelserne fra flere basismetoder" for at forbedre modellens kvalitet. I vores eksempel brugte vi Random Trees og AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), en gennemsnitsmetode, bygger en 'skov' af 'beslutningstræer' med tilfældighed for at undgå overtilpasning. Parameteren n_estimators er sat til antallet af træer.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), en gennemsnitsmetode, bygger en 'skov' af 'beslutningstræer' fyldt med tilfældighed for at undgå overtilpasning. Parameteren n_estimators sættes til antallet af træer.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) tilpasser en klassifikator til et datasæt og tilpasser derefter kopier af den klassifikator til det samme datasæt. Den fokuserer på vægten af forkert klassificerede elementer og justerer tilpasningen for den næste klassifikator for at rette op.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) tilpasser en klassifikator til et datasæt og tilpasser derefter kopier af den klassifikator til det samme datasæt. Den fokuserer på vægtene af forkert klassificerede elementer og justerer tilpasningen for den næste klassifikator for at rette op.
---
## 🚀Udfordring
Hver af disse teknikker har et stort antal parametre, som du kan justere. Undersøg hver enkelt tekniks standardparametre, og overvej, hvad justering af disse parametre ville betyde for modellens kvalitet.
Hver af disse teknikker har et stort antal parametre, som du kan justere. Undersøg standardparametrene for hver enkelt, og overvej, hvad justering af disse parametre ville betyde for modellens kvalitet.
## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/)
Der er mange fagudtryk i disse lektioner, så tag et øjeblik til at gennemgå [denne liste](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) med nyttig terminologi!
Der er meget jargon i disse lektioner, så tag et øjeblik til at gennemgå [denne liste](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) med nyttige termer!
## Opgave
## Opgave
[Parameterleg](assignment.md)
[Parameterleg](assignment.md)
---
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på at sikre nøjagtighed, skal det bemærkes, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
"\n---\n\n**Ansvarsfraskrivelse**:\nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Ansvarsfraskrivelse**:\nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Ansvarsfraskrivelse**:\nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Ansvarsfraskrivelse**:\nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi stræber efter nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Dette repository inkluderer 50+ sprogoversættelser, som betydeligt øger downloadstørrelsen. For at klone uden oversættelser, brug sparse checkout:
>
> Dette repository inkluderer over 50 sprogoversættelser, som væsentligt øger downloadstørrelsen. For at klone uden oversættelser, brug sparse checkout:
Vi har en Discord-lær med AI-serie i gang, lær mere og deltag hos [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. - 30. september 2025. Du vil få tips og tricks til at bruge GitHub Copilot til Data Science.
Vi har en Discord-serie om læring med AI i gang, lær mere og deltag hos [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. til 30. september 2025. Du får tips og tricks til at bruge GitHub Copilot til Data Science.

# Machine Learning for Beginners - Et undervisningsforløb
# Maskinlæring for begyndere - Et undervisningsforløb
> 🌍 Rejs jorden rundt, mens vi udforsker maskinlæring gennem verdens kulturer 🌍
> 🌍 Rejs rundt i verden, mens vi udforsker maskinlæring gennem verdens kulturer 🌍
Cloud Advocates hos Microsoft er glade for at kunne tilbyde et 12-ugers, 26-lektioners undervisningsforløb, der handler om **Maskinlæring**. I dette undervisningsforløb lærer du om det, der nogle gange kaldes **klassisk maskinlæring**, hvor vi primært bruger Scikit-learn som bibliotek og undgår deep learning, som dækkes i vores [AI for Beginners' undervisningsforløb](https://aka.ms/ai4beginners). Kombiner disse lektioner med vores ['Data Science for Beginners' undervisningsforløb](https://aka.ms/ds4beginners)!
Cloud Advocates hos Microsoft er glade for at tilbyde et 12-ugers, 26-lektioners undervisningsforløb, der handler om **maskinlæring**. I dette forløb lærer du om det, der nogle gange kaldes **klassisk maskinlæring**, hvor vi primært bruger Scikit-learn som bibliotek og undgår deep learning, som dækkes i vores [AI for Beginners' undervisningsforløb](https://aka.ms/ai4beginners). Kombiner disse lektioner med vores ['Data Science for Beginners' undervisningsforløb](https://aka.ms/ds4beginners) også!
Rejs med os verden rundt, mens vi anvender disse klassiske teknikker på data fra mange områder af verden. Hver lektion inkluderer quiz før og efter lektionen, skriftlige instruktioner til at gennemføre lektionen, en løsning, en opgave og mere. Vores projektbaserede pædagogik giver dig mulighed for at lære, mens du bygger, hvilket er en dokumenteret måde at få nye færdigheder til at 'sætte sig'.
Rejs med os rundt i verden, mens vi anvender disse klassiske teknikker på data fra mange områder af verden. Hver lektion inkluderer quizzer før og efter lektionen, skriftlige instruktioner til at gennemføre lektionen, en løsning, en opgave og mere. Vores projektbaserede pædagogik giver dig mulighed for at lære samtidig med, at du bygger – en bevist metode til at fastholde nye færdigheder.
**✍️ Hjertelig tak til vores forfattere** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu og Amy Boyd
**✍️ Hjertevarm tak til vores forfattere** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu og Amy Boyd
**🎨 Tak også til vores illustratorer** Tomomi Imura, Dasani Madipalli og Jen Looper
**🙏 Særlig tak 🙏 til vores Microsoft Student Ambassador-forfattere, anmeldere og indholdsbidragydere**, især Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal
**🙏 Særlige tak 🙏 til vores Microsoft Student Ambassador-forfattere, anmeldere og bidragsydere**, især Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal
**🤩 Ekstra tak til Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi og Vidushi Gupta for vores R-lektioner!**
@ -56,30 +66,30 @@ Følg disse trin:
1. **Fork Repositoryet**: Klik på "Fork" knappen øverst til højre på denne side.
> [find alle yderligere ressourcer til dette kursus i vores Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [find alle ekstra ressourcer til dette kursus i vores Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Brug for hjælp?** Tjek vores [Fejlfinding Guide](TROUBLESHOOTING.md) for løsninger på almindelige problemer med installation, opsætning og afvikling af lektioner.
> 🔧 **Skal du bruge hjælp?** Se vores [Fejlsøgningsguide](TROUBLESHOOTING.md) for løsninger på almindelige problemer med installation, opsætning og afvikling af lektioner.
**[Studerende](https://aka.ms/student-page)**, for at bruge dette undervisningsforløb, forker du hele repoet til din egen GitHub-konto og gennemfører øvelserne på egen hånd eller i gruppe:
**[Studerende](https://aka.ms/student-page)**, for at bruge dette undervisningsforløb, forker I hele repoet til jeres egen GitHub-konto og gennemfører øvelserne på egen hånd eller i gruppe:
- Start med en quiz før lektionen.
- Læs lektionen og gennemfør aktiviteterne, stop op og reflekter ved hvert videnscheck.
- Prøv at lave projekterne ved at forstå lektionerne i stedet for blot at afvikle løsningskoden; dog er det koden tilgængelig i `/solution` mapperne i hver projektorienteret lektion.
- Tag quizzen efter lektionen.
- Start med en quiz før forelæsningen.
- Læs gennem forelæsningen og gennemfør aktiviteterne, pausér og reflekter ved hvert videnscheck.
- Prøv at skabe projekterne ved at forstå lektionerne i stedet for blot at køre løsningskoden; den kode findes dog i `/solution` mapperne i hver projektorienteret lektion.
- Tag quizzen efter forelæsningen.
- Gennemfør udfordringen.
- Gennemfør opgaven.
- Efter at have fuldført en lektiongruppe, besøg [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær højt" ved at udfylde den relevante PAT- rubric. En 'PAT' er et Progress Assessment Tool — et rubric du udfylder for at fremme din læring. Du kan også reagere på andre PAT'er, så vi kan lære sammen.
- Efter en lektiongruppe er gennemført, besøg [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær højt" ved at udfylde det relevante PAT-vurderingsskema. En 'PAT' er et Progress Assessment Tool (evaluering) du udfylder for at styrke din læring. Du kan også reagere på andres PAT’er, så vi kan lære sammen.
> Til yderligere studie anbefaler vi at følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduler og læringsstier.
**Lærere**, vi har [inkluderet nogle forslag](for-teachers.md) til, hvordan du bruger dette undervisningsforløb.
**Lærere**, vi har [inkluderet nogle forslag](for-teachers.md) til, hvordan man kan bruge dette undervisningsforløb.
---
## Videovejledninger
## Video-gennemgange
Nogle af lektionerne findes som kort form video. Du kan finde alle disse indlejret i lektionerne eller på [ML for Beginners playliste på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved at klikke på billedet nedenfor.
Nogle af lektionerne findes som korte videoer. Du kan finde dem indlejret i lektionerne eller på [ML for Beginners playlisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved at klikke på billedet nedenfor.
[](https://aka.ms/ml-beginners-videos)
@ -91,77 +101,77 @@ Nogle af lektionerne findes som kort form video. Du kan finde alle disse indlejr
> 🎥 Klik på billedet ovenfor for en video om projektet og de personer, der skabte det!
> 🎥 Klik på billedet ovenfor for en video om projektet og de personer, som skabte det!
---
## Pædagogik
Vi har valgt to pædagogiske principper, mens vi bygger dette undervisningsforløb: at sikre, at det er praktisk **projektbaseret** og at det indeholder **hyppige quizzer**. Derudover har dette undervisningsforløb et fælles **tema** for at give sammenhæng.
Vi har valgt to pædagogiske principper ved opbygningen af dette forløb: at sikre, at det er praktisk **projektbaseret** og at det inkluderer **hyppige quizzer**. Derudover har forløbet et fælles **tema** for at give sammenhæng.
Ved at sikre at indholdet er tilpasset projekter, bliver processen mere engagerende for eleverne, og fastholdelse af koncepter vil blive forøget. Derudover sætter en lavrisiko-quiz før en klasse elevens intention om at lære et emne, mens en anden quiz efter klassen sikrer yderligere fastholdelse. Dette undervisningsforløb er designet til at være fleksibelt og sjovt og kan tages i sin helhed eller delvist. Projekterne starter små og bliver gradvist mere komplekse frem mod slutningen af 12-ugers perioden. Der er desuden en postscript om virkelige anvendelser af ML, som kan bruges som ekstra point eller som diskussionsgrundlag.
Ved at sikre, at indholdet stemmer overens med projekterne, bliver processen mere engagerende for studerende og fastholdelsen af konceptet øges. Derudover sætter en lav-indsats quiz før klassen den studerendes intention mod at lære et emne, mens en anden quiz efter klassen sikrer yderligere fastholdelse. Dette undervisningsforløb er designet til at være fleksibelt og sjovt og kan gennemføres helt eller delvist. Projekterne starter småt og bliver gradvist mere komplekse mod slutningen af det 12-ugers forløb. Dette forløb inkluderer også et efterskrift om virkelige anvendelser af ML, som kan bruges som ekstra kredit eller som basis for diskussion.
> Find vores [Adfærdskodeks](CODE_OF_CONDUCT.md), [Bidrag](CONTRIBUTING.md), [Oversættelse](TRANSLATIONS.md), og [Fejlfinding](TROUBLESHOOTING.md) retningslinjer. Vi byder konstruktiv feedback velkommen!
> Find vores [Adfærdskodeks](CODE_OF_CONDUCT.md), [Bidragsydning](CONTRIBUTING.md), [Oversættelse](TRANSLATIONS.md) og [Fejlsøgning](TROUBLESHOOTING.md) retningslinjer. Vi værdsætter din konstruktive feedback!
## Hver lektion inkluderer
- valgfri skitsenote
- valgfrit sketchnote
- valgfri supplerende video
- videogennemgang (kun nogle lektioner)
- [varme op quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
- video-gennemgang (kun nogle lektioner)
- [quiz opvarmning før forelæsning](https://ff-quizzes.netlify.app/en/ml/)
- skriftlig lektion
- for projektbaserede lektioner, trin for trin guides til at bygge projektet
- videnscheck
- for projektbaserede lektioner, trin-for-trin vejledninger til at bygge projektet
- videnschecks
- en udfordring
- supplerende læsning
- opgave
- [quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/)
> **Et notat om sprog**: Disse lektioner er primært skrevet i Python, men mange er også tilgængelige i R. For at gennemføre en R-lektion, gå til `/solution` mappen og find R-lektionerne. De inkluderer en .rmd extension, som repræsenterer en **R Markdown**-fil, som kan defineres som en integration af `kodeblokke` (af R eller andre sprog) og en `YAML header` (der guider, hvordan man formaterer output som PDF) i et `Markdown dokument`. Som sådan fungerer den som en eksemplarisk forfatterstruktur for datavidenskab, da den lader dig kombinere din kode, dens output og dine tanker ved at skrive dem ned i Markdown. Derudover kan R Markdown dokumenter outputtes til formater som PDF, HTML eller Word.
> **En note om quizzer**: Alle quizzer findes i [Quiz App-mappen](../../quiz-app), i alt 52 quizzer med tre spørgsmål hver. De er linket fra lektionerne, men quiz-appen kan køres lokalt; følg instruktionerne i `quiz-app`-mappen for at hoste lokalt eller deployere til Azure.
| 01 | Introduktion til maskinlæring | [Introduktion](1-Introduction/README.md) | Lær de grundlæggende begreber bag maskinlæring | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Maskinlæringens historie | [Introduktion](1-Introduction/README.md) | Lær historien bag dette felt | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen og Amy |
| 03 | Retfærdighed og maskinlæring | [Introduktion](1-Introduction/README.md) | Hvad er de vigtige filosofiske spørgsmål om retfærdighed, som studerende bør overveje ved opbygning og anvendelse af ML-modeller? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Teknikker til maskinlæring | [Introduktion](1-Introduction/README.md) | Hvilke teknikker bruger ML-forskere til at bygge ML-modeller? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen |
| 05 | Introduktion til regression | [Regression](2-Regression/README.md)| Kom i gang med Python og Scikit-learn til regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Visualiser og rengør data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg lineære og polynomielle regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau |
| 08 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg en logistisk regressionsmodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En Web App 🔌 | [Web App](3-Web-App/README.md) | Byg en webapp til at bruge din trænede model | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduktion til klassificering | [Klassificering](4-Classification/README.md) | Rengør, forbered og visualiser dine data; introduktion til klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau |
| 11 | Lækre asiatiske og indiske køkkener 🍜 | [Klassificering](4-Classification/README.md) | Introduktion til klassificerere | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau |
| 12 | Lækre asiatiske og indiske køkkener 🍜 | [Klassificering](4-Classification/README.md) | Flere klassificerere | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau |
| 13 | Lækre asiatiske og indiske køkkener 🍜 | [Klassificering](4-Classification/README.md) | Byg en recommender-webapp ved hjælp af din model | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduktion til clustering | [Clustering](5-Clustering/README.md) | Rengør, forbered og visualiser dine data; introduktion til clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Udforskning af nigerianske musiksmag 🎧 | [Clustering](5-Clustering/README.md) | Udforsk K-Means clustering-metoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introduktion til naturlig sprogbehandling ☕️ | [Natural language processing](6-NLP/README.md) | Lær det grundlæggende om NLP ved at bygge en simpel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Almindelige NLP-opgaver ☕️ | [Natural language processing](6-NLP/README.md) | Uddyb din NLP-viden ved at forstå almindelige opgaver, der kræves ved arbejde med sproglige strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Oversættelse og sentimentanalyse ♥️ | [Natural language processing](6-NLP/README.md) | Oversættelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiske hoteller i Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduktion til tidsserieforudsigelser | [Tidsserie](7-TimeSeries/README.md) | Introduktion til tidsserieforudsigelser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieforudsigelser med ARIMA | [Tidsserie](7-TimeSeries/README.md) | Tidsserieforudsigelser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Verdens strømforbrug ⚡️ - tidsserieforudsigelser med SVR | [Tidsserie](7-TimeSeries/README.md) | Tidsserieforudsigelser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduktion til forstærkningslæring | [Forstærkningslæring](8-Reinforcement/README.md) | Introduktion til forstærkningslæring med Q-Læring | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjælp Peter med at undgå ulven! 🐺 | [Forstærkningslæring](8-Reinforcement/README.md) | Forstærkningslæring Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Efterskrift | Virkelige ML-scenarier og anvendelser | [ML i virkeligheden](9-Real-World/README.md) | Interessante og afslørende virkelige anvendelser af klassisk ML | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Efterskrift | Model Debugging i ML ved brug af RAI dashboard | [ML i virkeligheden](9-Real-World/README.md) | Model Debugging i maskinlæring ved hjælp af Responsible AI-dashboard komponenter | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [find alle yderligere ressourcer til dette kursus i vores Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
- [quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/)
> **En bemærkning om sprog**: Disse lektioner er primært skrevet i Python, men mange fås også på R. For at gennemføre en R-lektion, gå til `/solution` mappen og søg efter R-lektioner. De indeholder en .rmd-udvidelse, som repræsenterer en **R Markdown** fil, der enkelt kan defineres som en indlejring af `kodeblokke` (af R eller andre sprog) og en `YAML-header` (der guider hvordan output skal formateres såsom PDF) i et `Markdown dokument`. Som sådan tjener den som en eksemplarisk forfatterramme for datalogi, da den giver dig mulighed for at kombinere din kode, dens output og dine tanker ved at lade dig skrive dem ned i Markdown. Desuden kan R Markdown-dokumenter gengives til outputformater som PDF, HTML eller Word.
> **En bemærkning om quizzer**: Alle quizzer findes i [Quiz App mappen](../../quiz-app), i alt 52 quizzer med tre spørgsmål hver. De er linket til fra lektionerne, men quiz appen kan også køres lokalt; følg instruktionen i `quiz-app`mappen for at hoste lokalt eller deployere til Azure.
| 01 | Introduktion til maskinlæring| [Introduktion](1-Introduction/README.md) | Lær de grundlæggende begreber bag maskinlæring | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Maskinlæringens historie | [Introduktion](1-Introduction/README.md) | Lær historien bag dette felt | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen og Amy |
| 03 | Retfærdighed og maskinlæring| [Introduktion](1-Introduction/README.md) | Hvad er de vigtige filosofiske spørgsmål omkring retfærdighed, som studerende bør overveje, når de bygger og anvender ML-modeller? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Teknikker til maskinlæring | [Introduktion](1-Introduction/README.md) | Hvilke teknikker bruger ML-forskere til at bygge ML-modeller? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen |
| 05 | Introduktion til regression| [Regression](2-Regression/README.md) | Kom godt i gang med Python og Scikit-learn til regressionsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanske græskarpriser 🎃| [Regression](2-Regression/README.md) | Visualiser og rens data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanske græskarpriser 🎃| [Regression](2-Regression/README.md) | Byg lineære og polynomiale regressionsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau |
| 08 | Nordamerikanske græskarpriser 🎃 | [Regression](2-Regression/README.md) | Byg en logistisk regressionsmodel | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En Web App 🔌 | [Web App](3-Web-App/README.md) | Byg en webapp til at bruge din trænede model | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduktion til klassificering | [Classification](4-Classification/README.md) | Rens, forbered og visualiser dine data; introduktion til klassificering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau |
| 11 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Introduktion til klassificer | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau |
| 12 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Flere klassificer | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau |
| 13 | Lækre asiatiske og indiske køkkener 🍜 | [Classification](4-Classification/README.md) | Byg en anbefalings-webapp ved hjælp af din model | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduktion til clustering| [Clustering](5-Clustering/README.md) | Rens, forbered og visualiser dine data; introduktion til clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Udforskning af nigerianske musiksmag 🎧| [Clustering](5-Clustering/README.md) | Udforsk K-Means clustering-metoden | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Introduktion til naturlig sprogbehandling ☕️| [Natural language processing](6-NLP/README.md) | Lær det grundlæggende om NLP ved at bygge en simpel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Almindelige NLP-opgaver ☕️ | [Natural language processing](6-NLP/README.md) | Uddyb din NLP-viden ved at forstå almindelige opgaver, der kræves ved arbejde med sproglige strukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Oversættelse og sentimentanalyse ♥️| [Natural language processing](6-NLP/README.md) | Oversættelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiske hoteller i Europa ♥️| [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiske hoteller i Europa ♥️| [Natural language processing](6-NLP/README.md) | Sentimentanalyse med hotelanmeldelser 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduktion til tidsrække-forecasting | [Time series](7-TimeSeries/README.md) | Introduktion til tidsrække-forecasting | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Verdens strømforbrug ⚡️ - tidsrække-forecasting med ARIMA | [Time series](7-TimeSeries/README.md) | Tidsrække-forecasting med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Verdens strømforbrug ⚡️ - tidsrække-forecasting med SVR | [Time series](7-TimeSeries/README.md) | Tidsrække-forecasting med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduktion til forstærkningslæring | [Reinforcement learning](8-Reinforcement/README.md) | Introduktion til forstærkningslæring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjælp Peter med at undgå ulven! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Forstærkningslæring i Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | Virkelige ML-scenarier og applikationer | [ML in the Wild](9-Real-World/README.md) | Interessante og afslørende virkelige anvendelser af klassisk ML | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Postscript | Fejlfinding af ML-modeller ved brug af RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Fejlfinding af maskinlæringsmodeller ved hjælp af Responsible AI dashboard-komponenter | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [find alle yderligere ressourcer til dette kursus i vores Microsoft Learnsamling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline adgang
Du kan køre denne dokumentation offline ved at bruge [Docsify](https://docsify.js.org/#/). Fork dette repo, [installér Docsify](https://docsify.js.org/#/quickstart) på din lokale maskine, og skriv derefter i rodmappen af dette repo `docsify serve`. Websitet vil blive serveret på port 3000 på din localhost: `localhost:3000`.
Du kan køre denne dokumentation offline ved hjælp af [Docsify](https://docsify.js.org/#/). Fork dette repo, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskine, og i rodmappen for dette repo, skriv`docsify serve`. Websitet vil blive serveret på port 3000 på din localhost: `localhost:3000`.
## PDF'er
Find en pdf af pensum med links [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andre kurser
## 🎒 Andre Kurser
Vores team producerer andre kurser! Tjek dem ud:
@ -172,7 +182,7 @@ Vores team producerer andre kurser! Tjek dem ud:
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agenter
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -180,11 +190,11 @@ Vores team producerer andre kurser! Tjek dem ud:
---
### Generativ AI-serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### Generative AI-serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
@ -207,17 +217,22 @@ Vores team producerer andre kurser! Tjek dem ud:
## Få hjælp
Hvis du sidder fast eller har spørgsmål om at bygge AI-apps. Deltag sammen med medstuderende og erfarne udviklere i diskussioner om MCP. Det er et støttende fællesskab, hvor spørgsmål er velkomne, og viden deles frit.
Hvis du sidder fast eller har spørgsmål om at udvikle AI-apps. Deltag med medstuderende og erfarne udviklere i diskussioner om MCP. Det er et støttende fællesskab, hvor spørgsmål er velkomne, og viden deles frit.
- Gennemgå notebooks efter hver lektion for bedre forståelse.
- Øv dig i at implementere algoritmer på egen hånd.
- Udforsk virkelige datasæt med de lærte koncepter.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokument er oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi stræber efter nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål betragtes som den autoritative kilde. For kritiske oplysninger anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.
**Ansvarsfraskrivelse**:
Dette dokument er oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for eventuelle misforståelser eller fejltolkninger, der måtte opstå ved brug af denne oversættelse.
Tässä oppitunnissa opit Responsible AI Toolboxista, joka on "avoimen lähdekoodin, yhteisön ohjaama projekti, joka auttaa data-analyytikkoja analysoimaan ja parantamaan tekoälyjärjestelmiä." Tämän tehtävän osalta tutustu yhteen RAI Toolboxin [notebookeista](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) ja raportoi havaintosi paperissa tai esityksessä.
Tässä oppitunnissa opit Responsible AI Toolboxista, joka on "avoimen lähdekoodin, yhteisön kehittämä projekti, joka auttaa datatieteilijöitä analysoimaan ja parantamaan tekoälyjärjestelmiä." Tässä tehtävässä tutustu yhteen RAI Toolboxin [muistikirjoista](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) ja raportoi havaintosi kirjoitelmassa tai esityksessä.
## Arviointikriteerit
| Kriteeri | Erinomainen | Riittävä | Parannusta tarvitaan |
| | Esitetään paperi tai PowerPoint-esitys, jossa käsitellään Fairlearnin järjestelmiä, suoritettua notebookia ja siitä tehtyjä johtopäätöksiä | Esitetään paperi ilman johtopäätöksiä | Paperia ei esitetä |
| | Kirjoitelma tai PowerPoint-esitys, jossa käsitellään Fairlearnin järjestelmiä, käytettyä muistikirjaa ja siitä tehtyjä johtopäätöksiä | Kirjoitelma, jossa ei ole johtopäätöksiä | Ei kirjoitelmaa |
---
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty tekoälypohjaisella käännöspalvelulla [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, ota huomioon, että automaattikäännöksissä voi esiintyä virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulee pitää virallisena lähteenä. Tärkeiden tietojen osalta suositellaan ammattimaista ihmis käännöstä. Emme ole vastuussa mistään väärinymmärryksistä tai virheellisistä tulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
> ### [Tämä oppitunti on saatavilla R:llä!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Johdanto
Tähän mennessä olet tutustunut regressioon käyttäen esimerkkidataa kurpitsan hinnoitteludatasta, jota käytämme koko tämän oppitunnin ajan. Olet myös visualisoinut dataa Matplotlibin avulla.
Tähän mennessä olet tutustunut regressioon näyteaineiston avulla, joka on poimittu kurpitsan hinnoitteluaineistosta ja jota käytämme koko oppitunnin ajan. Olet myös visualisoinut aineistoa Matplotlibillä.
Nyt olet valmis sukeltamaan syvemmälle koneoppimisen regressioon. Vaikka visualisointi auttaa ymmärtämään dataa, koneoppimisen todellinen voima tulee _mallien kouluttamisesta_. Mallit koulutetaan historiallisella datalla, jotta ne voivat automaattisesti tunnistaa datan riippuvuuksia, ja niiden avulla voidaan ennustaa tuloksia uudelle datalle, jota malli ei ole aiemmin nähnyt.
Nyt olet valmis sukeltamaan syvemmälle ML:n regressioon. Visualisointi auttaa sinua ymmärtämään dataa, mutta todellinen koneoppimisen voima tulee _mallien opettamisesta_. Mallit opetetaan historiatiedolla, jotta ne automaattisesti tunnistavat datariippuvuuksia, ja ne mahdollistavat uusien, aiemmin näkemättömien tietojen tulosten ennustamisen.
Tässä oppitunnissa opit lisää kahdesta regressiotyypistä: _perus lineaarisesta regressiosta_ ja _polynomisesta regressiosta_, sekä näiden tekniikoiden taustalla olevasta matematiikasta. Näiden mallien avulla voimme ennustaa kurpitsan hintoja eri syöttödatasta riippuen.
Tässä oppitunnissa opit lisää kahdesta regressiotyypistä: _perus lineaarisesta regressiosta_ ja _polynomiregressiosta_, sekä joistakin näiden tekniikoiden taustalla olevasta matematiikasta. Nämä mallit mahdollistavat kurpitsahintojen ennustamisen eri syötetietojen perusteella.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyttä videota varten lineaarisesta regressiosta.
> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videokatsauksen lineaarisesta regressiosta.
> Tässä oppimateriaalissa oletamme vain vähäistä matematiikan osaamista ja pyrimme tekemään sen helposti lähestyttäväksi opiskelijoille, jotka tulevat muilta aloilta. Huomioi muistiinpanot, 🧮 matemaattiset esimerkit, diagrammit ja muut oppimistyökalut, jotka auttavat ymmärtämisessä.
> Tämän opetussuunnitelman aikana oletamme hyvin vähäisiä matemaattisia ennakkotietoja ja pyrimme tekemään sisällöstä saavutettavaa eri alojen opiskelijoille, joten kiinnitä huomiota huomautuksiin, 🧮 kutsuihin, kaavioihin ja muihin oppimistyökaluihin, jotka tukevat ymmärrystä.
### Esitiedot
### Esivaatimus
Sinun tulisi nyt olla perehtynyt kurpitsadatan rakenteeseen, jota tutkimme. Löydät sen esiladattuna ja esipuhdistettuna tämän oppitunnin _notebook.ipynb_-tiedostosta. Tiedostossa kurpitsan hinta on esitetty per bushel uudessa dataframessa. Varmista, että voit ajaa nämä notebookit Visual Studio Coden kernelleissä.
Sinun tulisi nyt olla perehtynyt tutkimamme kurpitsadatan rakenteeseen. Sen löydät ennakkoladattuna ja esipuhdistettuna tämän oppitunnin _notebook.ipynb_-tiedostosta. Tiedostossa kurpitsan hinta esitetään busheliltä uudessa dataframessa. Varmista, että voit ajaa nämä notebookit Visual Studio Coden kernoissa.
### Valmistelu
Muistutuksena, lataat tätä dataa voidaksesi esittää kysymyksiä siitä.
Muistutuksena, lataat tätä dataa voidaksesi esittää sille kysymyksiä.
- Milloin on paras aika ostaa kurpitsoja?
- Minkä hinnan voin odottaa miniatyyrikurpitsojen laatikolle?
- Pitäisikö minun ostaa ne puolibushelin koreissa vai 1 1/9 bushelin laatikoissa?
Jatketaan datan tutkimista.
- Minkä hintaisen laatikon minikurpitsoja voin odottaa?
- Kannattaako ostaa puoli-bushelin koreissa vai 1 1/9 bushelin laatikoissa?
Tutkitaanpa dataa lisää.
Edellisessä oppitunnissa loit Pandas-dataframen ja täytit sen osalla alkuperäistä datasettiä, standardisoiden hinnoittelun bushelin mukaan. Tällä tavalla pystyit kuitenkin keräämään vain noin 400 datapistettä ja vain syksyn kuukausilta.
Edellisessä oppitunnissa loit Pandas-dataframen ja täytit sen osalla alkuperäisestä aineistosta, standardoiden hinnat bushelin mukaan. Näin teit, mutta keräsit vain noin 400 datapistettä ja vain syys- ja loka-kuukausilta.
Tutustu dataan, joka on esiladattu tämän oppitunnin mukana tulevassa notebookissa. Data on esiladattu ja alkuperäinen hajontakaavio on piirretty näyttämään kuukausidataa. Ehkä voimme saada hieman enemmän yksityiskohtia datan luonteesta puhdistamalla sitä lisää.
Katso tässä oppitunnissa mukana olevasta notebookista esiladattu data. Data on esiladattu ja alkuperäinen hajontakaavio on piirretty, joka näyttää kuukaustiedot. Voimme ehkä saada tarkemman kuvan datan luonteesta puhdistamalla sitä lisää.
## Lineaarinen regressioviiva
Kuten opit oppitunnilla 1, lineaarisen regressioharjoituksen tavoitteena on pystyä piirtämään viiva, joka:
Kuten opit Oppitunnissa 1, lineaarisen regression tavoitteena on piirtää viiva, joka:
- **Näyttää muuttujien suhteet**. Näyttää muuttujien välisen suhteen
- **Tekee ennusteita**. Tekee tarkkoja ennusteita siitä, mihin uusi datapiste sijoittuisi suhteessa viivaan.
On tyypillistä käyttää **Least-Squares Regression** -menetelmää tämän tyyppisen viivan piirtämiseen. Termi 'least-squares' tarkoittaa, että kaikki regressioviivan ympärillä olevat datapisteet neliöidään ja sitten summataan. Ihanteellisesti lopullinen summa on mahdollisimman pieni, koska haluamme vähän virheitä eli `least-squares`.
- **Tekee ennusteita**. Tekee tarkkoja ennusteita siitä, mihin uusi datapiste asettuu suhteessa viivaan.
On tyypillistä, että **vähintään neliöiden menetelmää** käytetään tämän tyyppisen viivan piirtämiseen. Termi "vähintään neliöiden menetelmä" viittaa mallin virheen kokonaismäärän minimointiin. Jokaisen datapisteen pystysuora etäisyys (jota kutsutaan residuaaliksi) mitataan todellisen pisteen ja regressioviivan välillä.
Neliöimme nämä etäisyydet kahdesta pääsyystä:
Teemme näin, koska haluamme mallintaa viivan, jolla on pienin kumulatiivinen etäisyys kaikista datapisteistämme. Neliöimme termit ennen niiden yhteenlaskemista, koska olemme kiinnostuneita niiden suuruudesta, emmekä suunnasta.
1. **Suuruus ilman suuntaa:** Haluamme käsitellä -5 virheen kuten +5 virhettä. Neliöiminen tekee kaikista arvoista positiivisia.
2. **Poikkeamien rankaisu:** Neliöiminen antaa suuremman painon suurille virheille, pakottaen viivan pysymään lähempänä kaukana olevia pisteitä.
Lisäämme sitten kaikki nämä neliöidyt arvot yhteen. Tavoitteemme on löytää tarkka viiva, jossa tämä summa on pienin mahdollinen – siksi nimi "vähintään neliöiden menetelmä".
> **🧮 Näytä matematiikka**
>
> Tämä viiva, jota kutsutaan _parhaiten sopivaksi viivaksi_, voidaan ilmaista [yhtälöllä](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Tämä viiva, jota kutsutaan _paras sovitusviivaksi_, voidaan esittää [yhtälöllä](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` on 'selittävä muuttuja'. `Y` on 'riippuva muuttuja'. Viivan kulmakerroin on `b` ja `a` on y-akselin leikkauspiste, joka viittaa `Y`:n arvoon, kun `X = 0`.
> `X` on 'selittävä muuttuja'. `Y` on 'riippuva muuttuja'. Viivan kulmakerroin on `b` ja `a` on y-akselin leikkauspiste, joka kuvaa `Y`:n arvoa kun `X = 0`.
> Ensin lasketaan kulmakerroin `b`. Infografiikka: [Jen Looper](https://twitter.com/jenlooper)
> Lasketaan ensin kulmakerroin `b`. Infograafi tekijältä [Jen Looper](https://twitter.com/jenlooper)
>
> Toisin sanoen, viitaten alkuperäiseen kurpitsadataan liittyvään kysymykseen: "ennusta kurpitsan hinta per bushel kuukauden mukaan", `X` viittaa hintaan ja `Y`viittaa myyntikuukauteen.
> Toisin sanoen ja viitaten kurpitsadatan alkuperäiseen kysymykseen: "ennustetaan kurpitsan hinta per bushel kuukauden mukaan", `X` viittaa hintaan ja `Y` myyntikuukauteen.
> Laske`Y`:n arvo. Jos maksat noin $4, sen täytyy olla huhtikuu! Infografiikka: [Jen Looper](https://twitter.com/jenlooper)
> Lasketaan Y:n arvo. Jos maksat noin 4 dollaria, täytyy olla huhtikuu! Infograafi tekijältä [Jen Looper](https://twitter.com/jenlooper)
>
> Matematiikka, joka laskee viivan, täytyy osoittaa viivan kulmakerroin, joka riippuu myös leikkauspisteestä, eli siitä, missä `Y` sijaitsee, kun `X = 0`.
> Viivan laskennassa on näytettävä sen kaltevuus, joka riippuu myös leikkauskohdasta, eli siitä missä `Y` sijaitsee, kun `X = 0`.
>
> Voit tarkastella näiden arvojen laskentamenetelmää [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) -sivustolla. Käy myös [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) -sivustolla nähdäksesi, miten lukuarvot vaikuttavat viivaan.
> Voit tarkastella näiden arvojen laskennan menetelmää verkkosivulta [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Käy myös [tällä vähintään neliöiden laskimella](https://www.mathsisfun.com/data/least-squares-calculator.html) nähdäksesi kuinka lukuarvot vaikuttavat viivaan.
## Korrelaatio
## Korrelatiivisuus
Yksi termi, joka on hyvä ymmärtää, on **korrelaatiokerroin** annettujen X- ja Y-muuttujien välillä. Hajontakaavion avulla voit nopeasti visualisoida tämän kertoimen. Kaavio, jossa datapisteet ovat siistissä linjassa, omaa korkean korrelaation, mutta kaavio, jossa datapisteet ovat hajallaan X:n ja Y:n välillä, omaa matalan korrelaation.
Yksi termi, joka on syytä ymmärtää, on **korrelaatiokerroin** tietyille X- ja Y-muuttujille. Hajontakuvion avulla voit nopeasti havaita tämän kertoimen. Kuvio, jossa datapisteet ovat siistissä viivassa, on korkea korrelaatio, mutta kun pisteet ovat hajallaan kaikkialla X:n ja Y:n välillä, korrelaatio on matala.
Hyvä lineaarinen regressiomalli on sellainen, jolla on korkea (lähempänä 1 kuin 0) korrelaatiokerroin käyttäen Least-Squares Regression -menetelmää ja regressioviivaa.
Hyvä lineaarinen regressiomalli on sellainen, jolla on korkea (lähellä 1:tä eikä 0:aa) korrelaatiokerroin, käytettäessä vähintään neliöiden menetelmää ja regressioviivaa.
✅ Aja tämän oppitunnin mukana tuleva notebook ja katso Kuukausi-Hinta hajontakaaviota. Vaikuttaako data, joka yhdistää Kuukauden ja Hinnan kurpitsamyynnissä, olevan korkea vai matala korrelaatio visuaalisen tulkintasi mukaan hajontakaaviosta? Muuttuuko tämä, jos käytät tarkempaa mittaa kuin `Kuukausi`, esim. *vuoden päivä* (eli päivien lukumäärä vuoden alusta)?
✅ Suorita tämän oppitunnin mukana oleva notebook ja tarkastele Kuukausi vs. Hinta hajontakaaviota. Vaikuttaako kurpitsamyynnin Kuukauden ja Hinnan yhdistelmä korkealta vai matalalta korrelaatiolta, silmämääräisen tulkintasi perusteella? Muuttuuko tulos, jos käytät kuukauden sijaan yksityiskohtaisempaa mittaria, esim. *vuorokauden numeroa* (eli kuinka mones päivä vuodesta)?
Alla olevassa koodissa oletamme, että olemme puhdistaneet datan ja saaneet dataframen nimeltä `new_pumpkins`, joka näyttää seuraavalta:
Alla koodissa oletamme, että olemme puhdistaneet datan ja saaneet dataframen nimeltä `new_pumpkins`, joka muistuttaa seuraavaa:
ID | Kuukausi | VuodenPäivä | Lajike | Kaupunki | Pakkaus | Alin Hinta | Korkein Hinta | Hinta
> Koodi datan puhdistamiseen löytyy tiedostosta [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Olemme suorittaneet samat puhdistusvaiheet kuin edellisessä oppitunnissa ja laskeneet `VuodenPäivä`-sarakkeen seuraavalla lausekkeella:
> Koodin dataa puhdistavista toimenpiteistä löydät tiedostosta [`notebook.ipynb`](notebook.ipynb). Olemme suorittaneet samat puhdistusvaiheet kuin edellisessä oppitunnissa, ja laskeneet `DayOfYear`-sarakkeen seuraavalla lausekkeella:
Nyt kun ymmärrät lineaarisen regression taustalla olevan matematiikan, luodaan regressiomalli nähdäksesi, voimmeko ennustaa, mikä kurpitsapaketti tarjoaa parhaat hinnat. Joku, joka ostaa kurpitsoja juhlapäivän kurpitsapellolle, saattaa haluta tätä tietoa voidakseen optimoida kurpitsapakettien ostot pellolle.
Nyt kun ymmärrät lineaarisen regression matematiikan taustalla, luokaamme regressiomalli nähdäksesi, voimmeko ennustaa, mikä kurpitsapakkaus tarjoaa parhaat kurpitsahinnat. Joku, joka ostaa kurpitsoja juhlapuutarhaa varten, haluaa tämän tiedon optimoidakseen kurpitsapakkaustensa ostot.
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyttä videota varten korrelaatiosta.
> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videokatsauksen korrelaatiosta.
Edellisestä oppitunnista olet todennäköisesti nähnyt, että keskimääräinen hinta eri kuukausina näyttää tältä:
Edellisestä oppitunnista olet todennäköisesti nähnyt, että eri kuukausien keskimääräinen hinta näyttää tältä:
<imgalt="Keskimääräinen hinta kuukauden mukaan" src="../../../../translated_images/fi/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Keskiarvo hinta kuukauden mukaan" src="../../../../translated_images/fi/barchart.a833ea9194346d76.webp"width="50%"/>
Tämä viittaa siihen, että korrelaatiota saattaa olla, ja voimme yrittää kouluttaa lineaarisen regressiomallin ennustamaan suhdetta `Kuukausi` ja `Hinta` välillä tai `VuodenPäivä` ja `Hinta` välillä. Tässä on hajontakaavio, joka näyttää jälkimmäisen suhteen:
Tämä viittaa siihen, että jonkinlaista korrelaatiota pitäisi olla, ja voimme yrittää opettaa lineaarisen regressiomallin ennustamaan suhdetta `Month` ja `Price` välillä, tai `DayOfYear` ja `Price` välillä. Tässä on hajontakaavio jälkimmäisestä suhteesta:
<imgalt="Hajontakaavio Hinta vs. Vuoden Päivä" src="../../../../translated_images/fi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Hajontakaavio hinta vs. vuorokauden numero" src="../../../../translated_images/fi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Katsotaan, onko korrelaatiota käyttämällä`corr`-funktiota:
Katsotaan onko korrelaatiota käyttäen`corr`-funktiota:
Näyttää siltä, että korrelaatio on melko pieni, -0.15 `Kuukauden` mukaan ja -0.17 `VuodenPäivän` mukaan, mutta saattaa olla toinen tärkeä suhde. Näyttää siltä, että eri kurpitsalajikkeiden hinnat muodostavat erilaisia klustereita. Vahvistaaksemme tämän hypoteesin, piirretään jokainen kurpitsakategoria eri värillä. Käyttämällä `ax`-parametria `scatter`-piirtofunktiossa voimme piirtää kaikki pisteet samaan kaavioon:
Korrelaation näyttää olevan melko pieni, -0.15 kuukauden mukaan ja -0.17 vuorokauden numeron mukaan, mutta voi olla toinen tärkeä suhde. Näyttää siltä, että hintoja on eri ryhmiä eri kurpitsalajikkeille. Vahvistaaksemme tätä hypoteesia piirretään kukin kurpitsakategoria eri värillä. Käyttämällä `ax` parametria `scatter`-funktiossa voimme piirtää kaikki pisteet samaan kuvaan:
```python
ax=None
@ -128,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Hajontakaavio Hinta vs. Vuoden Päivä" src="../../../../translated_images/fi/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Hajontakaavio hinta vs. vuorokauden numero värikoodattu" src="../../../../translated_images/fi/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Tutkimuksemme viittaa siihen, että lajikkeella on suurempi vaikutus kokonaishintaan kuin varsinaisella myyntipäivällä. Voimme nähdä tämän pylväsdiagrammilla:
Tutkimuksemme viittaa siihen, että lajikkeella on suurempi vaikutus kokonaishintaan kuin varsinaisella myyntipäivällä. Näemme tämän pylväskaaviosta:
<imgalt="Hajontakaavio Hinta vs. Vuoden Päivä" src="../../../../translated_images/fi/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Hajontakaavio Hinta vs Vuorokauden Numero" src="../../../../translated_images/fi/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Jos nyt laskemme korrelaation `Hinta` ja `VuodenPäivä` välillä käyttäen `corr`-funktiota, saamme jotain kuten `-0.27` - mikä tarkoittaa, että ennustavan mallin kouluttaminen on järkevää.
Jos nyt lasketaan korrelaatio `Price` ja `DayOfYear` välillä `corr`-funktiolla, saamme noin `-0.27`, mikä tarkoittaa, että ennustemallin opettaminen on järkevää.
> Ennen lineaarisen regressiomallin kouluttamista on tärkeää varmistaa, että datamme on puhdasta. Lineaarinen regressio ei toimi hyvin puuttuvien arvojen kanssa, joten on järkevää poistaa kaikki tyhjät solut:
> Ennen lineaarisen regressiomallin opettamista on tärkeää varmistaa, että datamme on puhdasta. Lineaarinen regressio ei toimi hyvin puuttuvien arvojen kanssa, joten on järkevää poistaa kaikki tyhjät solut:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Toinen lähestymistapa olisi täyttää tyhjät arvot vastaavan sarakkeen keskiarvoilla.
Toinen lähestymistapa voisi olla täyttää tyhjät arvot vastaavien sarakkeiden keskiarvoilla.
## Yksinkertainen lineaarinen regressio
[](https://youtu.be/e4c_UP2fSjg "Koneoppimisen perusteet - Lineaarinen ja polynominen regressio Scikit-learnilla")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyttä videota varten lineaarisesta ja polynomisesta regressiosta.
> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videokatsauksen lineaarisesta ja polynomisesta regressiosta.
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Aloitamme erottamalla syöttöarvot (ominaisuudet) ja odotetut tulokset (label) erillisiin numpy-taulukoihin:
Aloitamme erottamalla syötearvot (ominaisuudet) ja odotetun tuloksen (label) eri numpy-taulukoihin:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Huomaa, että meidän täytyi suorittaa `reshape` syöttödatalle, jotta lineaarisen regression paketti ymmärtäisi sen oikein. Lineaarinen regressio odottaa 2D-taulukkoa syötteenä, jossa taulukon jokainen rivi vastaa syöttöominaisuuksien vektoria. Meidän tapauksessamme, koska meillä on vain yksi syöte, tarvitsemme taulukon, jonka muoto on N×1, missä N on datasetin koko.
> Huomaa, että jouduimme käyttämään `reshape`-toimintoa syötteessä, jotta LinearRegression kirjasto ymmärtää sen oikein. Lineaarinen regressio odottaa 2-ulotteista taulukkoa syötteenä, jossa jokainen rivi on yksi ominaisuusvektori. Koska meillä on vain yksi syöte, tarvitsemme N×1 muotoisen taulukon, jossa N on aineiston koko.
Seuraavaksi meidän täytyy jakaa data koulutus- ja testidatasettiin, jotta voimme validoida mallimme koulutuksen jälkeen:
Seuraavaksi jaamme aineiston harjoitus- ja testidatoihin, jotta voimme validoida mallimme opettamisen jälkeen:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Lopuksi varsinaisen lineaarisen regressiomallin kouluttaminen vie vain kaksi koodiriviä. Määrittelemme `LinearRegression`-objektin ja sovitamme sen dataamme käyttämällä `fit`-metodia:
Viimein, mallin opettaminen tapahtuu kahdella rivillä koodia. Määrittelemme `LinearRegression`-olion ja sovitamme sen dataamme metodilla `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression`-objekti sisältää `fit`-vaiheen jälkeen kaikki regression kertoimet, jotka voidaan hakea `.coef_`-ominaisuuden avulla. Meidän tapauksessamme on vain yksi kerroin, jonka pitäisi olla noin `-0.017`. Tämä tarkoittaa, että hinnat näyttävät laskevan hieman ajan myötä, mutta eivät kovin paljon, noin 2 senttiä päivässä. Voimme myös hakea regressioviivan y-akselin leikkauspisteen `lin_reg.intercept_`-ominaisuuden avulla - se on noin `21` meidän tapauksessamme, mikä osoittaa hinnan vuoden alussa.
`LinearRegression`-objekti sovittamisen (`fit`) jälkeen sisältää kaikki regressiokertoimet, joihin pääsee käsiksi `.coef_`-ominaisuudella. Tapauksessamme on vain yksi kerroin, joka on noin `-0.017`. Tämä tarkoittaa, että hinnat näyttävät laskevan hieman ajan myötä, mutta ei liikaa, noin 2 senttiä päivässä. Voimme myös päästä käsiksi regressioviivan leikkauspisteeseen Y-akselilla käyttämällä `lin_reg.intercept_` -arvoa – se on tapauksessamme noin `21`, mikä osoittaa hinnan vuoden alussa.
Mallimme tarkkuuden näkemiseksi voimme ennustaa hinnat testidatasetilla ja mitata, kuinka lähellä ennusteemme ovat odotettuja arvoja. Tämä voidaan tehdä käyttämällä keskimääräisen neliövirheen (MSE) mittaria, joka on kaikkien odotettujen ja ennustettujen arvojen neliöityjen erojen keskiarvo.
Nähdäksemme, kuinka tarkka mallimme on, voimme ennustaa hintoja testiaineistolla ja mitata, kuinka lähellä ennusteet ovat odotettuja arvoja. Tämä voidaan tehdä käyttäen keskineliövirheen (MSE) metriikkaa, joka on kaikkien odotettujen ja ennustettujen arvojen neliöllisten erotusten keskiarvo.
```python
pred = lin_reg.predict(X_test)
@ -203,15 +215,16 @@ pred = lin_reg.predict(X_test)
Virheemme näyttää olevan noin 2 pisteen kohdalla, mikä on ~17 %. Ei kovin hyvä. Toinen indikaattori mallin laadusta on **determinointikerroin**, joka voidaan laskea näin:
Virheemme näyttää olevan noin 2 pistettä, mikä on ~17%. Ei kovin hyvä. Toinen mallin laadun mittari on **selitysaste** (coefficient of determination), joka saadaan seuraavasti:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Jos arvo on 0, se tarkoittaa, että malli ei ota syöttötietoja huomioon ja toimii *huonoimpana lineaarisena ennustajana*, joka on yksinkertaisesti tuloksen keskiarvo. Arvo 1 tarkoittaa, että voimme täydellisesti ennustaa kaikki odotetut tulokset. Meidän tapauksessamme kerroin on noin 0.06, mikä on melko alhainen.
Jos arvo on 0, se tarkoittaa, että malli ei ota syötteitä huomioon ja toimii *huonoimpana lineaarisena ennustajana*, joka on yksinkertaisesti tuloksen keskiarvo. Arvo 1 tarkoittaa, että voimme täydellisesti ennustaa kaikki odotetut tulokset. Meidän tapauksessamme kerroin on noin 0.06, mikä on melko matala.
Voimme myös piirtää testidatan yhdessä regressioviivan kanssa, jotta näemme paremmin, miten regressio toimii meidän tapauksessamme:
Voimme myös piirtää testidatan yhdessä regressioviivan kanssa nähdäksesi paremmin, miten regressio toimii tapauksessamme:
Toinen lineaarisen regression tyyppi on polynominen regressio. Vaikka joskus muuttujien välillä on lineaarinen suhde – mitä suurempi kurpitsa tilavuudeltaan, sitä korkeampi hinta – joskus näitä suhteita ei voida kuvata tasolla tai suoralla viivalla.
Toinen lineaarisen regression muoto on polynomiregressio. Vaikka joskus muuttujien välillä on lineaarinen suhde – mitä suurempi kurpitsan tilavuus, sitä korkeampi hinta – joskus näitä suhteita ei voi kuvata tasaisena tasona tai suorana viivana.
✅ Tässä on [joitakin esimerkkejä](https://online.stat.psu.edu/stat501/lesson/9/9.8) datasta, joka voisi hyödyntää polynomista regressiota.
✅ Tässä on [lisää esimerkkejä](https://online.stat.psu.edu/stat501/lesson/9/9.8) aineistosta, johon voisi soveltaa polynomiregressiota
Katso uudelleen suhdetta Päivämäärän ja Hinnan välillä. Vaikuttaako tämä hajontakuvio siltä, että sitä pitäisi välttämättä analysoida suoralla viivalla? Eivätkö hinnat voi vaihdella? Tässä tapauksessa voit kokeilla polynomista regressiota.
Katso uudelleen suhdetta Päivämäärän ja Hinnan välillä. Näyttääkö tämä hajontakuvio siltä, että sitä tulisi välttämättä analysoida suoralla viivalla? Eikö hinnat voi heilahdella? Tässä tapauksessa voit kokeilla polynomiregressiota.
✅ Polynomit ovat matemaattisia lausekkeita, jotka voivat koostua yhdestä tai useammasta muuttujasta ja kertoimesta.
✅ Polynomit ovat matemaattisia lausekkeita, jotka voivat sisältää yhden tai useamman muuttujan ja kertoimia
Polynominen regressio luo kaarevan viivan, joka sopii paremmin epälineaariseen dataan. Meidän tapauksessamme, jos sisällytämme neliöidyn `DayOfYear`-muuttujan syöttötietoihin, meidän pitäisi pystyä sovittamaan datamme parabolisella käyrällä, jolla on minimi tiettynä ajankohtana vuoden aikana.
Polynomiregressio luo kaarevan käyrän sovittamaan paremmin epälineaarista dataa. Jos mukaan otetaan toisen asteen `DayOfYear`-muuttuja syöttötietoihin, pystymme sovittamaan dataamme paraabelin muotoisen käyrän, jolla on minimi tietyn pisteen kohdalla vuoden aikana.
Scikit-learn sisältää hyödyllisen [pipeline-rajapinnan](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), joka yhdistää eri datankäsittelyvaiheet yhteen. **Pipeline** on ketju **estimaattoreita**. Meidän tapauksessamme luomme pipelinen, joka ensin lisää polynomisia ominaisuuksia malliin ja sitten kouluttaa regression:
Scikit-learn sisältää hyödyllisen [pipeline-rajapinnan](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yhdistämään erilaiset data-analyysin vaiheet. **Pipeline** on ketju **estimaattoreita**. Tapauksessamme luomme pipeline:n, joka ensin lisää polynomiset ominaisuudet malliin ja sitten kouluttaa regression:
```python
from sklearn.preprocessing import PolynomialFeatures
Käyttämällä `PolynomialFeatures(2)` tarkoittaa, että sisällytämme kaikki toisen asteen polynomit syöttötiedoista. Meidän tapauksessamme tämä tarkoittaa vain `DayOfYear`<sup>2</sup>, mutta kahden syöttömuuttujan X ja Y tapauksessa tämä lisää X<sup>2</sup>, XY ja Y<sup>2</sup>. Voimme myös käyttää korkeamman asteen polynomeja, jos haluamme.
`PolynomialFeatures(2)` tarkoittaa, että mukaan otetaan kaikki toisen asteen polynomit syötedatasta. Meidän tapauksessamme se tarkoittaa vain `DayOfYear`<sup>2</sup>, mutta jos meillä olisi kaksi syöte muuttujaa X ja Y, mukaan tulisi X<sup>2</sup>, XY ja Y<sup>2</sup>. Voimme myös käyttää korkeampiasteisia polynomeja, jos haluamme.
Pipelinea voidaan käyttää samalla tavalla kuin alkuperäistä `LinearRegression`-objektia, eli voimme `fit` pipelinea ja sitten käyttää `predict` saadaksemme ennustetulokset. Tässä on graafi, joka näyttää testidatan ja approksimaatiokäyrän:
Pipelinetä voi käyttää samalla tavalla kuin alkuperäistä `LinearRegression`-objektia, eli voimme `fit`-metodilla sovittaa ja `predict`-metodilla ennustaa tuloksia. Tässä on kuvaaja, joka näyttää testidatan ja approksimaatiokäyrän:
Polynomista regressiota käyttämällä voimme saada hieman pienemmän MSE:n ja korkeamman determinointikertoimen, mutta ei merkittävästi. Meidän täytyy ottaa huomioon muita ominaisuuksia!
Polynomiregressiolla saamme hieman pienemmän MSE:n ja korkeamman selitysasteen, mutta ei merkittävästi. Meidän täytyy ottaa mukaan muitakin piirteitä!
> Voit nähdä, että kurpitsan hinnat ovat alhaisimmillaan jossain Halloweenin tienoilla. Miten selittäisit tämän?
> Voit nähdä, että minimihinnat kurpitsoille ovat jossain halloweenin tienoilla. Miten tätä voisi selittää?
🎃 Onnittelut, loit juuri mallin, joka voi auttaa ennustamaan piirakkakurpitsojen hinnan. Voit todennäköisesti toistaa saman prosessin kaikille kurpitsatyypeille, mutta se olisi työlästä. Opitaan nyt, miten ottaa kurpitsan lajike huomioon mallissamme!
🎃 Onneksi olkoon, loit juuri mallin, joka auttaa ennustamaan kurpitsapiirakan hintoja. Voisit luultavasti toistaa saman prosessin kaikille kurpitsatyypeille, mutta se olisi työlästä. Opitaan nyt, miten ottaa kurpitsan lajike huomioon mallissa!
## Kategoriset ominaisuudet
Ihanteellisessa maailmassa haluaisimme pystyä ennustamaan hinnat eri kurpitsalajikkeille käyttämällä samaa mallia. Kuitenkin `Variety`-sarake on hieman erilainen kuin sarakkeet kuten `Month`, koska se sisältää ei-numeerisia arvoja. Tällaisia sarakkeita kutsutaan **kategorisiksi**.
Ihannetilanteessa haluamme pystyä ennustamaan eri kurpitsalajikkeiden hintoja samalla mallilla. Kuitenkin `Variety`-sarake eroaa esimerkiksi `Month`-sarakkeesta, koska se sisältää ei-numeerisia arvoja. Tällaisia sarakkeita kutsutaan **kategorisiksi**.
[](https://youtu.be/DYGliioIAE0 "ML aloittelijoille - Kategoristen ominaisuuksien ennustaminen lineaarisella regressiolla")
[](https://youtu.be/DYGliioIAE0 "ML aloittelijoille - Kategoriset ominaisuudet ja lineaarinen regressio")
> 🎥 Klikkaa yllä olevaa kuvaa saadaksesi lyhyen videokatsauksen kategoristen ominaisuuksien käytöstä.
> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videokatsauksen kategoristen ominaisuuksien käytöstä.
Tässä näet, miten keskimääräinen hinta riippuu lajikkeesta:
<imgalt="Keskimääräinen hinta lajikkeen mukaan" src="../../../../translated_images/fi/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Jotta voimme ottaa lajikkeen huomioon, meidän täytyy ensin muuntaa se numeeriseen muotoon eli **koodata** se. On olemassa useita tapoja tehdä tämä:
Ottaaksemme lajikkeen huomioon, meidän täytyy ensin muuntaa se numeromuotoon eli **koodata** se. On olemassa muutamia tapoja tehdä tämä:
* Yksinkertainen **numeerinen koodaus** rakentaa taulukon eri lajikkeista ja korvaa lajikenimen taulukon indeksillä. Tämä ei ole paras idea lineaariselle regressiolle, koska lineaarinen regressio käyttää indeksin todellista numeerista arvoa ja lisää sen tulokseen, kertomalla sen jollain kertoimella. Meidän tapauksessamme indeksin numeron ja hinnan välinen suhde on selvästi epälineaarinen, vaikka varmistaisimme, että indeksit ovat järjestetty jollain erityisellä tavalla.
* **One-hot-koodaus** korvaa `Variety`-sarakkeen neljällä eri sarakkeella, yksi kullekin lajikkeelle. Jokainen sarake sisältää `1`, jos vastaava rivi on tiettyä lajiketta, ja `0` muuten. Tämä tarkoittaa, että lineaarisessa regressiossa on neljä kerrointa, yksi kullekin kurpitsalajikkeelle, jotka vastaavat kyseisen lajikkeen "aloitushintaa" (tai pikemminkin "lisähintaa").
* Yksinkertainen **numeroarvokoodaus** luo taulukon eri lajikkeista ja korvaa lajikenimen kyseisen taulukon indeksillä. Tämä ei ole paras idea lineaarisessa regressiossa, koska lineaariregressio ottaa indeksin numeerisen arvon eikä huomioi, että indeksin numeerinen arvo ei välttämättä ole lineaarisesti yhteydessä hintaan. Toisin sanoen, lineaarisessa mallissa kerroin kerrotaan indeksiluvulla, mikä ei vastaa todellista hintasuhdetta.
* **One-hot-koodaus** korvaa `Variety`-sarakkeen neljällä eri sarakkeella, yhden kullekin lajikkeelle. Kukin sarake sisältää `1`, jos rivi vastaa kyseistä lajiketta, ja `0` muuten. Tämä tarkoittaa, että lineaariregressiossa on neljä kerrointa, yksi jokaiselle kurpitsalajikkeelle, jotka kuvaavat kunkin lajikkeen "aloitushintaa" (tai pikemminkin "lisähintaa").
Alla oleva koodi näyttää, miten voimme tehdä one-hot-koodauksen lajikkeelle:
Alla oleva koodi näyttää, miten lajike voidaan one-hot-koodata:
Jotta voimme kouluttaa lineaarisen regression käyttäen one-hot-koodattua lajiketta syötteenä, meidän täytyy vain alustaa `X` ja `y` data oikein:
Jotta voimme kouluttaa lineaariregression käyttäen one-hot-koodattua lajiketta syötteenä, meidän pitää vain alustaa `X` ja `y` oikein:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Loppu koodi on sama kuin mitä käytimme aiemmin kouluttaaksemme lineaarisen regression. Jos kokeilet sitä, huomaat, että keskimääräinen neliövirhe (MSE) on suunnilleen sama, mutta saamme paljon korkeamman determinointikertoimen (~77 %). Jotta ennusteet olisivat vielä tarkempia, voimme ottaa huomioon enemmän kategorisia ominaisuuksia sekä numeerisia ominaisuuksia, kuten `Month` tai `DayOfYear`. Jotta saamme yhden suuren ominaisuusjoukon, voimme käyttää `join`-toimintoa:
Muu koodi on sama kuin aiemmin käyttämämme lineaarisen regression koulutuksessa. Kun kokeilet, huomaat, että keskineliövirhe on suunnilleen sama, mutta selitysaste nousee huomattavasti (~77%). Tarkempia ennusteita saamme ottamalla huomioon lisää kategorisia piirteitä sekä numeerisia ominaisuuksia, kuten `Month` tai `DayOfYear`. Yhden suuren ominaisuustaulukon saamiseksi voimme käyttää `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Tässä otamme myös huomioon `City` ja `Package`-tyypin, mikä antaa meille MSE:n 2.84 (10 %) ja determinointikertoimen 0.94!
Tässä otamme myös huomioon `City`- ja `Package`-tyypin, mikä antaa meille MSE-arvoksi 2.84 (10%) ja selitysasteeksi 0.94!
## Yhdistäminen
## Kaiken yhdistäminen
Parhaan mallin luomiseksi voimme käyttää yhdistettyä (one-hot-koodattua kategorista + numeerista) dataa yllä olevasta esimerkistä yhdessä polynomisen regression kanssa. Tässä on täydellinen koodi käteväksi viitteeksi:
Parhaan mallin saamiseksi voimme käyttää yhdistettyä (one-hot-koodattua kategorista + numeerista) dataa ylläolevasta esimerkistä yhdessä polynomiregression kanssa. Tässä on koko koodi vaivattomuutta varten:
```python
# set up training data
# aseta harjoitusdata
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# tee opetus- ja testijako
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Tämän pitäisi antaa meille paras determinointikerroin, lähes 97 %, ja MSE=2.23 (~8 % ennustevirhe).
Tämä antaa meille parhaan selitysasteen lähes 97 % ja MSE:n 2.23 (~8 % ennustevirhe).
| Malli | MSE | Determinointi |
|-------|-----|---------------|
| `DayOfYear`Lineaarinen | 2.77 (17.2 %) | 0.07 |
| `DayOfYear`Polynominen | 2.73 (17.0 %) | 0.08 |
| `Variety`Lineaarinen | 5.24 (19.7 %) | 0.77 |
| Kaikki ominaisuudet Lineaarinen | 2.84 (10.5 %) | 0.94 |
| Kaikki ominaisuudet Polynominen | 2.23 (8.25 %) | 0.97 |
| Malli | MSE | Selitysaste |
|-------|-----|-------------|
| `DayOfYear`lineaarinen | 2.77 (17.2%) | 0.07 |
| `DayOfYear`polynomi | 2.73 (17.0%) | 0.08 |
| `Variety`lineaarinen | 5.24 (19.7%) | 0.77 |
| Kaikki ominaisuudet lineaarinen | 2.84 (10.5%) | 0.94 |
| Kaikki ominaisuudet polynomi | 2.23 (8.25%) | 0.97 |
🏆 Hyvin tehty! Loit neljä regressiomallia yhdessä oppitunnissa ja paransit mallin laatua 97 %:iin. Regressiota käsittelevän osion viimeisessä osassa opit logistisesta regressiosta kategorioiden määrittämiseksi.
🏆 Hienoa työtä! Loit neljä regressiomallia yhdessä oppitunnissa ja paransit mallin laatua 97 prosenttiin. Regressio-aiheen lopussa opit logistisesta regressiosta luokitteluja varten.
---
## 🚀Haaste
Testaa useita eri muuttujia tässä muistikirjassa ja katso, miten korrelaatio vastaa mallin tarkkuutta.
Testaa eri muuttujia tässä muistikirjassa nähdäksesi, miten korrelaatio vastaa mallin tarkkuutta.
## [Luennon jälkeinen kysely](https://ff-quizzes.netlify.app/en/ml/)
Tässä oppitunnissa opimme lineaarisesta regressiosta. On olemassa muita tärkeitä regressiotyyppejä. Lue Stepwise-, Ridge-, Lasso- ja Elasticnet-tekniikoista. Hyvä kurssi lisäopiskeluun on [Stanfordin tilastollisen oppimisen kurssi](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
Tässä oppitunnissa opimme lineaarisesta regressiosta. On olemassa myös muita tärkeitä regressiotyyppejä. Lue lisää Stepwise-, Ridge-, Lasso- ja Elasticnet-menetelmistä. Hyvä kurssi opinnoille on [Stanfordin tilastollisen oppimisen kurssi](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tehtävä
@ -367,5 +380,7 @@ Tässä oppitunnissa opimme lineaarisesta regressiosta. On olemassa muita tärke
---
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta huomioithan, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suosittelemme ammattimaista ihmiskäännöstä. Emme ota vastuuta tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai virheellisistä tulkinnoista.
Tässä toisessa luokittelutunnissa tutustut tarkemmin tapoihin luokitella numeerista dataa. Opit myös, mitä seurauksia on sillä, että valitset yhden luokittelijan toisen sijaan.
Tässä toisessa luokittelutunnissa tutustut lisää tapoihin luokitella numeerista dataa. Opit myös, mitä seurauksia yhden luokittimen valinnalla on toisen sijaan.
Oletamme, että olet suorittanut aiemmat oppitunnit ja sinulla on puhdistettu datasetti `data`-kansiossasi nimeltä _cleaned_cuisines.csv_, joka sijaitsee tämän neljän oppitunnin kansion juurihakemistossa.
Oletetaan, että olet suorittanut edelliset oppitunnit ja sinulla on siivottu aineisto kansiossasi nimeltä _cleaned_cuisines.csv_ tämän neljän oppitunnin kansion juurikansiossa.
### Valmistelut
Olemme ladanneet _notebook.ipynb_-tiedostosi puhdistetulla datasetillä ja jakaneet sen X- ja y-datafreimeihin, jotka ovat valmiita mallin rakennusprosessia varten.
Olemme ladanneet _notebook.ipynb_-tiedostosi siivotun aineiston kanssa ja jakaneet sen X- ja y-datafreimeiksi, valmiina mallin rakentamisprosessiin.
## Luokittelukartta
Aiemmin opit eri vaihtoehdoista datan luokitteluun Microsoftin huijauslistan avulla. Scikit-learn tarjoaa vastaavan, mutta tarkemman huijauslistan, joka voi auttaa kaventamaan valintaa luokittelijoiden (toinen termi estimointimenetelmille) välillä:
Aiemmin opit Microsoftin kikan avulla eri vaihtoehdoista datan luokittelussa. Scikit-learn tarjoaa samanlaisen mutta tarkemman kikan, joka voi auttaa kaventamaan arvioijiasi (toinen nimi luokittimille):
Support-Vector Clustering (SVC) kuuluu Support-Vector Machines -perheeseen ML-tekniikoissa (lisätietoja alla). Tässä menetelmässä voit valita "kernelin" päättääksesi, miten etiketit ryhmitellään. 'C'-parametri viittaa 'regularisointiin', joka säätelee parametrien vaikutusta. Kernel voi olla yksi [useista](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); tässä asetamme sen 'lineaariseksi' varmistaaksemme, että hyödynnämme lineaarista SVC:tä. Todennäköisyys oletuksena on 'false'; tässä asetamme sen 'true' saadaksemme todennäköisyysarvioita. Asetamme satunnaistilan '0':ksi sekoittaaksemme datan todennäköisyyksien saamiseksi.
Support-Vector clustering (SVC) kuuluu Support-Vector machines -menetelmien perheeseen (lue lisää niistä alla). Tässä menetelmässä voit valita ’ytimen’, joka päättää, miten tunnisteet ryhmitellään. ’C’-parametri viittaa ’regulointiin’, joka säätelee parametrien vaikutusta. Ydin voi olla yksi [useista](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); tässä asetamme sen ’lineaariseksi’ varmistaaksemme lineaarisen SVC:n käytön. Todennäköisyysasetuksena on oletuksena ’false’; tässä asetamme sen ’true’ saadaksemme todennäköisyyksiä. Asetamme satunnaistilan ’0’:ksi, jotta data sekoittuu todennäköisyyksien saadessa.
### Harjoitus - käytä lineaarista SVC:tä
Aloita luomalla luokittelijoiden taulukko. Lisäät tähän taulukkoon asteittain, kun testaamme.
Aloita luomalla taulukko luokittimista. Lisäät taulukkoon vähitellen testatessasi.
K-Neighbors kuuluu ML-menetelmien "naapurit"-perheeseen, jota voidaan käyttää sekä valvottuun että valvomattomaan oppimiseen. Tässä menetelmässä määritellään ennalta määrätty määrä pisteitä, ja data kerätään näiden pisteiden ympärille siten, että yleistetyt etiketit voidaan ennustaa datalle.
K-Neighbors kuuluu ”naapuri”-menetelmien koneoppimisperheeseen, jota voidaan käyttää valvottuun ja valvomattomaan oppimiseen. Tässä menetelmässä luodaan ennalta määritelty määrä pisteitä, joihin data kerätään niin, että datan yleistäminen ja tunnisteiden ennustaminen onnistuu.
### Harjoitus - käytä K-Neighbors -luokittelijaa
### Harjoitus - käytä K-Neighbors luokitinta
Edellinen luokittelija oli hyvä ja toimi hyvin datan kanssa, mutta ehkä voimme saada paremman tarkkuuden. Kokeile K-Neighbors-luokittelijaa.
Edellinen luokitin toimi hyvin aineistolla, mutta ehkä voimme saada paremman tarkkuuden. Kokeile K-Neighbors-luokitinta.
1. Lisää rivi luokittelijataulukkoon (lisää pilkku Linear SVC -kohdan jälkeen):
1. Lisää rivi luokittimien taulukkoon (lisää pilkku Linear SVC:n jälkeen):
```python
'KNN classifier': KNeighborsClassifier(C),
```
Tulokset ovat hieman huonommat:
Tulokset ovat hieman heikommat:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -138,21 +138,21 @@ Edellinen luokittelija oli hyvä ja toimi hyvin datan kanssa, mutta ehkä voimme
✅ Lue lisää [K-Neighborsista](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support Vector -luokittelija
## Support Vector Classifier
Support-Vector -luokittelijat kuuluvat [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) -perheeseen ML-menetelmissä, joita käytetään luokittelu- ja regressiotehtäviin. SVM:t "karttavat koulutusesimerkit pisteiksi avaruudessa" maksimoidakseen etäisyyden kahden kategorian välillä. Seuraava data kartataan tähän avaruuteen, jotta sen kategoria voidaan ennustaa.
Support-Vector -luokittimet kuuluvat [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) -menetelmien koneoppimisperheeseen, joita käytetään luokittelu- ja regressiotehtävissä. SVM:t ”karttavat harjoitusesimerkit pisteiksi avaruuteen” maksimoidakseen kahden kategorian eron. Seuraavat datat kartoitetaan tähän avaruuteen, jotta niiden kategoria voidaan ennustaa.
### Harjoitus - käytä Support Vector -luokittelijaa
### Harjoitus - käytä Support Vector Classifieria
Kokeillaan hieman parempaa tarkkuutta Support Vector -luokittelijalla.
Yritetään hieman parempaa tarkkuutta Support Vector Classifierilla.
1. Lisää pilkku K-Neighbors -kohdan jälkeen ja lisää tämä rivi:
1. Lisää pilkku K-Neighborsin jälkeen ja lisää sitten tämä rivi:
```python
'SVC': SVC(),
```
Tulokset ovat erittäin hyviä!
Tulokset ovat varsin hyvät!
```output
Accuracy (train) for SVC: 83.2%
@ -169,18 +169,18 @@ Kokeillaan hieman parempaa tarkkuutta Support Vector -luokittelijalla.
weighted avg 0.84 0.83 0.83 1199
```
✅ Lue lisää [Support-Vectorsista](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Lue lisää [Support-Vektoreista](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ensemble-luokittelijat
## Yhdistelmäluokittimet
Seurataan polkua aivan loppuun asti, vaikka edellinen testi oli erittäin hyvä. Kokeillaan joitakin 'Ensemble-luokittelijoita', erityisesti Random Forestia ja AdaBoostia:
Seurataan polkua aivan loppuun asti, vaikka edellinen testi oli varsin hyvä. Kokeillaan ’Yhdistelmäluokittimia’, erityisesti Random Forestia ja AdaBoostia:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
Tulokset ovat erittäin hyviä, erityisesti Random Forestin osalta:
Tulokset ovat erittäin hyvät, erityisesti Random Forestilla:
```output
Accuracy (train) for RFST: 84.5%
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Lue lisää [Ensemble-luokittelijoista](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Lue lisää [Yhdistelmäluokittimista](https://scikit-learn.org/stable/modules/ensemble.html)
Tämä koneoppimismenetelmä "yhdistää useiden perusestimointimenetelmien ennusteet" parantaakseen mallin laatua. Esimerkissämme käytimme Random Trees -menetelmää ja AdaBoostia.
Tämä koneoppimismenetelmä ”yhdistää usean perusarvioijan ennusteet” parantaakseen mallin laatua. Esimerkissämme käytimme satunnaisia puita ja AdaBoostia.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), keskiarvomenetelmä, rakentaa "metsän" "päätöspuista", joihin lisätään satunnaisuutta ylisovituksen välttämiseksi. n_estimators-parametri asetetaan puiden määräksi.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), keskiarvomenetelmä, rakentaa ’metsän’’päätöspuita’, joita satunnaistetaan ylisovittamisen välttämiseksi. n_estimators-parametri on puiden lukumäärä.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) sovittaa luokittelijan datasettiin ja sovittaa kopioita tästä luokittelijasta samaan datasettiin. Se keskittyy väärin luokiteltujen kohteiden painoihin ja säätää seuraavan luokittelijan sovitusta korjatakseen.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) sovittaa luokittimen aineistoon ja sovittaa sitten kopioita tästä luokittimesta samaan aineistoon. Se keskittyy virheellisesti luokiteltujen kohteiden painoihin ja säätää seuraavan luokittimen sovitusta korjatakseen ne.
---
## 🚀Haaste
Jokaisella näistä tekniikoista on suuri määrä parametreja, joita voit säätää. Tutki kunkin oletusparametreja ja mieti, mitä näiden parametrien säätäminen tarkoittaisi mallin laadulle.
Jokaisella näistä menetelmistä on suuri määrä parametreja, joita voit säätää. Tutki kunkin oletusparametreja ja mieti, mitä niiden muuttaminen merkitsisi mallin laadulle.
Näissä oppitunneissa on paljon ammattikieltä, joten ota hetki aikaa tarkastellaksesi [tätä listaa](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) hyödyllisistä termeistä!
Näissä oppitunneissa on paljon ammattisanastoa, joten ota hetki ja kertaile [tätä listaa](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) hyödyllisistä termeistä!
## Tehtävä
[Parametrien säätö](assignment.md)
[Parametrileikki](assignment.md)
---
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä tulee pitää virallisena lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä johtuvista väärinymmärryksistä tai virhetulkinnoista.
"\n---\n\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulee pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskääntämistä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty tekoälykäännöspalvelun [Co-op Translator](https://github.com/Azure/co-op-translator) avulla. Pyrimme tarkkuuteen, mutta huomioithan, että automaattikäännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä tulisi katsoa auktoriteettiseksi lähteeksi. Tärkeissä tiedoissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tästä käännöksestä aiheutuvista väärinymmärryksistä tai virhetulkinnoista.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulee pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskääntämistä. Emme ole vastuussa tämän käännöksen käytöstä johtuvista väärinkäsityksistä tai virhetulkinnoista.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Vastuuvapauslauseke**:\nTämä asiakirja on käännetty käyttäen tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, on hyvä huomioida, että automaattikäännöksissä saattaa esiintyä virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeiden tietojen osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tästä käännöksestä johtuvista väärinkäsityksistä tai tulkinnoista.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Tämä repositorio sisältää yli 50 kielikäännöstä, mikä lisää merkittävästi latauskokoa. Jos haluat kloonata ilman käännöksiä, käytä sparse checkoutia:
> **Haluatko mieluummin kloonata paikallisesti?**
>
> Tässä arkistossa on yli 50 kielikäännöstä, mikä lisää merkittävästi ladattavan tiedoston kokoa. Jos haluat kloonata ilman käännöksiä, käytä harvaa ulosottoa:
Meillä on meneillään Discordissa tekoälyn oppimissarja, lue lisää ja liity mukaan osoitteessa [Learn with AI Series](https://aka.ms/learnwithai/discord) ajalla 18.–30. syyskuuta 2025. Saat vinkkejä ja niksejä GitHub Copilotin käyttämiseen Data Scientistin työn tukena.
Meillä on käynnissä Discordin Oppiminen tekoälyn kanssa -sarja, opi lisää ja liity mukaan osoitteessa [Learn with AI Series](https://aka.ms/learnwithai/discord) ajalla 18.–30. syyskuuta 2025. Saat vinkkejä ja niksejä GitHub Copilotin käytöstä datatieteessä.

> 🌍 Matkusta ympäri maailmaa tutustuessamme koneoppimiseen maailman kulttuurien kautta 🌍
> 🌍 Matkusta ympäri maailmaa tutkiessamme koneoppimista maailman kulttuurien avulla 🌍
Microsoftin Cloud Advocates -tiimi tarjoaa 12 viikon, 26 oppitunnin opetussuunnitelman, joka käsittelee **koneoppimista**. Tässä opetussuunnitelmassa opit ns. **klassista koneoppimista**, pääasiassa Scikit-learn-kirjaston avulla, välttäen syväoppimista, joka sisältyy [tekoälyn aloittelijoiden opetussuunnitelmaamme](https://aka.ms/ai4beginners). Yhdistä nämä oppitunnit myös ['Data Science aloittelijat' -opetusohjelmaamme](https://aka.ms/ds4beginners)!
Microsoftin Cloud Advocates -tiimi on iloinen voidessaan tarjota 12 viikon, 26 oppitunnin opetussuunnitelman, joka keskittyy **koneoppimiseen**. Tässä opetussuunnitelmassa opit ns. **klassista koneoppimista**, käyttäen ensisijaisesti Scikit-learniä kirjastona ja välttäen syväoppimista, joka käsitellään [AI for Beginners -opetussuunnitelmassamme](https://aka.ms/ai4beginners). Voit parittaa nämä oppitunnit myös ['Data Science for Beginners' -opetussuunnitelman](https://aka.ms/ds4beginners) kanssa!
Matkusta kanssamme ympäri maailmaa soveltamalla klassisia tekniikoita eri puolilta kerättyyn dataan. Jokainen oppitunti sisältää ennakko- ja jälkikyselyt, kirjalliset ohjeet oppitunnin suorittamiseen, ratkaisun, tehtävän ja paljon muuta. Projektipohjainen pedagogiikkamme mahdollistaa oppimisen samalla kun rakennat, mikä on osoittautunut tehokkaaksi tavaksi saada uudet taidot 'jämähtämään'.
Matkusta kanssamme ympäri maailmaa soveltaen klassisia menetelmiä monen alueen dataan. Jokainen oppitunti sisältää ennen oppituntia ja oppitunnin jälkeen tehtävät kokeet, kirjalliset ohjeet oppitunnin suorittamiseen, ratkaisun, tehtävän ja paljon muuta. Projektipohjainen opetustapamme sallii oppimisen rakentamisen yhteydessä – todistettu tapa saada uudet taidot jäämään mieleen.
**✍️ Lämpimät kiitokset kirjoittajille:** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ja Amy Boyd
**✍️ Lämmin kiitos kirjoittajillemme** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ja Amy Boyd
**🎨 Kiitokset myös kuvittajille:** Tomomi Imura, Dasani Madipalli ja Jen Looper
**🎨 Kiitokset myös kuvittajillemme** Tomomi Imura, Dasani Madipalli ja Jen Looper
**🙏 Erityiskiitokset 🙏 Microsoftin opiskelija-ambassadoreille, kirjoittajille, arvioijille ja sisällöntuottajille:** erityisesti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ja Snigdha Agarwal
**🙏 Erityiskiitokset 🙏 Microsoft Student Ambassador -kirjoittajillemme, tarkistajille ja sisällöntuottajille**, erityisesti Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ja Snigdha Agarwal
**🤩 Ekstra kiitokset Microsoftin opiskelija-ambassadoreille Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta R-kielten oppitunneistamme!**
**🤩 Lisäkiitos Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi ja Vidushi Gupta -tiimille R-oppitunneistamme!**
# Aloittaminen
Noudata näitä ohjeita:
1. **Forkkaa repositorio**: Klikkaa oikeassa yläkulmassa olevaa "Fork" -painiketta.
> [löydät kaikki tämän kurssin lisäresurssit Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [löydät kaikki lisäresurssit tälle kurssille Microsoft Learn kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Tarvitsetko apua?** Tarkista [Vianmääritysohjeemme](TROUBLESHOOTING.md) yleisimpien asennus-, käyttö- ja oppituntien ajamiseen liittyvien ongelmien ratkaisemiseksi.
> 🔧 **Tarvitsetko apua?** Katso [Vianmääritysohjeemme](TROUBLESHOOTING.md) yleisimpiin ongelmiin asennuksessa, käytössä ja oppituntien suorittamisessa.
**[Opiskelijat](https://aka.ms/student-page)**, käyttäkää tätä opetussuunnitelmaa forkkaamalla koko repo omalle GitHub-tilillenne ja suorittamalla harjoitukset yksin tai ryhmässä:
**[Opiskelijat](https://aka.ms/student-page)**, käyttääksesi tätä opetussuunnitelmaa, haarukoi koko repo omalle GitHub-tilillesi ja suorita tehtävät itsenäisesti tai ryhmän kanssa:
- Aloita ennakkokyselyllä.
- Lue oppitunti ja suorita tehtävät, pysähtyen ja pohdiskellen jokaisessa tietotarkistuksessa.
- Yritä luoda projektit ymmärtämällä oppituntien sisältö koodiratkaisun ajamisen sijaan; koodit löytyvät kuitenkin kunkin projektipohjaisen oppitunnin /solution-kansiosta.
- Tee jälkikysely.
- Aloita esituntikokeella.
- Lue luento ja suorita tehtävät, pysähdy ja pohdi jokaisen osaamisen tarkistuksen kohdalla.
- Yritä tuottaa projektit ymmärtämällä oppitunteja sen sijaan, että suoritat ratkaisukoodin; tämä koodi kuitenkin löytyy projektikohtaisten oppituntien `/solution`-kansioista.
- Tee loppukoe heti luennon jälkeen.
- Suorita haaste.
- Suorita tehtävä.
- Oppituntiryhmän suorittamisen jälkeen käy [keskustelupalstalla](https://github.com/microsoft/ML-For-Beginners/discussions) ja "oppi ääneen" täyttämällä PAT-arviointilomake. PAT on Progress Assessment Tool, arviointimatriisi, jonka täytät oppimisesi edistämiseksi. Voit myös reagoida muiden PAT-arviointeihin, jotta voimme oppia yhdessä.
- Oppituntiryhmän päätyttyä käy [keskustelufoorumilla](https://github.com/microsoft/ML-For-Beginners/discussions) ja "opiskele ääneen" täyttämällä asiaankuuluva PAT-arviointipohja. PAT on edistymisen arviointityökalu, johon merkitset oppimistasi edistäviä havaintoja. Voit myös reagoida muiden PAT-muistiinpanoihin, jotta voimme oppia yhdessä.
> Jatko-opiskelua varten suosittelemme seuraamaan näitä [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduuleja ja oppimispolkuja.
> Syventävään opiskeluun suosittelemme seuraamaan näitä [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) moduuleja ja oppimispolkuja.
**Opettajat**, olemme lisänneet joitakin [ehdotuksia](for-teachers.md) tämän opetussuunnitelman hyödyntämiseen.
**Opettajat**, olemme lisänneet [joitakin suosituksia](for-teachers.md) tämän opetussuunnitelman hyödyntämiseksi.
---
## Videon läpikäynnit
## Videoesittelyt
Jotkin oppitunnit ovat saatavilla lyhyinä videoina. Löydät ne kaikki oppituntien yhteydestä tai [ML for Beginners -soittolistalta Microsoft Developer YouTube -kanavalla](https://aka.ms/ml-beginners-videos) klikkaamalla alla olevaa kuvaa.
Osa oppitunneista on saatavilla lyhyiden videoiden muodossa. Löydät ne linjassa oppitunteihin tai [ML for Beginners -soittolistalta Microsoft Developerin YouTube-kanavalta](https://aka.ms/ml-beginners-videos) klikkaamalla alla olevaa kuvaa.
> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi videon projektista ja sen tekijöistä!
> 🎥 Klikkaa yllä olevaa kuvaa projektivideon katsomiseksi ja tutustu tekijöihin!
---
## Pedagogiikka
## Opetustapa
Olemme valinneet kaksi pedagogista periaatetta tämän opetussuunnitelman rakentamisessa: varmistaa, että se on käytännönläheinen **projektipohjainen** sekä että siinä on **usein toistuvia kyselyjä**. Lisäksi opetussuunnitelmalla on yhteinen **teema**, joka antaa sille yhtenäisyyden.
Olemme valinneet kaksi opetuksen periaatetta tätä opetussuunnitelmaa rakentaessamme: varmistaa, että se on käytännönläheinen **projektipohjainen** ja että siinä on **useita kokeita**. Lisäksi tällä opetussuunnitelmalla on yhteinen **teema**, joka antaa sille yhtenäisyyttä.
Sisällön yhdistäminen projekteihin tekee opiskelusta kiinnostavampaa ja lisää käsitteiden muistamista. Lisäksi luennoille ennen aloitusta tehtävä pieni tietokilpailu ohjaa opiskelijan asenteen oppimiseen, ja luennon jälkeinen toinen tietokilpailu varmistaa opitun pysyvyyden. Tämä opetussuunnitelma on suunniteltu joustavaksi ja hauskaksi, ja sitä voi suorittaa kokonaan tai osittain. Projektit alkavat pienestä ja monimutkaistuvat 12 viikon aikana. Sisältää myös jälkisanat koneoppimisen todellisista sovelluksista, joita voi käyttää ylimääräisinä pisteinä tai keskustelun pohjana.
Sisällön sitominen projekteihin tekee prosessista opiskelijoille mielenkiintoisemman ja parantaa käsitteiden muistamista. Lisäksi matalan riskin koe luennon alussa suuntaa opiskelijan mielen teeman oppimiseen ja toinen koe luennon jälkeen varmistaa jatkotallentamisen. Tämä opetussuunnitelma on suunniteltu joustavaksi ja hauskaksi, ja se voidaan suorittaa kokonaan tai osittain. Projektit alkavat pieninä ja kasvavat monimutkaisuudeltaan 12 viikon jakson loppuun mennessä. Tämä opetussuunnitelma sisältää myös jälkikirjoituksen koneoppimisen todellisista sovelluksista, jota voidaan käyttää lisäpisteiden saamiseen tai keskustelun pohjana.
> Löydät [käyttäytymissäännöt](CODE_OF_CONDUCT.md), [osallistumisohjeet](CONTRIBUTING.md), [käännösohjeet](TRANSLATIONS.md) ja [vianmääritysohjeet](TROUBLESHOOTING.md). Otamme mielellämme vastaan rakentavaa palautetta!
> Löydät meidän [toimintakoodimme](CODE_OF_CONDUCT.md), [osallistumisohjeen](CONTRIBUTING.md), [käännösohjeet](TRANSLATIONS.md) ja [vianmääritysohjeen](TROUBLESHOOTING.md). Otamme mielellämme vastaan rakentavaa palautettasi!
> **Huomio kielistä:** Nämä oppitunnit on pääasiassa kirjoitettu Pythonilla, mutta monet ovat myös saatavilla R-kielellä. Suorittaaksesi R-oppitunnin, siirry /solution-kansioon ja etsi R-kielisiä oppitunteja. Ne sisältävät .rmd-päätteen, joka edustaa **R Markdown** -tiedostoa, joka voidaan määritellä upotuksena `koodin palstoista` (R:llä tai muilla kielillä) ja `YAML-otsikosta` (joka ohjaa esimerkiksi PDF-muotoilua) Markdown-dokumentissa. Tämä toimii erinomaisena kirjoituskehyksenä data-analyysiin, sillä voit yhdistää koodisi, sen tulokset ja ajatuksesi kirjoittamalla ne Markdownilla. Lisäksi R Markdown -tiedostot voidaan renderöidä PDF-, HTML- tai Word-muotoon.
> **Huomautus harjoituksista**: Kaikki harjoitukset löytyvät [Quiz App -kansiosta](../../quiz-app), yhteensä 52 harjoitusta, joissa jokaisessa on kolme kysymystä. Ne on linkitetty oppituntien yhteyteen, mutta kysymyskoneen voi ajaa myös paikallisesti; noudata `quiz-app`-kansion ohjeita isännöidäksesi tai ottaaksesi sen käyttöön Azuren palvelussa paikallisesti.
| Oppitunnin numero | Aihe | Oppitunnin ryhmittely | Oppimistavoitteet | Linkitetty oppitunti | Tekijä |
| 02 | Koneoppimisen historia | [Johdanto](1-Introduction/README.md) | Opi tämän alan historia | [Oppitunti](1-Introduction/2-history-of-ML/README.md) | Jen ja Amy |
| 03 | Oikeudenmukaisuus ja koneoppiminen | [Johdanto](1-Introduction/README.md) | Mitkä ovat tärkeät filosofiset kysymykset oikeudenmukaisuudesta, joita opiskelijoiden tulee miettiä koneoppimismallien rakentamisessa ja soveltamisessa? | [Oppitunti](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Koneoppimisen tekniikat | [Johdanto](1-Introduction/README.md) | Mitä tekniikoita koneoppimistutkijat käyttävät mallien rakentamiseen? | [Oppitunti](1-Introduction/4-techniques-of-ML/README.md) | Chris ja Jen |
| 05 | Johdatus regressioon | [Regressio](2-Regression/README.md) | Ota Python ja Scikit-learn käyttöön regressiomallien tekemiseen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Visualisoi ja siivoa data koneoppimisen valmisteluksi | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Rakenna lineaarisia ja polynomisia regressiomalleja | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ja Dmitry • Eric Wanjau |
| 08 | Pohjois-Amerikan kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Rakenna logistinen regressiomalli | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Web sovellus 🔌 | [Web App](3-Web-App/README.md) | Rakenna web-sovellus käyttämään koulutettua malliasi | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Johdatus luokitteluun | [Luokittelu](4-Classification/README.md) | Siivoa, valmistele ja visualisoi datasi; johdatus luokitteluun | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ja Cassie • Eric Wanjau |
| 11 | Herkulliset aasialaiset ja intialaiset keittiöt 🍜 | [Luokittelu](4-Classification/README.md) | Johdatus luokittelijoihin | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ja Cassie • Eric Wanjau |
| 12 | Herkulliset aasialaiset ja intialaiset keittiöt 🍜 | [Luokittelu](4-Classification/README.md) | Lisää luokittelijoita | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ja Cassie • Eric Wanjau |
| 16 | Johdatus luonnollisen kielen käsittelyyn ☕️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Opi NLP:n perusteet rakentamalla yksinkertainen botti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Yleisiä NLP-tehtäviä ☕️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Syvennä NLP-tietoasi ymmärtämällä yleisiä kielirakenteiden kanssa tarvittavia tehtäviä | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Käännös ja mielipideanalyysi ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Käännös ja mielipideanalyysi Jane Austenin avulla | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Euroopan romanttiset hotellit ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Mielipideanalyysi hotelliarvosteluilla 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Euroopan romanttiset hotellit ♥️ | [Luonnollisen kielen käsittely](6-NLP/README.md) | Mielipideanalyysi hotelliarvosteluilla 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
> [Löydä kaikki tämän kurssin lisäresurssit Microsoft Learn -kokoelmastamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> **Huomautus kielistä**: Nämä oppitunnit on pääasiassa kirjoitettu Pythonilla, mutta monet ovat saatavilla myös R-kielellä. R-oppitunnin suorittamiseksi siirry `/solution`-kansioon ja etsi R-oppitunteja. Niillä on .rmd-tiedostopääte, joka edustaa **R Markdown** -tiedostoa, joka voidaan yksinkertaisesti määritellä 'koodipalojen' (R:n tai muiden kielten) ja `YAML-otsikon` (joka ohjaa, miten tulosteet kuten PDF muotoillaan) upotuksena `Markdown-asiakirjassa`. Näin ollen se toimii erinomaisena kirjoituskehikkona datatieteelle, koska se mahdollistaa koodin, sen tulosten ja ajatusten yhdistämisen kirjoittamalla ne Markdowniin. Lisäksi R Markdown -asiakirjat voidaan tuottaa tulostusmuotoihin kuten PDF, HTML tai Word.
> **Huomautus kyselyistä**: Kaikki kyselyt löytyvät [Quiz App -kansiosta](../../quiz-app), yhteensä 52 kyselyä, joissa on kukin kolme kysymystä. Ne ovat linkitetty opetuksista, mutta kyselysovellus voidaan ajaa paikallisesti; noudata `quiz-app`-kansion ohjeita sovelluksen paikalliseen isännöintiin tai Azureen.
| Oppitunnin numero | Aihe | Oppitunnin ryhmittely | Oppimistavoitteet | Linkitetty oppitunti | Tekijä |
| 02 | Koneoppimisen historia | [Johdanto](1-Introduction/README.md) | Opi alan historia | [Oppitunti](1-Introduction/2-history-of-ML/README.md) | Jen ja Amy |
| 03 | Oikeudenmukaisuus ja koneoppiminen | [Johdanto](1-Introduction/README.md) | Mitä tärkeitä filosofisia kysymyksiä oikeudenmukaisuudesta opiskelijoiden tulisi pohtia koneoppimismalleja rakennettaessa ja sovellettaessa? | [Oppitunti](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Koneoppimistekniikat | [Johdanto](1-Introduction/README.md) | Mitä menetelmiä koneoppimistutkijat käyttävät mallien rakentamiseen? | [Oppitunti](1-Introduction/4-techniques-of-ML/README.md) | Chris ja Jen |
| 05 | Johdatus regressioon | [Regressio](2-Regression/README.md) | Aloita Pythonilla ja Scikit-learnillä regressiomallien rakentaminen | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Pohjoisamerikkalaiset kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Visualisoi ja puhdista dataa koneoppimista varten | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Pohjoisamerikkalaiset kurpitsahinnat 🎃 | [Regressio](2-Regression/README.md) | Rakenna lineaarisia ja polynomisia regressiomalleja | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ja Dmitry • Eric Wanjau |
| 16 | Johdatus luonnollisen kielen prosessointiin ☕️ | [Luonnollisen kielen prosessointi](6-NLP/README.md) | Opi NLP:n perusteet rakentamalla yksinkertainen botti | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Yleiset NLP-tehtävät ☕️ | [Luonnollisen kielen prosessointi](6-NLP/README.md) | Syvennä NLP-tietämystäsi ymmärtämällä yleiset kielen rakenteiden käsittelyssä tarvittavat tehtävät | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Käännös ja mielipiteen analyysi ♥️ | [Luonnollisen kielen prosessointi](6-NLP/README.md) | Käännös ja mielipideanalyysi Jane Austenin avulla | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Euroopan romanttiset hotellit ♥️ | [Luonnollisen kielen prosessointi](6-NLP/README.md) | Mielipideanalyysi hotelliarvioiden kanssa 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Euroopan romanttiset hotellit ♥️ | [Luonnollisen kielen prosessointi](6-NLP/README.md) | Mielipideanalyysi hotelliarvioiden kanssa 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| Jälkikirjoitus | Todellisen maailman ML-skenaariot ja sovellukset | [ML luonnossa](9-Real-World/README.md) | Mielenkiintoisia ja paljastavia todellisen maailman sovelluksia klassiselle ML:lle | [Oppitunti](9-Real-World/1-Applications/README.md) | Tiimi |
| Jälkikirjoitus | Mallin virheenkorjaus ML:ssä RAI-hallintapaneelin avulla | [ML luonnossa](9-Real-World/README.md) | Mallin virheenkorjaus koneoppimisessa Responsible AI -hallintapaneelin komponenteilla | [Oppitunti](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [löydä kaikki tämän kurssin lisäresurssit Microsoft Learn -kokoelmassamme](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline-käyttö
Voit käyttää tätä dokumentaatiota offline-tilassa Docsifyn avulla [Docsify](https://docsify.js.org/#/). Tee fork tälle repositoriolle, [asenna Docsify](https://docsify.js.org/#/quickstart) paikalliselle koneellesi ja kirjoita sitten tämän repoversion juurikansiossa `docsify serve`. Sivusto aukeaa portissa 3000 paikallisessa koneessasi: `localhost:3000`.
Voit käyttää tätä dokumentaatiota offline-tilassa käyttämällä [Docsify](https://docsify.js.org/#/). Forkkaa tämä repo, [asenna Docsify](https://docsify.js.org/#/quickstart) paikalliselle koneellesi, ja tämän repositorion juurikansiossa kirjoita `docsify serve`. Sivusto palvelimella on portissa 3000 osoitteessa localhost: `localhost:3000`.
Löydä pdf opetussuunnitelmasta linkkeineen [täältä](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Muut kurssit
@ -171,11 +182,11 @@ Tiimimme tuottaa myös muita kursseja! Tutustu:
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
### Azure / Edge / MCP / Agentit
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
Jos juutut tai sinulla on kysymyksiä tekoälysovellusten rakentamisesta. Liity muiden oppijoiden ja kokeneiden kehittäjien keskusteluihin MCP:stä. Se on tukevainen yhteisö, jossa kysymykset ovat tervetulleita ja tietoa jaetaan vapaasti.
Jos jumitut tai sinulla on kysyttävää tekoälysovellusten rakentamisesta, liity muiden oppijoiden ja kokeneiden kehittäjien keskusteluihin MCP:stä. Tämä on kannustava yhteisö, jossa kysymykset ovat tervetulleita ja tieto jaetaan vapaasti.
- Käy läpi muistiinpanot jokaisen oppitunnin jälkeen paremman ymmärryksen saamiseksi.
- Harjoittele algoritmien toteuttamista itse.
- Tutki todellisia tietoaineistoja käyttäen opittuja käsitteitä.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomaathan, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen omalla kielellä tulee pitää auktoritatiivisena lähteenä. Tärkeissä tiedoissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai virhetulkintojen seurauksista.
**Vastuuvapauslauseke**:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, ole hyvä ja huomioi, että automaattikäännöksissä voi esiintyä virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulee pitää auktoritatiivisena lähteenä. Tärkeissä asioissa suosittelemme ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai -tulkinn oista.
I denne leksjonen lærte du om Responsible AI Toolbox, et "åpen kildekode, samfunnsdrevet prosjekt for å hjelpe dataforskere med å analysere og forbedre AI-systemer." For denne oppgaven, utforsk en av RAI Toolbox sine [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) og rapporter funnene dine i et papir eller en presentasjon.
I denne leksjonen lærte du om Responsible AI Toolbox, et "åpen kildekode, fellesskapsdrevet prosjekt for å hjelpe dataforskere med å analysere og forbedre AI-systemer." For denne oppgaven, utforsk en av RAI Toolboxs [notebooker](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) og rapporter funnene dine i en oppgave eller presentasjon.
| | Et papir eller PowerPoint-presentasjon blir levert som diskuterer Fairlearns systemer, notebooken som ble kjørt, og konklusjonene som ble trukket fra den | Et papir blir levert uten konklusjoner | Ingen papir blir levert |
| | En oppgave eller PowerPoint-presentasjon presenteres som diskuterer Fairlearns systemer, notebooken som ble kjørt, og konklusjonene trukket fra kjøringen | En oppgave presenteres uten konklusjoner | Ingen oppgave presenteres |
---
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi legger vekt på nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som følge av bruk av denne oversettelsen.
> ### [Denne leksjonen er også tilgjengelig i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [Denne leksjonen er tilgjengelig i R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Introduksjon
Så langt har du utforsket hva regresjon er med eksempeldata hentet fra gresskarpris-datasettet som vi skal bruke gjennom hele denne leksjonen. Du har også visualisert det ved hjelp av Matplotlib.
Så langt har du utforsket hva regresjon er med prøveutvalg samlet fra gresskarprisdatasettet som vi skal bruke gjennom denne leksjonen. Du har også visualisert det med Matplotlib.
Nå er du klar til å dykke dypere inn i regresjon for maskinlæring. Mens visualisering hjelper deg med å forstå data, ligger den virkelige kraften i maskinlæring i _å trene modeller_. Modeller trenes på historiske data for automatisk å fange opp datamønstre, og de lar deg forutsi utfall for nye data som modellen ikke har sett før.
Nå er du klar til å dykke dypere inn i regresjon for ML. Mens visualisering lar deg forstå data, kommer den virkelige kraften i Maskinlæring fra _trening av modeller_. Modeller trenes på historiske data for automatisk å fange opp dataavhengigheter, og de tillater deg å forutsi utfall for nye data, som modellen ikke har sett før.
I denne leksjonen vil du lære mer om to typer regresjon: _grunnleggende lineær regresjon_ og _polynomisk regresjon_, sammen med noe av matematikken som ligger til grunn for disse teknikkene. Disse modellene vil hjelpe oss med å forutsi gresskarpriser basert på ulike inngangsdata.
I denne leksjonen vil du lære mer om to typer regresjon: _grunnleggende lineær regresjon_ og _polynomisk regresjon_, sammen med noe av matematikken som ligger til grunn for disse teknikkene. Disse modellene vil tillate oss å forutsi gresskarpriser basert på forskjellige inngangsdata.
[](https://youtu.be/CRxFT8oTDMg "ML for nybegynnere - Forstå lineær regresjon")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klikk på bildet over for en kort videooversikt over lineær regresjon.
> 🎥 Klikk på bildet ovenfor for en kort videooversikt over lineær regresjon.
> Gjennom hele dette kurset antar vi minimal kunnskap om matematikk og søker å gjøre det tilgjengelig for studenter fra andre felt. Se etter notater, 🧮 utrop, diagrammer og andre læringsverktøy for å hjelpe med forståelsen.
> Gjennom dette pensumet forutsetter vi minimal kunnskap i matematikk, og søker å gjøre det tilgjengelig for studenter fra andre fagfelt, så hold øye med notater, 🧮 markeringer, diagrammer og andre læringsverktøy for å hjelpe forståelsen.
### Forutsetninger
Du bør nå være kjent med strukturen til gresskar-datasettet vi undersøker. Du finner det forhåndslastet og forhåndsrenset i denne leksjonens _notebook.ipynb_-fil. I filen vises gresskarprisen per bushel i en ny data frame. Sørg for at du kan kjøre disse notatbøkene i kjerner i Visual Studio Code.
Du bør nå være kjent med strukturen på gresskardataene som vi undersøker. Du kan finne det forhåndslastet og forhåndsrenset i denne leksjonens _notebook.ipynb_-fil. I filen vises gresskarpris per bushel i en ny dataramme. Sørg for at du kan kjøre disse notatbøkene i kjerne i Visual Studio Code.
### Forberedelse
Som en påminnelse, du laster inn disse dataene for å stille spørsmål til dem.
Som en påminnelse laster du inn disse dataene for å stille spørsmål til dem.
- Når er det best å kjøpe gresskar?
- Hvilken pris kan jeg forvente for en kasse med miniatyrgresskar?
- Bør jeg kjøpe dem i halv-bushelkurver eller i 1 1/9 bushel-esker?
- Når er det beste tidspunktet å kjøpe gresskar?
- Hvilken pris kan jeg forvente på en kasse med miniatyrgresskar?
- Bør jeg kjøpe dem i halvbukettkurver eller i 1 1/9 bushel-boksen?
La oss fortsette å grave i disse dataene.
I forrige leksjon opprettet du en Pandas data frame og fylte den med en del av det opprinnelige datasettet, og standardiserte prisen per bushel. Ved å gjøre det var du imidlertid bare i stand til å samle rundt 400 datapunkter, og kun for høstmånedene.
I forrige leksjon opprettet du en Pandas-dataramme og fylte den med deler av det originale datasettet, og standardiserte prisene per bushel. Ved å gjøre det, klarte du imidlertid bare å samle inn omtrent 400 datapunkter og kun for høstmånedene.
Ta en titt på dataene som vi har forhåndslastet i denne leksjonens tilhørende notatbok. Dataene er forhåndslastet, og et første spredningsdiagram er laget for å vise månedsdata. Kanskje vi kan få litt mer innsikt i dataene ved å rense dem ytterligere.
Ta en titt på dataene vi forhåndslastet i denne leksjonens medfølgende notatbok. Dataene er forhåndslastet, og en innledende spredningsdiagram er tegnet for å vise månedsdata. Kanskje vi kan få litt mer detalj om datanaturen ved å rense den mer.
## En lineær regresjonslinje
Som du lærte i leksjon 1, er målet med en lineær regresjonsøvelse å kunne tegne en linje for å:
Som du lærte i leksjon 1, er målet med en lineær regresjonsøvelse å kunne plotte en linje for å:
- **Vise variabelsammenhenger**. Vise forholdet mellom variabler
- **Gjøre forutsigelser**. Gjøre nøyaktige forutsigelser om hvor et nytt datapunkt vil falle i forhold til den linjen.
- **Vis variable relasjoner**. Vis forholdet mellom variabler
- **Gjøre prediksjoner**. Gjør nøyaktige prediksjoner om hvor et nytt datapunkt vil falle i forhold til den linjen.
Det er typisk for **minste kvadraters regresjon** å tegne denne typen linje. Begrepet 'minste kvadrater' betyr at alle datapunktene rundt regresjonslinjen kvadreres og deretter summeres. Ideelt sett er denne summen så liten som mulig, fordi vi ønsker et lavt antall feil, eller `minste kvadrater`.
Det er vanlig med **minste kvadraters regresjon** å tegne denne typen linje. Begrepet "minste kvadraters" refererer til prosessen med å minimere den totale feilen i modellen vår. For hvert datapunkt måler vi den vertikale avstanden (kalt et residual) mellom det faktiske punktet og regresjonslinjen vår.
Vi kvadrerer disse avstandene av to hovedgrunner:
Vi gjør dette fordi vi ønsker å modellere en linje som har minst mulig kumulativ avstand fra alle datapunktene våre. Vi kvadrerer også termene før vi legger dem sammen, siden vi er opptatt av størrelsen snarere enn retningen.
1. **Størrelse over retning:** Vi ønsker å behandle en feil på -5 det samme som en feil på +5. Kvadrering gjør alle verdier positive.
2. **Straff for uteliggere:** Kvadrering gir mer vekt til større feil, og tvinger linjen til å holde seg nærmere punkter som ligger langt unna.
Deretter legger vi sammen alle disse kvadrerte verdiene. Målet vårt er å finne den spesifikke linjen hvor denne endelige summen er på sitt laveste (den minste mulige verdien) — derav navnet "minste kvadraters".
> **🧮 Vis meg matematikken**
>
> Denne linjen, kalt _linjen for beste tilpasning_, kan uttrykkes ved [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Denne linjen, kalt _best fit-linjen_ kan uttrykkes ved [en ligning](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` er den 'forklarende variabelen'. `Y` er den 'avhengige variabelen'. Stigningen på linjen er `b`, og `a` er skjæringspunktet med y-aksen, som refererer til verdien av `Y` når `X = 0`.
> `X` er den 'forklarende variabelen'. `Y` er den 'avhengige variabelen'. Stigningstallet til linjen er `b` og `a` er y-avskjæringen, som refererer til verdien av `Y` når `X = 0`.
> Først, beregn stigningen `b`. Infografikk av [Jen Looper](https://twitter.com/jenlooper)
> Først beregnes stigningen `b`. Infografikk av [Jen Looper](https://twitter.com/jenlooper)
>
> Med andre ord, og med henvisning til det opprinnelige spørsmålet om gresskar-dataene: "forutsi prisen på et gresskar per bushel etter måned", ville`X` referere til prisen og `Y` til salgsdatoen.
> Med andre ord, og med henvisning til vårt gresskardatas opprinnelige spørsmål: "forutsi prisen på et gresskar per bushel etter måned", vil `X` referere til prisen og `Y` til salgsmåneden.
> Beregn verdien av Y. Hvis du betaler rundt $4, må det være april! Infografikk av [Jen Looper](https://twitter.com/jenlooper)
> Beregn verdien av Y. Hvis du betaler rundt 4 dollar, må det være april! Infografikk av [Jen Looper](https://twitter.com/jenlooper)
>
> Matematikk som beregner linjen må vise stigningen på linjen, som også avhenger av skjæringspunktet, eller hvor `Y` er plassert når `X = 0`.
> Matematikk som beregner linjen må demonstrere linjens stigning, som også avhenger av avskjæringen, eller hvor `Y` er plassert når `X = 0`.
>
> Du kan se metoden for beregning av disse verdiene på nettstedet [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Besøk også [denne minste kvadraters kalkulatoren](https://www.mathsisfun.com/data/least-squares-calculator.html) for å se hvordan tallverdiene påvirker linjen.
> Du kan observere metoden for beregning av disse verdiene på [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) nettstedet. Besøk også [denne minste kvadraters kalkulator](https://www.mathsisfun.com/data/least-squares-calculator.html) for å se hvordan tallverdiene påvirker linjen.
## Korrelasjon
Et annet begrep å forstå er **korrelasjonskoeffisienten** mellom gitte X- og Y-variabler. Ved hjelp av et spredningsdiagram kan du raskt visualisere denne koeffisienten. Et diagram med datapunkter spredt i en ryddig linje har høy korrelasjon, men et diagram med datapunkter spredt overalt mellom X og Y har lav korrelasjon.
Et annet begrep å forstå er **korrelasjonskoeffisienten** mellom gitte X og Y variabler. Ved å bruke et spredningsdiagram kan du raskt visualisere denne koeffisienten. Et plott med datapunkter fordelt i en pen linje har høy korrelasjon, men et plott med datapunkter spredt overalt mellom X og Y har lav korrelasjon.
En god lineær regresjonsmodell vil være en som har en høy (nærmere 1 enn 0) korrelasjonskoeffisient ved bruk av minste kvadraters regresjonsmetode med en regresjonslinje.
En god lineær regresjonsmodell vil være en som har høy (nærmere 1 enn 0) korrelasjonskoeffisient ved bruk av minste kvadraters regresjonsmetode med en regresjonslinje.
✅ Kjør notatboken som følger med denne leksjonen, og se på spredningsdiagrammet for måned til pris. Ser dataene som knytter måned til pris for gresskarsalg ut til å ha høy eller lav korrelasjon, ifølge din visuelle tolkning av spredningsdiagrammet? Endrer det seg hvis du bruker en mer detaljert måling i stedet for `Måned`, for eksempel*dag i året* (dvs. antall dager siden begynnelsen av året)?
✅ Kjør notatboken som følger med denne leksjonen og se på spredningsplottet for Måned mot Pris. Ser dataene som kobler Måned til Pris for gresskarsalg ut til å ha høy eller lav korrelasjon, i henhold til din visuelle tolkning av spredningsplottet? Endres det hvis du bruker et mer detaljert mål i stedet for `Month`, f.eks.*dag i året* (dvs. antall dager siden begynnelsen av året)?
I koden nedenfor antar vi at vi har renset dataene og fått en data frame kalt `new_pumpkins`, som ligner på følgende:
I koden nedenfor antar vi at vi har renset dataene, og oppnådd en dataramme kalt `new_pumpkins`, lik følgende:
ID | Måned | DagIÅret | Sort | By | Pakke | Lav pris | Høy pris | Pris
> Koden for å rense dataene er tilgjengelig i [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Vi har utført de samme rensetrinnene som i forrige leksjon, og har beregnet `DagIÅret`-kolonnen ved hjelp av følgende uttrykk:
> Koden for å rense dataene er tilgjengelig i [`notebook.ipynb`](notebook.ipynb). Vi har utført de samme renseprosedyrene som i forrige leksjon, og har beregnet kolonnen `DayOfYear` ved hjelp av følgende uttrykk:
Nå som du har en forståelse av matematikken bak lineær regresjon, la oss lage en regresjonsmodell for å se om vi kan forutsi hvilken pakke med gresskar som vil ha de beste prisene. Noen som kjøper gresskar til en høstfest kan ha nytte av denne informasjonen for å optimalisere kjøpene sine.
Nå som du har forståelse for matematikken bak lineær regresjon, la oss lage en regresjonsmodell for å se om vi kan forutsi hvilken pakke med gresskar som vil ha de beste gresskarprisene. Noen som kjøper gresskar til en høstgresskarhage kan ønske denne informasjonen for å kunne optimalisere sine kjøp av gresskarpakker til hagen.
## Lete etter korrelasjon
## Ser etter korrelasjon
[](https://youtu.be/uoRq-lW2eQo "ML for nybegynnere - Lete etter korrelasjon: Nøkkelen til lineær regresjon")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klikk på bildet over for en kort videooversikt over korrelasjon.
> 🎥 Klikk på bildet ovenfor for en kort videooversikt over korrelasjon.
Fra forrige leksjon har du sannsynligvis sett at gjennomsnittsprisen for ulike måneder ser slik ut:
<imgalt="Gjennomsnittspris per måned"src="../../../../translated_images/no/barchart.a833ea9194346d76.webp"width="50%"/>
Dette antyder at det bør være en viss korrelasjon, og vi kan prøve å trene en lineær regresjonsmodell for å forutsi forholdet mellom `Måned` og `Pris`, eller mellom `DagIÅret` og `Pris`. Her er spredningsdiagrammet som viser det sistnevnte forholdet:
Dette antyder at det bør være en viss korrelasjon, og vi kan prøve å trene en lineær regresjonsmodell for å predikere forholdet mellom `Month` og `Price`, eller mellom `DayOfYear` og `Price`. Her er spredningsplottet som viser det sistnevnte forholdet:
<imgalt="Spredningsdiagram av pris vs. dag i året" src="../../../../translated_images/no/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Spredningsplott av Pris vs. Dag i året" src="../../../../translated_images/no/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
La oss se om det er en korrelasjon ved hjelp av`corr`-funksjonen:
La oss se om det er en korrelasjon ved å bruke`corr`-funksjonen:
Det ser ut til at korrelasjonen er ganske liten, -0.15 for `Måned` og -0.17 for `DagIÅret`, men det kan være et annet viktig forhold. Det ser ut til at det er forskjellige prisgrupper som tilsvarer ulike gresskarsorter. For å bekrefte denne hypotesen, la oss plotte hver gresskarkategori med en annen farge. Ved å sende en `ax`-parameter til `scatter`-plottefunksjonen kan vi plotte alle punkter på samme graf:
Det ser ut som korrelasjonen er ganske liten, -0.15 basert på `Month` og -0.17 basert på `DayOfYear`, men det kan være et annet viktig forhold. Det ser ut til å være forskjellige klynger av priser som tilsvarer forskjellige gresskarsorter. For å bekrefte denne hypotesen, la oss tegne hver gresskarkategori med en annen farge. Ved å sende inn en `ax`-parameter til `scatter`-plottfunksjonen kan vi tegne alle punktene på samme graf:
```python
ax=None
@ -128,40 +140,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Spredningsdiagram av pris vs. dag i året" src="../../../../translated_images/no/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Spredningsplott av Pris vs. Dag i året" src="../../../../translated_images/no/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Hvis vi nå beregner korrelasjonen mellom `Pris` og `DagIÅret` ved hjelp av `corr`-funksjonen, vil vi få noe som `-0.27` - noe som betyr at det gir mening å trene en prediktiv modell.
Hvis vi nå beregner korrelasjonen mellom `Price` og `DayOfYear` ved bruk av `corr`-funksjonen, får vi noe som `-0.27`– noe som betyr at det gir mening å trene en prediksjonsmodell.
> Før du trener en lineær regresjonsmodell, er det viktig å sørge for at dataene våre er rene. Lineær regresjon fungerer ikke godt med manglende verdier, så det gir mening å fjerne alle tomme celler:
> Før vi trener en lineær regresjonsmodell, er det viktig å sørge for at dataene våre er rene. Lineær regresjon fungerer ikke godt med manglende verdier, så det gir mening å kvitte seg med alle tomme celler:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
En annen tilnærming ville være å fylle de tomme verdiene med gjennomsnittsverdier fra den tilsvarende kolonnen.
En annen tilnærming kan være å fylle de tomme verdiene med gjennomsnittsverdier fra den tilsvarende kolonnen.
## Enkel lineær regresjon
[](https://youtu.be/e4c_UP2fSjg "ML for nybegynnere - Lineær og polynomisk regresjon med Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klikk på bildet over for en kort videooversikt over lineær og polynomisk regresjon.
> 🎥 Klikk på bildet ovenfor for en kort videooversikt over lineær og polynomisk regresjon.
For å trene vår lineære regresjonsmodell, vil vi bruke **Scikit-learn**-biblioteket.
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Vi starter med å skille inngangsverdier (funksjoner) og forventet utgang (etikett) i separate numpy-arrays:
Vi starter med å separere inngangsverdier (egenskaper) og forventet utgang (etikett) i separate numpy-arrays:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Merk at vi måtte utføre `reshape` på inngangsdataene for at pakken for lineær regresjon skulle forstå dem riktig. Lineær regresjon forventer et 2D-array som inngang, hvor hver rad i arrayet tilsvarer en vektor av inngangsfunksjoner. I vårt tilfelle, siden vi bare har én inngang, trenger vi et array med formen N×1, hvor N er datasettets størrelse.
> Merk at vi måtte utføre `reshape` på inngangsdataene for at Linear Regression-pakken skulle forstå det korrekt. Lineær regresjon forventer et 2D-array som input, der hver rad av arrayet tilsvarer en vektor med inngangsegenskaper. I vårt tilfelle, siden vi bare har én input, trenger vi et array med formen N×1, der N er datastørrelsen.
Deretter må vi dele dataene inn i trenings- og testdatasett, slik at vi kan validere modellen vår etter trening:
Deretter må vi splitte dataene i trenings- og testdatasett, slik at vi kan validere modellen vår etter trening:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Til slutt tar det bare to linjer med kode å trene den faktiske lineære regresjonsmodellen. Vi definerer `LinearRegression`-objektet og tilpasser det til dataene våre ved hjelp av`fit`-metoden:
Til slutt tar trening av den faktiske lineære regresjonsmodellen bare to kodelinjer. Vi definerer `LinearRegression`-objektet, og tilpasser det til dataene våre med`fit`-metoden:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression`-objektet inneholder etter `fit`-prosessen alle koeffisientene for regresjonen, som kan nås ved hjelp av `.coef_`-egenskapen. I vårt tilfelle er det bare én koeffisient, som bør være rundt `-0.017`. Dette betyr at prisene ser ut til å synke litt over tid, men ikke mye, rundt 2 cent per dag. Vi kan også få tilgang til skjæringspunktet med Y-aksen ved hjelp av`lin_reg.intercept_` - det vil være rundt `21` i vårt tilfelle, noe som indikerer prisen ved begynnelsen av året.
Objektet `LinearRegression` etter at det er blitt `fit`-tet inneholder alle koeffisientene til regresjonen, som kan aksesseres ved hjelp av `.coef_`-egenskapen. I vårt tilfelle er det bare én koeffisient, som bør være rundt `-0.017`. Det betyr at prisene ser ut til å synke litt med tiden, men ikke så mye, omtrent 2 cent per dag. Vi kan også aksessere skjæringspunktet til regresjonen med Y-aksen ved å bruke`lin_reg.intercept_` - det vil være rundt `21` i vårt tilfelle, noe som indikerer prisen ved begynnelsen av året.
For å se hvor nøyaktig modellen vår er, kan vi forutsi priser på et testdatasett og deretter måle hvor nærme forutsigelsene våre er de forventede verdiene. Dette kan gjøres ved hjelp av middelkvadratfeil (MSE)-metrikken, som er gjennomsnittet av alle kvadrerte forskjeller mellom forventet og forutsagt verdi.
For å se hvor nøyaktig modellen vår er, kan vi predikere priser på et testdatasett, og deretter måle hvor nær våre prediksjoner er til de forventede verdiene. Dette kan gjøres ved hjelp av gjennomsnittlig kvadratfeil (MSE) metrikken, som er gjennomsnittet av alle kvadrerte forskjeller mellom forventet og predikert verdi.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
Feilen vår ser ut til å være rundt 2 punkter, som er ~17 %. Ikke så bra. En annen indikator på modellkvalitet er **determinasjonskoeffisienten**, som kan beregnes slik:
Feilen vår ser ut til å være rundt 2 poeng, som er ~17%. Ikke så bra. En annen indikator på modellkvalitet er **determinasjonskoeffisienten**, som kan oppnås på denne måten:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Hvis verdien er 0, betyr det at modellen ikke tar hensyn til inputdata, og fungerer som den *dårligste lineære prediktoren*, som bare er gjennomsnittsverdien av resultatet. Verdien 1 betyr at vi kan perfekt forutsi alle forventede utfall. I vårt tilfelle er koeffisienten rundt 0,06, som er ganske lav.
Hvis verdien er 0, betyr det at modellen ikke tar hensyn til innndataene, og fungerer som den *verste lineære prediktoren*, som rett og slett er et gjennomsnitt av resultatet. Verdien 1 betyr at vi kan perfekt predikere alle forventede utganger. I vårt tilfelle er koeffisienten rundt 0.06, som er ganske lav.
Vi kan også plotte testdata sammen med regresjonslinjen for bedre å se hvordan regresjonen fungerer i vårt tilfelle:
Vi kan også plotte testdata sammen med regresjonslinjen for bedre å se hvordan regresjon fungerer i vårt tilfelle:
En annen type lineær regresjon er polynomisk regresjon. Selv om det noen ganger er en lineær sammenheng mellom variabler - jo større gresskaret er i volum, jo høyere pris - kan det noen ganger være slik at disse sammenhengene ikke kan plottes som et plan eller en rett linje.
En annen type lineær regresjon er polynomregresjon. Selv om det noen ganger er et lineært forhold mellom variabler – jo større gresskaret er i volum, desto høyere er prisen – kan disse forholdene noen ganger ikke plottes som et plan eller en rett linje.
✅ Her er [noen flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan bruke polynomisk regresjon.
✅ Her er [noen flere eksempler](https://online.stat.psu.edu/stat501/lesson/9/9.8) på data som kan bruke polynomregresjon
Se en gang til på sammenhengen mellom dato og pris. Ser dette spredningsdiagrammet ut som det nødvendigvis bør analyseres med en rett linje? Kan ikke priser svinge? I dette tilfellet kan du prøve polynomisk regresjon.
Ta en ny titt på forholdet mellom dato og pris. Virker ikke dette scatterplottet som om det nødvendigvis bør analyseres med en rett linje? Kan ikke prisene svinge? I så fall kan du prøve polynomregresjon.
✅ Polynomier er matematiske uttrykk som kan bestå av én eller flere variabler og koeffisienter.
✅ Polynomier er matematiske uttrykk som kan bestå av en eller flere variabler og koeffisienter
Polynomisk regresjon skaper en kurvet linje for bedre å tilpasse seg ikke-lineære data. I vårt tilfelle, hvis vi inkluderer en kvadrert `DayOfYear`-variabel i inputdataene, bør vi kunne tilpasse dataene våre med en parabolsk kurve, som vil ha et minimum på et bestemt punkt i løpet av året.
Polynomregresjon lager en buet linje for bedre å tilpasse ikke-lineære data. I vårt tilfelle, hvis vi inkluderer en kvadratisk `DayOfYear`-variabel i inndataene, bør vi kunne tilpasse våre data med en parabolsk kurve, som vil ha et minimum på et visst punkt i løpet av året.
Scikit-learn inkluderer en nyttig [pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) for å kombinere ulike trinn i databehandlingen. En **pipeline** er en kjede av **estimators**. I vårt tilfelle vil vi lage en pipeline som først legger til polynomiske funksjoner til modellen vår, og deretter trener regresjonen:
Scikit-learn inkluderer en nyttig [pipelineAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) for å kombinere forskjellige trinn i databehandling. En **pipeline** er en kjede av **estimatorer**. I vårt tilfelle vil vi lage en pipeline som først legger til polynomfunksjoner til modellen vår, og deretter trener regresjonen:
```python
from sklearn.preprocessing import PolynomialFeatures
Ved å bruke `PolynomialFeatures(2)` betyr det at vi vil inkludere alle andregrads polynomier fra inputdataene. I vårt tilfelle vil det bare bety`DayOfYear`<sup>2</sup>, men gitt to inputvariabler X og Y, vil dette legge til X<sup>2</sup>, XY og Y<sup>2</sup>. Vi kan også bruke polynomier av høyere grad hvis vi ønsker.
Å bruke `PolynomialFeatures(2)` betyr at vi inkluderer alle andregradspolynomer fra inndataene. I vårt tilfelle betyr det bare`DayOfYear`<sup>2</sup>, men gitt to inngangsvariabler X og Y, vil dette legge til X<sup>2</sup>, XY og Y<sup>2</sup>. Vi kan også bruke polynomer med høyere grad hvis vi ønsker det.
Pipelines kan brukes på samme måte som det opprinnelige `LinearRegression`-objektet, dvs. vi kan `fit` pipelinen, og deretter bruke `predict` for å få prediksjonsresultatene. Her er grafen som viser testdataene og tilnærmingskurven:
Pipelines kan brukes på samme måte som det originale `LinearRegression`-objektet, dvs. vi kan `fit`-te pipelinen, og deretter bruke `predict` for å få prediksjonsresultater. Her er grafen som viser testdataene og tilnærmingskurven:
Ved å bruke polynomisk regresjon kan vi få litt lavere MSE og høyere determinasjon, men ikke betydelig. Vi må ta hensyn til andre funksjoner!
Ved å bruke polynomregresjon kan vi få litt lavere MSE og høyere determinering, men ikke signifikant. Vi må ta hensyn til andre funksjoner!
> Du kan se at de laveste gresskarprisene observeres et sted rundt Halloween. Hvordan kan du forklare dette?
🎃 Gratulerer, du har nettopp laget en modell som kan hjelpe med å forutsi prisen på pai-gresskar. Du kan sannsynligvis gjenta samme prosedyre for alle gresskartyper, men det ville være tidkrevende. La oss nå lære hvordan vi kan ta gresskarsort i betraktning i modellen vår!
🎃 Gratulerer, du har nettopp laget en modell som kan hjelpe til med å forutsi prisen på paigresskar. Du kan sannsynligvis gjenta samme prosedyre for alle gresskartyper, men det ville være tidkrevende. La oss nå lære hvordan vi tar hensyn til gresskarvariant i modellen vår!
## Kategoriske funksjoner
## Kategoriske variabler
I en ideell verden ønsker vi å kunne forutsi priser for ulike gresskarsorter ved hjelp av samme modell. Imidlertid er `Variety`-kolonnen litt annerledes enn kolonner som `Month`, fordi den inneholder ikke-numeriske verdier. Slike kolonner kalles **kategoriske**.
I en ideell verden ønsker vi å kunne forutsi priser for forskjellige gresskarvarianter ved å bruke den samme modellen. Men kolonnen `Variety` er litt annerledes enn kolonner som `Month`, fordi den inneholder ikke-numeriske verdier. Slike kolonner kalles **kategoriske**.
[](https://youtu.be/DYGliioIAE0 "ML for nybegynnere - Kategoriske funksjoner med lineær regresjon")
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Klikk på bildet over for en kort videooversikt om bruk av kategoriske funksjoner.
> 🎥 Klikk på bildet over for en kort videooversikt over bruk av kategoriske variabler.
Her kan du se hvordan gjennomsnittsprisen avhenger av sort:
Her kan du se hvordan gjennomsnittsprisen avhenger av variasjon:
<imgalt="Gjennomsnittspris etter sort" src="../../../../translated_images/no/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/no/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
For å ta sort i betraktning, må vi først konvertere den til numerisk form, eller **enkode** den. Det finnes flere måter vi kan gjøre dette på:
For å ta varianter i betraktning, må vi først konvertere det til numerisk form, eller **kode** det. Det finnes flere måter vi kan gjøre det på:
* Enkel **numerisk enkoding** vil bygge en tabell over ulike sorter, og deretter erstatte sortnavnet med en indeks i den tabellen. Dette er ikke den beste ideen for lineær regresjon, fordi lineær regresjon tar den faktiske numeriske verdien av indeksen og legger den til resultatet, multiplisert med en koeffisient. I vårt tilfelle er sammenhengen mellom indeksnummeret og prisen tydelig ikke-lineær, selv om vi sørger for at indeksene er ordnet på en spesifikk måte.
* **One-hot enkoding** vil erstatte `Variety`-kolonnen med 4 forskjellige kolonner, én for hver sort. Hver kolonne vil inneholde `1` hvis den tilsvarende raden er av en gitt sort, og `0` ellers. Dette betyr at det vil være fire koeffisienter i lineær regresjon, én for hver gresskarsort, som er ansvarlig for "startpris" (eller rettere sagt "tilleggspris") for den spesifikke sorten.
* Enkel **numerisk koding** bygger en tabell med forskjellige varianter, og erstatter så variantnavnet med en indeks i tabellen. Dette er ikke den beste idéen for lineær regresjon, fordi lineær regresjon tar den faktiske numeriske verdien av indeksen, og legger det til resultatet multiplisert med en koeffisient. I vårt tilfelle er forholdet mellom indeksnummer og pris klart ikke-lineært, selv om vi sørger for at indeksene er ordnet på en bestemt måte.
* **One-hot-koding** erstatter kolonnen `Variety` med 4 forskjellige kolonner, én for hver variant. Hver kolonne inneholder `1` hvis raden tilsvarer den aktuelle varianten, og `0` ellers. Det betyr at det vil være fire koeffisienter i den lineære regresjonen, én for hver gresskarvariant, ansvarlig for "startpris" (eller heller "tillegg" pris) for den aktuelle varianten.
Koden nedenfor viser hvordan vi kan one-hot enkode en sort:
Koden nedenfor viser hvordan vi kan en-til-en kode en variant:
For å trene lineær regresjon ved bruk av one-hot enkodet sort som input, trenger vi bare å initialisere `X` og `y`-dataene korrekt:
For å trene lineær regresjon med one-hot kodet variant som input, må vi bare initialisere `X` og `y` data korrekt:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Resten av koden er den samme som vi brukte ovenfor for å trene lineær regresjon. Hvis du prøver det, vil du se at den gjennomsnittlige kvadratiske feilen er omtrent den samme, men vi får en mye høyere determinasjonskoeffisient (~77 %). For å få enda mer nøyaktige prediksjoner kan vi ta flere kategoriske funksjoner i betraktning, samt numeriske funksjoner, som `Month` eller `DayOfYear`. For å få én stor funksjonsmatrise kan vi bruke `join`:
Resten av koden er den samme som vi brukte ovenfor for å trene lineær regresjon. Hvis du prøver det, vil du se at gjennomsnittlig kvadratfeil er omtrent den samme, men vi får mye høyere determinering (~77%). For å få enda mer nøyaktige prediksjoner kan vi ta med flere kategoriske variabler, samt numeriske funksjoner, som `Month` eller `DayOfYear`. For å få et stort array med funksjoner kan vi bruke `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -306,31 +319,31 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Her tar vi også hensyn til `City` og `Package`-type, som gir oss MSE 2,84 (10 %) og determinasjon 0,94!
Her tar vi også hensyn til `City` og `Package`-type, noe som gir oss MSE 2.84 (10%), og determinering 0.94!
## Alt samlet
## Sette det hele sammen
For å lage den beste modellen kan vi bruke kombinerte (one-hot enkodede kategoriske + numeriske) data fra eksempelet ovenfor sammen med polynomisk regresjon. Her er den komplette koden for enkelhets skyld:
For å lage den beste modellen kan vi bruke kombinert (one-hot kodet kategorisk + numeriske) data fra eksempelet ovenfor sammen med polynomregresjon. Her er den komplette koden for din bekvemmelighet:
```python
# set up training data
# sett opp treningsdata
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# lag trenings-test deling
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
🏆 Bra jobbet! Du har laget fire regresjonsmodeller i én leksjon, og forbedret modellkvaliteten til 97%. I den siste delen om regresjon vil du lære om logistisk regresjon for å bestemme kategorier.
🏆 Bra jobbet! Du laget fire regresjonsmodeller i én leksjon, og forbedret modellkvaliteten til 97%. I den siste delen om regresjon vil du lære om logistisk regresjon for å bestemme kategorier.
---
## 🚀Utfordring
Test flere forskjellige variabler i denne notatboken for å se hvordan korrelasjon samsvarer med modellens nøyaktighet.
Test flere forskjellige variable i denne notebooken for å se hvordan korrelasjon samsvarer med modellnøyaktighet.
## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
## Gjennomgang og selvstudium
## Gjennomgang og selvstudie
I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige typer regresjon. Les om Stepwise, Ridge, Lasso og Elasticnet-teknikker. Et godt kurs for å lære mer er [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige typer regresjon. Les om Stepwise, Ridge, Lasso og Elasticnet teknikker. Et godt kurs å studere for å lære mer er [Stanford Statistical Learning-kurset](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Oppgave
@ -367,5 +380,7 @@ I denne leksjonen lærte vi om lineær regresjon. Det finnes andre viktige typer
---
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår fra bruken av denne oversettelsen.
I denne andre leksjonen om klassifisering vil du utforske flere måter å klassifisere numeriske data på. Du vil også lære om konsekvensene ved å velge én klassifikator fremfor en annen.
I denne andre klassifiseringsleksjonen vil du utforske flere måter å klassifisere numeriske data på. Du vil også lære om konsekvensene ved å velge én klassifikator fremfor en annen.
## [Quiz før leksjonen](https://ff-quizzes.netlify.app/en/ml/)
Vi antar at du har fullført de tidligere leksjonene og har et renset datasett i `data`-mappen kalt _cleaned_cuisines.csv_ i roten av denne 4-leksjonsmappen.
Vi antar at du har fullført de forrige leksjonene og har et renset datasett i mappen `data` kalt _cleaned_cuisines.csv_ i roten av denne 4-leksjonsmappen.
### Forberedelse
Vi har lastet inn filen din _notebook.ipynb_ med det rensede datasettet og har delt det inn i X- og y-dataframes, klare for modellbyggingsprosessen.
Vi har lastet inn filen din _notebook.ipynb_ med det rensede datasettet og har delt det inn i X- og y-datasett, klare for modellbyggingsprosessen.
## Et klassifiseringskart
## Et klassifikasjonskart
Tidligere lærte du om de ulike alternativene du har når du klassifiserer data ved hjelp av Microsofts jukselapp. Scikit-learn tilbyr en lignende, men mer detaljert jukselapp som kan hjelpe deg med å snevre inn valget av estimatoren (et annet ord for klassifikator):
Tidligere lærte du om de ulike valgmulighetene du har når du klassifiserer data ved hjelp av Microsofts jukselapp. Scikit-learn tilbyr en lignende, men mer detaljert jukselapp som kan hjelpe med å snevre inn estimatene dine (et annet ord for klassifikatorer):

> Tips: [besøk dette kartet online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) og klikk langs stien for å lese dokumentasjonen.

> Tips: [besøk dette kartet på nett](https://scikit-learn.org/stable/tutorial/machine_learning_map/) og klikk deg gjennom stien for å lese dokumentasjon.
### Planen
Dette kartet er veldig nyttig når du har en klar forståelse av dataene dine, da du kan 'gå' langs stiene til en beslutning:
Dette kartet er veldig nyttig når du har en klar forståelse av dataene dine, ettersom du kan 'gå' langs stiene til en beslutning:
- Vi har >50 prøver
- Vi ønsker å forutsi en kategori
- Vi vil forutsi en kategori
- Vi har merket data
- Vi har færre enn 100K prøver
- ✨ Vi kan velge en Linear SVC
- ✨ Vi kan velge en Lineær SVC
- Hvis det ikke fungerer, siden vi har numeriske data
- Vi kan prøve en ✨ KNeighbors Classifier
- Hvis det ikke fungerer, prøv ✨ SVC og ✨ Ensemble Classifiers
- Kan vi prøve en ✨ KNeighbors-klassifikator
- Hvis det ikke fungerer, prøv ✨ SVC og ✨ Ensemble-klassifikatorer
Dette er en veldig nyttig sti å følge.
## Øvelse - del opp dataene
## Oppgave - del opp dataene
Ved å følge denne stien bør vi starte med å importere noen biblioteker vi skal bruke.
Følger vi denne stien, bør vi starte med å importere noen biblioteker vi kan bruke.
1. Importer de nødvendige bibliotekene:
1. Importer nødvendige biblioteker:
```python
from sklearn.neighbors import KNeighborsClassifier
@ -50,31 +50,31 @@ Ved å følge denne stien bør vi starte med å importere noen biblioteker vi sk
Support-Vector clustering (SVC) er en del av Support-Vector-maskiner-familien av ML-teknikker (lær mer om disse nedenfor). I denne metoden kan du velge en 'kernel' for å bestemme hvordan etikettene skal grupperes. Parameteren 'C' refererer til 'regularisering', som regulerer påvirkningen av parametere. Kernel kan være en av [flere](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); her setter vi den til 'linear' for å sikre at vi bruker lineær SVC. Sannsynlighet er som standard satt til 'false'; her setter vi den til 'true' for å samle sannsynlighetsestimater. Vi setter den tilfeldige tilstanden til '0' for å blande dataene for å få sannsynligheter.
Support-Vector clustering (SVC) er en del av Support-Vector maskinfamilien av ML-teknikker (lær mer om disse nedenfor). I denne metoden kan du velge en 'kerne' for å avgjøre hvordan etikettene skal grupperes. Parameteren 'C' refererer til 'regularisering' som regulerer påvirkningen av parametere. Kjernen kan være en av [flere](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); her setter vi den til 'linear' for å sikre at vi utnytter lineær SVC. Probability er som standard 'false'; her setter vi den til 'true' for å samle sannsynlighetsestimater. Vi satte den tilfeldige tilstanden til '0' for å stokke dataene for å få sannsynligheter.
### Øvelse - bruk en lineær SVC
### Oppgave - bruk en lineær SVC
Start med å lage en array av klassifikatorer. Du vil legge til gradvis i denne arrayen mens vi tester.
Start med å lage en matrise av klassifikatorer. Du vil legge til i denne matrisen etter hvert som vi tester.
2. Tren modellen din ved hjelp av Linear SVC og skriv ut en rapport:
2. Tren modellen din ved å bruke lineær SVC og skriv ut en rapport:
```python
n_classifiers = len(classifiers)
@ -105,15 +105,15 @@ Start med å lage en array av klassifikatorer. Du vil legge til gradvis i denne
weighted avg 0.79 0.79 0.79 1199
```
## K-Neighborsklassifikator
## K-Neighbors-klassifikator
K-Neighbors er en del av "neighbors"-familien av ML-metoder, som kan brukes til både overvåket og ikke-overvåket læring. I denne metoden opprettes et forhåndsdefinert antall punkter, og data samles rundt disse punktene slik at generaliserte etiketter kan forutsies for dataene.
K-Neighbors er del av "neighbors"-familien av ML-metoder, som kan brukes både for overvåket og ikke-overvåket læring. I denne metoden opprettes et forhåndsdefinert antall punkter, og data samles rundt disse punktene slik at generaliserte etiketter kan forutsies for dataene.
### Øvelse - bruk K-Neighbors klassifikator
### Oppgave - bruk K-Neighbors-klassifikatoren
Den forrige klassifikatoren var god og fungerte bra med dataene, men kanskje vi kan få bedre nøyaktighet. Prøv en K-Neighbors klassifikator.
Den forrige klassifikatoren var god, og fungerte bra med dataene, men kanskje kan vi få bedre nøyaktighet. Prøv en K-Neighbors-klassifikator.
1. Legg til en linje i klassifikator-arrayen din (legg til en komma etter Linear SVC-elementet):
1. Legg til en linje i klassifikatormatrisen (legg til et komma etter Lineær SVC-elementet):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -136,17 +136,17 @@ Den forrige klassifikatoren var god og fungerte bra med dataene, men kanskje vi
weighted avg 0.76 0.74 0.74 1199
```
✅ Lær om [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Les mer om [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support Vector Classifier
## Support Vector-klassifikator
Support-Vector klassifikatorer er en del av [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine)-familien av ML-metoder som brukes til klassifiserings- og regresjonsoppgaver. SVMs "kartlegger treningsprøver til punkter i rommet" for å maksimere avstanden mellom to kategorier. Påfølgende data kartlegges inn i dette rommet slik at deres kategori kan forutsies.
Support-Vector-klassifikatorer er en del av familien av [Support-Vector Machines](https://wikipedia.org/wiki/Support-vector_machine) ML-metoder som brukes for klassifisering og regresjonsoppgaver. SVM-er "kartlegger trenings-eksempler til punkter i rommet" for å maksimere avstanden mellom to kategorier. Påfølgende data kartlegges inn i dette rommet slik at deres kategori kan predikeres.
### Øvelse - bruk en Support Vector Classifier
### Oppgave - bruk en Support Vector-klassifikator
La oss prøve å få litt bedre nøyaktighet med en Support Vector Classifier.
La oss prøve å få litt bedre nøyaktighet med en Support Vector-klassifikator.
1. Legg til en komma etter K-Neighbors-elementet, og legg deretter til denne linjen:
1. Legg til et komma etter K-Neighbors-elementet, og legg deretter til denne linjen:
```python
'SVC': SVC(),
@ -169,11 +169,11 @@ La oss prøve å få litt bedre nøyaktighet med en Support Vector Classifier.
weighted avg 0.84 0.83 0.83 1199
```
✅ Lær om [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Les mer om [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ensemble Classifiers
## Ensemble-klassifikatorer
La oss følge stien helt til slutten, selv om den forrige testen var ganske bra. La oss prøve noen 'Ensemble Classifiers', spesielt Random Forest og AdaBoost:
La oss følge stien helt til enden, selv om den forrige testen var ganske bra. La oss prøve noen 'Ensemble-klassifikatorer', spesifikt Random Forest og AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Lær om [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Les mer om [Ensemble-klassifikatorer](https://scikit-learn.org/stable/modules/ensemble.html)
Denne metoden for maskinlæring "kombinerer prediksjonene fra flere base-estimatorer" for å forbedre modellens kvalitet. I vårt eksempel brukte vi Random Trees og AdaBoost.
Denne maskinlæringsmetoden "kombinerer prediksjonene til flere basestimatorer" for å forbedre modellens kvalitet. I vårt eksempel brukte vi Random Trees og AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), en gjennomsnittsmetode, bygger en 'skog' av 'beslutningstrær' med innført tilfeldighet for å unngå overtilpasning. Parameteren n_estimators er satt til antall trær.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), en gjennomsnittsmessig metode, bygger en 'skog' av 'beslutningstrær' fylt med tilfeldigheter for å unngå overtilpasning. Parameteren n_estimators settes til antall trær.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) tilpasser en klassifikator til et datasett og deretter tilpasser kopier av den klassifikatoren til det samme datasettet. Den fokuserer på vektene til feilklassifiserte elementer og justerer tilpasningen for neste klassifikator for å korrigere.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) tilpasser en klassifikator til et datasett og tilpasser deretter kopier av den klassifikatoren til det samme datasettet. Den fokuserer på vektene for feilklassifiserte elementer og justerer tilpasningen for neste klassifikator for å korrigere.
---
## 🚀Utfordring
Hver av disse teknikkene har et stort antall parametere som du kan justere. Undersøk standardparametrene for hver av dem og tenk på hva justering av disse parameterne vil bety for modellens kvalitet.
Hver av disse teknikkene har et stort antall parametere du kan justere. Undersøk standardparametrene for hver av dem og tenk over hva justeringene ville bety for modellens kvalitet.
## [Quiz etter leksjonen](https://ff-quizzes.netlify.app/en/ml/)
Det er mye sjargong i disse leksjonene, så ta et øyeblikk til å gå gjennom [denne listen](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) med nyttig terminologi!
Det er mye sjargong i disse leksjonene, så ta et minutt til å gå gjennom [denne listen](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) over nyttig terminologi!
## Oppgave
## Oppgave
[Parameterlek](assignment.md)
---
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på sitt originale språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
"\n---\n\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på dets opprinnelige språk skal anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som følge av bruk av denne oversettelsen.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Dette depotet inkluderer over 50 språkoversettelser, noe som øker nedlastingsstørrelsen betydelig. For å klone uten oversettelser, bruk sparsommelig utsjekking:
>
> Dette repositoriet inkluderer over 50 språkoversettelser, som øker nedlastingsstørrelsen betydelig. For å klone uten oversettelser, bruk sparse checkout:
Vi har en pågående Discord-serie om å lære med AI, lær mer og bli med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18.-30. september 2025. Du vil få tips og triks om bruk av GitHub Copilot for Data Science.
Vi har en pågående Discord-serie kalt learn with AI, lær mer og bli med oss på [Learn with AI Series](https://aka.ms/learnwithai/discord) fra 18. til 30. september 2025. Du vil få tips og triks om bruk av GitHub Copilot for datavitenskap.

# Maskinlæring for nybegynnere - Et læreplan
# Maskinlæring for nybegynnere - En læreplan
> 🌍 Reis rundt i verden mens vi utforsker Maskinlæring gjennom verdens kulturer 🌍
> 🌍 Reis rundt i verden mens vi utforsker maskinlæring gjennom verdens kulturer 🌍
Cloud Advocates hos Microsoft er glade for å tilby en 12-ukers, 26-leksjons læreplan som handler om **Maskinlæring**. I denne læreplanen vil du lære om det som noen ganger kalles **klassisk maskinlæring**, som bruker hovedsakelig Scikit-learn som bibliotek og unngår dyplæring, som dekkes i vår [AI for Beginners-læreplan](https://aka.ms/ai4beginners). Kombiner disse leksjonene med vår ['Data Science for Beginners'-læreplan](https://aka.ms/ds4beginners) også!
Cloud Advocates hos Microsoft tilbyr en 12-ukers, 26-leksjons læreplan som handler om **maskinlæring**. I denne læreplanen vil du lære om det som noen ganger kalles **klassisk maskinlæring**, med hovedvekt på Scikit-learn som bibliotek, og unngår dyp læring, som dekkes i vår [AI for Beginners' læreplan](https://aka.ms/ai4beginners). Kombiner disse leksjonene med vår ['Data Science for Beginners'læreplan](https://aka.ms/ds4beginners) også!
Reis med oss rundt i verden mens vi anvender disse klassiske teknikkene på data fra mange deler av verden. Hver leksjon inkluderer forhånds- og etter-forelesningsquiz, skriftlige instruksjoner for å fullføre leksjonen, en løsning, en oppgave og mer. Vår prosjektbaserte pedagogikk lar deg lære mens du bygger, en velprøvd metode for at nye ferdigheter skal feste seg.
Reis med oss rundt i verden mens vi anvender disse klassiske teknikkene på data fra mange områder av verden. Hver leksjon inkluderer quiz før og etter leksjonen, skriftlige instruksjoner for å fullføre leksjonen, en løsning, en oppgave, og mer. Vår prosjektbaserte pedagogikk lar deg lære mens du bygger, en bevist metode for å få nye ferdigheter til å 'sette seg'.
**✍️ Hjertelig takk til våre forfattere** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu og Amy Boyd
**🎨 Takk også til våre illustratører** Tomomi Imura, Dasani Madipalli, og Jen Looper
**🎨 Takk også til våre illustratører** Tomomi Imura, Dasani Madipalli og Jen Looper
**🙏 Spesiell takk 🙏 til våre Microsoft Student Ambassador-forfattere, -anmeldere og -innholdsbidragsytere**, spesielt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, og Snigdha Agarwal
**🙏 Spesiell takk 🙏 til våre Microsoft Student Ambassador-forfattere, anmeldere og innholdsbidragsytere**, spesielt Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila og Snigdha Agarwal
**🤩 Ekstra takk til Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, og Vidushi Gupta for våre R-leksjoner!**
# Komme i gang
Følg disse trinnene:
1. **Fork depotet**: Klikk på "Fork"-knappen øverst til høyre på denne siden.
> [finn alle tilleggressurser for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [Finn alle tilleggsmaterialer for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Trenger du hjelp?** Sjekk vår [Feilsøkingsguide](TROUBLESHOOTING.md) for løsninger på vanlige problemer med installasjon, oppsett og kjøring av leksjoner.
**[Studenter](https://aka.ms/student-page)**, for å bruke denne læreplanen, fork hele repoet til din egen GitHub-konto og fullfør øvelsene selvstendig eller i gruppe:
**[Studenter](https://aka.ms/student-page)**, for å bruke denne læreplanen, fork hele repoet til din egen GitHub-konto og fullfør øvelsene på egenhånd eller i gruppe:
- Start med en forhånds-forelesningsquiz.
- Start med en pre-forelesningsquiz.
- Les forelesningen og fullfør aktivitetene, stopp opp og reflekter ved hver kunnskapskontroll.
- Prøv å lage prosjektene ved å forstå leksjonene i stedet for å bare kjøre løsningskoden; denne koden er imidlertid tilgjengelig i `/solution`-mappene i hver prosjektorienterte leksjon.
- Ta etter-forelesningsquizen.
- Prøv å lage prosjektene ved å forstå leksjonene i stedet for å bare kjøre løsningskoden; koden er likevel tilgjengelig i `/solution`-mappene i hver prosjektorientert leksjon.
- Ta post-forelesningsquizen.
- Fullfør utfordringen.
- Fullfør oppgaven.
- Etter å ha fullført en leksjonsgruppe, besøk [Diskusjonsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær høyt" ved å fylle ut den passende PAT-vurderingen. En 'PAT' er et progresjonsvurderingsverktøy som er et skjema du fyller ut for å fremme læringen din. Du kan også reagere på andres PAT-er slik at vi kan lære sammen.
- Etter å ha fullført en leksjonsgruppe, besøk [Diskusjonsforumet](https://github.com/microsoft/ML-For-Beginners/discussions) og "lær høyt" ved å fylle ut den aktuelle PAT-rubrikken. En ‘PAT’ er et fremdriftsvurderingsverktøy der du fyller ut en rubrikk for å fremme læringen din. Du kan også reagere på andre PAT-er slik at vi kan lære sammen.
> For videre studier anbefaler vi å følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulene og læringsstiene.
> For videre studier anbefaler vi å følge disse [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulene og læringsbane.
**Lærere**, vi har [inkludert noen forslag](for-teachers.md) om hvordan du kan bruke denne læreplanen.
**Lærere**, vi har [inkludert noen forslag](for-teachers.md) om hvordan man kan bruke denne læreplanen.
---
## Video-gjennomganger
## Videogjennomganger
Noen av leksjonene er tilgjengelige som kortformede videoer. Du kan finne dem alle innebygd i leksjonene eller på [ML for Beginners spillelisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved å klikke på bildet nedenfor.
Noen av leksjonene er tilgjengelige som korte videoer. Du finner alle disse integrert i leksjonene, eller på [ML for Beginners spillelisten på Microsoft Developer YouTube-kanalen](https://aka.ms/ml-beginners-videos) ved å klikke på bildet under.
[](https://aka.ms/ml-beginners-videos)
@ -89,76 +99,76 @@ Noen av leksjonene er tilgjengelige som kortformede videoer. Du kan finne dem al
> 🎥 Klikk på bildet over for en video om prosjektet og folka som skapte det!
> 🎥 Klikk på bildet over for en video om prosjektet og personene som skapte det!
---
## Pedagogikk
Vi har valgt to pedagogiske prinsipper under utarbeidelsen av denne læreplanen: å sikre at den er praktisk og **prosjektbasert**, og at den inneholder **hyppige quizzer**. I tillegg har denne læreplanen et gjennomgående **tema** for å gi den sammenheng.
Vi har valgt to pedagogiske prinsipper mens vi bygde denne læreplanen: å sikre at den er praktisk **prosjektbasert** og at den inkluderer **hyppige quizer**. I tillegg har denne læreplanen et felles **tema** for å gi sammenheng.
Ved å sikre at innholdet er knyttet til prosjekter, gjøres prosessen mer engasjerende for elever og forståelsen av konsepter vil bli styrket. I tillegg setter en lavterskelquiz før en time intensjonen til studenten mot å lære et tema, mens en andre quiz etter timen sikrer ytterligere forståelse. Denne læreplanen er designet for å være fleksibel og morsom, og kan tas i sin helhet eller delvis. Prosjektene starter smått og blir stadig mer komplekse mot slutten av den 12-ukers syklusen. Denne læreplanen inkluderer også et tillegg om virkelige anvendelser av ML, som kan brukes som ekstra poeng eller som grunnlag for diskusjon.
Ved å sikre at innholdet stemmer overens med prosjekter, gjøres prosessen mer engasjerende for studenter og oppfatningen av konsepter vil bli bedre. I tillegg setter en lav-innsats-quiz før en klasse studentens intensjon mot å lære et tema, mens en annen quiz etter klasse sikrer ytterligere læring. Denne læreplanen er designet for å være fleksibel og morsom, og kan tas i sin helhet eller delvis. Prosjektene starter smått og blir gradvis mer komplekse mot slutten av den 12-ukers syklusen. Denne læreplanen inkluderer også et tillegg om virkelige anvendelser av ML, som kan brukes som ekstra poeng eller som grunnlag for diskusjon.
> Finn våre [Regler for oppførsel](CODE_OF_CONDUCT.md), [Bidra](CONTRIBUTING.md), [Oversettelse](TRANSLATIONS.md), og [Feilsøking](TROUBLESHOOTING.md) retningslinjer. Vi setter pris på dine konstruktive tilbakemeldinger!
> Finn våre [Atferdskodeks](CODE_OF_CONDUCT.md), [Bidrage](CONTRIBUTING.md), [Oversettelse](TRANSLATIONS.md), og [Feilsøking](TROUBLESHOOTING.md) retningslinjer. Vi setter pris på din konstruktive tilbakemelding!
> **En merknad om språk**: Disse leksjonene er primært skrevet i Python, men mange finnes også på R. For å fullføre en R-leksjon, gå til `/solution`-mappen og se etter R-leksjoner. De inneholder en .rmd-endelse som representerer en **R Markdown**-fil, som enkelt kan defineres som en innbinding av `kodebiter` (av R eller andre språk) og en `YAML-topptekst` (som styrer hvordan man formaterer utdata som PDF) i et `Markdown-dokument`. Som sådan fungerer det som et eksemplarisk forfatterrammeverk for data science, siden det lar deg kombinere koden din, dens utdata, og dine tanker ved å la deg skrive dem ned i Markdown. I tillegg kan R Markdown-dokumenter gjengis til utdataformater som PDF, HTML eller Word.
> **En merknad om quizer**: Alle quizer finnes i [Quiz App-mappen](../../quiz-app), for totalt 52 quizer med tre spørsmål hver. De er koblet til fra leksjonene, men quiz-appen kan kjøres lokalt; følg instruksjonene i `quiz-app`-mappen for lokal hosting eller distribusjon til Azure.
| 01 | Introduksjon til maskinlæring | [Introduksjon](1-Introduction/README.md) | Lær de grunnleggende konseptene bak maskinlæring | [Leksjon](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Maskinlæringens historie | [Introduksjon](1-Introduction/README.md) | Lær historien bak dette feltet | [Leksjon](1-Introduction/2-history-of-ML/README.md) | Jen og Amy |
| 03 | Rettferdighet og maskinlæring | [Introduksjon](1-Introduction/README.md) | Hvilke viktige filosofiske spørsmål rundt rettferdighet bør studenter vurdere når de bygger og anvender ML-modeller? | [Leksjon](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Teknikker for maskinlæring | [Introduksjon](1-Introduction/README.md) | Hvilke teknikker bruker ML-forskere for å bygge ML-modeller? | [Leksjon](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen |
| 05 | Introduksjon til regresjon | [Regresjon](2-Regression/README.md) | Kom i gang med Python og Scikit-learn for regresjonsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Priser på gresskar i Nord-Amerika 🎃 | [Regresjon](2-Regression/README.md) | Visualiser og rydd data som forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Priser på gresskar i Nord-Amerika 🎃 | [Regresjon](2-Regression/README.md) | Bygg lineære og polynomiske regresjonsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau |
| 08 | Priser på gresskar i Nord-Amerika 🎃 | [Regresjon](2-Regression/README.md) | Bygg en logistisk regresjonsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En web-app 🔌 | [Web App](3-Web-App/README.md) | Bygg en web-app for å bruke din trente modell | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduksjon til klassifisering | [Klassifisering](4-Classification/README.md) | Rydd, forbered og visualiser data; introduksjon til klassifisering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau |
| 11 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Introduksjon til klassifikatorer | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau |
| 12 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Flere klassifikatorer | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau |
| 13 | Deilige asiatiske og indiske retter 🍜 | [Klassifisering](4-Classification/README.md) | Bygg en anbefalingsweb-app ved bruk av modellen din | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduksjon til klynging | [Klynging](5-Clustering/README.md) | Rydd, forbered og visualiser data; Introduksjon til klynging | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 16 | Introduksjon til naturlig språkbehandling ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Lær det grunnleggende om NLP ved å bygge en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Vanlige NLP-oppgaver ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Fordyp deg i NLP ved å forstå vanlige oppgaver som kreves når man håndterer språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Oversettelse og sentimentanalyse ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Oversettelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse med hotellomtaler 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse med hotellomtaler 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduksjon til tidsserieprognoser | [Tidsserie](7-TimeSeries/README.md) | Introduksjon til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med ARIMA | [Tidsserie](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Verdens strømforbruk ⚡️ - tidsserieprognoser med SVR | [Tidsserie](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduksjon til forsterkende læring | [Forsterkende læring](8-Reinforcement/README.md) | Introduksjon til forsterkende læring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjelp Peter unngå ulven! 🐺 | [Forsterkende læring](8-Reinforcement/README.md) | Forsterkende lærings Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Etterord | Virkelige ML-scenarier og anvendelser | [ML i det fri](9-Real-World/README.md) | Interessante og avslørende reelle anvendelser av klassisk ML | [Leksjon](9-Real-World/1-Applications/README.md) | Team |
| Etterord | Modellfeilsøking i ML med RAI-dashboard | [ML i det fri](9-Real-World/README.md) | Modellfeilsøking i maskinlæring ved bruk av Responsible AI-dashboard-komponenter | [Leksjon](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [finn alle tilleggsmaterialer for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Frakoblet tilgang
Du kan kjøre denne dokumentasjonen frakoblet ved å bruke [Docsify](https://docsify.js.org/#/). Fork dette repoet, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskin, og skriv så i rotmappen av dette repoet `docsify serve`. Nettstedet vil bli servert på port 3000 på din localhost: `localhost:3000`.
> **En merknad om språk**: Disse leksjonene er primært skrevet i Python, men mange er også tilgjengelige i R. For å fullføre en R-leksjon, gå til `/solution`-mappen og se etter R-leksjoner. De inkluderer en .rmd-utvidelse som representerer en **R Markdown**-fil som enkelt kan defineres som en innebygging av `kodebiter` (av R eller andre språk) og en `YAML-header` (som veileder hvordan å formatere utdata som PDF) i et `Markdown-dokument`. Som sådan tjener den som en eksemplarisk forfatterrammeverk for datavitenskap siden det lar deg kombinere koden din, utdataene og dine tanker ved å la deg skrive dem ned i Markdown. Videre kan R Markdown-dokumenter gjengis til utdataformater som PDF, HTML eller Word.
> **En merknad om quiz**: Alle quiz er samlet i [Quiz App-mappen](../../quiz-app), for totalt 52 quizer med tre spørsmål hver. De er koblet fra innenfor leksjonene, men quiz-appen kan kjøres lokalt; følg instruksjonene i `quiz-app`-mappen for å lokalt hoste eller distribuere til Azure.
| 01 | Introduksjon til maskinlæring | [Introduksjon](1-Introduction/README.md)| Lær de grunnleggende konseptene bak maskinlæring | [Leksjon](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Historien til maskinlæring | [Introduksjon](1-Introduction/README.md)| Lær historien bak dette feltet | [Leksjon](1-Introduction/2-history-of-ML/README.md) | Jen og Amy |
| 03 | Rettferdighet og maskinlæring | [Introduksjon](1-Introduction/README.md) | Hva er de viktige filosofiske spørsmålene rundt rettferdighet som studenter bør vurdere når de bygger og anvender ML-modeller? | [Leksjon](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Teknikker for maskinlæring | [Introduksjon](1-Introduction/README.md)| Hvilke teknikker bruker ML-forskere for å bygge ML-modeller? | [Leksjon](1-Introduction/4-techniques-of-ML/README.md) | Chris og Jen |
| 05 | Introduksjon til regresjon | [Regresjon](2-Regression/README.md) | Kom i gang med Python og Scikit-learn for regresjonsmodeller | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Visualiser og rens data i forberedelse til ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Bygg lineære og polynomielle regresjonsmodeller | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen og Dmitry • Eric Wanjau |
| 08 | Nordamerikanske gresskarpriser 🎃 | [Regresjon](2-Regression/README.md) | Bygg en logistisk regresjonsmodell | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | En webapp 🔌 | [Web App](3-Web-App/README.md) | Bygg en webapp for å bruke din trente modell | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Introduksjon til klassifisering | [Klassifisering](4-Classification/README.md) | Rens, forbered og visualiser data; introduksjon til klassifisering | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen og Cassie • Eric Wanjau |
| 11 | Deilige asiatiske og indiske kjøkken 🍜 | [Klassifisering](4-Classification/README.md) | Introduksjon til klassifikatorer | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen og Cassie • Eric Wanjau |
| 12 | Deilige asiatiske og indiske kjøkken 🍜 | [Klassifisering](4-Classification/README.md) | Flere klassifikatorer | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen og Cassie • Eric Wanjau |
| 13 | Deilige asiatiske og indiske kjøkken 🍜 | [Klassifisering](4-Classification/README.md) | Bygg en anbefalingswebapp med modellen din | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Introduksjon til klynging | [Klynging](5-Clustering/README.md) | Rens, forbered og visualiser data; introduksjon til klynging | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 16 | Introduksjon til naturlig språkbehandling ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Lær det grunnleggende om NLP ved å bygge en enkel bot | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Vanlige NLP-oppgaver ☕️ | [Naturlig språkbehandling](6-NLP/README.md) | Fordyp kunnskapen din i NLP ved å forstå vanlige oppgaver ved språkstrukturer | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Oversettelse og sentimentanalyse ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Oversettelse og sentimentanalyse med Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse av hotellomtaler 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiske hoteller i Europa ♥️ | [Naturlig språkbehandling](6-NLP/README.md) | Sentimentanalyse av hotellomtaler 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Introduksjon til tidsserieprognoser | [Tidsserie](7-TimeSeries/README.md)| Introduksjon til tidsserieprognoser | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Verdens strømbruk ⚡️ - tidsserieprognoser med ARIMA| [Tidsserie](7-TimeSeries/README.md) | Tidsserieprognoser med ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Verdens strømbruk ⚡️ - tidsserieprognoser med SVR| [Tidsserie](7-TimeSeries/README.md) | Tidsserieprognoser med Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Introduksjon til forsterkningslæring | [Forsterkningslæring](8-Reinforcement/README.md) | Introduksjon til forsterkningslæring med Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hjelp Peter å unngå ulven! 🐺 | [Forsterkningslæring](8-Reinforcement/README.md) | Forsterkningslæring gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | Virkelige ML-scenarier og -applikasjoner | [ML i det fri](9-Real-World/README.md) | Interessante og avslørende virkelige applikasjoner av klassisk ML | [Leksjon](9-Real-World/1-Applications/README.md) | Team |
| Postscript | Feilsøking av modeller i ML ved bruk av RAI dashboard | [ML i det fri](9-Real-World/README.md) | Feilsøking av modeller i maskinlæring ved bruk av Responsible AI dashboard-komponenter | [Leksjon](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [finn alle ekstra ressurser for dette kurset i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline-tilgang
Du kan kjøre denne dokumentasjonen offline ved bruk av [Docsify](https://docsify.js.org/#/). Fork dette repoet, [installer Docsify](https://docsify.js.org/#/quickstart) på din lokale maskin, og kjør deretter i rotmappen til dette repoet kommandoen `docsify serve`. Nettstedet vil da tilbys på port 3000 på din localhost: `localhost:3000`.
## PDF-er
Finn en pdf av læreplanen med lenker [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Finn en pdf av læreplanen med linker [her](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andre kurs
@ -172,7 +182,7 @@ Vårt team produserer andre kurs! Sjekk ut:
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agent
### Azure / Edge / MCP / Agenter
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -181,43 +191,48 @@ Vårt team produserer andre kurs! Sjekk ut:
---
### Generativ AI-serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Kjerneopplæring
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot-serie
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Hvis du står fast eller har spørsmål om å bygge AI-apper. Bli med andre lærende og erfarne utviklere i diskusjoner om MCP. Det er et støttende fellesskap hvor spørsmål er velkomne og kunnskap deles fritt.
Hvis du sitter fast eller har spørsmål om å bygge AI-apper. Bli med andre lærende og erfarne utviklere i diskusjoner om MCP. Det er et støttende fellesskap hvor spørsmål er velkomne og kunnskap deles fritt.
- Gå gjennom notatbøker etter hver leksjon for bedre forståelse.
- Øv på å implementere algoritmer på egenhånd.
- Utforsk virkelige datasett ved hjelp av lærte konsepter.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Ansvarsfraskrivelse**:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på dets opprinnelige språk bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for noen misforståelser eller feiltolkninger som oppstår som følge av bruk av denne oversettelsen.
Dette dokumentet er oversatt ved bruk av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på dets opprinnelige språk bør betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som måtte oppstå ved bruk av denne oversettelsen.