2019.6.26 第一周 单变量线性回归模型实现(有问题待定)

数据集:

代码:

import numpy as np
from matplotlib import pylab as pl

# 定义训练数据
# (x,y)
x = np.array([2104, 1416, 1534, 852, ])
y = np.array([460, 232, 315, 178, ])


# 回归方程求取函数
def fit(x, y):
    # 确保x y数组长度小相等
    if len(x) != len(y):
        return
    numerator = 0.0
    denominator = 0.0
    # mean:求均值
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    # 迭代x数组,y数组
    for i in range(len(x)):
        #
        numerator += (x[i] - x_mean) * (y[i] - y_mean)
        # square 求平方
        denominator += np.square((x[i] - x_mean))
    print('numerator:', numerator, 'denominator:', denominator)
    b0 = numerator / denominator
    b1 = y_mean - b0 * x_mean
    return b0, b1


# 定义预测函数
def predit(x, b0, b1):
    return b0 * x + b1


# 求取回归方程
b0, b1 = fit(x, y)
print('Line is:y = %2.0fx + %2.0f' % (b0, b1))

# 预测用另一组数据
x_test = np.array([2000, 2100, 1000, 1500])
y_test = np.zeros((1, len(x_test)))
for i in range(len(x_test)):
    y_test[0][i] = predit(x_test[i], b0, b1)

# 绘制图像
xx = np.linspace(0, 5)
yy = b0 * xx + b1
pl.plot(xx, yy, 'k-')
pl.scatter(x, y, cmap=pl.cm.Paired)
pl.scatter(x_test, y_test[0], cmap=pl.cm.Paired)
pl.show()

结果

问题:

我们发现b0=0!

解决:特征缩放、均值归一化

均值归一化:

原来:

均值归一化后:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值