def svmPredict(self, X):
if X.shape[1] == 1:
X = np.transpose(X)
m = X.shape[0]
p = np.zeros((m, 1))
pred = np.zeros((m, 1))
if self.model['kernelFunction'] == linear_kernel:
p = X.dot(self.model['w']) + self.model['b']
elif self.model['kernelFunction'] == gaussian_kernel:
X1 = np.sum(np.power(X, 2), axis=1).reshape(-1, 1)
X2 = np.transpose(np.sum(np.power(self.model['X'], 2), axis=1))
K = X1 + (X2.T - (2 * (X @ (self.model['X']).T)))
K = np.power(self.model['kernelFunction'](1, 0), K)
K = np.transpose(self.model['y']) * K
K = np.transpose(self.model['alphas']) * K
p = np.sum(K, axis=1)
else:
for i in range(m):
prediction = 0
for j in range(self.model['X'].shape[0]):
prediction = prediction + self.model['alphas'][j] * self.model['y'][j] * self.model['kernelFunction'](np.transpose(X[i,:]), np.transpose(self.model['X'][j,:]))
p[i] = prediction + self.model['b']
pred[p >= 0] = 1
pred[p < 0] = 0
return pred
Xtrain = np.double(newlist)
Ytrain = np.double(actual)
model = SVM()
model.svmTrain(Xtrain, Ytrain)
y_predicted = model.svmPredict(Xtrain)
Я новичок в программировании, но мне пришлось это сделать, я получаю следующую ошибку при запуске кода pred [p> = 0] = 1 IndexError: логический индекс не соответствует индексируемому массиву по измерению 1; размерность равна 1, но соответствующее логическое измерение равно 514 pred [p> = 0] = 1 IndexError: логический индекс не соответствует индексированному массиву по измерению 1; размерность 1, но соответствующее логическое измерение 514
Пожалуйста, помогите мне, кто-нибудь