regression回归 机械学习笔记

参考书籍

在这里插入图片描述

直线的线性回归

# 直线的线性回归
import numpy as np
import matplotlib.pyplot as plt
# 求最小二乘法的回归直线,用到的库
from sklearn import linear_model

# x 和 y的单点图
x = np.random.rand(100, 1)
x = x*4-2
y = 3*x-2
# 增加一部分乱数
y += np.random.rand(100,1)

# 针对x和y的关系,求最小二乘法的回归直线
model = linear_model.LinearRegression()
model.fit(x,y)

plt.scatter(x,y,marker="+")
plt.scatter(x, model.predict(x),marker="o", color="red")
plt.show()

# 系数a
print(model.coef_)
# 系数b
print(model.intercept_)
# y = ax + b

# 评价此结果的好坏
# 决定函数
# 利用.score
r2 = model.score(x,y)
print(r2)

结果

在这里插入图片描述
[[2.9980436]]
[-1.58273273]
0.9934340276837447

二次函数的回归

# curve的线性回归
import numpy as np
import matplotlib.pyplot as plt
# 求最小二乘法的回归直线,用到的库
from sklearn import linear_model

# x 和 y的单点图
x = np.random.rand(100, 1)
x = x*4-2
y = 3*x**2-2
# 增加一部分乱数
y += np.random.rand(100,1)

# 针对x和y的关系,求最小二乘法的回归直线
model = linear_model.LinearRegression()
model.fit(x**2,y)

plt.scatter(x,y,marker="+")
plt.scatter(x, model.predict(x**2),marker="o", color="red")
plt.show()

# 系数a
print(model.coef_)
# 系数b
print(model.intercept_)
# y = ax^2 + b

# 评价此结果的好坏
# 决定函数
# 利用.score
r2 = model.score(x**2,y)
print(r2)

结果

在这里插入图片描述
[[2.98788496]]
[-1.4566814]
0.9932865352004749

多元素的回归

# 多项式
import numpy as np
import matplotlib.pyplot as plt
# 求最小二乘法的回归直线,用到的库
from sklearn import linear_model

# x 和 y的单点图
x1 = np.random.rand(100, 1)
x1 = x1*4-2

x2 = np.random.randn(100, 1)
x2 = x2*4-2

y = 3*x1 - 2*x2 +1
y += np.random.randn(100,1)

# 将x1和x2变形成 [x1_1. x2_1], [x1_2, x2_2], ... , [x1_100, x2_100]
x1_x2 = np.c_[x1, x2]

# 针对x和y的关系,求最小二乘法的回归直线
model = linear_model.LinearRegression()
model.fit(x1_x2, y)

# 求回归方程
y_ = model.predict(x1_x2)

plt.subplot(1,2,1)
plt.scatter(x1, y, marker='o', color='r')
plt.scatter(x1, y_, marker='+', color='g')
plt.xlabel("x1")
plt.ylabel("y")

plt.subplot(1,2,2)
plt.scatter(x2, y, marker='*', color='g')
plt.scatter(x2, y_, marker='o', color="r")
plt.xlabel("x2")
plt.ylabel("y")

plt.tight_layout()
plt.show()

print(model.coef_)
print(model.intercept_)

print(model.score(x1_x2, y))

结果

在这里插入图片描述
[[ 2.8853834 -1.99972888]]
[1.15936765]
0.9867295291508014

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值