Skip to article frontmatterSkip to article content

Vježba 01b

Proučite dataset bank.csv i definirajte što je target varijabla. Ako je ne pronalazite, izaberite neku varijablu za koju postoje samo dvije vrijednosti u stupcu. Iz dataseta izbacite sve značajke koje nisu numeričke, a ako negdje nedostaje vrijednost umetnite medijan. Model trenirajte sa metodom k-NN-C i to sa 5 susjeda. Dataset pripremite sa train_test_split funkcijom i pri tom koristite random_state=42, stratify=y, a 20% neka vam ostane za testiranje. Nakon toga sa preostalih 80% koristite metodu cross_val_score, ali za cv koristite ShuffleSplit(), a testna veličina neka bude 20%. Za izračun točnosti koristite scoring='accuracy'. Na kraju izračunajte točnost modela i sa testnim podacima. Ispišite srednju vrijednost niza s točnostima, ali i točnost sa testnim podacima.

import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn import model_selection
df = pd.read_csv("bank.csv", low_memory=False)
df.head()
Loading...
target = df["deposit"]
x_num = df.select_dtypes(include=[np.number])

imputer = SimpleImputer(strategy="median")
x_num_imputed = pd.DataFrame(imputer.fit_transform(x_num), columns=x_num.columns)

df_clean = pd.concat([x_num_imputed, target], axis=1)
y = (df_clean["deposit"] == "yes").astype(int)
x = df_clean.drop(columns=["deposit"]).select_dtypes(include=[np.number])
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42, stratify=y)

ss = model_selection.ShuffleSplit(test_size=0.2)
algorithm = KNeighborsClassifier(n_neighbors=5)
scores = model_selection.cross_val_score(algorithm, x_train, y_train, cv=ss, scoring="accuracy")
print(scores, scores.mean())

model = algorithm.fit(x_train, y_train)
predictions = algorithm.predict(x_test)
accuracy = accuracy_score(y_test, predictions)
[0.74636058 0.74300112 0.7474804  0.75475924 0.74692049 0.74468085
 0.74580067 0.75195969 0.74300112 0.77211646] 0.7496080627099664
print("Scores", scores)
print("Scores mean", scores.mean())
print("Accuracy", accuracy)
Scores [0.74636058 0.74300112 0.7474804  0.75475924 0.74692049 0.74468085
 0.74580067 0.75195969 0.74300112 0.77211646]
Scores mean 0.7496080627099664
Accuracy 0.7433945364979848