Python数据挖掘与机器学习——回归模型(附代码)

目录

一、回归分析基础

二、代码实现

2.1一元线性回归

2.2多元线性回归

        2.3非线性回归分析

三、模型评价

3.1R-squared


一、回归分析基础

回归分析是利用数据统计原理建立因变量和自变量回归方程->求出合理的回归系数->进行相关性检验,确定相关系数->计算预测值置信区间的过程

根据自变量和因变量的相关关系可将其分为线性回归、非线性回归和逻辑回归等;根据特征变量个数可将其分为一元线性回归和多元线性回归。本节我们主要聚焦于一元线性回归分析

数学原理:以预测值和观测值的差值平凡和为目标函数衡量模型的准确性。对残差平凡和函数求导确定模型优化的方向最终求出各系数

二、代码实现

2.1一元线性回归

import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
##以不同行业工作年限与收入的线性回归模型为例
data=pd.read_excel('IT行业收入表.xlsx')  #读取数据
X=data[['工龄‘]]
Y=data[['薪水']]
X.head()
Y.head()
plt.scatter(X,Y)
plt.xlabel('工龄')
plt.ylabel('薪水')
plt.show()#数据可视化

regr=LinearRegression()##模型构造
regr.fit(X,Y)
plt.plot(X,regr.predict(X),color='red')##模型可视化

#查看线性回归方程
print('系数a1为:'+str(regr,coef_[0]))
print('截距b为:'+str(regr.intercept_))

进阶版本:一元多次线性回归模型

from sklearn.preprocessing import PolynomialFeatures
poly_reg=PolynomialFeatures(degree=2)#假设最高次项为二次
X_=poly_reg.fit_transfrom(X)#转为新的二维数组X_,其中包含x和x^2的取值
regr=LinearRegression()
regr.fit(X_,Y)
##模型可视化和回归方程查看和一元线性方程相似

2.2多元线性回归

import pandas as pd
from sklearn.linear_model import LinearRegression
df=pd.read_excel('客户价值数据表.xlsx')
X=df[['贷款金额','贷款次数','学历','月收入','性别']]
Y=df[['客户价值']]
X.head()
Y.head()#数据可视化

regr=LinearRegression()
regr.fit(X,Y)
print('各系数'+str(regr.coef_))
print('常数'+str(regr.intercept_))

2.3非线性回归分析

        方法一:变量变换将非线性方程转换为线性方程

        方法二:除自变量X外设置p个未知参数theta,e为白噪音

                            y=f(X,theta)+ e

        

三、模型评价

3.1R-squared

f8cd62fcfc7546c8b1b2432a5eaa44d0.png

 TSS——整体平方和

RSS——残差平方和

ESS——解释平方和

R-squared=1-(RSS/TSS)解释:RSS趋于0时,实际值基本和拟合曲线贴合,说明其拟合程度高,此时R-squared趋于1。值得注意的是拟合程度过高可能产生过拟合现象

import statsmodels.api as am
X2=am.add_constant(X)
est=sm.OLS(Y,X2).fit()
print(est.summary())

statsmodels是Pandas生态系统下Statistics and Machine Learning下的一个库:statsmodels.api为横截面模型和方法;statsmodels.tsa.api为时间序列模型和方法;statsmodels.formula.api为使用公式字符串和DataFrame指定模型的方便接口

四、结语

除了上述的几种线性回归模型外还有逻辑回归模型尚未讨论。逻辑回归模型本质上是在预测概率,试用于分析二分类或有次序的因变量和自变量之间的关系,是分类模型。该模块的相关结论和代码实现将在未来的文章中再详细分析。

本篇文章是笔者自行学习总结得出,若有错处还望温和批评指正。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值