From 592996076e3a1f0262d34b40640f4d31b61f3981 Mon Sep 17 00:00:00 2001 From: s25140 Date: Sun, 18 Jun 2023 13:48:49 +0200 Subject: [PATCH] Added project --- Lab7/.idea/.gitignore | 3 + Lab7/.idea/Lab7.iml | 8 + .../inspectionProfiles/Project_Default.xml | 33 +++ .../inspectionProfiles/profiles_settings.xml | 6 + Lab7/.idea/misc.xml | 4 + Lab7/.idea/modules.xml | 8 + Lab7/.idea/vcs.xml | 6 + Project/.idea/.gitignore | 3 + Project/.idea/Project.iml | 8 + .../inspectionProfiles/Project_Default.xml | 33 +++ .../inspectionProfiles/profiles_settings.xml | 6 + Project/.idea/misc.xml | 4 + Project/.idea/modules.xml | 8 + Project/.idea/vcs.xml | 6 + Project1/.idea/.gitignore | 3 + Project1/.idea/Project.iml | 10 + .../inspectionProfiles/Project_Default.xml | 33 +++ .../inspectionProfiles/profiles_settings.xml | 6 + Project1/.idea/misc.xml | 4 + Project1/.idea/modules.xml | 8 + Project1/.idea/vcs.xml | 7 + Project1/Assets/AI.ico | Bin 0 -> 16958 bytes Project1/Assets/glass.data | 196 ++++++++++++++++++ Project1/Assets/glass.data.bak | 196 ++++++++++++++++++ Project1/Assets/glass_test.data | 18 ++ Project1/Assets/glass_test.data.bak | 4 + Project1/GUI.py | 191 +++++++++++++++++ Project1/KNN.py | 47 +++++ Project1/Models/model1.pkl | Bin 0 -> 18876 bytes 29 files changed, 859 insertions(+) create mode 100644 Lab7/.idea/.gitignore create mode 100644 Lab7/.idea/Lab7.iml create mode 100644 Lab7/.idea/inspectionProfiles/Project_Default.xml create mode 100644 Lab7/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 Lab7/.idea/misc.xml create mode 100644 Lab7/.idea/modules.xml create mode 100644 Lab7/.idea/vcs.xml create mode 100644 Project/.idea/.gitignore create mode 100644 Project/.idea/Project.iml create mode 100644 Project/.idea/inspectionProfiles/Project_Default.xml create mode 100644 Project/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 Project/.idea/misc.xml create mode 100644 Project/.idea/modules.xml create mode 100644 Project/.idea/vcs.xml create mode 100644 Project1/.idea/.gitignore create mode 100644 Project1/.idea/Project.iml create mode 100644 Project1/.idea/inspectionProfiles/Project_Default.xml create mode 100644 Project1/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 Project1/.idea/misc.xml create mode 100644 Project1/.idea/modules.xml create mode 100644 Project1/.idea/vcs.xml create mode 100644 Project1/Assets/AI.ico create mode 100644 Project1/Assets/glass.data create mode 100644 Project1/Assets/glass.data.bak create mode 100644 Project1/Assets/glass_test.data create mode 100644 Project1/Assets/glass_test.data.bak create mode 100644 Project1/GUI.py create mode 100644 Project1/KNN.py create mode 100644 Project1/Models/model1.pkl diff --git a/Lab7/.idea/.gitignore b/Lab7/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Lab7/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Lab7/.idea/Lab7.iml b/Lab7/.idea/Lab7.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/Lab7/.idea/Lab7.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Lab7/.idea/inspectionProfiles/Project_Default.xml b/Lab7/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8f3dc4e --- /dev/null +++ b/Lab7/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/Lab7/.idea/inspectionProfiles/profiles_settings.xml b/Lab7/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Lab7/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Lab7/.idea/misc.xml b/Lab7/.idea/misc.xml new file mode 100644 index 0000000..23b0e37 --- /dev/null +++ b/Lab7/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Lab7/.idea/modules.xml b/Lab7/.idea/modules.xml new file mode 100644 index 0000000..1780742 --- /dev/null +++ b/Lab7/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Lab7/.idea/vcs.xml b/Lab7/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Lab7/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Project/.idea/.gitignore b/Project/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Project/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Project/.idea/Project.iml b/Project/.idea/Project.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/Project/.idea/Project.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Project/.idea/inspectionProfiles/Project_Default.xml b/Project/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8f3dc4e --- /dev/null +++ b/Project/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/Project/.idea/inspectionProfiles/profiles_settings.xml b/Project/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Project/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Project/.idea/misc.xml b/Project/.idea/misc.xml new file mode 100644 index 0000000..23b0e37 --- /dev/null +++ b/Project/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Project/.idea/modules.xml b/Project/.idea/modules.xml new file mode 100644 index 0000000..74f1bcb --- /dev/null +++ b/Project/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Project/.idea/vcs.xml b/Project/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Project/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Project1/.idea/.gitignore b/Project1/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Project1/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Project1/.idea/Project.iml b/Project1/.idea/Project.iml new file mode 100644 index 0000000..74d515a --- /dev/null +++ b/Project1/.idea/Project.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Project1/.idea/inspectionProfiles/Project_Default.xml b/Project1/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8f3dc4e --- /dev/null +++ b/Project1/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/Project1/.idea/inspectionProfiles/profiles_settings.xml b/Project1/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Project1/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Project1/.idea/misc.xml b/Project1/.idea/misc.xml new file mode 100644 index 0000000..9d786e2 --- /dev/null +++ b/Project1/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Project1/.idea/modules.xml b/Project1/.idea/modules.xml new file mode 100644 index 0000000..74f1bcb --- /dev/null +++ b/Project1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Project1/.idea/vcs.xml b/Project1/.idea/vcs.xml new file mode 100644 index 0000000..e0b4610 --- /dev/null +++ b/Project1/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Project1/Assets/AI.ico b/Project1/Assets/AI.ico new file mode 100644 index 0000000000000000000000000000000000000000..853ecce9b2f7ff1801024f15a8bb5141764ebafd GIT binary patch literal 16958 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 literal 0 HcmV?d00001 diff --git a/Project1/Assets/glass.data b/Project1/Assets/glass.data new file mode 100644 index 0000000..56dff1e --- /dev/null +++ b/Project1/Assets/glass.data @@ -0,0 +1,196 @@ +1.52101,13.64,4.49,1.10,71.78,0.06,8.75,0.00,0.00,1 +1.51761,13.89,3.60,1.36,72.73,0.48,7.83,0.00,0.00,1 +1.51618,13.53,3.55,1.54,72.99,0.39,7.78,0.00,0.00,1 +1.51756,13.15,3.61,1.05,73.24,0.57,8.24,0.00,0.00,1 +1.51918,14.04,3.58,1.37,72.08,0.56,8.30,0.00,0.00,1 +1.51755,13.00,3.60,1.36,72.99,0.57,8.40,0.00,0.11,1 +1.51571,12.72,3.46,1.56,73.20,0.67,8.09,0.00,0.24,1 +1.51763,12.80,3.66,1.27,73.01,0.60,8.56,0.00,0.00,1 +1.51589,12.88,3.43,1.40,73.28,0.69,8.05,0.00,0.24,1 +1.51748,12.86,3.56,1.27,73.21,0.54,8.38,0.00,0.17,1 +1.51763,12.61,3.59,1.31,73.29,0.58,8.50,0.00,0.00,1 +1.51761,12.81,3.54,1.23,73.24,0.58,8.39,0.00,0.00,1 +1.51784,12.68,3.67,1.16,73.11,0.61,8.70,0.00,0.00,1 +1.52196,14.36,3.85,0.89,71.36,0.15,9.15,0.00,0.00,1 +1.51911,13.90,3.73,1.18,72.12,0.06,8.89,0.00,0.00,1 +1.51735,13.02,3.54,1.69,72.73,0.54,8.44,0.00,0.07,1 +1.51750,12.82,3.55,1.49,72.75,0.54,8.52,0.00,0.19,1 +1.51966,14.77,3.75,0.29,72.02,0.03,9.00,0.00,0.00,1 +1.51736,12.78,3.62,1.29,72.79,0.59,8.70,0.00,0.00,1 +1.51751,12.81,3.57,1.35,73.02,0.62,8.59,0.00,0.00,1 +1.51720,13.38,3.50,1.15,72.85,0.50,8.43,0.00,0.00,1 +1.51764,12.98,3.54,1.21,73.00,0.65,8.53,0.00,0.00,1 +1.51793,13.21,3.48,1.41,72.64,0.59,8.43,0.00,0.00,1 +1.51721,12.87,3.48,1.33,73.04,0.56,8.43,0.00,0.00,1 +1.51768,12.56,3.52,1.43,73.15,0.57,8.54,0.00,0.00,1 +1.51784,13.08,3.49,1.28,72.86,0.60,8.49,0.00,0.00,1 +1.51768,12.65,3.56,1.30,73.08,0.61,8.69,0.00,0.14,1 +1.51747,12.84,3.50,1.14,73.27,0.56,8.55,0.00,0.00,1 +1.51775,12.85,3.48,1.23,72.97,0.61,8.56,0.09,0.22,1 +1.51753,12.57,3.47,1.38,73.39,0.60,8.55,0.00,0.06,1 +1.51783,12.69,3.54,1.34,72.95,0.57,8.75,0.00,0.00,1 +1.51567,13.29,3.45,1.21,72.74,0.56,8.57,0.00,0.00,1 +1.51909,13.89,3.53,1.32,71.81,0.51,8.78,0.11,0.00,1 +1.51797,12.74,3.48,1.35,72.96,0.64,8.68,0.00,0.00,1 +1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0.00,0.00,1 +1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0.00,0.00,1 +1.51793,12.79,3.50,1.12,73.03,0.64,8.77,0.00,0.00,1 +1.51755,12.71,3.42,1.20,73.20,0.59,8.64,0.00,0.00,1 +1.51779,13.21,3.39,1.33,72.76,0.59,8.59,0.00,0.00,1 +1.52210,13.73,3.84,0.72,71.76,0.17,9.74,0.00,0.00,1 +1.51786,12.73,3.43,1.19,72.95,0.62,8.76,0.00,0.30,1 +1.51900,13.49,3.48,1.35,71.95,0.55,9.00,0.00,0.00,1 +1.51869,13.19,3.37,1.18,72.72,0.57,8.83,0.00,0.16,1 +1.52667,13.99,3.70,0.71,71.57,0.02,9.82,0.00,0.10,1 +1.52223,13.21,3.77,0.79,71.99,0.13,10.02,0.00,0.00,1 +1.51898,13.58,3.35,1.23,72.08,0.59,8.91,0.00,0.00,1 +1.52320,13.72,3.72,0.51,71.75,0.09,10.06,0.00,0.16,1 +1.51926,13.20,3.33,1.28,72.36,0.60,9.14,0.00,0.11,1 +1.51808,13.43,2.87,1.19,72.84,0.55,9.03,0.00,0.00,1 +1.51837,13.14,2.84,1.28,72.85,0.55,9.07,0.00,0.00,1 +1.51778,13.21,2.81,1.29,72.98,0.51,9.02,0.00,0.09,1 +1.51769,12.45,2.71,1.29,73.70,0.56,9.06,0.00,0.24,1 +1.51215,12.99,3.47,1.12,72.98,0.62,8.35,0.00,0.31,1 +1.51824,12.87,3.48,1.29,72.95,0.60,8.43,0.00,0.00,1 +1.51754,13.48,3.74,1.17,72.99,0.59,8.03,0.00,0.00,1 +1.51754,13.39,3.66,1.19,72.79,0.57,8.27,0.00,0.11,1 +1.51905,13.60,3.62,1.11,72.64,0.14,8.76,0.00,0.00,1 +1.51977,13.81,3.58,1.32,71.72,0.12,8.67,0.69,0.00,1 +1.52172,13.51,3.86,0.88,71.79,0.23,9.54,0.00,0.11,1 +1.52227,14.17,3.81,0.78,71.35,0.00,9.69,0.00,0.00,1 +1.52172,13.48,3.74,0.90,72.01,0.18,9.61,0.00,0.07,1 +1.52099,13.69,3.59,1.12,71.96,0.09,9.40,0.00,0.00,1 +1.52152,13.05,3.65,0.87,72.22,0.19,9.85,0.00,0.17,1 +1.52152,13.05,3.65,0.87,72.32,0.19,9.85,0.00,0.17,1 +1.52152,13.12,3.58,0.90,72.20,0.23,9.82,0.00,0.16,1 +1.52300,13.31,3.58,0.82,71.99,0.12,10.17,0.00,0.03,1 +1.51574,14.86,3.67,1.74,71.87,0.16,7.36,0.00,0.12,2 +1.51848,13.64,3.87,1.27,71.96,0.54,8.32,0.00,0.32,2 +1.51593,13.09,3.59,1.52,73.10,0.67,7.83,0.00,0.00,2 +1.51631,13.34,3.57,1.57,72.87,0.61,7.89,0.00,0.00,2 +1.51596,13.02,3.56,1.54,73.11,0.72,7.90,0.00,0.00,2 +1.51590,13.02,3.58,1.51,73.12,0.69,7.96,0.00,0.00,2 +1.51645,13.44,3.61,1.54,72.39,0.66,8.03,0.00,0.00,2 +1.51627,13.00,3.58,1.54,72.83,0.61,8.04,0.00,0.00,2 +1.51613,13.92,3.52,1.25,72.88,0.37,7.94,0.00,0.14,2 +1.51590,12.82,3.52,1.90,72.86,0.69,7.97,0.00,0.00,2 +1.51592,12.86,3.52,2.12,72.66,0.69,7.97,0.00,0.00,2 +1.51593,13.25,3.45,1.43,73.17,0.61,7.86,0.00,0.00,2 +1.51646,13.41,3.55,1.25,72.81,0.68,8.10,0.00,0.00,2 +1.51594,13.09,3.52,1.55,72.87,0.68,8.05,0.00,0.09,2 +1.51409,14.25,3.09,2.08,72.28,1.10,7.08,0.00,0.00,2 +1.51625,13.36,3.58,1.49,72.72,0.45,8.21,0.00,0.00,2 +1.51841,12.93,3.74,1.11,72.28,0.64,8.96,0.00,0.22,2 +1.51605,12.90,3.44,1.45,73.06,0.44,8.27,0.00,0.00,2 +1.51588,13.12,3.41,1.58,73.26,0.07,8.39,0.00,0.19,2 +1.51590,13.24,3.34,1.47,73.10,0.39,8.22,0.00,0.00,2 +1.51629,12.71,3.33,1.49,73.28,0.67,8.24,0.00,0.00,2 +1.51860,13.36,3.43,1.43,72.26,0.51,8.60,0.00,0.00,2 +1.51841,13.02,3.62,1.06,72.34,0.64,9.13,0.00,0.15,2 +1.51743,12.20,3.25,1.16,73.55,0.62,8.90,0.00,0.24,2 +1.51689,12.67,2.88,1.71,73.21,0.73,8.54,0.00,0.00,2 +1.51811,12.96,2.96,1.43,72.92,0.60,8.79,0.14,0.00,2 +1.51655,12.75,2.85,1.44,73.27,0.57,8.79,0.11,0.22,2 +1.51730,12.35,2.72,1.63,72.87,0.70,9.23,0.00,0.00,2 +1.51820,12.62,2.76,0.83,73.81,0.35,9.42,0.00,0.20,2 +1.52725,13.80,3.15,0.66,70.57,0.08,11.64,0.00,0.00,2 +1.52410,13.83,2.90,1.17,71.15,0.08,10.79,0.00,0.00,2 +1.52475,11.45,0.00,1.88,72.19,0.81,13.24,0.00,0.34,2 +1.53125,10.73,0.00,2.10,69.81,0.58,13.30,3.15,0.28,2 +1.53393,12.30,0.00,1.00,70.16,0.12,16.19,0.00,0.24,2 +1.52222,14.43,0.00,1.00,72.67,0.10,11.52,0.00,0.08,2 +1.51818,13.72,0.00,0.56,74.45,0.00,10.99,0.00,0.00,2 +1.52664,11.23,0.00,0.77,73.21,0.00,14.68,0.00,0.00,2 +1.52739,11.02,0.00,0.75,73.08,0.00,14.96,0.00,0.00,2 +1.52777,12.64,0.00,0.67,72.02,0.06,14.40,0.00,0.00,2 +1.51892,13.46,3.83,1.26,72.55,0.57,8.21,0.00,0.14,2 +1.51847,13.10,3.97,1.19,72.44,0.60,8.43,0.00,0.00,2 +1.51846,13.41,3.89,1.33,72.38,0.51,8.28,0.00,0.00,2 +1.51829,13.24,3.90,1.41,72.33,0.55,8.31,0.00,0.10,2 +1.51708,13.72,3.68,1.81,72.06,0.64,7.88,0.00,0.00,2 +1.51673,13.30,3.64,1.53,72.53,0.65,8.03,0.00,0.29,2 +1.51652,13.56,3.57,1.47,72.45,0.64,7.96,0.00,0.00,2 +1.51844,13.25,3.76,1.32,72.40,0.58,8.42,0.00,0.00,2 +1.51663,12.93,3.54,1.62,72.96,0.64,8.03,0.00,0.21,2 +1.51687,13.23,3.54,1.48,72.84,0.56,8.10,0.00,0.00,2 +1.51707,13.48,3.48,1.71,72.52,0.62,7.99,0.00,0.00,2 +1.52177,13.20,3.68,1.15,72.75,0.54,8.52,0.00,0.00,2 +1.51872,12.93,3.66,1.56,72.51,0.58,8.55,0.00,0.12,2 +1.51667,12.94,3.61,1.26,72.75,0.56,8.60,0.00,0.00,2 +1.52081,13.78,2.28,1.43,71.99,0.49,9.85,0.00,0.17,2 +1.52068,13.55,2.09,1.67,72.18,0.53,9.57,0.27,0.17,2 +1.52020,13.98,1.35,1.63,71.76,0.39,10.56,0.00,0.18,2 +1.52177,13.75,1.01,1.36,72.19,0.33,11.14,0.00,0.00,2 +1.52614,13.70,0.00,1.36,71.24,0.19,13.44,0.00,0.10,2 +1.51813,13.43,3.98,1.18,72.49,0.58,8.15,0.00,0.00,2 +1.51800,13.71,3.93,1.54,71.81,0.54,8.21,0.00,0.15,2 +1.51811,13.33,3.85,1.25,72.78,0.52,8.12,0.00,0.00,2 +1.51789,13.19,3.90,1.30,72.33,0.55,8.44,0.00,0.28,2 +1.51806,13.00,3.80,1.08,73.07,0.56,8.38,0.00,0.12,2 +1.51711,12.89,3.62,1.57,72.96,0.61,8.11,0.00,0.00,2 +1.51674,12.79,3.52,1.54,73.36,0.66,7.90,0.00,0.00,2 +1.51674,12.87,3.56,1.64,73.14,0.65,7.99,0.00,0.00,2 +1.51690,13.33,3.54,1.61,72.54,0.68,8.11,0.00,0.00,2 +1.51851,13.20,3.63,1.07,72.83,0.57,8.41,0.09,0.17,2 +1.51662,12.85,3.51,1.44,73.01,0.68,8.23,0.06,0.25,2 +1.51709,13.00,3.47,1.79,72.72,0.66,8.18,0.00,0.00,2 +1.51660,12.99,3.18,1.23,72.97,0.58,8.81,0.00,0.24,2 +1.51839,12.85,3.67,1.24,72.57,0.62,8.68,0.00,0.35,2 +1.51769,13.65,3.66,1.11,72.77,0.11,8.60,0.00,0.00,3 +1.51610,13.33,3.53,1.34,72.67,0.56,8.33,0.00,0.00,3 +1.51670,13.24,3.57,1.38,72.70,0.56,8.44,0.00,0.10,3 +1.51643,12.16,3.52,1.35,72.89,0.57,8.53,0.00,0.00,3 +1.51665,13.14,3.45,1.76,72.48,0.60,8.38,0.00,0.17,3 +1.52127,14.32,3.90,0.83,71.50,0.00,9.49,0.00,0.00,3 +1.51779,13.64,3.65,0.65,73.00,0.06,8.93,0.00,0.00,3 +1.51610,13.42,3.40,1.22,72.69,0.59,8.32,0.00,0.00,3 +1.51694,12.86,3.58,1.31,72.61,0.61,8.79,0.00,0.00,3 +1.51646,13.04,3.40,1.26,73.01,0.52,8.58,0.00,0.00,3 +1.51655,13.41,3.39,1.28,72.64,0.52,8.65,0.00,0.00,3 +1.51796,13.50,3.36,1.63,71.94,0.57,8.81,0.00,0.09,3 +1.51832,13.33,3.34,1.54,72.14,0.56,8.99,0.00,0.00,3 +1.51934,13.64,3.54,0.75,72.65,0.16,8.89,0.15,0.24,3 +1.52211,14.19,3.78,0.91,71.36,0.23,9.14,0.00,0.37,3 +1.51514,14.01,2.68,3.50,69.89,1.68,5.87,2.20,0.00,5 +1.51915,12.73,1.85,1.86,72.69,0.60,10.09,0.00,0.00,5 +1.52171,11.56,1.88,1.56,72.86,0.47,11.41,0.00,0.00,5 +1.52151,11.03,1.71,1.56,73.44,0.58,11.62,0.00,0.00,5 +1.51969,12.64,0.00,1.65,73.75,0.38,11.53,0.00,0.00,5 +1.52369,13.44,0.00,1.58,72.22,0.32,12.24,0.00,0.00,5 +1.51316,13.02,0.00,3.04,70.48,6.21,6.96,0.00,0.00,5 +1.51321,13.00,0.00,3.02,70.70,6.21,6.93,0.00,0.00,5 +1.52043,13.38,0.00,1.40,72.25,0.33,12.50,0.00,0.00,5 +1.52058,12.85,1.61,2.17,72.18,0.76,9.70,0.24,0.51,5 +1.52119,12.97,0.33,1.51,73.39,0.13,11.27,0.00,0.28,5 +1.51905,14.00,2.39,1.56,72.37,0.00,9.57,0.00,0.00,6 +1.51937,13.79,2.41,1.19,72.76,0.00,9.77,0.00,0.00,6 +1.51829,14.46,2.24,1.62,72.38,0.00,9.26,0.00,0.00,6 +1.51852,14.09,2.19,1.66,72.67,0.00,9.32,0.00,0.00,6 +1.51888,14.99,0.78,1.74,72.50,0.00,9.95,0.00,0.00,6 +1.51916,14.15,0.00,2.09,72.74,0.00,10.88,0.00,0.00,6 +1.51969,14.56,0.00,0.56,73.48,0.00,11.22,0.00,0.00,6 +1.51115,17.38,0.00,0.34,75.41,0.00,6.65,0.00,0.00,6 +1.51131,13.69,3.20,1.81,72.81,1.76,5.43,1.19,0.00,7 +1.51838,14.32,3.26,2.22,71.25,1.46,5.79,1.63,0.00,7 +1.52315,13.44,3.34,1.23,72.38,0.60,8.83,0.00,0.00,7 +1.52247,14.86,2.20,2.06,70.26,0.76,9.76,0.00,0.00,7 +1.52365,15.79,1.83,1.31,70.43,0.31,8.61,1.68,0.00,7 +1.51613,13.88,1.78,1.79,73.10,0.00,8.67,0.76,0.00,7 +1.51602,14.85,0.00,2.38,73.28,0.00,8.76,0.64,0.09,7 +1.51623,14.20,0.00,2.79,73.46,0.04,9.04,0.40,0.09,7 +1.51719,14.75,0.00,2.00,73.02,0.00,8.53,1.59,0.08,7 +1.51683,14.56,0.00,1.98,73.29,0.00,8.52,1.57,0.07,7 +1.51545,14.14,0.00,2.68,73.39,0.08,9.07,0.61,0.05,7 +1.51556,13.87,0.00,2.54,73.23,0.14,9.41,0.81,0.01,7 +1.51727,14.70,0.00,2.34,73.28,0.00,8.95,0.66,0.00,7 +1.51531,14.38,0.00,2.66,73.10,0.04,9.08,0.64,0.00,7 +1.51617,14.95,0.00,2.27,73.30,0.00,8.71,0.67,0.00,7 +1.51732,14.95,0.00,1.80,72.99,0.00,8.61,1.55,0.00,7 +1.51645,14.94,0.00,1.87,73.11,0.00,8.67,1.38,0.00,7 +1.51831,14.39,0.00,1.82,72.86,1.41,6.47,2.88,0.00,7 +1.51640,14.37,0.00,2.74,72.85,0.00,9.45,0.54,0.00,7 +1.51623,14.14,0.00,2.88,72.61,0.08,9.18,1.06,0.00,7 +1.51685,14.92,0.00,1.99,73.06,0.00,8.40,1.59,0.00,7 +1.52065,14.36,0.00,2.02,73.42,0.00,8.44,1.64,0.00,7 +1.51651,14.38,0.00,1.94,73.61,0.00,8.48,1.57,0.00,7 +1.51711,14.23,0.00,2.08,73.36,0.00,8.62,1.67,0.00,7 \ No newline at end of file diff --git a/Project1/Assets/glass.data.bak b/Project1/Assets/glass.data.bak new file mode 100644 index 0000000..ac7cc66 --- /dev/null +++ b/Project1/Assets/glass.data.bak @@ -0,0 +1,196 @@ +1.52101,13.64,4.49,1.10,71.78,0.06,8.75,0.00,0.00,1 +1.51761,13.89,3.60,1.36,72.73,0.48,7.83,0.00,0.00,1 +1.51618,13.53,3.55,1.54,72.99,0.39,7.78,0.00,0.00,1 +1.51756,13.15,3.61,1.05,73.24,0.57,8.24,0.00,0.00,1 +1.51918,14.04,3.58,1.37,72.08,0.56,8.30,0.00,0.00,1 +1.51755,13.00,3.60,1.36,72.99,0.57,8.40,0.00,0.11,1 +1.51571,12.72,3.46,1.56,73.20,0.67,8.09,0.00,0.24,1 +1.51763,12.80,3.66,1.27,73.01,0.60,8.56,0.00,0.00,1 +1.51589,12.88,3.43,1.40,73.28,0.69,8.05,0.00,0.24,1 +1.51748,12.86,3.56,1.27,73.21,0.54,8.38,0.00,0.17,1 +1.51763,12.61,3.59,1.31,73.29,0.58,8.50,0.00,0.00,1 +1.51761,12.81,3.54,1.23,73.24,0.58,8.39,0.00,0.00,1 +1.51784,12.68,3.67,1.16,73.11,0.61,8.70,0.00,0.00,1 +1.52196,14.36,3.85,0.89,71.36,0.15,9.15,0.00,0.00,1 +1.51911,13.90,3.73,1.18,72.12,0.06,8.89,0.00,0.00,1 +1.51735,13.02,3.54,1.69,72.73,0.54,8.44,0.00,0.07,1 +1.51750,12.82,3.55,1.49,72.75,0.54,8.52,0.00,0.19,1 +1.51966,14.77,3.75,0.29,72.02,0.03,9.00,0.00,0.00,1 +1.51736,12.78,3.62,1.29,72.79,0.59,8.70,0.00,0.00,1 +1.51751,12.81,3.57,1.35,73.02,0.62,8.59,0.00,0.00,1 +1.51720,13.38,3.50,1.15,72.85,0.50,8.43,0.00,0.00,1 +1.51764,12.98,3.54,1.21,73.00,0.65,8.53,0.00,0.00,1 +1.51793,13.21,3.48,1.41,72.64,0.59,8.43,0.00,0.00,1 +1.51721,12.87,3.48,1.33,73.04,0.56,8.43,0.00,0.00,1 +1.51768,12.56,3.52,1.43,73.15,0.57,8.54,0.00,0.00,1 +1.51784,13.08,3.49,1.28,72.86,0.60,8.49,0.00,0.00,1 +1.51768,12.65,3.56,1.30,73.08,0.61,8.69,0.00,0.14,1 +1.51747,12.84,3.50,1.14,73.27,0.56,8.55,0.00,0.00,1 +1.51775,12.85,3.48,1.23,72.97,0.61,8.56,0.09,0.22,1 +1.51753,12.57,3.47,1.38,73.39,0.60,8.55,0.00,0.06,1 +1.51783,12.69,3.54,1.34,72.95,0.57,8.75,0.00,0.00,1 +1.51567,13.29,3.45,1.21,72.74,0.56,8.57,0.00,0.00,1 +1.51909,13.89,3.53,1.32,71.81,0.51,8.78,0.11,0.00,1 +1.51797,12.74,3.48,1.35,72.96,0.64,8.68,0.00,0.00,1 +1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0.00,0.00,1 +1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0.00,0.00,1 +1.51793,12.79,3.50,1.12,73.03,0.64,8.77,0.00,0.00,1 +1.51755,12.71,3.42,1.20,73.20,0.59,8.64,0.00,0.00,1 +1.51779,13.21,3.39,1.33,72.76,0.59,8.59,0.00,0.00,1 +1.52210,13.73,3.84,0.72,71.76,0.17,9.74,0.00,0.00,1 +1.51786,12.73,3.43,1.19,72.95,0.62,8.76,0.00,0.30,1 +1.51900,13.49,3.48,1.35,71.95,0.55,9.00,0.00,0.00,1 +1.51869,13.19,3.37,1.18,72.72,0.57,8.83,0.00,0.16,1 +1.52667,13.99,3.70,0.71,71.57,0.02,9.82,0.00,0.10,1 +1.52223,13.21,3.77,0.79,71.99,0.13,10.02,0.00,0.00,1 +1.51898,13.58,3.35,1.23,72.08,0.59,8.91,0.00,0.00,1 +1.52320,13.72,3.72,0.51,71.75,0.09,10.06,0.00,0.16,1 +1.51926,13.20,3.33,1.28,72.36,0.60,9.14,0.00,0.11,1 +1.51808,13.43,2.87,1.19,72.84,0.55,9.03,0.00,0.00,1 +1.51837,13.14,2.84,1.28,72.85,0.55,9.07,0.00,0.00,1 +1.51778,13.21,2.81,1.29,72.98,0.51,9.02,0.00,0.09,1 +1.51769,12.45,2.71,1.29,73.70,0.56,9.06,0.00,0.24,1 +1.51215,12.99,3.47,1.12,72.98,0.62,8.35,0.00,0.31,1 +1.51824,12.87,3.48,1.29,72.95,0.60,8.43,0.00,0.00,1 +1.51754,13.48,3.74,1.17,72.99,0.59,8.03,0.00,0.00,1 +1.51754,13.39,3.66,1.19,72.79,0.57,8.27,0.00,0.11,1 +1.51905,13.60,3.62,1.11,72.64,0.14,8.76,0.00,0.00,1 +1.51977,13.81,3.58,1.32,71.72,0.12,8.67,0.69,0.00,1 +1.52172,13.51,3.86,0.88,71.79,0.23,9.54,0.00,0.11,1 +1.52227,14.17,3.81,0.78,71.35,0.00,9.69,0.00,0.00,1 +1.52172,13.48,3.74,0.90,72.01,0.18,9.61,0.00,0.07,1 +1.52099,13.69,3.59,1.12,71.96,0.09,9.40,0.00,0.00,1 +1.52152,13.05,3.65,0.87,72.22,0.19,9.85,0.00,0.17,1 +1.52152,13.05,3.65,0.87,72.32,0.19,9.85,0.00,0.17,1 +1.52152,13.12,3.58,0.90,72.20,0.23,9.82,0.00,0.16,1 +1.52300,13.31,3.58,0.82,71.99,0.12,10.17,0.00,0.03,1 +1.51574,14.86,3.67,1.74,71.87,0.16,7.36,0.00,0.12,2 +1.51848,13.64,3.87,1.27,71.96,0.54,8.32,0.00,0.32,2 +1.51593,13.09,3.59,1.52,73.10,0.67,7.83,0.00,0.00,2 +1.51631,13.34,3.57,1.57,72.87,0.61,7.89,0.00,0.00,2 +1.51596,13.02,3.56,1.54,73.11,0.72,7.90,0.00,0.00,2 +1.51590,13.02,3.58,1.51,73.12,0.69,7.96,0.00,0.00,2 +1.51645,13.44,3.61,1.54,72.39,0.66,8.03,0.00,0.00,2 +1.51627,13.00,3.58,1.54,72.83,0.61,8.04,0.00,0.00,2 +1.51613,13.92,3.52,1.25,72.88,0.37,7.94,0.00,0.14,2 +1.51590,12.82,3.52,1.90,72.86,0.69,7.97,0.00,0.00,2 +1.51592,12.86,3.52,2.12,72.66,0.69,7.97,0.00,0.00,2 +1.51593,13.25,3.45,1.43,73.17,0.61,7.86,0.00,0.00,2 +1.51646,13.41,3.55,1.25,72.81,0.68,8.10,0.00,0.00,2 +1.51594,13.09,3.52,1.55,72.87,0.68,8.05,0.00,0.09,2 +1.51409,14.25,3.09,2.08,72.28,1.10,7.08,0.00,0.00,2 +1.51625,13.36,3.58,1.49,72.72,0.45,8.21,0.00,0.00,2 +1.51841,12.93,3.74,1.11,72.28,0.64,8.96,0.00,0.22,2 +1.51605,12.90,3.44,1.45,73.06,0.44,8.27,0.00,0.00,2 +1.51588,13.12,3.41,1.58,73.26,0.07,8.39,0.00,0.19,2 +1.51590,13.24,3.34,1.47,73.10,0.39,8.22,0.00,0.00,2 +1.51629,12.71,3.33,1.49,73.28,0.67,8.24,0.00,0.00,2 +1.51860,13.36,3.43,1.43,72.26,0.51,8.60,0.00,0.00,2 +1.51841,13.02,3.62,1.06,72.34,0.64,9.13,0.00,0.15,2 +1.51743,12.20,3.25,1.16,73.55,0.62,8.90,0.00,0.24,2 +1.51689,12.67,2.88,1.71,73.21,0.73,8.54,0.00,0.00,2 +1.51811,12.96,2.96,1.43,72.92,0.60,8.79,0.14,0.00,2 +1.51655,12.75,2.85,1.44,73.27,0.57,8.79,0.11,0.22,2 +1.51730,12.35,2.72,1.63,72.87,0.70,9.23,0.00,0.00,2 +1.51820,12.62,2.76,0.83,73.81,0.35,9.42,0.00,0.20,2 +1.52725,13.80,3.15,0.66,70.57,0.08,11.64,0.00,0.00,2 +1.52410,13.83,2.90,1.17,71.15,0.08,10.79,0.00,0.00,2 +1.52475,11.45,0.00,1.88,72.19,0.81,13.24,0.00,0.34,2 +1.53125,10.73,0.00,2.10,69.81,0.58,13.30,3.15,0.28,2 +1.53393,12.30,0.00,1.00,70.16,0.12,16.19,0.00,0.24,2 +1.52222,14.43,0.00,1.00,72.67,0.10,11.52,0.00,0.08,2 +1.51818,13.72,0.00,0.56,74.45,0.00,10.99,0.00,0.00,2 +1.52664,11.23,0.00,0.77,73.21,0.00,14.68,0.00,0.00,2 +1.52739,11.02,0.00,0.75,73.08,0.00,14.96,0.00,0.00,2 +1.52777,12.64,0.00,0.67,72.02,0.06,14.40,0.00,0.00,2 +1.51892,13.46,3.83,1.26,72.55,0.57,8.21,0.00,0.14,2 +1.51847,13.10,3.97,1.19,72.44,0.60,8.43,0.00,0.00,2 +1.51846,13.41,3.89,1.33,72.38,0.51,8.28,0.00,0.00,2 +1.51829,13.24,3.90,1.41,72.33,0.55,8.31,0.00,0.10,2 +1.51708,13.72,3.68,1.81,72.06,0.64,7.88,0.00,0.00,2 +1.51673,13.30,3.64,1.53,72.53,0.65,8.03,0.00,0.29,2 +1.51652,13.56,3.57,1.47,72.45,0.64,7.96,0.00,0.00,2 +1.51844,13.25,3.76,1.32,72.40,0.58,8.42,0.00,0.00,2 +1.51663,12.93,3.54,1.62,72.96,0.64,8.03,0.00,0.21,2 +1.51687,13.23,3.54,1.48,72.84,0.56,8.10,0.00,0.00,2 +1.51707,13.48,3.48,1.71,72.52,0.62,7.99,0.00,0.00,2 +1.52177,13.20,3.68,1.15,72.75,0.54,8.52,0.00,0.00,2 +1.51872,12.93,3.66,1.56,72.51,0.58,8.55,0.00,0.12,2 +1.51667,12.94,3.61,1.26,72.75,0.56,8.60,0.00,0.00,2 +1.52081,13.78,2.28,1.43,71.99,0.49,9.85,0.00,0.17,2 +1.52068,13.55,2.09,1.67,72.18,0.53,9.57,0.27,0.17,2 +1.52020,13.98,1.35,1.63,71.76,0.39,10.56,0.00,0.18,2 +1.52177,13.75,1.01,1.36,72.19,0.33,11.14,0.00,0.00,2 +1.52614,13.70,0.00,1.36,71.24,0.19,13.44,0.00,0.10,2 +1.51813,13.43,3.98,1.18,72.49,0.58,8.15,0.00,0.00,2 +1.51800,13.71,3.93,1.54,71.81,0.54,8.21,0.00,0.15,2 +1.51811,13.33,3.85,1.25,72.78,0.52,8.12,0.00,0.00,2 +1.51789,13.19,3.90,1.30,72.33,0.55,8.44,0.00,0.28,2 +1.51806,13.00,3.80,1.08,73.07,0.56,8.38,0.00,0.12,2 +1.51711,12.89,3.62,1.57,72.96,0.61,8.11,0.00,0.00,2 +1.51674,12.79,3.52,1.54,73.36,0.66,7.90,0.00,0.00,2 +1.51674,12.87,3.56,1.64,73.14,0.65,7.99,0.00,0.00,2 +1.51690,13.33,3.54,1.61,72.54,0.68,8.11,0.00,0.00,2 +1.51851,13.20,3.63,1.07,72.83,0.57,8.41,0.09,0.17,2 +1.51662,12.85,3.51,1.44,73.01,0.68,8.23,0.06,0.25,2 +1.51709,13.00,3.47,1.79,72.72,0.66,8.18,0.00,0.00,2 +1.51660,12.99,3.18,1.23,72.97,0.58,8.81,0.00,0.24,2 +1.51839,12.85,3.67,1.24,72.57,0.62,8.68,0.00,0.35,2 +1.51769,13.65,3.66,1.11,72.77,0.11,8.60,0.00,0.00,3 +1.51610,13.33,3.53,1.34,72.67,0.56,8.33,0.00,0.00,3 +1.51670,13.24,3.57,1.38,72.70,0.56,8.44,0.00,0.10,3 +1.51643,12.16,3.52,1.35,72.89,0.57,8.53,0.00,0.00,3 +1.51665,13.14,3.45,1.76,72.48,0.60,8.38,0.00,0.17,3 +1.52127,14.32,3.90,0.83,71.50,0.00,9.49,0.00,0.00,3 +1.51779,13.64,3.65,0.65,73.00,0.06,8.93,0.00,0.00,3 +1.51610,13.42,3.40,1.22,72.69,0.59,8.32,0.00,0.00,3 +1.51694,12.86,3.58,1.31,72.61,0.61,8.79,0.00,0.00,3 +1.51646,13.04,3.40,1.26,73.01,0.52,8.58,0.00,0.00,3 +1.51655,13.41,3.39,1.28,72.64,0.52,8.65,0.00,0.00,3 +1.51796,13.50,3.36,1.63,71.94,0.57,8.81,0.00,0.09,3 +1.51832,13.33,3.34,1.54,72.14,0.56,8.99,0.00,0.00,3 +1.51934,13.64,3.54,0.75,72.65,0.16,8.89,0.15,0.24,3 +1.52211,14.19,3.78,0.91,71.36,0.23,9.14,0.00,0.37,3 +1.51514,14.01,2.68,3.50,69.89,1.68,5.87,2.20,0.00,5 +1.51915,12.73,1.85,1.86,72.69,0.60,10.09,0.00,0.00,5 +1.52171,11.56,1.88,1.56,72.86,0.47,11.41,0.00,0.00,5 +1.52151,11.03,1.71,1.56,73.44,0.58,11.62,0.00,0.00,5 +1.51969,12.64,0.00,1.65,73.75,0.38,11.53,0.00,0.00,5 +1.52369,13.44,0.00,1.58,72.22,0.32,12.24,0.00,0.00,5 +1.51316,13.02,0.00,3.04,70.48,6.21,6.96,0.00,0.00,5 +1.51321,13.00,0.00,3.02,70.70,6.21,6.93,0.00,0.00,5 +1.52043,13.38,0.00,1.40,72.25,0.33,12.50,0.00,0.00,5 +1.52058,12.85,1.61,2.17,72.18,0.76,9.70,0.24,0.51,5 +1.52119,12.97,0.33,1.51,73.39,0.13,11.27,0.00,0.28,5 +1.51905,14.00,2.39,1.56,72.37,0.00,9.57,0.00,0.00,6 +1.51937,13.79,2.41,1.19,72.76,0.00,9.77,0.00,0.00,6 +1.51829,14.46,2.24,1.62,72.38,0.00,9.26,0.00,0.00,6 +1.51852,14.09,2.19,1.66,72.67,0.00,9.32,0.00,0.00,6 +1.51888,14.99,0.78,1.74,72.50,0.00,9.95,0.00,0.00,6 +1.51916,14.15,0.00,2.09,72.74,0.00,10.88,0.00,0.00,6 +1.51969,14.56,0.00,0.56,73.48,0.00,11.22,0.00,0.00,6 +1.51115,17.38,0.00,0.34,75.41,0.00,6.65,0.00,0.00,6 +1.51131,13.69,3.20,1.81,72.81,1.76,5.43,1.19,0.00,7 +1.51838,14.32,3.26,2.22,71.25,1.46,5.79,1.63,0.00,7 +1.52315,13.44,3.34,1.23,72.38,0.60,8.83,0.00,0.00,7 +1.52247,14.86,2.20,2.06,70.26,0.76,9.76,0.00,0.00,7 +1.52365,15.79,1.83,1.31,70.43,0.31,8.61,1.68,0.00,7 +1.51613,13.88,1.78,1.79,73.10,0.00,8.67,0.76,0.00,7 +1.51602,14.85,0.00,2.38,73.28,0.00,8.76,0.64,0.09,7 +1.51623,14.20,0.00,2.79,73.46,0.04,9.04,0.40,0.09,7 +1.51719,14.75,0.00,2.00,73.02,0.00,8.53,1.59,0.08,7 +1.51683,14.56,0.00,1.98,73.29,0.00,8.52,1.57,0.07,7 +1.51545,14.14,0.00,2.68,73.39,0.08,9.07,0.61,0.05,7 +1.51556,13.87,0.00,2.54,73.23,0.14,9.41,0.81,0.01,7 +1.51727,14.70,0.00,2.34,73.28,0.00,8.95,0.66,0.00,7 +1.51531,14.38,0.00,2.66,73.10,0.04,9.08,0.64,0.00,7 +1.51617,14.95,0.00,2.27,73.30,0.00,8.71,0.67,0.00,7 +1.51732,14.95,0.00,1.80,72.99,0.00,8.61,1.55,0.00,7 +1.51645,14.94,0.00,1.87,73.11,0.00,8.67,1.38,0.00,7 +1.51831,14.39,0.00,1.82,72.86,1.41,6.47,2.88,0.00,7 +1.51640,14.37,0.00,2.74,72.85,0.00,9.45,0.54,0.00,7 +1.51623,14.14,0.00,2.88,72.61,0.08,9.18,1.06,0.00,7 +1.51685,14.92,0.00,1.99,73.06,0.00,8.40,1.59,0.00,7 +1.52065,14.36,0.00,2.02,73.42,0.00,8.44,1.64,0.00,7 +1.51651,14.38,0.00,1.94,73.61,0.00,8.48,1.57,0.00,7 +1.51711,14.23,0.00,2.08,73.36,0.00,8.62,1.67,0.00,7 diff --git a/Project1/Assets/glass_test.data b/Project1/Assets/glass_test.data new file mode 100644 index 0000000..25f8d58 --- /dev/null +++ b/Project1/Assets/glass_test.data @@ -0,0 +1,18 @@ +1.51766,13.21,3.69,1.29,72.61,0.57,8.22,0.00,0.00,1 +1.51742,13.27,3.62,1.24,73.08,0.55,8.07,0.00,0.00,1 +1.51596,12.79,3.61,1.62,72.97,0.64,8.07,0.00,0.26,1 +1.51743,13.30,3.60,1.14,73.09,0.58,8.17,0.00,0.00,1 +1.51569,13.24,3.49,1.47,73.25,0.38,8.03,0.00,0.00,2 +1.51645,13.40,3.49,1.52,72.65,0.67,8.08,0.00,0.10,2 +1.51618,13.01,3.50,1.48,72.89,0.60,8.12,0.00,0.00,2 +1.51640,12.55,3.48,1.87,73.23,0.63,8.08,0.00,0.09,2 +1.52121,14.03,3.76,0.58,71.79,0.11,9.65,0.00,0.00,3 +1.51776,13.53,3.41,1.52,72.04,0.58,8.79,0.00,0.00,3 +1.51666,12.86,0.00,1.83,73.88,0.97,10.17,0.00,0.00,5 +1.51994,13.27,0.00,1.76,73.03,0.47,11.32,0.00,0.00,5 +1.51299,14.40,1.74,1.54,74.55,0.00,7.59,0.00,0.00,6 +1.51609,15.01,0.00,2.51,73.05,0.05,8.83,0.53,0.00,7 +1.51508,15.15,0.00,2.25,73.50,0.00,8.34,0.63,0.00,7 +1.51653,11.95,0.00,1.19,75.18,2.70,8.93,0.00,0.00,7 +1.51514,14.85,0.00,2.42,73.72,0.00,8.39,0.56,0.00,7 +1.51658,14.80,0.00,1.99,73.11,0.00,8.28,1.71,0.00,7 \ No newline at end of file diff --git a/Project1/Assets/glass_test.data.bak b/Project1/Assets/glass_test.data.bak new file mode 100644 index 0000000..908099b --- /dev/null +++ b/Project1/Assets/glass_test.data.bak @@ -0,0 +1,4 @@ +1.51766,13.21,3.69,1.29,72.61,0.57,8.22,0.00,0.00,1 +1.51742,13.27,3.62,1.24,73.08,0.55,8.07,0.00,0.00,1 +1.51596,12.79,3.61,1.62,72.97,0.64,8.07,0.00,0.26,1 +1.51743,13.30,3.60,1.14,73.09,0.58,8.17,0.00,0.00,1 \ No newline at end of file diff --git a/Project1/GUI.py b/Project1/GUI.py new file mode 100644 index 0000000..19b880c --- /dev/null +++ b/Project1/GUI.py @@ -0,0 +1,191 @@ +import tkinter as tk +from tkinter import filedialog +from tkinter import ttk +import KNN +classes = {1 :"building_windows_float_processed", + 2 :"building_windows_non_float_processed", + 3 :"vehicle_windows_float_processed", + 4 :"vehicle_windows_non_float_processed (none in this database)", + 5 :"containers", + 6 :"tableware", + 7 :"headlamps"} +root = tk.Tk() +root.title("KNN - new model") +root.geometry("1200x900") +root.iconbitmap("./Assets/AI.ico") + +train_set = (()) +test_set= (()) +def ask_for_training_set(): + file_path = filedialog.askopenfilename() + global train_set + train_set = KNN.load_data(file_path) + return [train_set[0][i] + [train_set[1][i]] for i in range(len(train_set[0]))] + +def ask_for_test_set(): + file_path = filedialog.askopenfilename() + global test_set + test_set = KNN.load_data(file_path) + return [test_set[0][i] + [test_set[1][i]] for i in range(len(test_set[0]))] + +def load_bottom_frame(dimensions): + global entries + entries = [] + num_columns = 3 + for i in range(1, dimensions+1): + atr_label = tk.Label(bottom_frame, text=i) + atr_entry = tk.Entry(bottom_frame) + atr_label.grid(row=i, column=1, sticky="w") + atr_entry.grid(row=i, column=2, sticky="we") + entries.append(atr_entry) + # Configure the grid to expand properly + bottom_frame.columnconfigure(0, weight=1) + bottom_frame.columnconfigure(num_columns, weight=1) +def display_data(data, table): + table["columns"] = tuple(range(len(data[0]))) + table.column("#0", width=0, stretch=tk.NO) + + for i in range(len(data[0])): + table.column(i, width=70, anchor="center", stretch=tk.NO) + table.heading(i, text=f"Attribute {i+1}") + + for row in data: + table.insert("", "end", values=tuple(row)) + +def show_testing_tools(show = True): + if show: + right_frame.pack(side="right", padx=10, pady=10) + right_frame.pack_propagate(False) + right_frame.configure(width=600, height=450) + bottom_frame.pack(side="bottom") + load_bottom_frame(KNN_model.model.n_features_in_) + else: + right_frame.pack_forget() + bottom_frame.pack_forget() +def handle_train_button_click(): + KNN_model.train(train_set) + show_testing_tools() +def handle_test_button_click(): + accuracy, precision, recall, f1 = KNN_model.test(test_set) + scores_label.config(text=f"Accuracy: {accuracy}\n" + f"Precision {precision}\n" + f"Recall: {recall}\n" + f"F-score:{f1}\n") +def handle_save_button_click(): + filename = filedialog.asksaveasfilename(defaultextension= ".pkl", filetypes = (("Model files", "*.pkl"), ("All files", "*.*"))) + root.title(f"KNN - {filename}") + KNN_model.save_model(filename) +def handle_load_button_click(): + file_path = filedialog.askopenfilename(defaultextension=".pkl") + if file_path: + global KNN_model + KNN_model = KNN.load_model(file_path) + root.title(f"KNN - {file_path}") + show_testing_tools() +def handle_new_button_click(): + for col in table_tr["columns"]: + table_tr.heading(col, text="") + table_tr.column(col, width=0) + for col in table_te["columns"]: + table_te.heading(col, text="") + table_te.column(col, width=0) + show_testing_tools(False) + global KNN_model + KNN_model = KNN.KNNClassifier() +def handle_classify_button_click(): + global entries + result_num = KNN_model.classify([float(entry.get()) for entry in entries]) + result_label.config(text=f"Type = {classes[result_num]}") +def on_entry_change(*args): + global KNN_model + try: + KNN_model.model.n_neighbors=int(K_entry.get()) + except ValueError: + pass + +top_frame = tk.Frame(root, bg="#c4c4c4") +top_frame.pack(side=tk.TOP, fill=tk.X) + +bottom_frame = tk.Frame(root, bg="#c4c4c4") +bottom_frame.pack(side=tk.BOTTOM) + +K_label = tk.Label(root, text="K value:") +K_label.pack() + +k_var = tk.IntVar(value=5) +k_var.trace("w", on_entry_change) +K_entry = tk.Entry(root, textvariable=k_var) +K_entry.pack() +KNN_model = KNN.KNNClassifier(5) + +left_frame = tk.Frame(root) +left_frame.pack(side="left", padx=10, pady=10) +left_frame.pack_propagate(False) +left_frame.configure(width=600, height=450) + +# Training Set Selection Button +table_tr = ttk.Treeview(left_frame) +train_button = tk.Button(left_frame, text="Select Training Set", command=lambda: display_data(ask_for_training_set(),table_tr)) +train_button.pack(pady=5, padx=10) +scrollbar_v = tk.Scrollbar(left_frame, orient="vertical", command=table_tr.yview) +scrollbar_v.pack(side="right", fill="y") +scrollbar_h = tk.Scrollbar(left_frame, orient="horizontal", command=table_tr.xview) +scrollbar_h.pack(side="bottom", fill="x") +table_tr.pack(fill="y") +table_tr.configure(yscrollcommand=scrollbar_v.set, xscrollcommand=scrollbar_h.set) + +# Training Button +train_btn = tk.Button(left_frame, text="Train", command=handle_train_button_click) +train_btn.pack() + +# Right Frame for Testing Set +right_frame = tk.Frame(root) + +# Testing Set Selection Button +table_te = ttk.Treeview(right_frame) +test_button = tk.Button(right_frame, text="Select Testing Set", command=lambda: display_data(ask_for_test_set(),table_te)) +test_button.pack(pady=5, padx=10) +scrollbar_v1 = tk.Scrollbar(right_frame, orient="vertical", command=table_te.yview) +scrollbar_v1.pack(side="right", fill="y") +scrollbar_h1 = tk.Scrollbar(right_frame, orient="horizontal", command=table_te.xview) +scrollbar_h1.pack(side="bottom", fill="x") +table_te.pack(fill="y") +table_tr.configure(yscrollcommand=scrollbar_v1.set, xscrollcommand=scrollbar_h1.set) + +# Testing Button +test_btn = tk.Button(right_frame, text="Test", command=handle_test_button_click) +test_btn.pack() + +scores_label = tk.Label(right_frame, text="") +scores_label.pack() + + +save_btn = tk.Button(top_frame, text="Save model", command=handle_save_button_click, ) +save_btn.pack(side=tk.LEFT) +save_btn = tk.Button(top_frame, text="Load model", command=handle_load_button_click) +save_btn.pack(side=tk.LEFT) +save_btn = tk.Button(top_frame, text="New model", command=handle_new_button_click) +save_btn.pack(side=tk.LEFT) + + + +info_label = tk.Label(bottom_frame, text='''1. RI: refractive index +2. Na: Sodium (4-10) +3. Mg: Magnesium +4. Al: Aluminum +5. Si: Silicon +6. K: Potassium +7. Ca: Calcium +8. Ba: Barium +9. Fe: Iron''',anchor="e", justify=tk.LEFT, background="#c4c4c4") +info_label.grid(rowspan=9,column=0) +entries = [] + + +classify_btn = tk.Button(bottom_frame, text="Classify", command=handle_classify_button_click) +classify_btn.grid(row=4, column=3) + +result_label = tk.Label(bottom_frame, text="") +result_label.grid(row=4, column=5) + +root.mainloop() \ No newline at end of file diff --git a/Project1/KNN.py b/Project1/KNN.py new file mode 100644 index 0000000..3f411f3 --- /dev/null +++ b/Project1/KNN.py @@ -0,0 +1,47 @@ +from sklearn.neighbors import KNeighborsClassifier +from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score +import pickle + + +class KNNClassifier: + def __init__(self, n_neighbors=5, model=None): + if model: + self.model = model + else: + self.model = KNeighborsClassifier(n_neighbors=n_neighbors) + + def train(self, train_set): + train_data, train_labels = train_set + self.model.fit(train_data, train_labels) + + def test(self, test_set): + test_data, test_labels = test_set + predicted_labels = self.model.predict(test_data) + + accuracy = accuracy_score(test_labels, predicted_labels) + precision = precision_score(test_labels, predicted_labels, average='weighted', zero_division=0) + recall = recall_score(test_labels, predicted_labels, average='weighted', zero_division=0) + f1 = f1_score(test_labels, predicted_labels, average='weighted', zero_division=0) + return round(accuracy,2), round(precision,2), round(recall,2), round(f1,2) + + def classify(self, input_data): + return self.model.predict([input_data])[0] + + def save_model(self, filename="KNNmodel.pkl"): + with open(filename, 'wb') as file: + pickle.dump(self.model, file) + +def load_data(filename): + data = [] + labels = [] + with open(filename, 'r') as file: + for line in file: + row = [float(n) for n in line.strip().split(',')] + data.append(row[:-1]) + labels.append(row[-1]) + return data, labels + +def load_model(file_name): + with open(file_name, 'rb') as file: + model = pickle.load(file) + return KNNClassifier(model.n_neighbors, model) \ No newline at end of file diff --git a/Project1/Models/model1.pkl b/Project1/Models/model1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..81c9c94e1e2864595940887d4a183287e0ac4660 GIT binary patch literal 18876 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 h(unZS{4~uYmw9&