0
点赞
收藏
分享

微信扫一扫

Python有监督学习之一元线性回归

知年_7740 2022-04-05 阅读 226

有监督学习之一元线性回归

【实验目的】

掌握Python编程实现一元线性回归,散点图、拟合效果图制作,模型评价指标、计时功能、保存模型;

【实验要求】

  1. 理解Python在回归分析中的评价指标等细节操作;
  2. 掌握本章讲授的一元线性回归的Python编程操作。

【实验过程】(必要的实验步骤、绘图、代码注释、数据分析)

实验步骤

  • 1、读入数据
  • 2、数据预处理
  • 3、数据分析方法介绍
  • 4、编程实现数据分析方法,含代码注释
  • 5、重要结果的图表绘制
  • 6、必要的结果解释

【实验题目】

1. 利用一元线性回归算法探讨出租率(y)与每平米租金(x)之间的关系,要求画出散点图、拟合效果图,增加模型评价指标、计时功能、保存模型。数据见 data_ex_1.xls

在这里插入图片描述

代码:(不要截图,要文本格式代码,下同)

# -*- coding: utf-8 -*-
#Step1 调用包
import time
starttime = time.time()
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

#Step2 导入数据
data = pd.read_excel('data_ex_1.xls')
# data = pd.read_excel('data_airline.xls', 
#                      encoding = 'gb2312')
x_data=data.iloc[:,1]
y_data=data.iloc[:,2]

#Step3 绘制散点图

#预处理: 设置汉字为黑体
matplotlib.rcParams['font.family'] = 'SimHei' 

#绘制散点图
plt.figure(1)
plt.scatter(x_data,y_data) 
plt.xlabel('出租率(%)')
plt.ylabel('每平米月租金(元)')
plt.title('出租率与每平米月租金(元)关系散点图')
plt.show()


#Step4 创建并拟合模型

#预处理:转换数据格式为sklearn要求格式
x_data=x_data[:,np.newaxis]
y_data=y_data[:,np.newaxis]

#调用最小二乘法函数求回归系数
model=LinearRegression()
model.fit(x_data,y_data)

#Step5 报告结果

# 显示斜率
a = model.coef_[0]
print("自变量x的系数a为: ", np.round(a,2))
#np.round保留小数点设置

# 显示截距
b = model.intercept_
print("常数项(截距)为: ", np.round(b,2))

# 画拟合效果图
plt.figure(2)
plt.plot(x_data,y_data,'b.')
plt.plot(x_data,model.predict(x_data),'r')
plt.show()


#Step6 模型评价
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score

y_pred=model.predict(x_data)
mse_v2 = mean_squared_error(y_pred,y_data)
rmse_v2 = np.sqrt(mse_v2)
mae_v2 = mean_absolute_error(y_pred, y_data)
r_square_v2 = r2_score(y_data,y_pred)

print('\n MSE_v2 = ',np.round(mse_v2,3))
print('\nrmse_v2 = ',np.round(rmse_v2,3))
print('\nmae_V2 = ',np.round(mae_v2,3))
print('\n r_square_v2 = ',np.round(r_square_v2,3))
endtime = time.time()
print('time comsuming:  ',np.round(endtime-starttime,2))

#Step7 储存模型
# from sklearn.externals import joblib
import joblib
joblib.dump(model,'model_linearRegress1.m')   #保存模型

结果:(可以截图,也可以文本格式结果,下同)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

举报

相关推荐

0 条评论