我與Python--從Hacker到探索Deep Learning

0、為什么是Python隙畜?

人生苦短抖部,我用Python...

'Life is short, you need Python!'

進(jìn)入大學(xué)之后,我們逐漸“被教授”了C议惰、C++慎颗、Java等編程語言,但為什么我會選擇python作為最喜歡的編程語言呢言询?

Python是最好的編程語言之一俯萎,在科學(xué)計算中用途廣泛:計算機(jī)視覺、人工智能运杭、數(shù)學(xué)夫啊、天文等。它同樣適用于機(jī)器學(xué)習(xí)也是意料之中的事辆憔。

總之:簡短[庫多]撇眯、不用自己造輪子[庫多]、能解決各種問題[庫多多...]虱咧。

  • python是一種簡單但功能強(qiáng)大的解釋性編程語言熊榛,便與交互編程,作為一種動態(tài)語言腕巡,允許程序運(yùn)行時候才被添加到對象玄坦,變量自動類型轉(zhuǎn)換,提高開發(fā)效率。
  • 最重要的一點(diǎn):python自帶強(qiáng)大的標(biāo)準(zhǔn)庫煎楣,而且可以很方便的使用其它的第三方庫豺总,這就大大的簡化了我們編程的復(fù)雜度。

依稀記得大學(xué)期間择懂,我對Hacke相關(guān)的技術(shù)非常著迷喻喳,覺得面對漆黑的終端界面,快速的輸入一些奇怪的命令休蟹,啪啪啪...女神的QQ密碼搞到手了沸枯,想想還有點(diǎn)小激動日矫!(純屬意淫)赂弓,經(jīng)常搗鼓一下XSS、SQL注入這些“高級”技巧來意淫一番哪轿。

就喜歡這個feel的壁紙...

  作為一個夢想成為Hacker的男人盈魁,總不能一直玩'兒童玩具',所以想?yún)⑴c一些網(wǎng)絡(luò)安全的競賽玩玩窃诉,探索中發(fā)現(xiàn)比賽中用的比較多的語言是Python杨耙,逛FreeBuf的時候看到一遍文章這樣推薦使用Python:

“如果你熱愛漏洞研究、逆向工程或者滲透測試飘痛,我強(qiáng)烈推薦你使用 Python 作為編程語言珊膜。它包含大量實用的庫和工具......”

擁有大量的庫以及工具,意味著只需要自己寫少許的代碼宣脉,就可以實現(xiàn)那些看似很厲害的Hacker姿勢车柠,這不正是我這類小白夢寐以求的東西嘛!

遙想當(dāng)年塑猖,懷揣著Hacker夢想的我竹祷,一直希望自己能夠有機(jī)會向FreeBuf提交一個自己發(fā)現(xiàn)的漏洞......

本著入門新語言“7天”就夠了的原則,開始了學(xué)習(xí)python之路羊苟,這一路從追逐Hacker夢想開始塑陵,一直到現(xiàn)在探究Deep Learning的深淵。進(jìn)入研究生階段后蜡励,跟隨實驗室的研究方向令花,未來的職業(yè)定位也隨之改變,Hacker夢漸行漸遠(yuǎn).....但是Python卻從未離開過我凉倚,因為在研究深度學(xué)習(xí)中彭则,Python仍舊還是我的左膀右臂。


1占遥、深度學(xué)習(xí)界的屠龍刀--Pyhton

深度學(xué)習(xí)無疑是最近幾年最炙手可熱的研究領(lǐng)域之一俯抖,從2012年ImgNet上的一鳴驚人,到AlphaGo的橫掃圍棋界...深度學(xué)習(xí)的成果不斷的從實驗室走到了工業(yè)界瓦胎,逐步融入進(jìn)我們的日常生活芬萍。

