From 29a0f7e49a95c3cb4f0207afb3d46e69ace9d47b Mon Sep 17 00:00:00 2001 From: Qintefbr8 <1104320156@qq.com> Date: Sat, 6 Nov 2021 18:44:15 +0800 Subject: [PATCH] ADD file via upload --- knn.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 knn.py diff --git a/knn.py b/knn.py new file mode 100644 index 0000000..b3a0a6e --- /dev/null +++ b/knn.py @@ -0,0 +1,37 @@ +from sklearn.neighbors import KNeighborsClassifier +from sklearn.preprocessing import LabelEncoder +from sklearn.model_selection import train_test_split +from sklearn.metrics import classification_report +from simplepreprocessor import SimplePreprocessor +from simpledatasetloader import SimpleDatasetLoader +from imutils import paths +import argparse + +if __name__ == '__main__': + ap = argparse.ArgumentParser() + ap.add_argument("-d", "--dataset", required=True, help="path to input dataset") + ap.add_argument("-k", "--neighbors", type=int, default=1, help="of nearest neighbors for classification") + ap.add_argument("-j", "--jobs", type=int, help="of jobs for K-NN distance (-1 uses all variables cores)") + args = vars(ap.parse_args()) + + print("[INFO] loading images...") + imagePaths = list(paths.list_images(args["dataset"])) + + sp = SimplePreprocessor(32, 32) + sdl = SimpleDatasetLoader(preprocessors=[sp]) + (data, labels) = sdl.load(imagePaths, verbose=100) + data = data.reshape((data.shape[0], 3072)) + + print("[INFO] features matrix:{:.1f}MB".format(data.nbytes / (1024 *1000.0))) + + le = LabelEncoder() + labels = le.fit_transform(labels) + + (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42) + + print("[INFO] evaluating K-NN classifier...") + + model =KNeighborsClassifier(n_neighbors=3) + model.fit(trainX, trainY) + print(classification_report(testY, model.predict(testX), target_names=le.classes_)) +