Skip to content

drdk/dr-prinsib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 

Repository files navigation

Segmentering

Segmenteringsmodellen er udviklet i Python med sklearn (version 1.0). Modellen kan hentes direkte fra dette repository. Herunder er et Python eksempel, hvor modellen anvendt på et mindre datasæt.

Dokumentation:

Spørgsmål

Segmenteringsmodellen er baseret på disse ti spørgsmål:

  1. Vi burde gøre mere for flygtninge, der kommer til Danmark, end vi gør i dag
  2. Den offentlige sektor er for stor
  3. Vi betaler for meget i skat i Danmark
  4. Vi skal have styr på vores egne problemer, før vi hjælper andre lande
  5. Enhver er sin egen lykkes smed
  6. Jeg køber altid økologiske eller miljøvenlige produkter, hvis jeg kan
  7. Det er vigtigt for mig at have den nyeste teknologi på markedet
  8. Jeg kan ikke forestille mig en hverdag uden min smartphone
  9. Jeg kommer let til at kede mig, hvis jeg laver de samme ting
  10. Jeg vil følge moden

I data skal disse navngives sådan at spørgsmål 1 hedder Q1, spørgsmål 2 hedder Q2 osv.

Svarmulighederne på spørgsmålene er:

  1. Fuldstændig uenig
  2. Uenig
  3. Nærmest uenig
  4. Nærmest enig
  5. Enig
  6. Fuldstændig enig

Vi anbefaler, at man ikke giver responder muligheden for at svare 'Ved ikke'. Hvis man - mod vores anbefaling - vælger at give dem muligeden, så kan man håndtere det på følgende måde:

  • Aktivt tage stilling til, hvor mange spørgsmål en respondent må have svaret 'Ved ikke' på, før de bliver sorteret fra.
  • Erstatte 'Ved ikke' svar med gennemsnittet af, hvad de resterende respondenter har svaret.

Kode

Importerer de nødvendige Python biblioteker:

import pickle
import pandas as pd
from sklearn.cluster import KMeans

Data

Indlæser og inspicerer data:

data = pd.read_csv("data.csv")
print(data.head())
id Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
0 Fuldstændig uenig Fuldstændig enig Uenig Fuldstændig enig Fuldstændig enig Nærmest enig Nærmest uenig Nærmest enig Nærmest uenig Uenig
1 Nærmest uenig Enig Fuldstændig enig Enig Enig Nærmest uenig Nærmest uenig Fuldstændig enig Nærmest uenig Nærmest uenig
2 Enig Nærmest uenig Enig Nærmest enig Enig Fuldstændig uenig Uenig Nærmest enig Uenig Uenig
3 Nærmest enig Nærmest uenig Nærmest uenig Nærmest uenig Nærmest enig Fuldstændig uenig Uenig Uenig Nærmest uenig Uenig
4 Nærmest enig Uenig Uenig Nærmest uenig Nærmest uenig Nærmest uenig Nærmest uenig Nærmest enig Uenig Fuldstændig uenig
... ... ... ... ... ... ... ... ... ... ...

Denne tabel indeholder de fem første observationer af 'data'

I dette datasæt er svarene i tekstformat. Kmeans-modellen kan ikke anvendes på tekstdata. Derfor skal teksten i kolonnerne ændres til numeriske værdier:

replace_dict = {"Fuldstændig uenig": 1,
                "Uenig": 2,
                "Nærmest uenig": 3,
                "Nærmest enig": 4,
                "Enig": 5,
                "Fuldstændig enig": 6}

data.iloc[:,:] = data.iloc[:,:].replace(replace_dict)
print(data.head())
id Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
0 1 6 2 6 6 4 3 4 3 2
1 3 5 6 5 5 3 3 6 3 3
2 5 3 5 4 5 1 2 4 2 2
3 4 3 3 3 4 1 2 2 3 2
4 4 2 2 3 3 3 3 4 2 1
... ... ... ... ... ... ... ... ... ... ...

Denne tabel indeholder de fem første observationer af 'data'

Data er nu numerisk.

Model

Modellen loades og benyttes på data:

with open("kmeans.pickle", "rb") as f:
    kmeans = pickle.load(f)

data["segment"] = kmeans.predict(data)

Segmenterne kommer i første omgang ud som numeriske værdier. Her ændres værdierne til navnene på segmenterne:

replace_dict_segment = {0: "Selvudviklerne",
                        1: "Individualisterne",
                        2: "Pragmatikerne",
                        3: "Idealisterne",
                        4: "Beskytterne"}

data["segment"] = data["segment"].replace(replace_dict_segment)
print(data.head())
id Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 segment
0 1 6 2 6 6 4 3 4 3 2 Beskytterne
1 3 5 6 5 5 3 3 6 3 3 Individualisterne
2 5 3 5 4 5 1 2 4 2 2 Pragmatikerne
3 4 3 3 3 4 1 2 2 3 2 Pragmatikerne
4 4 2 2 3 3 3 3 4 2 1 Idealisterne
... ... ... ... ... ... ... ... ... ... ... ...

Denne tabel indeholder de fem første observationer af 'data'

I ovenstående tabel er resultatet af segmenteringsmodellen på de fem første observationer tilføjet i kolonnen 'segment'

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published