Как запустить эту функцию для большего набора данных (9 функций)

#python-3.x #machine-learning #svm

#python-3.x #машинное обучение #svm

Вопрос:

Я новичок в python. В своем коде я пытался реализовать машину опорных векторов с нуля. Ранее в коде было 2 функции и 2 класса (1 и -1) с 6 экземплярами (для каждого класса), и он работал нормально. Я пытаюсь реализовать один и тот же код для 9 объектов и 2 классов (1 и -1) с 6 экземплярами (для каждого класса), и это выдает мне ошибку значения, и я, похоже, не могу это исправить. Я использую Python версии 3.6.3 Спасибо за вашу помощь.

   #This is my dictionary/dataset
  data_dict = {-1: np.array([[1, 7, 4, 1, 9, 1, 5, 6, 7],
                       [2, 8, 6, 0, 8, 6, 8, 5, 2],
                       [3, 8, 7, 3, 2, 5, 4, 4, 8], ]),
         1: np.array([[5, 1, 8, 2, 6, 4, 0, 2, -3],
                      [6, -1, 5, -2, 6, -3, 0, 5, 3],
                      [7, 3, 0, 4, 10, -6, 9, 8, 2], ])}

  #Call to the function
  svm = Support_Vector_Machine()
  svm.fit(data=data_dict)

#Function fit
def fit(self, data):
    self.data = data
       #Some more code here
                    #w_t and b intialized here

                    for i in self.data:
                        for xi in self.data[i]:
                            yi = i
                            if not yi * (np.dot(w_t, xi)   b) >= 1:
                                found_option = False
                                # print(xi,':',yi*(np.dot(w_t,xi) b))

                    if found_option:
                        opt_dict[np.linalg.norm(w_t)] = [w_t, b]
  

Сообщение об ошибке:

в модуле

 svm.fit(data=data_dict)
  

в соответствии

 if not yi * (np.dot(w_t, xi)   b) >= 1: 
ValueError: shapes (2,) and (9,) not aligned: 2 (dim 0) != 9 (dim 0)
  

Комментарии:

1. какова форма w_t?

2. @mujjiga Спасибо!! Вот в чем была проблема. n_t был ndarray с 2 элементами.

Ответ №1:

Спасибо. Я понял это. Проблема заключалась в размере и форме массива w_t. в w_t было 2 элемента, и я пытался умножить его на массив из 9 элементов. Я исправил это, и теперь все работает нормально.