Brugen af Machine Learning stiger hurtigt i takt med at computerkræften stiger. Machine Learning kan hjælpe dig med at løse komplekst data hurtigt og præcist og er derfor blevet et vigtigt redskab inden for dataanalyse. Python, en stigende stjerne i værktøjskassen inden for Machine Learning, så her er en vejledning til Machine Learning med python! Selvtak
Key points
- Lær de forskellige Machine Learning libraries at kende
- Lær at optimere dine predictions ved brug af Machine Learning
- Bestem sandsynligheden for, at en Titanic passager overlever
Så hvorfor Python? Python er efter vores erfaring et af de nemmeste programmeringssprog at lære. Der er behov for at gentage processen hurtigt, og datavidenskaberen behøver ikke at have et dybt kendskab til sproget, da man hurtigt kan lade sig inspirere af andre datanørder. Desuden kan man lynhurtigt komme igang med at datagrinde ved brug af de præimplementere libraries, som er helt igennem fantastiske.
Must have Machine Learning libraries
- Numpy hedder det berømte numeriske analysebibliotek. Det vil hjælpe dig med at gøre mange ting, lige fra at beregne et simpelt gennemsnit af dataen til behandling af komplekse multidimensionale vektorer.
- Pandas er et essentialt værktøj når du skal importere CSV filer osv. Den nemmeste måde at importer tabeller og statistik ind i python er via excel. Til dette er Padas det helt rigtige værktøj at bruge.
- Matplotlib benyttes til at visualiesere data. Et billede siger mere end tusind ord, men en graf siger mere end en million. Matplotlib hjælper dig med hurtigt at generere flotte figure ud fra data.
- Scikitlearn hedder biblioteket, som for alvor går det muligt at komme igang med. Pakken indeholder næsten alle algoritmer og andre værktøjer, som er nødvendige til Machine Learning.
Før du går igang med at kode i computeren indlejret kommandoterminal bør du kigge efter et mere intuitiv studie at arbejde i. Personeligt benytter vi Jupyter, som gør det muligt at kode direkte i de webbrowser på en nem og overskuelig måde.
Det første eksempel er meget simpelt og har til fomål at belyse, hvor få linjer der skal kodes før man fanger essencen af ML. I dette eksempel vil vi forsøge at gætte om en givet person er en mand eller kvinde betinget på højden, vægten og skostørrelsen. Vi benytter en beslutnins træ til klassificering.
Føst åbner vi et er de tidligere introduceret bibloteker og importere der igennem pakken tree
<code></code></pre> <em>from sklearn import tree</em> <em># Nu defineres input matricen (1X3), som består af information vedr. [højde, vægt, skostørrelse]</em> <em>X=[[180,76,45],[178,71,44],[161,61,39],[155,54,38],[167,66,41],</em> <em>[191,91,48],[176,65,40],[178,71,41],[160,60,37],[171,75,42],[181,85,43]]</em> <em>#Dertil defineres til tilhørende outputmatrice, som angiver om det er en mand eller kvinde</em> <em>Y=['mand','kvinde','kvinde','kvinde','mand','mand','mand',</em> <em>'kvinde','mand','kvinde','mand']</em> <em>#Benytter nu det importeret decision tree til at klassificere personens køn.</em> <em>klassi = tree.DecisionTreeClassifier()</em> <em>klassi = klassi.fit(X,Y)</em> <em>#Her har vi så mulighed for at efterprøve vores simple machine learning problem, ved at indsætte tilfældige matrince input, som vil resultere i enten mand eller kvinde.</em> <em>prediction = klassi.predict([[192,92,46]])</em> <em>print(prediction)</em> <em>['mand']</em>
Det var da meget nemt ikke? Før vi for alvor går igang skal vi lige pool noget rigtig data. Vi tager i guiden her udgangspunkt i passagerlisten fra Titanic, som kan hentes hos Standford University.
Som udgangspunkt er det en rigtig god idé lige at visualisere ens data for at skabe noget intuition og sikre sig, at dataen ikke er fyldt med fejl. Til dette bruger vi matplotlib.
<code></code></pre> <em>import pandas as pd</em> <em>import matplotlib.pyplot as plt</em> <em>import numpy as np</em> <em>from sklearn import tree</em> <em>#Upload datasættet og undersøg om der mangler data </em> <em>train = pd.read_csv("train.csv")</em> <em>train.info()</em> <em>#normalize=True laver det til pct.</em> <em>train.Survived.value_counts(normalize=True).plot(kind="bar",alpha=0.5)</em> <em>#0 betyder død og 1 betyder overlevet</em> <em>plt.title("Overlevende")</em> <em>#Af nedenstående figur fremgår det, at ca. 60 pct. at passagerende omkom under ulykken.</em>
<code></code></pre> <em>plt.scatter(df.Survived, df.Age, alpha=0.1)</em> <em>plt.title("Alder mht overlevelse")</em> <em>plt.show()</em> <em>#Af nedenstående figur fremgår det, at antallet af ovlevende er en smule tættere for de unge passagere, mens der er flrere ældre blandt de omkomne.</em>
<code></code></pre> <em>for x in [1,2,3]:</em> <em>df.Age[df.Pclass == x].plot(kind="kde")</em> <em>plt.title("class wrt age")</em> <em>plt.legend(("Første","Anden","Tredje"))</em> <em>#Af nedensteående figur fremgår det, at passagere som rejste på første klasse var ældre end dem der rejste på trejde klasse.</em>
Nu er du klar til at gå igang med at datagrinde

1. Vi omdøber data fra bogstaver til tal.
<code></code></pre> <em>train["Embarked"] = train["Embarked"].fillna("S")</em> <em>train.loc[train["Embarked"] == "S", "Embarked"]=0</em> <em>train.loc[train["Embarked"] == "C", "Embarked"]=1</em> <em>train.loc[train["Embarked"] == "Q", "Embarked"]=2</em> <em>train.loc[train["Sex"]=="male","Sex"] =0</em> <em>train.loc[train["Sex"]=="female","Sex"] =1</em> <em>
2. Vi definerer input og output matricen.
Mål = train[“Survived”].values
Variable = [“Pclass”, “Fare”, “Age”, “Embarked”, “Sex”, “SibSp”, “Parch”]
Var = train[Variable].values
3. Vi renser for manglende værdier og sætter dem lig nul.
tempVar = pd.DataFrame(Var)
tempVar = tempVar.fillna(value=0)
4. Vi benytter ligesom i det tidligere eksempel et decision tree til klassificering
decision_tree = tree.DecisionTreeClassifier(random_state=1)
decision_tree_ = decision_tree.fit(tempVar, Mål)
5. Vi tester nu maskinens præcision
print(decision_tree_.score(tempVar, Mål))
0.9820426487093153
Vi finder altså maskinen er forholdvis præcis i dens kyniske bestemmelse a, hvorvidt en givet passager overlever ud fra inputvariablene.
Den høje præcision skyldes dog højst sandsyneligt begrebet overfitting, som et resultat af, at vi kun har brugt training dataen og ikke test dataen. Et decision tree er iøvrigt i relativ simpel måde at bygge machine learning op om. (evt. relation til neurale netværk)
Her forklares hvordan træningen foregår

Ved underfitting øges kompleksiteten
Ved overfitting tilføjes dropout
Skriv et svar