Я немного новичок в машинном обучении и пытаюсь выполнить линейную регрессию без использования linear_model.LinearRegression () через sklearn.Я думаю, что я близок к концу своего кодирования и готовлюсь к построению линии, но я получаю ошибку «ValueError: shape (20,1) и (2,1) не выровнены: 1 (dim 1)! = 2 (дим 0) ".Я распечатал свои матрицы 20 на 1, чтобы подтвердить, и ни у одного из них нет никаких дополнительных измерений или чего-либо еще, поэтому я не уверен, почему это дает мне (2,1)
в сообщении об ошибке или почему измерения не совпадают.У кого-нибудь есть рекомендации по "выравниванию" этих матриц?Я использую Python 3.5.1.
Редактировать: Я рассмотрел множество других тем ValueError в stackoverflow, но у меня возникли проблемы с пониманием рекомендаций.Если это возможно, условия для мирян будут высоко оценены.
По Георгию Я сузил код до строк кода, необходимых для появления сообщения об ошибке.alpha
, iters
и theta
были оставлены в покое, чтобы показать все переменные, необходимые для передачи в функции.
Редактировать 2: Хорошо, попытайтесь 2 уменьшитьпример кода.Спасибо за работу со мной над этим.Я поместил оператор try-exc вокруг этой строки кода:
theta = theta -(alpha/len(X)) * np.sum((X @ theta.T - y) * X, axis=0)
Указанная строка расположена в цикле for с использованием i
в качестве переменной.Указанная строка дает мне следующую ошибку:
Traceback (most recent call last):
File "C:\Users\YungL\Desktop\linearRegression.py", line 30, in <module>
slope_and_intercept, cost = gradDescent(X_test, Y_test, theta, alpha, iters)
File "C:\Users\YungL\Desktop\linearRegression.py", line 26, in gradDescent
theta = theta -(alpha/len(X)) * np.sum((X @ theta.T - y) * X, axis=0)
ValueError: shapes (20,1) and (2,1) not aligned: 1 (dim 1) != 2 (dim 0)
Печать X[i]
, y[i]
и theta
, когда выбрасывается исключение, дает мне это соответственно:
[[ 0.07786339] [[233.] [[1. 1.]]
Столбец 1 - X
, столбец 2 - y
, а столбец 3 - theta
.Ссылаясь на матрицы, это первые значения в каждой матрице.Хотя для theta
это единственное значение.
Вот полная матрица X
и y
на момент исключения:
[[ 0.07786339] [[233.]
[-0.03961813] [ 91.]
[ 0.01103904] [111.]
[-0.04069594] [152.]
[-0.03422907] [120.]
[ 0.00564998] [ 67.]
[ 0.08864151] [310.]
[-0.03315126] [ 94.]
[-0.05686312] [183.]
[-0.03099563] [ 66.]
[ 0.05522933] [173.]
[-0.06009656] [ 72.]
[ 0.00133873] [ 49.]
[-0.02345095] [ 64.]
[-0.07410811] [ 48.]
[ 0.01966154] [178.]
[-0.01590626] [104.]
[-0.01590626] [132.]
[ 0.03906215] [220.]
[-0.0730303 ]] [ 57.]]