def min_prediksjon(alder, kjoenn, sivilstatus, gjeld, betalingshistorikk, utdanningsnivo): #Definerer ordbok med inntekt, og inntekt: inntekt_fra_utdanningsnivo = {"ukjent": 300000, "grunnskole": 260000, "hoeyskole": 500000, "universitet": 700000} inntekt = inntekt_fra_utdanningsnivo[utdanningsnivo] #Selve prediksjonen: #Tar utganspunkt i data om menn og kvinner, og antar en sjanse_for_betaling fra det if kjoenn == "mann": sjanse_for_betaling = 75.8 if kjoenn == "kvinne": sjanse_for_betaling = 79.3 #Tar utganspunkt i data fra single menn under 25 og regner ut ny sjanse_for_betaling if kjoenn == "mann" and sivilstatus == "singel": if alder < 25: sjanse_for_betaling -= 65 else: sjanse_for_betaling -= 26 #Tar utganspunkt i data om betalingshistorikk if betalingshistorikk.count("ikke betalt") == 2: sjanse_for_betaling -= 50 #F?rste antakelser med p?virkning p? prosenten if kjoenn == "mann" and alder < 30 and sivilstatus == "singel" and gjeld > 100000: sjanse_for_betaling = 0 if kjoenn == "mann" and alder < 25 and gjeld > 200000: sjanse_for_betaling = 0 if kjoenn == "kvinne" and alder < 28 and sivilstatus == "singel" and gjeld > 300000: sjanse_for_betaling = 0 if kjoenn == "mann" and inntekt > gjeld * 3: sjanse_for_betaling = 100 #Tar utganspunkt i betalingshistorikk og regner ut ny sjanse_for_betaling if betalingshistorikk.count("ikke betalt") == 3: sjanse_for_betaling = 0 if betalingshistorikk.count("ikke betalt") == 0: sjanse_for_betaling = 100 if sjanse_for_betaling > 20: return "vil betale" else: return "vil ikke betale" def test_min_prediksjon(): antall_predikert = 0 antall_riktig_predikert = 0 true_positive = 0 true_negative = 0 false_positive = 0 false_negative = 0 filnavn = "individer1000.txt" fil = open(filnavn) for linje in fil: data = linje.strip().split(",") alder = int(data[1]) kjonn = data[2] sivilstatus = data[3] gjeld = int(data[4]) betalingshistorikk = [] for i in range(0, 3): betalingshistorikk.append(data[5+i]) utdanningsnivo = data[8] fasit = data[9] prediksjon = min_prediksjon(alder, kjonn, sivilstatus, gjeld, betalingshistorikk, utdanningsnivo) if prediksjon == fasit: antall_riktig_predikert += 1 if fasit == "vil betale": if prediksjon == fasit: true_positive += 1 else: false_negative += 1 else: if prediksjon == fasit: true_negative += 1 else: false_positive += 1 antall_predikert += 1 precision = true_positive / (true_positive + false_positive) recall = true_positive / (true_positive + false_negative) f1_score = 2 * (precision*recall) / (precision + recall) print(antall_riktig_predikert, "av", antall_predikert, "ble riktig predikert") print("Recall:", recall) print("Precision:", precision) print("F1 score:", f1_score) #test_min_prediksjon()