CSDN话题挑战赛第2期
参赛话题:学习笔记
一、公式部分
线性模型:即两个变量之间是一次函数关系的模型预测,为一元线性回归模型;而当所选取的x为多元时(例如x为多元的情况:房屋价格要考虑,位置、面积、小区环境、卧室数量等等),则多元线性回归就要涉及到向量的概念。
通常情况下,向量的表达形式更加简洁,而且向量运算的效率通常优于使用循环进行计算,故笔者通过使用Numpy和for循环的方式进行了相关的对比。
线性回归模型:
成本函数:
梯度下降算法:
上面两个式子的推导过程:
二、代码实例
比较利用Numpy和直接用for循环,向量运算的运算效率
1、利用Numpy库
import numpy as np
import datetime
f = 0
b = 9
x = range(1, 100000)
w = range(1, 100000)
c = datetime.datetime.now()
f = np.dot(w, x) + b
c1 = datetime.datetime.now()
print(f, c1-c)
2、使用for循环
import datetime
f = 0
b = 9
w = range(0, 100000)
x = range(0, 100000)
c = datetime.datetime.now()
for j in range(0, 100000):
f = f + w[j] * x[j]
f = f + b
# print(f, type(f))
c1 = datetime.datetime.now()
print(f, c1 - c)
运行速度如下:
运行时间利用Numpy比使用for循环时间少0.09s