实战案例|金融行业工资与工龄之间关系的预测模型~

简介: 实战案例|金融行业工资与工龄之间关系的预测模型~

01定义


一元线性回归模型是一种根据自变量X和因变量Y的相关关系,建立X与Y的线性回归方程并进行预测的模型。


该模型是拟合出来一条线,来使得预测值和实际值尽可能的接近,如果大部分的实际值落在该线上,或者很接近这条线,则该模型的拟合的较好。


一元线性回归的预测模型为:

Y = aX+b

其中,X代表自变量,Y代表因变量,a为回归系数,b为截距


02模型实现


Python有一个第三方库—Scikit-Learn库,它可以轻松的搭建一元线性回归模型。


因为第三方库,所以我们要进行手动安装,命令如下:

pip install Scikit-Learn


我们现在来读取数据,代码如下:

import pandas as pd
df = pd.read_excel('金融行业收入表.xlsx')
df.head(10)


查看一下获取的数据:


32.png


此时,我们可以先进行散点图的绘制了,代码如下:


from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  #解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False# 解决“-”显示为方块的问题
plt.scatter(X,Y)
plt.xlabel('工龄')
plt.ylabel('薪水')
plt.title('金融行业')
plt.show()


我们来看一下绘制出来的散点图:



33.png


我们对绘制好后的散点图进行查看,并没有什么可以直观看到的数据。接下来我们开始使用Scikit-Learn库搭建模型了,代码如下:


from sklearn.linear_model import LinearRegression
linear = LinearRegression()
linear.fit(X,Y)
y = linear.predict(X)
plt.scatter(X,Y)
plt.plot(X,y,color='yellow')
plt.xlabel('工龄/年')
plt.ylabel('薪水/元')
plt.title('金融行业')
plt.show()


我们看一下绘制出来的模型图:


34.png

我们来计算一下该模型的一元线性回归方程,代码如下:


a = linear.coef_[0]
b = linear.intercept_
f'回归模型方程为:y={int(a)}x+{int(b)}'


计算出回归模型方程为:y=4792x+6269


当模型搭建好后,我们还需要对模型进行评估,看其线性拟合程度是否较高,特征变量与,目标变量是否具有相关性,代码如下:


import statsmodels.api as sm
result = sm.OLS(Y,sm.add_constant(X)).fit().summary()


我们查看一下该模型的数据信息:


35.jpg


这个数据展示里面,只需要记住用红色框框起来的即可。


它们代表的含义是,R-squaredAdj.R-squared的值代表的是方程拟合程度,它们的取值是0-1,越靠近1,则拟合程度越高,从图中我们可以看到,它们两个的值分别是0.9050.904,说明拟合程度非常高了。


P的取值范围也是0-1,不过它是越靠近0,则特征变量显著性越高,从上图我们看到,两个特征变量的P值均为0,所以这两个变量都和目标变量具有相关性,不是偶然因素导致的。


03模型优化


通过对上面模型的观察,我们发现一元一次方程可能并不是它最佳模型,它的最佳模型更像是一条曲线,所以我们现在尝试一下用一元二次线性回归方程来对其进行绘制,看看是否契合,绘制代码如下:

from sklearn.preprocessing import PolynomialFeatures
linear = PolynomialFeatures(degree=2)  # 改变degree的值可以改变方程次数
x = linear.fit_transform(X)
linear = LinearRegression()
linear.fit(x,Y)
y = linear.predict(x)
plt.scatter(X,Y)
plt.plot(X,y,color='yellow')
plt.xlabel('工龄/年')
plt.ylabel('薪水/元')
plt.title('金融行业')
plt.show()


一元二次回归模型图:


36.png


我们来计算一下该模型的一元二次线性回归方程,代码如下:


a = linear.coef_[2]
b = linear.coef_[1]
c = linear.intercept_
f'一元二次线性回归方程为:y={a}x*x+{b}x+{c}'


计算出一元二次线性回归方程为:

y=611.8072409537128x*x-154.72510423942225x+12138.94866245218


同理,当模型搭建好后,我们还需要对模型进行评估,看其线性拟合程度是否较高,特征变量与,目标变量是否具有相关性,代码如下:


from sklearn.preprocessing import PolynomialFeatures
import statsmodels.api as sm
linear = PolynomialFeatures(degree=2)  # 改变degree的值可以改变方程次数
x = linear.fit_transform(X)
result = sm.OLS(Y,sm.add_constant(X)).fit().summary()


我们查看一下该模型的数据信息:


37.jpg


从上图我们发现,一元二次线性回归方程的R-squaredAdj.R-squared值和一元线性回归方程的值相同,看来该模型变成二次后,并未优化。    

04拓展


用同样的方法,我们也可以搭建出汽车、餐饮和IT行业的回归模型,这里只展示模型图,有兴趣的读者可以自行动手进行复现。


