99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何成為一名真正的數(shù)據(jù)分析師或者數(shù)據(jù)工程師
如何成為一名真正的數(shù)據(jù)分析師或者數(shù)據(jù)工程師
2016-10-16
收藏


如何成為一名真正的數(shù)據(jù)分析師或者數(shù)據(jù)工程師

一.入門:高屋建瓴

數(shù)據(jù)分析的坑很大,一開始走上這條路,就要明確基本的方向,依托于核心的思想,不然只會越走越偏,最后覺得山太高水太深,不了了之。

1.數(shù)據(jù)與數(shù)據(jù)分析

數(shù)據(jù)其實就是對事物特征的定性指稱以及量化描述,比如一個人的身份證號,年齡,收入,身高等就構成了一組數(shù)據(jù):{id:001,age:45,income:10000,height:176}——如果把很多人的這些數(shù)據(jù)匯成表,便構成了“ 結構化 ”(也就是比較規(guī)整一致)的“ 數(shù)據(jù)空間 ”。

但是呢,有一些或者大部分的數(shù)據(jù)都不是規(guī)整的,也就是分布比較雜亂或者不是按照我們想要的那樣分布的(比如一個網(wǎng)頁中的文本數(shù)據(jù)分布),稱之為“ 非結構化 ”的數(shù)據(jù)空間 。

數(shù)據(jù)分析的本質是什么?那就是——將這些結構化或者非結構化的數(shù)據(jù), 映射 到指定格式的數(shù)據(jù)空間里面,然后進行分析—— 數(shù)據(jù)分析的基礎就是數(shù)據(jù)空間的映射 。

這句話說的比較繞,但是卻非常深刻,它告訴我們,數(shù)據(jù)分析的一個基礎(在實踐中也是最重要)的一件事情就是尋找合適的數(shù)據(jù)空間映射方案——某種程度上就是所謂的 數(shù)據(jù)清洗

2.對于一些工具的看法

沿襲上文,工具則可以分為兩種,一是基礎性的excel,spss,sas等數(shù)據(jù)分析軟件以及許多數(shù)據(jù)庫管理工具, 它們主要處理的是結構化的數(shù)據(jù) ,也就是給你把數(shù)據(jù)弄成了表的規(guī)整數(shù)據(jù)(當然,這些數(shù)據(jù)很多時候也需要清洗,不過已經(jīng)不涉及數(shù)據(jù)空間映射這個問題了);二是編程語言,包括python,R,Java,Ruby等, 這些語言工具主要是處理數(shù)據(jù)空間映射和清洗工作的 ,其中,比較常用的是python和R,前者由于其可擴充性,已經(jīng)在大多數(shù)情況下優(yōu)于后者了。

3.學習:從天而降

所謂“從天而降”指的是從一個比較高的地方下降來學習的方法,好比是拿著一張總體的地圖去探索數(shù)據(jù)分析與挖掘的世界。推薦閱讀:《 數(shù)據(jù)科學實戰(zhàn) 》。

其次,請注意一點:python學習,對于 沒有任何計算機基礎 的人來說, 基本上是開頭容易、越往后面越難! (python一開始的類似自然語言的結構很友好,但你到了函數(shù)與面向對象的學習的時候,還是必須明確引用變量的變化(也就是數(shù)據(jù)如何在內存中流動)以及作用域的動態(tài)變化等對入門者不友好的問題。)

在這種情況下,《head first python》根本不適合,不要用它學習python!

我的建議是,花時間學習一下計算機的基本原理,然后是C語言,Java等,然后再學python,不然你到后面完全是知其然而不知其所以然!

