4、python简单线性回归代码案例(完整)

第一、回归分析的步骤

01 根据预测目标,确定自变量和因变量

02 绘制散点图,确定回归模型类型

03 估计模型参数,建立回归模型

04 对回归模型进行检验

回归方程的精度就是用来表示实际观测点和回归方程的拟合程度的指标,使用判定系数来度量。

判定系数=相关系数R平方=ESS/TSS=1-RSS/TSS

其中:具体公式见图

TSS   总离差平方和
ESS   回归平方和
RSS   残差平方和

05 利用回归模型进行预测

第二、sklearn 建模

leModel=sklearn.linear_model.LinearRegression()

训练模型:

lrModel.fit(x,y)

模型评估:

lrModel.score(x,y)

模型预测:

lrModel.predict(x)

第三、代码实践

import numpy
import pandas

data = pandas.read_csv('D:\\DATA\\pycase\\number2\\Data2.csv')

# 根据预测目标,确定自变量现金和因变量流水

# 0 确定自变量因素,对数据标签进行维度的合并,此处按照渠道序列筛选分组统计(因为有跨期影响)


Data=data.groupby(
        by=['广告商']
        )['现金','流水'].agg({
       '现金': numpy.sum,
       '流水': numpy.sum
       })

# 1 数据质量分析

explore=Data.describe()

Data=Data[(Data.现金>0)&(Data.流水>0)]

# 2 数据变换,渠道之间的数据量级差距太大,进行简单的函数转换,这俩根据散点图,采用log对数函数



# 测试 range(Data.index)

# Data.columns.size

# Data.iloc[0,0]=math.log(Data.iloc[0,0])

# math.log(Data.iloc[0,0])

#  测试 Data.loc[indexs].values


import math

I=range(Data.index.size)

J=range(Data.columns.size)

i=0
j=0

for i in I:
    for j in J:
  # 逐个数据取对数 
        Data.iloc[i,j]=math.sqrt(Data.iloc[i,j])



# 0-1 标准化 from sklearn.preprocessing import MinMaxScaler

# scaler=MinMaxScaler()

# Data[['现金', '流水']]=scaler.fit_transform(Data[['现金', '流水']].values.reshape(-1,1))


# 3 属性规约

# 选择数据的自变量和因变量

x=Data['现金']
y=Data['流水']

# 绘制散点图,确定回归模型的类型

from matplotlib import pyplot as plt

plt.scatter(x,y)


# 4 估计模型参数,建立回归模型

# 对数据进行类型转化

y=y.values.reshape(-1, 1)

x=x.values.reshape(-1, 1)

from sklearn.linear_model import LinearRegression

lrModel = LinearRegression()

lrModel.fit(x, y)


# 5 对模型进行检验

lrModel.score(x,y)


# 6 利用回归模型进行预测

lrModel.predict([[500000],[400000],[300000]])


#查看截距
alpha = lrModel.intercept_[0]

#查看参数

beta = lrModel.coef_[0][0]

alpha + beta*numpy.array([500000, 400000, 300000])

猜你喜欢

转载自blog.csdn.net/qq_36327687/article/details/84943321
今日推荐