一个公式告诉你为什么程序员要转算法工程师

来源:互联网 发布:网络侠客行 编辑:程序博客网 时间:2024/04/25 06:51

原来的标题是:算法工程师工资调查 20170611

今天(2017年6月11日)爬了某招聘网站的十大城市的算法工程师职位。

算法工程师

这里的算法工程师包括比较广泛。有做数据科学的,有做图形的,有做信号处理的。之后会统计更细分的领域。

十大城市

以下按照算法工程师的需求量,找出十大城市。因为算法工程师向大城市集中比较明显,所有这十大城市基本可以代表全国的算法工程师了。

城市 需求 城市 需求 北京 1048 成都 149 深圳 353 南京 92 上海 312 西安 91 杭州 226 天津 67 广州 184 苏州 60

需求量在50人左右的还有武汉,长沙,合肥,济南和郑州。

从表中可以看出。北京以1000多人的需求量,成为当之无愧的一超。其需求量相当于后面的四个城市的总和。

杭州作为非一线城市,其需求量不仅远远超过非一线城市里的第二名成都,而且还却超过了广州。其实,杭州的互联网产业,属于二线城市里比较发达的。之前的统计也表面杭州的程序员工资高于深圳和广州。
http://blog.csdn.net/juwikuang/article/details/72891659

一线城市的程序员工资看这里
http://blog.csdn.net/juwikuang/article/details/72888792

工资分布

十大城市的算法工程师的平均工资为18912元。而之前调查的一线城市的程序员的平均工资只有11770元,可见算法工程师在程序员里属于高工资。工资中位数为17500元。如果你的工资超过22500元,你就已经超过了75%的算法工程师,算是优秀的算法工程师了。(吴军老师说的)如果你同时具备第二项技能,比如架构师,并且也做到25%。那就是杰出人才了。

工资和人数

教育

和程序员不同,算法工程师的学历要求,明显提高了。

学历分布

受教育水平对工资有着显著的影响。看下图。

教育水平和工资

请注意这里的中间线是工资中位数,不是平均工资,下同。

大专,本科,硕士,博士的平均工资分别是13677, 18727, 20981, 23194。中位数分别是9000, 17000, 17500, 22500。有趣的是,硕士和博士的平均工资差距并不显著。最优秀的25%的博士和硕士,他们的工资,都在25000元以上。但是不排除有些博士并没有走社会招聘而是成了什么长江学者,也许还有房子分。

工作经验

工作经验和需求

工作1到5年的算法工程师需求量是最大的。

工作经验和工资

数据显示,工资会随着工作经验的增长而增长。

城市

平均工资方面,由高到低依次为北京(21332),上海(20162),杭州(19138),深圳(18621),广州(18016)。

这里写图片描述

而工资的中位数排名,则让这五个城市调换了次序。从上图可以看出,北京还是最高(20000),上海和深圳排第二(17500),杭州和广州并列第四(15000)。

统计(Oneway Anova)显示,北京和上海的平均工资没有显著的差异。北京和其他地方的差异都是显著的。

算法工程师工资计算公式

比较了北京,上海,杭州,深圳,广州所有程序员的平均工资和和算法工程师的工资。发现他们两者的correlation是接近于1,二者高度相关。

from scipy.stats.stats import pearsonr   a = [21332,20162,19138,18621,18016] #算法工程师b = [13854,12213,11009,10655,9503] #所有程序员print pearsonr(a,b)

它们之间的pearson r值达到了0.995,p-value为0.0003,显示他们之间有很强的线性正关系。我们干脆把他们的线性关系找出来吧。

from sklearn.linear_model import LinearRegressionlr = LinearRegression()X = [[13854], [12213], [11009], [10655], [9503]]y =  [21332, 20162, 19138, 18621, 18016]lr.fit(X,y)print lr.coef_print lr.intercept_print lr.score(X,y) #r^2

输出值分别为
[ 0.78846586]
10428.3889601
0.990631312216

也就是说我们可以得到以下公式:

S¯a=10428.39+0.788S¯p

S¯代表平均工资。S¯a代表算法工程师工资,S¯p代表程序员工资。

这里的R square非常高,达到了0.99。表示模型解释了99%的变化(variability),即模型非常准确。

我们把回归线打出来看看。

import matplotlib.pyplot as pltcities = [u'北京',u'上海',u'杭州',u'深圳',u'广州']plt.scatter(X, y,  color='black')plt.plot(X, lr.predict(X), color='y',         linewidth=3)plt.title(u"程序员和算法工程师平均工资")plt.xlabel(u"程序员平均工资")plt.ylabel(u"算法工程师平均工资")for i in range(5):    plt.text(x=X[i][0],y=y[i], s=cities[i], color='b')plt.show()

算法工程师工资和程序员工资

因为这个公式是按照地区来算的,所以我们可以说,(Technical/literally speaking),这个公式是“放之四海而皆准”的。:)

公司

选择一个什么样的公司,也决定了工资收入。

公司性质和工资

事业单位工资明显低于其他,但是。。。你们懂的。

公司的规模,对于工资同样影响有限。

公司规模和工资

你想开始转了么?

如果你现在想转算法工程师,我这里可以提供你的第一课。就是用我们上面提到的程序员和算法工程师的工资关系,求一元线性回归模型。具体见《手把手教你用Python写线性回归》:
http://blog.csdn.net/juwikuang/article/details/78420337