推薦閱讀:《 計算機科學概論(第11版 》

以及:《 瘋狂Java講義 》(這本書雖然講的是java,但對數(shù)據(jù)在內存中的流轉也有講,可以作為參考,理解程序的運行。)

最后才是:《 Python基礎教程(第2版?修訂版) 》

然后可以看看入門的統(tǒng)計學教材:《 深入淺出統(tǒng)計學 》(很快就能看完,我當時半天多一點就看完了。)

以及入門與深入理解數(shù)據(jù)庫原理:《 MySQL必知必會 》+《 數(shù)據(jù)庫系統(tǒng)概念 》

有了技術基礎了,再看看《 R語言編程藝術 》

另外,入門者不要選擇python3.x,選擇python2.7吧。為啥?因為很多重要的模塊比如pandas還有網(wǎng)上的許多資料現(xiàn)在還是最多支持到2.7的,你選3.X對于入門那是舍近求遠。

最后,可以使用《 利用Python進行數(shù)據(jù)分析 》將所有知識串接起來,感受pandas以及scipy,numpy中的數(shù)據(jù)計算 是如何體現(xiàn)數(shù)據(jù)空間映射這個深刻概念的。

二.中階:理論

中階主要是理論學習以及一些比較復雜的應用操作。

1.理論基礎:書籍

良好的數(shù)學基礎是進一步學習的支撐條件。

以下是推薦閱讀的書目:

1.概率論與數(shù)理統(tǒng)計:《 概率論與數(shù)理統(tǒng)計 》,進一步學習概率與統(tǒng)計;

2.高等代數(shù):《 高等代數(shù)簡明教程(上冊) 》,“數(shù)據(jù)空間的映射”的思想就來自于高等代數(shù);

3.最優(yōu)化:《 最優(yōu)化理論與方法 》,參考書,中階不要細讀。

4.數(shù)據(jù)挖掘:《 數(shù)據(jù)挖掘導論 》,偏數(shù)學,《 數(shù)據(jù)挖掘 》,偏結構化的數(shù)據(jù)庫;

5.信息檢索領域入門:《 信息檢索導論 》

6.統(tǒng)計學習理論快速俯瞰:《 統(tǒng)計學習方法 》

7.實戰(zhàn)之于python:《 集體智慧編程 》+《 機器學習實戰(zhàn) 》

8.實戰(zhàn)之于Mahout平臺:《 Mahout實戰(zhàn) 》

2.實戰(zhàn):利用數(shù)據(jù)庫與數(shù)據(jù)api,實戰(zhàn)學習

(1)淘寶上以及很多百度提供的一些 數(shù)據(jù)庫 : API Store_為開發(fā)者提供最全面的API服務 等,都可以下載到數(shù)據(jù)進行處理,有一些經(jīng)典的研究數(shù)據(jù)庫,主要是一些大學構建的,也可以用來訓練模型;

(2).學習寫 網(wǎng)絡爬蟲 ,基于python,爬取文本數(shù)據(jù)進行分析,其中,文本數(shù)據(jù)分析可能涉及到中文的自然語言處理,比較麻煩,有一些模塊可以直接使用(比如jieba),如果覺得不理想,可以嘗試爬取英文頁面。另:寫爬蟲必須首先理解網(wǎng)頁的數(shù)據(jù)空間,建議閱讀:《 Head First HTML與CSS、XHTML(中文版) 》;

(3).苦練 清洗數(shù)據(jù) 的基本功——因為大多數(shù)數(shù)據(jù)工程師的主要工作都在于此,并且在清洗的過程中,深刻理解數(shù)據(jù)空間的映射。另,清洗數(shù)據(jù)必備技能:正則表達式。建議閱讀:《 正則表達式必知必會 》;

(4). 混合編程 與 數(shù)據(jù)可視化 :可以嘗試以python為主的混合編程(python+R)以及數(shù)據(jù)可視化,建議閱讀《 ggplot2 》

三.高階:回歸、遠行、優(yōu)化與萬法歸宗

1.回歸

總的來說,數(shù)據(jù)挖掘、機器學習相關的工作,看著很新,其實只是很久之前的理論知識的應用罷了,在實戰(zhàn)領域,并沒有多少新的東西。

所以,從技術上講,我們需要回歸到那些最內核的東西。

什么是最內核的東西,那就是: 算法與數(shù)據(jù)結構 。

知乎上有一些言論,說算法與數(shù)據(jù)結構一般情況下程序員是用不到的,這句話對于一般的寫系統(tǒng)的程序員確實受用,但是對機器學習、數(shù)據(jù)挖掘的程序員,卻恰恰相反:我們的主要工作就是在搞算法和數(shù)據(jù)結構。

比如貝葉斯網(wǎng)絡、人工神經(jīng)網(wǎng)絡,本質上其實還是基于圖的算法的應用罷了。

推薦一本書,比《算法導論》好讀:《 算法(第4版) 》

2.遠行

所謂遠行,就是從學習的象牙塔里面走出來,走向實用或者特殊領域,比如: 金融量化分析 。

傳統(tǒng)的投資經(jīng)理,做的專業(yè)投資,本質上根根結底是什么?那就是兩個字: 分散 。

所謂分散,說大白話就是“把雞蛋放在多個籃子里面”,但至于怎么放,放多少,都是非常復雜的,傳統(tǒng)的手段包括建立 馬科維茲模型 與 指數(shù)模型 來作為分散的參考模型。

機器學習也是可以來做分散的,并且,知名的文藝復興技術公司做的“最大熵模型”比傳統(tǒng)的那兩大模型還要好,還能夠持續(xù)跑贏大盤。

如果你對機器學習、數(shù)據(jù)挖掘相關理論有深刻理解的話,你會發(fā)現(xiàn)一個事實: 分散本質上就是在尋找有限條件下的最大組合熵! 最大熵模型之所以有效就是因為它使用了超級大的數(shù)據(jù)量作為基準,得到了相對于傳統(tǒng)分散模型更高的熵。

這個要講很多,確實也比較高階,我就點到為止,將來再細談。

3.優(yōu)化

優(yōu)化主要是對python執(zhí)行效率的優(yōu)化——要知道,很多時候,量化分析對時間的要求非常嚴格,差之毫厘,損失成百上千萬。

這個時候,就需要了解如何優(yōu)化python。

知道嗎?python是用C寫出來的, 如果你優(yōu)化的好,你的python可能比C還要快!

優(yōu)化問題本質上是一個局部最優(yōu)與全局最優(yōu)權衡的問題,有空細講。

優(yōu)化的另外一個問題是 數(shù)值計算 ,包括矩陣的分塊計算、并行計算,MapReduce對大量數(shù)據(jù)的處理等,這也是比較復雜的,有空細講。

4.萬法歸宗:信息論

數(shù)據(jù)處理的的最高境界,其實是對信息論的深刻理解。

算法優(yōu)化,大量問題都是把指數(shù)問題變?yōu)閷?shù)問題,其實根本原理是信息論;

量化分析,買入賣出的博弈,每一次交易如何暴露出信息的?

投資組合,如何在限制條件內產(chǎn)生最大熵?

文本挖掘、數(shù)據(jù)壓縮,隱馬爾科夫鏈,如何用最少的信息映射原空間?


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }