本文主要是介绍线性回归例子, 学习笔记[机械学习],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考书籍, [pythonによる機械学習入門]
y = ax + b
# 直线的线性回归
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)
结果显示
[[3.05728369]]
[-1.51529741]
0.9948594876817095
例子2, y = ax^2 + b
# 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)
结果显示
[[3.03815042]]
[-1.52132139]
0.9935150252625474
例子3, y = ax + bx^2 + c
# 多项式
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-2x2 = np.random.randn(100, 1)
x2 = x2*4-2y = 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.92509275 -1.98489962]]
[1.07002238]
0.9799634352422834
这篇关于线性回归例子, 学习笔记[机械学习]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!