# load the iris dataset as an example
from sklearn.datasets import load_iris
iris = load_iris()
# store the feature matrix (X) and response vector (y)
X = iris.data
y = iris.target
# splitting X and y into training and testing sets
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1)
# training the model on training set
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# making predictions on the testing set
y_pred = knn.predict(X_test)
# comparing actual response values (y_test) with predicted response values (y_pred)
from sklearn import metrics
print("kNN model accuracy:", metrics.accuracy_score(y_test, y_pred))
# making prediction for out of sample data
sample = [[3, 5, 4, 2], [2, 3, 5, 4]]
preds = knn.predict(sample)
pred_species = [iris.target_names[p] for p in preds]
print("Predictions:", pred_species)
IyBsb2FkIHRoZSBpcmlzIGRhdGFzZXQgYXMgYW4gZXhhbXBsZQpmcm9tIHNrbGVhcm4uZGF0YXNldHMgaW1wb3J0IGxvYWRfaXJpcwppcmlzID0gbG9hZF9pcmlzKCkKIAojIHN0b3JlIHRoZSBmZWF0dXJlIG1hdHJpeCAoWCkgYW5kIHJlc3BvbnNlIHZlY3RvciAoeSkKWCA9IGlyaXMuZGF0YQp5ID0gaXJpcy50YXJnZXQKIAojIHNwbGl0dGluZyBYIGFuZCB5IGludG8gdHJhaW5pbmcgYW5kIHRlc3Rpbmcgc2V0cwpmcm9tIHNrbGVhcm4ubW9kZWxfc2VsZWN0aW9uIGltcG9ydCB0cmFpbl90ZXN0X3NwbGl0ClhfdHJhaW4sIFhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdChYLCB5LCB0ZXN0X3NpemU9MC40LCByYW5kb21fc3RhdGU9MSkKIAojIHRyYWluaW5nIHRoZSBtb2RlbCBvbiB0cmFpbmluZyBzZXQKZnJvbSBza2xlYXJuLm5laWdoYm9ycyBpbXBvcnQgS05laWdoYm9yc0NsYXNzaWZpZXIKa25uID0gS05laWdoYm9yc0NsYXNzaWZpZXIobl9uZWlnaGJvcnM9MykKa25uLmZpdChYX3RyYWluLCB5X3RyYWluKQogCiMgbWFraW5nIHByZWRpY3Rpb25zIG9uIHRoZSB0ZXN0aW5nIHNldAp5X3ByZWQgPSBrbm4ucHJlZGljdChYX3Rlc3QpCiAKIyBjb21wYXJpbmcgYWN0dWFsIHJlc3BvbnNlIHZhbHVlcyAoeV90ZXN0KSB3aXRoIHByZWRpY3RlZCByZXNwb25zZSB2YWx1ZXMgKHlfcHJlZCkKZnJvbSBza2xlYXJuIGltcG9ydCBtZXRyaWNzCnByaW50KCJrTk4gbW9kZWwgYWNjdXJhY3k6IiwgbWV0cmljcy5hY2N1cmFjeV9zY29yZSh5X3Rlc3QsIHlfcHJlZCkpCiAKIyBtYWtpbmcgcHJlZGljdGlvbiBmb3Igb3V0IG9mIHNhbXBsZSBkYXRhCnNhbXBsZSA9IFtbMywgNSwgNCwgMl0sIFsyLCAzLCA1LCA0XV0KcHJlZHMgPSBrbm4ucHJlZGljdChzYW1wbGUpCnByZWRfc3BlY2llcyA9IFtpcmlzLnRhcmdldF9uYW1lc1twXSBmb3IgcCBpbiBwcmVkc10KcHJpbnQoIlByZWRpY3Rpb25zOiIsIHByZWRfc3BlY2llcyk=