5.线性回归算法
1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性
1)。机器学习算法中回归算法的分类
2)。回归与分类的区别
3)线性回归的定义
线性回归模型建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快;可以根据系数给出每个变量的理解和解释;对异常值很敏感。
线性回归,它不仅仅是一维;它可以是多维的;可以是曲线;亦可直线;甚至可达更高维;等等。
4)线性模型:
5)线性回归的损失
任何一件事的过程都有一定的误差,预测也不例外,而这个范围称为最小二乘法。
6)明确线性回归算法的缺点,并对其进行优化。
7).本章主要内容总结
8)本章所运用到的代码:
1)。面积与房价的关系
import matplotlib.pyplot as plt plt.figure(figsize=(5, 5)) plt.scatter([60, 72, 75, 80, 83], [126, 151.2, 257.5, 168, 174.3]) plt.xlabel("area") plt.ylabel("price") plt.show()
2).数组的点乘和矩阵的乘积。
import numpy as np a = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] b = [1, 2, 3, 4] c = np.multiply(a, b) print("数组点乘结果:\n", c) b = [[1], [2], [3], [4]] d = np.dot(a, b) print("矩阵乘积结果:\n", d)
3).手写线性回归方程,并计算其损失值
import random import matplotlib.pyplot as plt x = [0.1*x for x in range(0, 10)] y = [12*i*4 for i in x] print(x) print(y) w = random.random() b = random.random() a1 = [] b1 = [] for i in range(10): for x1, y1 in zip(x, y): o = w*x1+b # 预测值 e = (o-y1) loss = e**2 # 损失值 dw = 2*e*x1 db = 2*e*1 w = w-0.1*dw b = b-0.1*db print('loss={0},w={1},b={2}'. format(loss, w, b)) # loss越小越好 a1.append(i) b1.append(loss) plt.plot(a1, b1) plt.pause(0.1) plt.show()
2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)
线性回归算法可以用来做:全国快递运输总量预测,股价走势预测,人们收入增长预测,中国人口增长分析等等。
3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)
分析产品A的单价与销量之间的关系,来预测当产品A的定价为x,市场的需求量y将会是多少,就能知道该向供应商订购多少产品A。
import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv('price_demand.csv') # print(df[['Price']]) x = df['Price'] # print(x) y = df['Demand'] x_mean = np.mean(x) y_mean = np.mean(y) num = 0 dom = 0 for x1, y1 in zip(x, y): num += (x1-x_mean)*(y1-y_mean) dom += (x1-x_mean)**2 a = num/dom b = y_mean-a*x_mean # 预测值 y_pred = a*x+b print('预测值:\n', y_pred) # 可视化 plt.scatter(x, y, color='red') # 样本点 plt.plot(x, y_pred, color='blue') # 蓝色回归线 plt.xlabel("Price") plt.ylabel("Demand") plt.show()
截图: