请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

线性回归:non-broadcastable output operand with shape (1,)

import pandas as pd  
df = pd.read_csv("house_data.csv")  
# 查看前五行数据  
class LinearRegressionByMyself(object):  
    # 初始化学习率和循环迭代次数  
    def __init__(self, Learning_rate = 0.001, epoch = 20):  
        self.Learning_rate = Learning_rate  
        self.epoch = epoch  
    # 定义训练fit函数,传入训练集(X),测试集(y)      
    def fit(self, X, y):  
        # 初始化权重(w)  
        self.w = np.zeros(1 + X.shape[1])  
        self.cost_list = []          
        # 更新权重  
        for i in range(self.epoch):  
            output = self.Regression_input(X)  
            error = (y - output)  
            self.w[1:] += self.Learning_rate * X.T.dot(error)  
            self.w[0] += self.Learning_rate * error.sum()  
            cost = (error ** 2).sum() / 2.0  
            self.cost_list.append(cost)  
        return self  
    # 定义线性回归的输入计算函数  
    def Regression_input(self, X):  
        return np.dot(X, self.w[1:]) + self.w[0]  
    # 定义线性回归的预测函数  
    def predict(self, X):  
        return self.Regression_input(X)  

X = df[["RM"]].values  
y = df["MEDV"].values  

from sklearn.preprocessing import StandardScaler  
StandardScaler_X = StandardScaler()  
StandardScaler_y = StandardScaler()  
X_Standard = StandardScaler_X.fit_transform(X)  
y_Standard = StandardScaler_y.fit_transform(y.reshape(-1,1))
model = LinearRegressionByMyself()  
model.fit(X_Standard, y_Standard)

这是我全部的代码,到最后一行就报错了,请问怎么修改呢。之前按照老师给的代码,在y_Standard = StandardScaler_y.fit_transform(y)会报错

正在回答 回答被采纳积分+3

1回答

山羊LYJ 2020-02-22 19:21:30

我自己摸索的:这样就行了

y_Standard = StandardScaler_y.fit_transform(y[:, None])[:,0]

4 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信