U primeru koji sledi model k najbližih suseda biće iskorišćen za klasifikaciji tumora dojke na maligne i benigne.
from sklearn import model_selection
from sklearn import metrics
from sklearn import preprocessing
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
data = datasets.load_breast_cancer() #ucitavamo podatke
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target
X_train, X_test, y_train, y_test = model_selection.train_test_split(
X, y, test_size=0.33, random_state=7, stratify=y)
# pomocu parametra stratify biramo da li hocemo da
# odnos klasa u trening i test skupu bude isti
Pravićemo model sa 5 suseda.
model1 = KNeighborsClassifier(n_neighbors=5)
model1.fit(X_train, y_train);
y_pred = model1.predict(X_test)
metrics.accuracy_score(y_test, y_pred)
0.9468085106382979
metrics.f1_score(y_test, y_pred)
0.957983193277311
Sada pravimo model sa standardizovanim podacima.
scaler = preprocessing.StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
Opet ćemo koristiti 5 najbližih suseda
model2 = KNeighborsClassifier(n_neighbors=5)
model2.fit(X_train, y_train);
y_pred = model2.predict(X_test)
metrics.accuracy_score(y_test, y_pred)
0.9787234042553191
metrics.f1_score(y_test, y_pred)
0.9833333333333333
Dobili smo bolje rezultate.