php项目中用python来预测薪资(工资)

  php, python, 爬虫, 算法
116 views

前面有用爬虫抓取了一些简历数据,现在项目里有一个地方是要预测个人的薪资。这个需求用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('/<years>/<trade>/<education>',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,
这三个参数实际使用要换成相应数字

LEAVE A COMMENT