- 來源 | 願碼(ChainDesk.CN)內容編輯
- 願碼Slogan | 鏈接每一個程序員的故事
- 網站 | http://chaindesk.cn
- 願碼願景 | 打造全學科IT系統免費課程,助力小白用戶、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長並利用自身優點創造睡後收入。
- 官方公衆號 | 願碼 | 願碼服務號 | 區塊鏈部落
- 免費加入願碼全思惟工程師社羣 | 任一公衆號回覆「願碼」兩個字獲取入羣二維碼
本文閱讀時間:11min前端
若是您正在考慮學習Python,或者已經開始學習它,那麼您可能會問:「我使用Python到底能作什麼?」程序員
這是一個很難回答的問題,由於Python有不少應用程序。算法
但隨着時間的推移,我發現Python有三個主要的流行應用程序:數據庫
最近基於Python的Web框架(如Django和Flask)在Web開發中變得很是流行。小程序
這是由於Web框架使構建通用後端邏輯變得更容易。這包括將不一樣的URL映射到Python代碼塊,處理數據庫以及生成用戶在其瀏覽器上看到的HTML文件。後端
Django和Flask是兩個最流行的Python Web框架。若是是剛入門,建議你使用其中一個。瀏覽器
主要對比:服務器
· Flask提供簡單,靈活和細粒度控制。它是非特定的(它可讓你決定如何實現它)。網絡
· Django提供了一個一應俱全的體驗:您能夠得到管理面板,數據庫接口,ORM [對象關係映射]以及開箱即用的應用程序和項目的目錄結構。框架
你應該選擇:
· Flask,若是您專一於體驗和學習機會,或者您想要更多地控制使用哪些組件(例如您想要使用哪些數據庫以及如何與它們進行交互)。
· Django,若是你專一於最終產品,特別是若是你正在開發一個直接的應用程序,如新聞網站,電子商店或博客,你但願老是有一個單一的,顯而易見的方式來作事情。
換句話說,若是你是初學者,Flask多是一個更好的選擇,由於它須要處理的組件更少。此外,若是您想要更多自定義,Flask是更好的選擇。
另外一方面,若是你想要直接構建一些東西,Django更符合你的需求。
首先,機器學習是什麼?
解釋機器學習的最佳方法是給你一個簡單的例子。假設您想要開發一個程序來自動檢測圖片中的內容。
所以,以下圖(圖1),您但願程序識別出它是一隻狗。
鑑於下面的另外一個(圖2),您但願程序識別它是一個桌子。
你可能會說,好吧,我能夠寫一些代碼來作到這一點。例如,若是圖片中有不少淺棕色像素,那麼咱們能夠說它是一隻狗。或者,您能夠弄清楚如何檢測圖片中的邊緣。而後,你可能會說,若是有不少直邊,那麼它就是一張桌子。
可是,這種方法很快變得棘手。若是照片中有一隻沒有棕色頭髮的白狗怎麼辦?若是圖片只顯示錶格的圓形部分怎麼辦?
這就是機器學習的切入點。
機器學習一般實現一種自動檢測給定輸入中的模式的算法。
你能夠給機器學習算法給1000張狗的照片和1000張桌子的照片。而後,它將學習狗和桌子之間的區別。當你給它一張狗或桌子的新圖片時,它將可以識別它是哪個。
我認爲這有點相似於嬰兒學習新事物的方式。寶寶怎麼知道一件事看起來像狗,另外一件看起來像一張桌子?可能來自一堆例子。
你可能沒有明確地告訴嬰兒,「若是有毛茸茸的東西,有淺棕色的頭髮,那麼它多是一隻狗。」你可能會說,「那是一隻狗。這也是一隻狗。這是一張桌子。那個也是一張桌子。「
機器學習算法的工做方式大體相同。
您能夠將相同的想法應用於:
· 推薦系統(想一想YouTube,亞馬遜和Netflix)
· 人臉識別
· 語音識別
等應用程序。
您可能據說過的流行機器學習算法包括:
· 神經網絡
· 深度學習
· 支持向量機
· 隨機森林
您可使用上述任何算法來解決我以前解釋過的圖片標註問題。
有流行的機器學習庫和Python框架。
其中兩個最受歡迎的是scikit-learn和TensorFlow。
· scikit-learn附帶了一些內置的更流行的機器學習算法。我在上面提到了其中一些。
· TensorFlow更像是一個底層庫,容許您構建自定義機器學習算法。
若是您剛開始使用機器學習項目,我建議您先從scikit-learn開始。若是你開始遇到效率問題,那麼我會開始研究TensorFlow。
要掌握機器學習基礎知識,我會推薦斯坦福大學或加州理工學院的機器學習課程。
請注意,您須要微積分和線性代數的基本知識才能理解這些課程中的一些知識點。
而後,用Kaggle練習所學到的東西。這是一我的們競爭爲特定問題構建最佳機器學習算法的網站。他們也爲初學者提供了很好的教程。
列舉一個簡單的例子:假設您正在爲一家在線銷售某些產品的公司工做。做爲數據分析師,您能夠繪製這樣的條形圖。
從這張圖中,咱們能夠看出,男性購買了超過400個單位的產品,女性在這個特定的星期天購買了約350個單位的產品。
做爲數據分析師,您可能會對這種差別提出一些可能的解釋。
一個明顯可能的解釋是,這種產品比起女性更受男性歡迎。另外一種可能的解釋多是樣本量過小並且這種差別只是偶然形成的。而另外一種可能的解釋多是,男性傾向於僅在週日因某種緣由購買該產品。
爲了理解這些解釋中的哪個是正確的,您能夠繪製另外一個像這樣的圖。
咱們不是僅顯示星期日的數據,而是查看整整一週的數據。如您所見,從這張圖中,咱們能夠看到這種差別在不一樣的日子裏很是一致。
從這個小小的分析中,你能夠得出結論,對這種差別最有說服力的解釋是,這種產品更容易受到男性的歡迎,而不是女性。
若是你看到像這樣的圖表怎麼辦?
那麼,是什麼解釋了週日的差別?
你可能會說,也許男人每每只是由於某種緣由在週日購買更多的這種產品。或者,也許只是巧合,週日男人買了更多。
因此,這是一個說明數據分析在現實世界中多是什麼樣子的簡化的例子。
Matplotlib是最受歡迎的數據可視化庫之一。
· 很容易上手
· 其餘一些圖書館,如Seaborn,都是以它爲基礎的。所以,學習matplotlib將有助於您之後學習這些其餘庫。
首先應該瞭解數據分析和可視化的基礎知識,而後從Coursera和Khan Academy等網站學習統計數據的基礎知識也會有所幫助。
腳本一般是指編寫旨在自動執行簡單任務的小程序。
舉個例子:我曾經在日本的一家小型創業公司工做,咱們有一個電子郵件支持系統。這是一個系統,讓咱們回答客戶經過電子郵件發送給他們的問題。
當我在那裏工做時,個人任務是計算包含某些關鍵字的電子郵件的數量,以便咱們分析收到的電子郵件。
咱們能夠手動完成它,可是,我編寫了一個簡單的程序/簡單腳原本自動執行此任務。
實際上,咱們當時使用Ruby,但Python也是這類任務的好語言。Python適合這種類型的任務,主要是由於它具備相對簡單的語法而且易於編寫。用它寫一些小東西並測試它也很快。
Python能夠與Rasberry Pi一塊兒使用。是硬件愛好者中的一種流行應用。
您可使用名爲PyGame的庫來開發遊戲,但它並非最流行的遊戲引擎。你能夠用它來創建一個愛好項目,但若是你對遊戲開發很認真的話,我我的不會選擇它。
相反,建議開始使用Unity與C#,這是最受歡迎的遊戲引擎之一。它容許您爲許多平臺構建遊戲,包括Mac,Windows,iOS和Android。
您可使用Tkinter製做一個Python,但它彷佛也不是最受歡迎的選擇。
相反,彷佛Java,C#和C ++等語言更受歡迎。最近,一些公司也開始使用JavaScript來建立桌面應用程序。
例如,Slack的桌面應用程序是用Electron構建的。它容許您使用JavaScript構建桌面應用程序。
就我的而言,若是我正在構建一個桌面應用程序,我會使用JavaScript選項。它容許您重用Web版本中的一些代碼(若是有的話)。
推薦Python 3,由於它更現代,並且在這一點上它是一個更受歡迎的選項。
備註:關於後端代碼與前端代碼的說明(以防您不熟悉這些術語):
假設您想製做像Instagram這樣的東西。
而後,您須要爲要支持的每種類型的設備建立前端代碼。
您可使用,例如:
· 適用於iOS的Swift
· 適用於Android的Java
· 用於Web瀏覽器的JavaScript
每組代碼都將在每種類型的設備/瀏覽器上運行。這將是一組代碼,用於肯定應用程序的佈局如何,單擊按鈕時的外觀等等。
可是,您仍然須要可以存儲用戶的信息和照片。您須要將它們存儲在服務器上,而不只僅存儲在用戶的設備上,以便每一個用戶的關注者均可以查看他/她的照片。
這是後端代碼/服務器端代碼的用武之地。您須要編寫一些後端代碼來執行如下操做:
· 跟蹤誰在追隨誰
· 壓縮照片,以避免佔用太多存儲空間
· 在發現功能中向每一個用戶推薦照片和新賬戶
所以,這是後端代碼和前端代碼之間的區別。
順便說一下,Python並非編寫後端/服務器端代碼的惟一好選擇。還有許多其餘流行的選擇,包括基於JavaScript 的Node.js。