import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有中文出现的情况,需要u'内容'
# 简单线性回归(一元线性回归)
# 导入线性回归模块
from sklearn.linear_model import LinearRegression
rng=np.random.RandomState(1)
xtrain=10*rng.rand(30)
ytrain=8+4*xtrain+rng.rand(30)
# np.random.RandomState(1)_-->随机数种子,对于一个随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的
# 生成随机数x与y
# 样本关系:y=8+4*x
fig=plt.figure(figsize=(12,3))
ax1=fig.add_subplot(1,2,1)
plt.scatter(xtrain,ytrain,marker='.',color='k')
plt.grid()
plt.title("样本数据散点图")
# plt.show()
# 生成散点图
model=LinearRegression()
# model.fit(xtrain,ytrain)
# xtrain.shape
model.fit(xtrain[:,np.newaxis],ytrain)
print(model.coef_) #斜率
print(model.intercept_) #截距
xtest=np.linspace(0,10,1000)
ytest=model.predict(xtest[:,np.newaxis])
# fig=plt.figure(figsize=(12,3))
ax2=fig.add_subplot(1,2,2)
plt.plot(xtest,ytest,marker='',color='r')
plt.grid()
plt.title("线性回归拟合")
plt.plot(xtest,ytest,color='r',linestyle='--') # 拟合直线
plt.scatter(xtrain,ytrain,marker='.',color='k') # 样本数据散点图
ytest2=model.predict(xtrain[:,np.newaxis]) # 样本数据x在拟合直线上y的值
plt.plot([xtrain,xtrain],[ytrain,ytest2],color='gray') # 误差线
plt.grid()
plt.title('误差线')
plt.show()
线性回归的python实现
最新推荐文章于 2024-08-13 22:25:51 发布