为了账号安全,请及时绑定邮箱和手机立即绑定

Data must be 1-dimensional为什么报错啊?第28行开始这个错

from numpy import *
from numpy.linalg import inv
import operator
import pandas as pd

dataset = pd.read_csv('data.csv')
temp=dataset.iloc[:,0:3]
Y=dataset.iloc[:,3]
X=temp
X['b']=1
#print (Y)

##最小二乘
#theta=inv(X.T*X)*X.T*Y
theta=dot(dot(inv(dot(X.T,X)),X.T),Y)
print(theta)

#梯度下降
alpha=0.01
theta1=array([1., 1., 1., 1.]).reshape(4, 1)
X1=X.iloc[:, 0]
X2=X.iloc[:, 1]
X3=X.iloc[:, 2]
B=X.iloc[:, 3]
t=theta1
print(X2)
for i in range(10000):
    t[0] = theta1[0] - alpha * sum((dot(X, theta1)-Y)*X1)/200.
    t[1] = theta1[1] - alpha * sum((dot(X, theta1) - Y) * X2) / 200.
    t[2] = theta1[2] - alpha * sum((dot(X, theta1) - Y) * X3) / 200.
    t[3] = theta1[3] - alpha * sum((dot(X, theta1) - Y) * B) / 200.
    theta1 = t


正在回答

1 回答

dot(X, theta1)返回的是一个 200 * 1 矩阵,而 Y不是一个200 * 1的矩阵,所以需要对Y进行重新规划,
Y = Y.values.reshape(200, 1)就可以了


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Data must be 1-dimensional为什么报错啊?第28行开始这个错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信