38.png


代码如下:


# 金融行业
df = pd.read_excel('金融行业收入表.xlsx')
X_financial = df[['工龄']]
Y_financial = df['薪水']
x_financial = linear_.fit_transform(X_financial)
linear = LinearRegression()
linear.fit(x_financial,Y_financial )
y = linear.predict(x_financial)
ax1.scatter(X_financial,Y_financial )
ax1.plot(X_financial,y,color='yellow')
ax1.set_title('金融行业')
# 餐饮行业
df = pd.read_excel('餐饮行业收入表.xlsx')
X_food = df[['工龄']]
Y_food = df['薪水']
x_food = linear_.fit_transform(X_food)
linear = LinearRegression()
linear.fit(x_food,Y_food)
y = linear.predict(x_food)
ax2.scatter(X_food,Y_food)
ax2.plot(X_food,y,color='red')
ax2.set_title('餐饮行业')
# 汽车行业
df = pd.read_excel('汽车行业收入表.xlsx')
X_car = df[['工龄']]
Y_car = df['薪水']
x_car = linear_.fit_transform(X_car)
linear = LinearRegression()
linear.fit(x_car,Y_car)
y = linear.predict(x_car)
ax3.scatter(X_car,Y_car)
ax3.plot(X_car,y,color='purple')
ax3.set_title('汽车行业')
# IT行业
df = pd.read_excel('IT行业收入表.xlsx')
X_it = df[['工龄']]
Y_it = df['薪水']
x_it = linear_.fit_transform(X_it)
linear = LinearRegression()
linear.fit(x_it,Y_it)
y = linear.predict(x_it)
ax4.scatter(X_it,Y_it)
ax4.plot(X_it,y,color='pink')
ax4.set_title('IT行业')


05小结


1. 本文通过预测金融行业从业者工资和工龄之间的关系,来学习线性回归方程的搭建方法,有兴趣的小伙伴可以自行尝试复现。

2. 通过搭建线性回归模型,可以进行有效的预测,有兴趣的读者可以分享一些优化方法。

3. 模型搭建好后,还需要对其进行评估和优化,评估参考R-squaredAdj.R-squaredP的值。

4. 本文仅供参考学习,不做它用。

5. 有需要本文数据集和代码的,联系志斌获取~



相关文章
|
7月前
|
算法 数据挖掘
【视频】量化交易陷阱和R语言改进股票配对交易策略分析中国股市投资组合
【视频】量化交易陷阱和R语言改进股票配对交易策略分析中国股市投资组合
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测
本文通过数据采集、处理、特征选择和机器学习建模,对一线城市租房价格进行预测分析,比较了随机森林、一元线性回归和多元线性回归模型,并发现随机森林模型在预测租房价格方面表现最佳,为租房市场参与者提供决策支持。
144 0
|
7月前
|
算法 数据挖掘 定位技术
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
163 0
|
7月前
|
数据采集 数据可视化 数据挖掘
三大方法快速发现商业规律
三大方法快速发现商业规律
|
数据采集 搜索推荐 算法
数据分析案例-航空公司客户价值分析(聚类)
数据分析案例-航空公司客户价值分析(聚类)
710 0
数据分析案例-航空公司客户价值分析(聚类)
|
数据采集 机器学习/深度学习 算法
大数据分析案例-基于RFM模型对电商客户价值分析(聚类)
大数据分析案例-基于RFM模型对电商客户价值分析(聚类)
1124 0
大数据分析案例-基于RFM模型对电商客户价值分析(聚类)
|
数据采集 机器学习/深度学习 算法
大数据分析案例-基于决策树算法构建员工离职预测模型
大数据分析案例-基于决策树算法构建员工离职预测模型
4159 0
大数据分析案例-基于决策树算法构建员工离职预测模型
|
机器学习/深度学习 数据采集 数据可视化
数据分析案例-基于随机森林模型探究电商网站推销商品的影响因素
数据分析案例-基于随机森林模型探究电商网站推销商品的影响因素
1032 0
数据分析案例-基于随机森林模型探究电商网站推销商品的影响因素
|
存储 监控 计算机视觉
谈谈企业数据价值计量的一个可行方法【航空公司案例】
当有人指出“数据是宝贵的企业资产”时,通常每个人都会点头表示赞同。但没有多少人有实际方法来证明和展示数据的实际价值。
谈谈企业数据价值计量的一个可行方法【航空公司案例】
|
数据采集 存储 供应链
谈谈数据治理在实践中的作用(零售、物流、金融)
在本文中,我们讨论数据治理和组织之间的关系,随后,使用真实案例来检查数据治理和业务绩效之间的关系。这两者一起提供了对数据治理效果的深入了解。
谈谈数据治理在实践中的作用(零售、物流、金融)