深度學(xué)習(xí)的深淵

  為什么說Python是深度學(xué)習(xí)界的屠龍刀呢尤揣?額.....因為倚天劍是屬于滅絕師太的!綜其原因柬祠,我認(rèn)識還是:庫多北戏。如果自己手動完成一個機(jī)器學(xué)習(xí)的算法,代碼量還是挺多的漫蛔,這對于剛?cè)腴T的新手來說嗜愈,毫無疑問是當(dāng)頭喝棒,而借助于第三方庫莽龟,其封裝了一些好用的算法蠕嫁,大大簡化我們需要做的工作,我們可以把更多的精力放在解決問題本身上...

研究生階段毯盈,我逐漸的開始接觸深度學(xué)習(xí)剃毒,開始嘗試自己動手基于深度學(xué)習(xí)模型嘗試解決一些NLP領(lǐng)域的問題,這時候python又成為了我的首選編程語言搂赋。

我的研究方向是NLP赘阀,此外個人對機(jī)器學(xué)習(xí)以及其它的子領(lǐng)域也非常濃厚的興趣,例如:數(shù)據(jù)挖掘脑奠、推薦系統(tǒng)等基公,而這些興趣愛好的相關(guān)編程工作,Python基本都可以很好的勝任宋欺。

Python語言作為一個多面手轰豆,我認(rèn)為它的核心競爭力就體現(xiàn)在它擁有豐富多彩的庫:

我常用的Python庫

深度學(xué)習(xí)界Java、C++迄靠、Scala等語言也是各有千秋秒咨,自己用啥兵器順手,就選什么兵器唄掌挚,反正雨席,最終目的都是要能解決手頭的問題!

如果你不了解Python但是很擅長其他語言吠式?不要絕望陡厘!Python(還有其他)的一個強(qiáng)項就是它是一個完美的膠水語言,你可以使用自己常用的編程語言特占,通過Python來訪問這些庫糙置。以下適合各種編程語言的包可以用于將其他語言與Python組合到一起:

  • R -> RPython
  • Matlab -> matpython
  • Java -> Jython
  • Lua -> Lunatic Python
  • Julia -> PyCall.jl

2、獲取數(shù)據(jù)--編寫爬蟲

數(shù)據(jù)決定了模型所能達(dá)到的最終高度是目,而不斷優(yōu)化的模型不過是為了逼近這個目標(biāo)而已谤饭!

做數(shù)據(jù)分析【爬取電商某種商品的評價】、文本分類【爬取新聞網(wǎng)站】時需要獲取部分原始的數(shù)據(jù),這時可能需要自己寫一個簡單的爬蟲揉抵。此時亡容,python就可以登場了,配合一些自帶的模塊或者第三方的庫:requests冤今、urllib等闺兢,簡單的coding就可以很好的完成這個小任務(wù),如果需要實現(xiàn)一個較復(fù)雜的爬蟲戏罢,則可以利用Python的第三方庫--Scrapy屋谭,利用工程模板簡單的配置一下mongodb數(shù)據(jù)庫地址以及初始URL地址等參數(shù),就可以很好的完成數(shù)據(jù)搜集的任務(wù)龟糕。

Scrapy

3桐磁、機(jī)器學(xué)習(xí)界常用的庫

1.Scikit-Learn--實現(xiàn)了傳統(tǒng)的機(jī)器學(xué)習(xí)算法 官網(wǎng)

Scikit-Learn[簡稱sklearn] 是一個 Python 的 科學(xué)計算庫,我們用它進(jìn)行分類翩蘸、特征選擇所意、特征提取和聚集等淮逊,是比較常用的機(jī)器學(xué)習(xí)庫之一催首。

numpy、scipy 是 Python 的科學(xué)運(yùn)算庫泄鹏,matplotlib 是圖形庫郎任,用于繪圖,經(jīng)常與Sklearn庫配合使用备籽。

Scikit-Learn包含的算法流程圖

  由圖中舶治,可以看到算法有四類,分類车猬,回歸霉猛,聚類,降維珠闰。

