From 5339fbbe82828ecf54ac7144117297a13998ed85 Mon Sep 17 00:00:00 2001 From: Wiktor Szynaka Date: Sun, 28 May 2023 02:50:07 +0200 Subject: [PATCH] more trainig examples, model training --- machine_learning/decisionTree.py | 40 ++++++++++++++++++---- machine_learning/model.pkl | Bin 0 -> 19433 bytes machine_learning/training_data.csv | 52 ++++++++++++++++++++++++++++- 3 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 machine_learning/model.pkl diff --git a/machine_learning/decisionTree.py b/machine_learning/decisionTree.py index 17cc4e1..68a3950 100644 --- a/machine_learning/decisionTree.py +++ b/machine_learning/decisionTree.py @@ -1,13 +1,15 @@ import os from trainingData import TrainingData - +from sklearn import tree +import joblib +from sklearn.preprocessing import LabelEncoder, OneHotEncoder +import numpy as np def _read_training_data() -> TrainingData: - attributes: list[list[str]] = [] - classes: list[str] = [] - __location__ = os.path.realpath( - os.path.join(os.getcwd(), os.path.dirname(__file__))) - file = open(os.path.join(__location__, 'training_data.csv')) + attributes = [] + classes = [] + location = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) + file = open(os.path.join(location, 'training_data.csv')) lines = file.readlines()[1:] file.close() for line in lines: @@ -19,5 +21,29 @@ def _read_training_data() -> TrainingData: classes.append(line_class) return TrainingData(attributes, classes) + trainning_data = _read_training_data() - \ No newline at end of file + +X = trainning_data.attributes +Y = trainning_data.classes + +le_shape = LabelEncoder() +le_flexibility = LabelEncoder() +le_color = LabelEncoder() + +le_shape.fit([x[0] for x in X]) +le_flexibility.fit([x[3] for x in X]) +le_color.fit([x[4] for x in X]) + +X_encoded = np.array([ + [le_shape.transform([x[0]])[0], x[1], x[2], le_flexibility.transform([x[3]])[0], le_color.transform([x[4]])[0]] + for x in X +]) + +encoder = OneHotEncoder(categories='auto', sparse=False) +X_encoded = encoder.fit_transform(X_encoded) + +model = tree.DecisionTreeClassifier() +model.fit(X_encoded, Y) + +joblib.dump(model, 'model.pkl') \ No newline at end of file diff --git a/machine_learning/model.pkl b/machine_learning/model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f79ca17ddaccc6a55ed247b299c9299f8f1d88fe GIT binary patch literal 19433 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 M!J)w+zdADbfB&a;*#H0l literal 0 HcmV?d00001 diff --git a/machine_learning/training_data.csv b/machine_learning/training_data.csv index b0d47b1..3e7951e 100644 --- a/machine_learning/training_data.csv +++ b/machine_learning/training_data.csv @@ -98,4 +98,54 @@ Irregular,Medium,No,High,High,Dark,Low,Yes, PLASTIC_AND_METAL Flat,High,Yes,Medium,Medium,Colorful,Low,Yes,PAPER Longitiudonal,Low,Yes,Medium,Medium,Light,Medium,Yes,MIXED Round,Medium,Yes,High,Low,Light,Medium,Yes,PLASTIC_AND_METAL -Longitiudonal,High,No,Medium,Low,Light,Low,Yes,PLASTIC_AND_METAL \ No newline at end of file +Longitiudonal,High,No,Medium,Low,Light,Low,Yes,PLASTIC_AND_METAL +Flat,Low,Yes,Low,High,Light,Medium,Yes,PLASTIC_AND_METAL +Irregular,High,No,Low,High,Light,Low,No,PAPER +Round,High,Yes,High,Medium,Colorful,Low,No,MIXED +Flat,Low,Yes,Medium,Low,Transparent,Low,Yes,PLASTIC_AND_METAL +Irregular,Low,No,Medium,Low,Dark,Low,No,PAPER +Round,Low,No,Medium,Medium,Light,Medium,Yes,PLASTIC_AND_METAL +Longitiudonal,High,Yes,Low,Low,Light,High,No,MIXED +Irregular,Medium,Yes,Low,Medium,Light,High,No,MIXED +Flat,High,Yes,High,Medium,Dark,Low,No,PLASTIC_AND_METAL +Round,Low,Yes,Medium,Medium,Light,Medium,No,PLASTIC_AND_METAL +Round,Low,No,Low,Medium,Dark,Medium,No,PAPER +Irregular,Low,Yes,High,Low,Transparent,Medium,No,PLASTIC_AND_METAL +Longitiudonal,High,Yes,High,High,Transparent,Low,Yes,PLASTIC_AND_METAL +Round,High,Yes,Low,Medium,Transparent,Low,Yes,MIXED +Longitiudonal,High,Yes,Medium,Medium,Colorful,Low,Yes,MIXED +Round,Low,Yes,Low,Medium,Dark,Low,Yes,MIXED +Flat,Medium,No,Medium,High,Colorful,Low,No,PAPER +Irregular,High,Yes,Low,High,Transparent,Medium,No,BIO +Round,Medium,Yes,High,Medium,Transparent,High,Yes,MIXED +Flat,Low,No,Medium,Medium,Colorful,High,No,GLASS +Longitiudonal,Medium,No,High,Medium,Colorful,Medium,No,GLASS +Longitiudonal,Low,Yes,Low,Medium,Colorful,Medium,Yes,PLASTIC_AND_METAL +Irregular,Medium,No,Medium,High,Transparent,Medium,No,PAPER +Longitiudonal,Medium,Yes,Low,Medium,Dark,High,Yes,MIXED +Round,Low,Yes,High,High,Dark,Medium,No,MIXED +Longitiudonal,High,No,Low,High,Colorful,High,No,MIXED +Flat,Low,Yes,Medium,Medium,Transparent,High,Yes,PLASTIC_AND_METAL +Irregular,High,Yes,High,Medium,Light,High,No,PAPER +Longitiudonal,Low,Yes,High,Medium,Colorful,Low,Yes,PAPER +Round,Medium,No,High,Low,Colorful,High,No,PLASTIC_AND_METAL +Longitiudonal,High,No,Medium,Low,Dark,Medium,No,MIXED +Round,High,Yes,Medium,Medium,Light,Medium,No,GLASS +Longitiudonal,Low,No,Low,Medium,Light,Medium,No,MIXED +Longitiudonal,High,Yes,High,Low,Transparent,High,Yes,PLASTIC_AND_METAL +Round,Medium,Yes,Low,High,Light,High,No,PLASTIC_AND_METAL +Round,High,Yes,High,High,Light,Medium,Yes,MIXED +Flat,Low,No,Medium,High,Transparent,High,Yes,PAPER +Irregular,Medium,Yes,Low,High,Dark,High,Yes,PLASTIC_AND_METAL +Longitiudonal,Low,No,Low,Low,Transparent,High,No,MIXED +Round,High,No,Medium,High,Light,High,Yes,PAPER +Irregular,Low,No,Low,High,Light,Medium,Yes,MIXED +Irregular,High,No,Low,High,Light,High,No,PAPER +Longitiudonal,High,No,Low,Medium,Transparent,Low,No,PLASTIC_AND_METAL +Irregular,Low,Yes,High,Low,Colorful,Medium,No,MIXED +Round,Low,No,High,Low,Colorful,High,No,BIO +Irregular,Medium,No,High,High,Colorful,Low,Yes,BIO +Irregular,High,No,Medium,High,Colorful,Low,Yes,PAPER +Irregular,Low,No,Medium,Low,Dark,Medium,Yes,PLASTIC_AND_METAL +Longitiudonal,Medium,Yes,Low,Low,Light,High,Yes,MIXED +Flat,High,No,High,Low,Transparent,Low,No,PLASTIC_AND_METAL -- 2.20.1