Я писал код ниже и получал ошибку:
TypeError: в скаляры Python могут быть преобразованы только массивы размера 1
Проблема в «оператор if и переменная agrmnt» , но не знаю почему, потому что переменная «agrmnt» имеет тип int.Я не уверен, почему я не могу использовать условное утверждение здесь.
import numpy as np
feature_matrix= np.array([[ 0.1837462, 0.29989789, -0.35889786, -0.30780561, -0.44230703, -0.03043835,
0.21370063, 0.33344998, -0.40850817, -0.13105809],
[ 0.08254096, 0.06012654, 0.19821234, 0.40958367, 0.07155838, -0.49830717,
0.09098162, 0.19062183, -0.27312663, 0.39060785],
[-0.20112519, -0.00593087, 0.05738862, 0.16811148, -0.10466314, -0.21348009,
0.45806193, -0.27659307, 0.2901038, -0.29736505],
[-0.14703536, -0.45573697, -0.47563745, -0.08546162, -0.08562345, 0.07636098,
-0.42087389, -0.16322197, -0.02759763, 0.0297091 ],
[-0.18082261, 0.28644149, -0.47549449, -0.3049562, 0.13967768, 0.34904474,
0.20627692, 0.28407868, 0.21849356, -0.01642202]])
labels = np.array([-1, -1, -1, 1, -1])
T= 10
L= 0.1456692551041303
tta = np.zeros((feature_matrix[0].size)).reshape(-1,1)
tta_0 = 0
for t in range(T):
for i in range(feature_matrix.shape[0]):
agrmnt = np.asscalar(labels[i]*(int(np.dot(feature_matrix[i][np.newaxis], tta)) + tta_0))
if agrmnt<=1:
tta = (1-(L*1/((t+1)**0.5))*tta)+(1/((t+1)**0.5)*
(labels[i]*feature_matrix[i][np.newaxis])))
tta_0 = tta_0 + (labels[i]*1/((t+1)**0.5))
else:
tta = (1-(L*((t+1)**0.5))*tta[np.newaxis].T)
tta_0 = tta_0
print(tta,tta_0)
Может кто-нибудь проверить почему и указать мне правильное направление?