其中 分類回歸是監(jiān)督式學(xué)習(xí)惜浅,即每個數(shù)據(jù)對應(yīng)一個 label。
  聚類是非監(jiān)督式學(xué)習(xí)伏嗜,即沒有 label
  另外一類是降維坛悉,當(dāng)數(shù)據(jù)集有很多很多屬性的時候,可以通過降維 算法把屬性歸納起來承绸。例如 20 個屬性只變成 2 個裸影,注意,這不是挑出 2 個军熏,而是壓縮成為 2 個轩猩,它們集合了 20 個屬性的所有特征,相當(dāng)于把重要的信息提取的更好,不重要的信息就不要了均践。

此外画饥,在NLP領(lǐng)域中,它還包含有限的自然語言處理特征提取能力浊猾,以及詞袋(bag of words)抖甘、tfidf(Term Frequency Inverse Document Frequency算法)、預(yù)處理(停用詞/stop-words葫慎,自定義預(yù)處理衔彻,分析器)等。

Sklearn 包含了很多種機(jī)器學(xué)習(xí)的算法偷办,幾乎覆蓋了實現(xiàn)一個機(jī)器學(xué)習(xí)算法的整個流程:

  • Classification 分類
  • Regression 回歸
  • Clustering 非監(jiān)督分類
  • Dimensionality reduction 數(shù)據(jù)降維
  • Model Selection 模型選擇
  • Preprocessing 數(shù)據(jù)預(yù)處理

介紹sklearn包中各種機(jī)器學(xué)習(xí)模型的實現(xiàn)(含代碼)


2.Gensim--NLP界的利器

Gensim被定義為“人們的主題建模工具(topic modeling for humans)”艰额。它的主頁上描述,其焦點(diǎn)是狄利克雷劃分(Latent Dirichlet Allocation椒涯, LDA)及變體柄沮。不同于其他包,它支持自然語言處理废岂,能將NLP和其他機(jī)器學(xué)習(xí)算法更容易組合在一起祖搓。如果你的領(lǐng)域在NLP,并想進(jìn)行聚集和基本的分類湖苞,你可以看看拯欧。目前,它們引入了Google的基于遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)的文本表示法word2vec财骨,在NLP中詞的詞向量的分布式表示方法用的比較多的就是word2vec镐作。

word2vec

3.TensorFlow--炙手可熱的計算框架

說到深度學(xué)習(xí)+Python,就不得不提TensorFlow隆箩,我也在積累素材準(zhǔn)備專門寫一下關(guān)于TensorFlow的使用感悟该贾,這里就先簡單的介紹一下。

TensorFlow

TensorFlow 是一個采用數(shù)據(jù)流圖(data flow graphs)捌臊,用于數(shù)值計算的開源軟件庫杨蛋。TensorFlow可以說是當(dāng)前最流行的深度學(xué)習(xí)框架【我就不寫之一了】。

借助TensorFlow娃属,我們不需要自己去實現(xiàn)反向傳播六荒、隨機(jī)梯度下降、損失函數(shù)等較復(fù)雜的函數(shù)矾端,新手也可以實現(xiàn)常見的深度學(xué)習(xí)模型:CNN掏击、RNN、LSTM秩铆、Seq2Seq等[使用Keras實現(xiàn)起來更簡單]砚亭。

什么是tensorflow:
  官網(wǎng)的定義中并未將TensorFlow稱為一個“機(jī)器學(xué)習(xí)庫”,而是使用了更寬泛的短語“數(shù)值計算”灯变。雖然TensorFlow中的確包含一個模仿了具有單行建模功能的機(jī)器學(xué)習(xí)庫Scikit-Learn的名為“l(fā)earn”(也稱“Scikit Flow”)的包,但需要注意的是,TensorFlow的主要目標(biāo)并非是提供現(xiàn)成的機(jī)器學(xué)習(xí)解決方案。相反,TensorFlow提供了一個可使用戶用數(shù)學(xué)方法從零開始定義模型的函數(shù)和類的廣泛套件捅膘。這使得具有一定技術(shù)背景的用戶可迅速而直觀地創(chuàng)建自定義的添祸、具有較高靈活性的模型。此外,雖然TensorFlow為面向機(jī)器學(xué)習(xí)的功能提供了廣泛支持,但它也非常適合做復(fù)雜的數(shù)學(xué)計算寻仗。

