5.线性回归算法

1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性

回归和分类的区别:

线性回归的定义

 机器预测和真实值也是存在一定误差的

通过迭代算法来减少误差

梯度下降:

import random
import matplotlib.pyplot as plt

xs = [0.1*x for x in range(0, 10)]
ys = [12*i*4 for i in xs]
print(xs)
print(ys)

w = random.random()
b = random.random()
a1 = []
b1 = []

for i in range(10):
    for x, y in zip(xs, ys):
        o = w*x+b   # 预测值
        e = (o-y)
        loss = e**2  # 损失值
        dw = 2*e*x
        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)) # 损失值越小越好
    a1.append(i)
    b1.append(loss)
    plt.plot(a1, b1)
    plt.pause(0.1)
plt.show()

 

运行结果:

2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)

(1)学生成绩排名预测

(2)中国人口增长分析

(3)房地产销售影响因素分析等

3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('city.csv', index_col=0)  # 读取数据
data.dropna(inplace=True)

# 线型回归
from sklearn.linear_model import LinearRegression

regr = LinearRegression()  # 构建模型
regr.fit(data[['GrossPay']], data['AnnualSalary'])
print('权值:', regr.coef_, '截距:', regr.intercept_)

plt.scatter(data['GrossPay'].values, data['AnnualSalary'].values)
plt.plot(data[['GrossPay']].values, regr.predict(data[['GrossPay']].values), c='r')
plt.xlabel('GrossPay')
plt.ylabel('AnnualSalary')
plt.show()

 

运行结果:

 

 

 

 

posted @ 2020-04-21 19:30  妮妮妮kk  阅读(173)  评论(0编辑  收藏  举报