请稍等 ...
×

采纳答案成功!

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 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)  
 
= df[["RM"]].values  
= 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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号