4刃泌、數(shù)據(jù)可視化

常言道:一圖勝千言。

在數(shù)據(jù)挖掘中分析數(shù)據(jù)分布署尤、統(tǒng)計總量以及呈現(xiàn)最終的分析結(jié)果時耙替,數(shù)據(jù)的可視化是非常必要的。

在Web中曹体,我常用的可視化工具是E-chart俗扇,python中最常用的無疑是Matplotlib

Echart例圖

matplotlib 是python最著名的繪圖庫箕别,它提供了一整套和matlab相似的命令A(yù)PI铜幽,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件串稀,嵌入GUI應(yīng)用程序中除抛。

matplotlib是基于numpy的一套Python工具包。這個包提供了豐富的數(shù)據(jù)繪圖工具厨诸,主要用于繪制一些統(tǒng)計圖形镶殷。你可以找到很多各式各樣的例子

例子

此外禾酱,還有一個在其基礎(chǔ)上擴(kuò)展的包:Seaborn微酬,它以matplotlib為底層,更容易定制化作圖的颤陶。

Seaborn其實是在matplotlib的基礎(chǔ)上進(jìn)行了更高級的API封裝颗管,從而使得作圖更加容易,在大多數(shù)情況下使用seaborn就能做出很具有吸引力的圖滓走,而使用matplotlib就能制作具有更多特色的圖垦江。應(yīng)該把Seaborn視為matplotlib的補(bǔ)充,而不是替代物搅方。

5比吭、總結(jié)

Python各種豐富的庫還有很多,本文只是簡單的介紹了幾個自己在機(jī)器學(xué)習(xí)姨涡、NLP中常用的庫衩藤,對于這些包深入理解,這里并沒有詳細(xì)的介紹涛漂,其中的每一個都值得寫一篇博客才能窺探一二赏表。此外检诗,還有很多基礎(chǔ)的庫[numpy、pandas等]是我們必須要掌握的瓢剿,這里就不一一的介紹了逢慌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市间狂,隨后出現(xiàn)的幾起案子攻泼,更是在濱河造成了極大的恐慌,老刑警劉巖鉴象,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坠韩,死亡現(xiàn)場離奇詭異,居然都是意外死亡炼列,警方通過查閱死者的電腦和手機(jī)只搁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俭尖,“玉大人氢惋,你說我怎么就攤上這事』纾” “怎么了焰望?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長已亥。 經(jīng)常有香客問我熊赖,道長,這世上最難降的妖魔是什么虑椎? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任震鹉,我火速辦了婚禮,結(jié)果婚禮上捆姜,老公的妹妹穿的比我還像新娘传趾。我一直安慰自己,他們只是感情好泥技,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布浆兰。 她就那樣靜靜地躺著,像睡著了一般珊豹。 火紅的嫁衣襯著肌膚如雪簸呈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天店茶,我揣著相機(jī)與錄音蜕便,去河邊找鬼。 笑死忽妒,一個胖子當(dāng)著我的面吹牛玩裙,可吹牛的內(nèi)容都是我干的兼贸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吃溅,長吁一口氣:“原來是場噩夢啊……” “哼溶诞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起决侈,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤螺垢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赖歌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枉圃,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年庐冯,在試婚紗的時候發(fā)現(xiàn)自己被綠了孽亲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡展父,死狀恐怖返劲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栖茉,我是刑警寧澤篮绿,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站吕漂,受9級特大地震影響亲配,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惶凝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一吼虎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梨睁,春花似錦鲸睛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱舞。三九已至遍坟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晴股,已是汗流浹背愿伴。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留电湘,地道東北人隔节。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓鹅经,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怎诫。 傳聞我的和親對象是個殘疾皇子瘾晃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容