一個公式告訴你為什麼程式設計師要轉演算法工程師
原來的標題是:演算法工程師工資調查 20170611
今天(2017年6月11日)爬了某招聘網站的十大城市的演算法工程師職位。
演算法工程師
這裡的演算法工程師包括比較廣泛。有做資料科學的,有做圖形的,有做訊號處理的。之後會統計更細分的領域。
十大城市
以下按照演算法工程師的需求量,找出十大城市。因為演算法工程師向大城市集中比較明顯,所有這十大城市基本可以代表全國的演算法工程師了。
城市 | 需求 | 城市 | 需求 |
---|---|---|---|
北京 | 1048 | 成都 | 149 |
深圳 | 353 | 南京 | 92 |
上海 | 312 | 西安 | 91 |
杭州 | 226 | 天津 | 67 |
廣州 | 184 | 蘇州 | 60 |
需求量在50人左右的還有武漢,長沙,合肥,濟南和鄭州。
從表中可以看出。北京以1000多人的需求量,成為當之無愧的一超。其需求量相當於後面的四個城市的總和。
杭州作為非一線城市,其需求量不僅遠遠超過非一線城市裡的第二名成都,而且還卻超過了廣州。其實,杭州的網際網路產業,屬於二線城市裡比較發達的。之前的統計也表面杭州的程式設計師工資高於深圳和廣州。
http://blog.csdn.net/juwikuang/article/details/72891659
工資分佈
十大城市的演算法工程師的平均工資為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 LinearRegression
lr = 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
也就是說我們可以得到以下公式:
這裡的R square非常高,達到了0.99。表示模型解釋了99%的變化(variability),即模型非常準確。
我們把迴歸線打出來看看。
import matplotlib.pyplot as plt
cities = [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