预测你的工资?

其实每个数据预测都是有前提的,报告这个案例,预测你的工资。在这个例子中,我们的假设前提是什么?

1、  你没有换工作;
2、  你的工作不是有大幅业务变化的销售类工作;
3、  你的公司运作正常;
4、  ......


怎么预测?
虽然案例是简单了一些,但也可以针对数据分析说明一些问题。那么我们怎么预测呢?大致分两个步骤:
0、 工资数据的选择;
1、 将工资图形化;
2、 选择一种拟合工具进行拟合;

不同企业的工资发放有很大区别,有基本工资,绩效奖金,季度奖,年终将,项目将,加班费.....等等,我建议将所有固定收入加起来作为工资收入,
因为老板考虑给你加薪也是会考虑总共会需要多支出多少钱给你,至于变动的部分,因为有变动因素存在,就不好分析了。

以下是我整理的关于我的工资收入(数据经过一些处理)。
2009
12600
2010
14176
2011
16040
2012
19660
2013
22910
2014
25700
2015
30710

拿到数据后,下一步就是讲数据图形化:

图中的直线代表了你工资的上涨趋势,如果直线向上,越陡说明你工资增长速度越快,也说明你的价值被认同的越多。

下一步就是找一条直线,能够尽可能的拟合你的工资数据,至少从我的数据上来看,工作还是比较稳定,换个角度说,工作缺少冲击力。吐槽一下,不明白同样差不多的人,为什么宁可用更多的钱招聘一个新人,也不要把老员工的工资提升上去,难道呆的时间久了,员工的优点就不明显了吗,只有下一个东家才能发现,呵呵。

通过直线拟合后图形如下:
从直线上看,我们的工资增长基本是一个线性的方式,基本都处于这样一条直线上。

接下来就是对明年工资的预测了,横轴代入变量x,计算y值,结果为32292。


如果看到这里,您也想输入您的工资试试看,那么代码如下,采用Python编写,您最好直接安装winPython,直接包含了很多需要用到的包。

from scipy import stats
import numpy as np
import pylab

x = np.array([1,2,3,4,5,6,7])
y = np.array([12600, 14176, 16040, 19660, 22910, 25700, 30710])

slope, intercept, r_value, p_value, slope_std_error = stats.linregress(x, y)

print(slope);
print(intercept);
print(r_value);
print(p_value);
print(slope_std_error);

predict_y = intercept + slope * x
pred_error = y - predict_y
degrees_of_freedom = len(x) - 2
residual_std_error = np.sqrt(np.sum(pred_error**2) / degrees_of_freedom)

# Plotting
pylab.plot(x, y, 'o')
pylab.plot(x, predict_y, 'k-')
pylab.show()

new_value = intercept + slope*8;
print(new_value);

以上只是实践的部分,关于理论部分,我也稍微啰嗦几句。

从上边的实践过程可以看出,其实预测的本质是拟合现有的数据,通过拟合的函数来推测未知点的值。这个其实就和我们小时候解方程一样,已知两点,求一条直线,然后通过直线方程求另外点的值。很简单,但是这么简单的道理放在实际应用中却不简单,主要难点有:
1、 数据的干净性,一般收集的数据很可能是有误差,甚至错误数据;
2、 已知数据的量太小,如果按年来收集数据,可能只有十几组数据;

所以针对这些难点,我们有很多数据过滤的方法,因为不知道数据内在的规律,只能通过对各种函数进行尝试,然后进行拟合度评价,从而得到就已知数据来说最好的拟合函数,但实际上我们一定要时刻问自己找到的拟合函数真的符合数据规律吗?

在刚刚的描述中,涉及了一个非常重要的问题,那就是函数的参数如何确定,如何找到能够最拟合数据的函数参数,这个就是数据分析中很重要的优化问题了。

数据分析的本质就是找到最合适的函数来表达数据。
在Python中,线性回归可以用于预测工资,它是一种简单的统计模型,主要用于分析两个变量之间的线性关系,其中一个变量通常是因变量(目标),另一个是自变量(解释变量)。如果你想要预测工资,你可以收集一些特征数据,如工作经验、教育程度、技能等,然后使用scikit-learn库中的`LinearRegression`模型进行建模。 以下是使用Python进行简单工资预测的一般步骤: 1. 导入库和数据预处理: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.preprocessing import StandardScaler # 加载数据集,假设df是你包含工资和特征的数据框 df = pd.read_csv('salary_data.csv') # 数据清洗,填充缺失值,编码分类变量(如果有的话) ``` 2. 特征工程和拆分数据: ```python X = df[['experience', 'education', 'skills']] # 假设这些都是影响工资的特征列 y = df['salary'] # 目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 3. 数据标准化(如果需要): ```python scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) ``` 4. 训练模型: ```python model = LinearRegression() model.fit(X_train_scaled, y_train) ``` 5. 预测: ```python predictions = model.predict(X_test_scaled) ``` 6. 评估性能: ```python from sklearn.metrics import mean_squared_error, r2_score mse = mean_squared_error(y_test, predictions) r2 = r2_score(y_test, predictions) print("MSE:", mse, "R^2 Score:", r2) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值