metalni

VI Treta Labaratoriska - 1

Jun 30th, 2021 (edited)
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.13 KB | None | 0 0
  1. from sklearn import DecisionTreeClassifier
  2. from sklearn import OrdinalEncoder
  3.  
  4. dataset = [[6.3, 2.3, 4.4, 1.3, 2],
  5.            [6.4, 2.8, 5.6, 2.1, 0],
  6.            [5.1, 3.3, 1.7, 0.5, 1],
  7.            [5.1, 3.5, 1.4, 0.2, 1],
  8.            [4.6, 3.1, 1.5, 0.2, 1],
  9.            [5.8, 2.7, 5.1, 1.9, 0],
  10.            [5.5, 3.5, 1.3, 0.2, 1],
  11.            [5.7, 2.6, 3.5, 1.0, 2],
  12.            [5.0, 3.5, 1.3, 0.3, 1],
  13.            [6.3, 2.5, 5.0, 1.9, 0],
  14.            [6.2, 2.2, 4.5, 1.5, 2],
  15.            [5.0, 3.4, 1.6, 0.4, 1],
  16.            [5.7, 4.4, 1.5, 0.4, 1],
  17.            [4.9, 2.4, 3.3, 1.0, 2],
  18.            [4.4, 2.9, 1.4, 0.2, 1],
  19.            [5.5, 2.4, 3.7, 1.0, 2],
  20.            [5.6, 2.5, 3.9, 1.1, 2],
  21.            [5.6, 2.8, 4.9, 2.0, 0],
  22.            [4.8, 3.4, 1.6, 0.2, 1],
  23.            [5.6, 3.0, 4.5, 1.5, 2],
  24.            [6.0, 3.0, 4.8, 1.8, 0],
  25.            [6.3, 3.3, 4.7, 1.6, 2],
  26.            [4.8, 3.0, 1.4, 0.1, 1],
  27.            [7.9, 3.8, 6.4, 2.0, 0],
  28.            [4.9, 3.0, 1.4, 0.2, 1],
  29.            [4.3, 3.0, 1.1, 0.1, 1],
  30.            [6.8, 3.2, 5.9, 2.3, 0],
  31.            [5.6, 2.7, 4.2, 1.3, 2],
  32.            [5.2, 4.1, 1.5, 0.1, 1],
  33.            [6.2, 2.9, 4.3, 1.3, 2],
  34.            [6.5, 2.8, 4.6, 1.5, 2],
  35.            [5.4, 3.9, 1.3, 0.4, 1],
  36.            [5.8, 2.6, 4.0, 1.2, 2],
  37.            [5.4, 3.7, 1.5, 0.2, 1],
  38.            [4.5, 2.3, 1.3, 0.3, 1],
  39.            [6.3, 3.4, 5.6, 2.4, 0],
  40.            [6.2, 3.4, 5.4, 2.3, 0],
  41.            [5.7, 2.5, 5.0, 2.0, 0],
  42.            [5.8, 2.7, 3.9, 1.2, 2],
  43.            [6.4, 2.7, 5.3, 1.9, 0],
  44.            [5.1, 3.8, 1.6, 0.2, 1],
  45.            [6.3, 2.5, 4.9, 1.5, 2],
  46.            [7.7, 2.8, 6.7, 2.0, 0],
  47.            [5.1, 3.5, 1.4, 0.3, 1],
  48.            [6.8, 2.8, 4.8, 1.4, 2],
  49.            [6.1, 3.0, 4.6, 1.4, 2],
  50.            [5.5, 4.2, 1.4, 0.2, 1],
  51.            [5.0, 2.0, 3.5, 1.0, 2],
  52.            [7.7, 3.0, 6.1, 2.3, 0],
  53.            [5.1, 2.5, 3.0, 1.1, 2],
  54.            [5.9, 3.0, 5.1, 1.8, 0],
  55.            [7.2, 3.2, 6.0, 1.8, 0],
  56.            [4.9, 3.1, 1.5, 0.2, 1],
  57.            [5.7, 3.0, 4.2, 1.2, 2],
  58.            [6.1, 2.9, 4.7, 1.4, 2],
  59.            [5.0, 3.2, 1.2, 0.2, 1],
  60.            [4.4, 3.2, 1.3, 0.2, 1],
  61.            [6.7, 3.1, 5.6, 2.4, 0],
  62.            [4.6, 3.6, 1.0, 0.2, 1],
  63.            [5.1, 3.4, 1.5, 0.2, 1],
  64.            [5.2, 2.7, 3.9, 1.4, 2],
  65.            [6.4, 3.1, 5.5, 1.8, 0],
  66.            [7.4, 2.8, 6.1, 1.9, 0],
  67.            [4.9, 3.1, 1.5, 0.1, 1],
  68.            [5.0, 3.5, 1.6, 0.6, 1],
  69.            [6.7, 3.1, 4.7, 1.5, 2],
  70.            [6.4, 3.2, 5.3, 2.3, 0],
  71.            [6.3, 2.7, 4.9, 1.8, 0],
  72.            [5.8, 4.0, 1.2, 0.2, 1],
  73.            [6.9, 3.1, 5.4, 2.1, 0],
  74.            [5.9, 3.2, 4.8, 1.8, 2],
  75.            [6.6, 2.9, 4.6, 1.3, 2],
  76.            [6.1, 2.8, 4.0, 1.3, 2],
  77.            [7.7, 2.6, 6.9, 2.3, 0],
  78.            [5.5, 2.6, 4.4, 1.2, 2],
  79.            [6.3, 2.9, 5.6, 1.8, 0],
  80.            [7.2, 3.0, 5.8, 1.6, 0],
  81.            [6.5, 3.0, 5.8, 2.2, 0],
  82.            [5.4, 3.9, 1.7, 0.4, 1],
  83.            [6.5, 3.2, 5.1, 2.0, 0],
  84.            [5.9, 3.0, 4.2, 1.5, 2],
  85.            [5.1, 3.7, 1.5, 0.4, 1],
  86.            [5.7, 2.8, 4.5, 1.3, 2],
  87.            [5.4, 3.4, 1.5, 0.4, 1],
  88.            [4.6, 3.4, 1.4, 0.3, 1],
  89.            [4.9, 3.6, 1.4, 0.1, 1],
  90.            [6.7, 2.5, 5.8, 1.8, 0],
  91.            [5.0, 3.6, 1.4, 0.2, 1],
  92.            [6.7, 3.3, 5.7, 2.5, 0],
  93.            [4.4, 3.0, 1.3, 0.2, 1],
  94.            [6.0, 2.2, 5.0, 1.5, 0],
  95.            [6.0, 2.2, 4.0, 1.0, 2],
  96.            [5.0, 3.4, 1.5, 0.2, 1],
  97.            [5.7, 2.8, 4.1, 1.3, 2],
  98.            [5.5, 2.4, 3.8, 1.1, 2],
  99.            [5.1, 3.8, 1.9, 0.4, 1],
  100.            [6.9, 3.1, 5.1, 2.3, 0],
  101.            [5.6, 2.9, 3.6, 1.3, 2],
  102.            [6.1, 2.8, 4.7, 1.2, 2],
  103.            [5.5, 2.5, 4.0, 1.3, 2],
  104.            [5.5, 2.3, 4.0, 1.3, 2],
  105.            [6.0, 2.9, 4.5, 1.5, 2],
  106.            [5.1, 3.8, 1.5, 0.3, 1],
  107.            [5.7, 3.8, 1.7, 0.3, 1],
  108.            [6.7, 3.3, 5.7, 2.1, 0],
  109.            [4.8, 3.1, 1.6, 0.2, 1],
  110.            [5.4, 3.0, 4.5, 1.5, 2],
  111.            [6.5, 3.0, 5.2, 2.0, 0],
  112.            [6.8, 3.0, 5.5, 2.1, 0],
  113.            [7.6, 3.0, 6.6, 2.1, 0],
  114.            [5.0, 3.0, 1.6, 0.2, 1],
  115.            [6.7, 3.0, 5.0, 1.7, 2],
  116.            [4.8, 3.4, 1.9, 0.2, 1],
  117.            [5.8, 2.8, 5.1, 2.4, 0],
  118.            [5.0, 2.3, 3.3, 1.0, 2],
  119.            [4.8, 3.0, 1.4, 0.3, 1],
  120.            [5.2, 3.5, 1.5, 0.2, 1],
  121.            [6.1, 2.6, 5.6, 1.4, 0],
  122.            [5.8, 2.7, 4.1, 1.0, 2],
  123.            [6.9, 3.2, 5.7, 2.3, 0],
  124.            [6.4, 2.9, 4.3, 1.3, 2],
  125.            [7.3, 2.9, 6.3, 1.8, 0],
  126.            [6.3, 2.8, 5.1, 1.5, 0],
  127.            [6.2, 2.8, 4.8, 1.8, 0],
  128.            [6.7, 3.1, 4.4, 1.4, 2],
  129.            [6.0, 2.7, 5.1, 1.6, 2],
  130.            [6.5, 3.0, 5.5, 1.8, 0],
  131.            [6.1, 3.0, 4.9, 1.8, 0],
  132.            [5.6, 3.0, 4.1, 1.3, 2],
  133.            [4.7, 3.2, 1.6, 0.2, 1],
  134.            [6.6, 3.0, 4.4, 1.4, 2]]
  135.  
  136. if __name__ == '__main__':
  137.     train_set_1 = dataset[:int(0.3 * len(dataset))]
  138.     train_x_1 = [t[:-1] for t in train_set_1]
  139.     # train_x_1 = encoder.transform(train_x_1)
  140.     train_y_1 = [t[-1] for t in train_set_1]
  141.  
  142.     tree_1 = DecisionTreeClassifier(criterion='entropy')
  143.     tree_1.fit(train_x_1, train_y_1)
  144.  
  145.     train_set_2 = dataset[int(0.3 * len(dataset)):int(0.6 * len(dataset))]
  146.     train_x_2 = [t[:-1] for t in train_set_2]
  147.     # train_x_2 = encoder.transform(train_x_2)
  148.     train_y_2 = [t[-1] for t in train_set_2]
  149.  
  150.     tree_2 = DecisionTreeClassifier(criterion='entropy')
  151.     tree_2.fit(train_x_2, train_y_2)
  152.  
  153.     train_set_3 = dataset[int(0.6 * len(dataset)):]
  154.     train_x_3 = [t[:-1] for t in train_set_3]
  155.     # train_x_3 = encoder.transform(train_x_3)
  156.     train_y_3 = [t[-1] for t in train_set_3]
  157.  
  158.     tree_3 = DecisionTreeClassifier(criterion='entropy')
  159.     tree_3.fit(train_x_3, train_y_3)
  160.  
  161.     entry = [float(element) for element in input().split(',')]
  162.     # entry = encoder.transform([entry])
  163.     count_class_0 = 0
  164.     count_class_1 = 0
  165.     count_class_2 = 0
  166.     predicted_class = -1
  167.  
  168.     if tree_1.predict([entry])[0] == 0:
  169.         count_class_0 += 1
  170.     elif tree_1.predict([entry])[0] == 1:
  171.         count_class_1 += 1
  172.     elif tree_1.predict([entry])[0] == 2:
  173.         count_class_2 += 1
  174.  
  175.     if tree_2.predict([entry])[0] == 0:
  176.         count_class_0 += 1
  177.     elif tree_2.predict([entry])[0] == 1:
  178.         count_class_1 += 1
  179.     elif tree_2.predict([entry])[0] == 2:
  180.         count_class_2 += 1
  181.  
  182.     if tree_3.predict([entry])[0] == 0:
  183.         count_class_0 += 1
  184.     elif tree_3.predict([entry])[0] == 1:
  185.         count_class_1 += 1
  186.     elif tree_3.predict([entry])[0] == 2:
  187.         count_class_2 += 1
  188.  
  189.     if count_class_0 == max(count_class_0, count_class_1, count_class_2):
  190.         predicted_class = 0
  191.     elif count_class_1 == max(count_class_0, count_class_1, count_class_2):
  192.         predicted_class = 1
  193.     else:
  194.         predicted_class = 2
  195.  
  196.     if (count_class_0 == max and count_class_1 == max) or (count_class_0 == max and count_class_2 == max) or (count_class_1 == max and count_class_2 == max):
  197.         predicted_class = "unknown"
  198.  
  199.     print("Glasovi: {0: %d, 1: %d, 2: %d} " %(count_class_0, count_class_1, count_class_2))
  200.     print(f"Predvidena klasa: {predicted_class}")
  201.  
Add Comment
Please, Sign In to add comment