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

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

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. 有需要本文数据集和代码的,联系志斌获取~



相关文章
|
6月前
|
算法 数据挖掘 定位技术
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
146 0
|
数据采集 机器学习/深度学习 算法
大数据分析案例-基于决策树算法构建员工离职预测模型
大数据分析案例-基于决策树算法构建员工离职预测模型
3838 0
大数据分析案例-基于决策树算法构建员工离职预测模型
|
存储 监控 计算机视觉
谈谈企业数据价值计量的一个可行方法【航空公司案例】
当有人指出“数据是宝贵的企业资产”时,通常每个人都会点头表示赞同。但没有多少人有实际方法来证明和展示数据的实际价值。
谈谈企业数据价值计量的一个可行方法【航空公司案例】
|
数据可视化 数据挖掘 数据库
【数据挖掘】用Excel挖掘股权关系并按照年份统计不同类型的亲缘关系在上市公司中的分布和趋势【动态可视化工具】
推荐一个在线制作动图网站 Flourish(https://app.flourish.studio) 无需编程基础就可以做出漂亮的动态图表🎉🎉🎉
246 1
【数据挖掘】用Excel挖掘股权关系并按照年份统计不同类型的亲缘关系在上市公司中的分布和趋势【动态可视化工具】
|
监控
远程办公(2)-重新定义“雇佣关系”:交易成果,而不是时间
远程办公(2)-重新定义“雇佣关系”:交易成果,而不是时间
117 0
|
图形学
3D角色建模的前景怎么样?工资高不高
于3D建模,尤其是3D角色建模这一块,我将会系统的从以下九个方面谈一下。
204 0
|
新零售 人工智能 新能源
解读双11:技术价值内蕴其中 数据价值彰显其外
解读双11:技术价值内蕴其中 数据价值彰显其外
解读双11:技术价值内蕴其中 数据价值彰显其外
|
Web App开发 监控 大数据
解析业务数据的特征——《企业大数据实践路线》之三
阿里云MVP戚俊带你分析数据类型,进行大数据实战
2495 0
下一篇
无影云桌面