2016-11-07 3 views
0

Я немного новичок в программировании на языке python с науками о данных. X - матрица 97x2 элементов, theta - вектор элементов 3x1, y вектор 97X2 m = длина y = 97 Ниже приведен алгоритм в python, но я не понимаю, где ошибка.Ошибка при работе с матрицей на python

J= (1/2*m)*sum(np.square(np.dot(X,theta)-y))) 

У меня есть элементное умножение и суммируем их, чтобы получить одно скалярное значение J (функция стоимости). Однако я получаю массив из 97 элементов из 0

+1

python 2 или python 3? –

ответ

0

Прежде всего это не будет работать с предоставленными размерами. np.dot(A, B) требует, чтобы A и B соответствовали одному измерению, а ваши 97x2 и 3x1, поэтому это не имеет смысла. Вероятно, алгоритм, который вы пытаетесь реализовать, требует объединения строк от 1 до X (как это выглядит как регулярная линейная регрессия). Во-вторых, вы используете целочисленное деление в python 2, которое вызовет появление 0s, когда вы делаете что-то вроде 1/2 *, что фактически эквивалентно 0 *. Просто переведите переменные в поплавки, таким образом сделайте

J = (0.5*m)*sum(np.square(np.dot(X, theta) - y)))