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

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

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月前
|
算法 数据挖掘 定位技术
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
数据分析案例-基于因子分析探究各省份中心城市经济发展状况
141 0
|
数据采集 机器学习/深度学习 算法
大数据分析案例-基于决策树算法构建员工离职预测模型
大数据分析案例-基于决策树算法构建员工离职预测模型
3751 0
大数据分析案例-基于决策树算法构建员工离职预测模型
|
存储 监控 计算机视觉
谈谈企业数据价值计量的一个可行方法【航空公司案例】
当有人指出“数据是宝贵的企业资产”时,通常每个人都会点头表示赞同。但没有多少人有实际方法来证明和展示数据的实际价值。
谈谈企业数据价值计量的一个可行方法【航空公司案例】
|
存储 监控 安全
数据人必知!认识数据“四种”分类“五大”价值,帮企业找到核心数据
在大数据时代,企业首先要做的是收集大量数据,但收集数据并非仅是把收集过来的数据放到数据存储平台里面那么简单,更重要的是对数据进行分类、加工及管理。
数据人必知!认识数据“四种”分类“五大”价值,帮企业找到核心数据
|
机器学习/深度学习 人工智能 自然语言处理
零售业中的机器学习:要点和十个关键应用
零售业中的机器学习依赖于自我改进的计算机算法,这些算法用于处理数据,发现变量之间的重复模式和异常,并自主学习这种关系如何影响或决定行业的趋势、现象和业务场景。
264 0
零售业中的机器学习:要点和十个关键应用
|
图形学
为什么说“3D建模”是未来不可少的行业
随着国家文化政策的大力支持,一场新世纪的文化复兴运动,正在悄然展开。文化娱乐产业蓬勃发展,而随着生活水平的不断提高,人们也越来越愿意在精神享受上花钱。**电影行业、游戏行业**就是两个典型的例子。
129 0
为什么说“3D建模”是未来不可少的行业
|
数据可视化 数据挖掘 数据库
【数据挖掘】用Excel挖掘股权关系并按照年份统计不同类型的亲缘关系在上市公司中的分布和趋势【动态可视化工具】
推荐一个在线制作动图网站 Flourish(https://app.flourish.studio) 无需编程基础就可以做出漂亮的动态图表🎉🎉🎉
242 1
【数据挖掘】用Excel挖掘股权关系并按照年份统计不同类型的亲缘关系在上市公司中的分布和趋势【动态可视化工具】
|
图形学
3D角色建模的前景怎么样?工资高不高
于3D建模,尤其是3D角色建模这一块,我将会系统的从以下九个方面谈一下。
202 0
|
人工智能 机器人
各类机构均根据RPA的特征及价值给予了不同的定义
各类机构均根据RPA的特征及价值给予了不同的定义
132 0
|
存储 人工智能 数据可视化
智慧建筑技术趋势:五个未来的想法和例子
随着建筑物变得越来越复杂,AR和VR都可以促进检测设计和协调错误。建筑信息模型有望为建筑过程带来更高的准确性。在建筑行业,无人机的使用可以在很多方面起到促进作用。
智慧建筑技术趋势:五个未来的想法和例子