1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用python计算工资工资_php项目中用python来预测薪资(工资)

用python计算工资工资_php项目中用python来预测薪资(工资)

时间:2020-12-21 13:04:44

相关推荐

用python计算工资工资_php项目中用python来预测薪资(工资)

前面有用爬虫抓取了一些简历数据,现在项目里有一个地方是要预测个人的薪资。这个需求用python来实现的话肯定会轻松很多,毕竟python有大量的计算库,php主要是web方面的。

确定了选用什么语言来写后,它们之间的对接用最省心的http协议来对接

算法原理很简单,就是用的多元线性回归来预测。

训练字段用的有:工作年限,行业,学历 目标字段:薪资

代码量还是很少的,毕竟靠的是后续调参和数据量撑起来的,但是效果还是挺不错的,预测的数据挺符合现实

不废话了,下面看代码和注释,还是很简单的:

首先是训练模型的代码:

import pandas as pd

import pickle

from sklearn.preprocessing import LabelEncoder as LE

from sklearn.linear_model import LinearRegression as LR

# 读取数据

train = pd.read_csv('./salary.csv')

# 数据预处理

# 去除空值

train.dropna(axis=0,how='any',inplace=True)

# 月薪分类处理为连续

def wage_cate(wage):

if wage <= 61:

return wage - 55

elif 61 < wage:

return wage - 425

train['Wage'] = train['Wage'].apply(wage_cate)

# 月薪分类还原

def wage_cate_re(cate):

if cate <= 6:

return cate + 55

elif cate > 6:

return cate + 425

# 多元线性回归模型

le = LE()

# 特征选择

X = train[['Years','Trade','Maxeducation']]

# 结果集

y = train['Wage']

# 模型学习

model = LR()

sa = model.fit(X,y)

# 保存模型

file = open('./model.pickle', 'wb')

# 把模型写入到文件中

pickle.dump(model, file)

# 关闭文件

file.close()

接着是预测代码,顺便加了flask用来做为web服务器和php代码对接:

from flask import Flask

from flask import request

import math

import pickle

# 以读二进制的方式打开文件

file = open("./model.pickle", "rb")

# 把模型从文件中读取出来

model = pickle.load(file)

# 关闭文件

file.close()

app = Flask(__name__)

@app.route('///',methods=['GET','POST'])

def home(years,trade,education):

pred = wage_cate_re(round(float(wage_pred(int(years),int(trade),int(education)))))

return str(pred)

# 月薪分类还原

def wage_cate_re(cate):

if cate <= 6:

return cate + 55

elif cate > 6:

return cate + 425

# 构建预测函数

def wage_pred(Years,trade,education):

pred = model.predict([[Years,trade,education]])

return pred

if __name__ == '__main__':

app.run()

代码提示:

月薪分类这个函数的存在是因为数据库里面这个分类不是连续的,训练数据的时候要把它处理成连续值。

代码总体很简单:其他端请求格式:http://127.0.0.1:5000/years/trade/education,

这三个参数实际使用要换成相应数字

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。