预测你的工资?

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

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、 已知数据的量太小,如果按年来收集数据,可能只有十几组数据;

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

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

数据分析的本质就是找到最合适的函数来表达数据。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于预测工资是否大于50k的问题,你可以使用Spark MLlib中的分类算法来解决。以下是一个基本的步骤示例: 1. 导入所需的库和模块: ```python from pyspark.ml.feature import VectorAssembler from pyspark.ml.classification import LogisticRegression from pyspark.ml import Pipeline ``` 2. 准备数据集: 首先,你需要有一个包含特征和标签的数据集。特征是用于预测的属性,标签是我们要预测的目标变量。你可以使用Spark DataFrame来处理数据。 3. 特征工程: 将特征列组合成一个向量列,这样模型可以使用这个向量列进行训练和预测。 ```python assembler = VectorAssembler(inputCols=[<feature_col_1>, <feature_col_2>, ...], outputCol="features") ``` 4. 构建分类模型: 选择一个适合你问题的分类算法,并设置其参数。 ```python classifier = LogisticRegression(labelCol="<label_col>", featuresCol="features") ``` 5. 构建管道: 将特征工程和分类模型组合成一个管道,方便统一管理。 ```python pipeline = Pipeline(stages=[assembler, classifier]) ``` 6. 拟合模型: 使用训练数据来拟合模型。 ```python model = pipeline.fit(train_data) ``` 7. 进行预测: 使用测试数据对模型进行预测。 ```python predictions = model.transform(test_data) ``` 8. 评估模型: 使用相关指标来评估模型的性能。 ```python # 示例:二分类问题使用BinaryClassificationEvaluator from pyspark.ml.evaluation import BinaryClassificationEvaluator evaluator = BinaryClassificationEvaluator(labelCol="<label_col>") accuracy = evaluator.evaluate(predictions) ``` 这是一个简单的基于Spark MLlib的分类模型示例,你可以根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值