python学习笔记——简单线性回归模型

介绍

本文实现了导入库、获取数据、数据预处理、数据展示分析、数据建模、模型评估、销售预测 7个步骤。

用到的知识:

  • Python文件读取
  • Python基本操作(新建、追加)、for循环、变量赋值、字符串分割、数值转换
  • Numpy数组操作:列表转数组、重新设置数组形状
  • 使用Matplotlib进行散点图展示
  • 使用Sklearn进行线性回归的训练和预测

 

简单线性回归

线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项。线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误差项之后,方程的解法就存在了改变,一般使用最小二乘法进行计算。

sklearn.linear_model.LinearRegression进行线性回归

可以使用fitpredictscore来训练、评价模型,并使用模型进行预测

  • fit(X,y,sample_weight=None)X,y以矩阵的方式传入,而sample_weight则是每条测试数据的权重,同样以array格式传入。
  • predict(X):预测方法,将返回预测值y_pred
  • score(X,y,sample_weight=None):评分函数,将返回一个小于1的得分,可能会小于0

例:

import re   #正则匹配模块
import numpy as np
from sklearn import linear_model  #模型导入
from matplotlib import pyplot as plt    #作图模型导入

#导入数据
file= open('data/line_data.txt','r')
all_data = file.readlines()    #逐行读取数据
file.close()   #关闭文件
# 数据预处理  将数据变成坐标
x=[];y=[] 
for single_data in all_data:                     #逐行进行
    temp_data = re.split('\t|\n',single_data)  #正则匹配数据
    x.append(float(temp_data[0]))             #组成数组
    y.append(float(temp_data[1]))
x = np.array(x).reshape(-1, 1)  #将结果放入矩阵中   reshape(x,y) 将矩阵变为x行y列。-1表示不明确赋值,系统自行划分
y = np.array(y).reshape(-1, 1)

# 数据分析展示
plt.scatter(x, y)
plt.show()

截图:

                                     python学习笔记——简单线性回归模型_第1张图片


# 数据建模
model = linear_model.LinearRegression()
model.fit(x, y)
# 模型评估
model_coef = model.coef_
model_intercept = model.intercept_
r2 = model.score(x, y)
# 销售预测
new_x = 84610
pre_y = model.predict(new_x)
print (pre_y)

的得到预测结果值

[[190402.57234225]]
#拟合直线参数
x_train=x
y_pre_train=model.predict(x_train)
# 数据分析展示
plt.scatter(x, y)   #散点图
plt.plot(x_train,y_pre_train,color="red",linewidth=2)   #拟合直线
plt.show()

 截图

                                  python学习笔记——简单线性回归模型_第2张图片

附:三种读取文件的方式:

1)fopen读取
# 导入数据
fn = open('line_data.txt', 'r')
all_data = fn.readlines()        #逐行读取数据
fn.close()
# 数据预处理  将数据变成坐标
x = []
y = []
for single_data in all_data:   #逐行进行
    tmp_data = re.split('\t|\n', single_data)   #正则匹配数据
    x.append(float(tmp_data[0]))
y.append(float(tmp_data[1]))
2)Numpy读取
import numpy as np
arr=np.genfromtxt('data/line_data.txt',dtype='float',delimiter='\t')
x=arr[:,0].reshape(-1,1)
y=arr[:,1].reshape(-1,1)

3)Pandas读取
import pandas as pd
df = pd.read_csv('data/line_data.txt',dtype='float',delimiter='\t',header=None)
x=df.iloc[:,0].values.reshape(-1,1)
y=df.iloc[:,1].values.reshape(-1,1)

 

参考博客:https://blog.csdn.net/dieju8330/article/details/82817355 

你可能感兴趣的:(python学习笔记——简单线性回归模型)