Python 是一門適合做數據挖掘的語言嗎?

最近看見兩本書,《集體智慧編程》,《 社交網站的數據挖掘與分析》,兩本書都是以Python語言來講解的,都是講的數據挖掘方面的東西,其中後者還是 2011年Jolt生產效率大獎獲獎圖書,難道Python很適合 做數據挖掘嗎?


python強調程序員的生產力,讓你把精力集中在邏輯上而不是語言本身上。

你能想像用一下午時間實現從0開始一個簡單的搜索引擎嗎?C++顯然是不行的。。你的大部分時間都將花在實現基本數據結構和調試語言錯誤上。。而用python,你要做的就是真正理解搜索演算法,之後的實現真的很簡單。。

我覺得用python很適合演算法研究,不僅僅是數據挖掘。快速開發能讓你迅速驗證你的想法,而不是把時間浪費在程序本身上(想像一下你寫了一星期的c++,調了一大堆指針錯誤,最後發現想法本身就有錯誤。。)當你知道你已經有了一個正確的演算法,要使他運行速度提高只需用c++等重寫性能瓶頸並嵌入就行了。。

Links:

  • Scipy Stack(http://www.scipy.org/getting-started.html) - general tasks

  • Spark(http://spark.apache.org/docs/latest/index.html) - going large

  • Tensorflow(http://www.tensorflow.org/) - going deep
  • GitHub - jupyter/docker-stacks: Opinionated stacks of ready-to-run Jupyter applications in Docker.


python適合快速開發,我們這裡數據挖掘的框架用python寫,開始用python去實現你的基本的想法,不過等成熟以後最核心的演算法還是用java和c寫的,一方面把你的演算法隱藏起來,另外一方面也是因為效率的原因。


是的,Python適合做數據挖掘。作為腳本語言,Python快速開發的優點其他答案都說了。

Python適合做數據挖掘的另一個原因是社區現在比較成熟,mloss上面發布的Python程序越來越多。最著名的就是scikit.learn了吧,幾乎涵蓋了機器學習中常用的演算法,而且scikit.learn更新非常快。

scikit.learn只是舉了一個例子,還有orange,pyml等很多非常棒的package,有了這些包的支持,做數據挖掘和機器學習的時候,就會很節省時間了。


根據我這幾個月的實際使用情況來看,R的軟體包確實很豐富,但是這個也有很大的壞處,包的水平參差不齊,會面臨各種版本不兼容的情況;舉個例子,也許你的統計包只能用3.0以下的R,而你需要的第三方繪圖包確實需要最新版的R,很傷腦筋;加之眾多軟體包在很早就停止維護了,從這個角度來看,包的數量多並不是一個很強的優勢。

python的各類統計和計量的包已經到了可以用的程度了,由於開發團隊活躍,導致包文檔的及時性和開發思路一致,一通百通,使用起來很順手;但是python的問題在於包不成熟,就比如我在使用python的pandas包是就發現其參數有尚未實現的情況,詳情見專有型數據處理。

綜合來看,python是適合做數據的,一是,對於非計算機科班出身不會有技術問題,python本身是非常便於使用的;二是,數據挖掘需要的工具在目前來看python基本都已經具備,並且在穩步的發展;三是,python在面臨性能問題時解決方案眾多。


如果我簡單回答"不是",以為至少可以阻止一些想做數據挖掘的人去學python反而沒有及時學好R語言。儘管我招聘工程師的JD 里也提到了python, 但並非直指數據挖掘,而是為了ETL部分及大數據處理。看到大家對這樣一個問題異口同聲直接給了肯定的回答,我意識到但不能立刻確定自己對此有局限性認識,感覺怪怪的。

另外,想了解SAS的去http://www.ifeique.com/


depends。


如果你想用別人做好的成熟的輪子,那 python 是不二之選。因為 python 輪子多而且全,比如 numpy,scipy,scikit learn,gensim 等等都是成熟的輪子。

至於什麼叫成熟,主要是一下兩點:

1. 快,numpy 中大量用 c 寫的 data structure,和 function,用起來及其快,而且方便。而且和其他輪子協作及其好

2. 安全,因為 python 是廣泛應用,而且開源,標準的語言,所以輪子是基本不會出 bug 的,放心用。

這樣節省了及其多的開發時間,在程序的運行效率上也不會有極大的降低。


當然,如果你需要對其他人的輪子有很大的更改,甚至於從數據結構上 numpy 都沒法滿足你,或者你需要追求速度,比如像微軟,要帶那麼強大的東西,還要保證速度。那你也就必須要用 c 了。。。python實在太慢。。。


Python相對於R是有很多優點的,R基本不存在數據結構的概念,導致你沒有辦法優化演算法

R相對Python的優點可能在於更多的包(比如數據可視化和神經網路,這兩個用Python不太好做)


適合,但是在面對海量的數據和分散式支持的時候,要麼用C寫寫介面,要麼就改源碼吧,總覺得Python處理大數據的時候太慢。


Python很不錯,能滿足絕大方面的需求,比如數據預處理,格式轉換等等。對於這些計算資源要求不是很高的地方可以用純Python來做。如果遇到純Python處理起來比較吃力的,可以混合c來加快效率,基於c的Python庫也有很多。用Python做科學研究的學者越來越多,工具數量也越來越多。 總之,Python很適合數據挖掘 :-)


請參見NumPy文檔,自己先研究。你需要明確一點python僅僅是一種效率相對較高的工具語言,適合做desktop research. data mining也僅僅是一種分析方法或者研究工具,而且,根據我的經驗我真的不建議在研究方法論和工具的選擇上走所謂的捷徑或者感知上的通途。就像讀書從薄到厚再到薄,是一樣的,關注最基礎基本的東西,到時候你會覺得所謂方法論和工具是信手拈來的事情而且並不是那麼重要。


只要能解決實際問題,用什麼工具來學習數據挖掘都是無所謂的,數據挖掘首推Python,那麼,通過Python來學習數據挖掘,我們需要掌握Python中的哪些知識

  1、Pandas庫的操作

  Panda是數據分析特別重要的一個庫,我們要掌握以下三點:

  1)pandas 分組計算;

  2)pandas 索引與多重索引;

  索引比較難,但是卻是非常重要的

  3)pandas 多表操作與數據透視表

  2、numpy數值計算

  numpy數據計算主要的應用是在數據挖掘,對於以後的機器學習,深度學習,這也是一個必須掌握的庫,我們要掌握以下內容:

  1)Numpy array理解;

  2)數組索引操作;

  3)數組計算;

  4)Broadcasting(線性代數裡面的知識)

  3、數據可視化-matplotlib與seaborn

  1)Matplotib語法

  python最基本的可視化工具就是matplotlib。我們咋一看Matplotlib與matlib有點像,我們要搞清楚二者的關係是什麼,這樣我們學習起來才會比較輕鬆。

  2)seaborn的使用

  seaborn是一個非常漂亮的可視化工具。

  3)pandas繪圖功能

  pandas是做數據分析的,也提供了一些繪圖的API。

4、數據挖掘入門

  這部分是最難也是最有意思的一部分,要掌握以下幾個部分:

  1)機器學習的定義

  在這裡跟數據挖掘先不做區別

  2)代價函數的定義

  3)Train/Test/Validate

  4) Overfitting的定義與避免方法

  5、數據挖掘演算法

  數據挖掘發展到現在,演算法已經非常多了,下面只需掌握最簡單的,最核心的,最常用的演算法;

  1)最小二乘演算法;

  2)梯度下降;

  3)向量化;

  4)極大似然估計;

  5)Logistic Regression

  6) Decision Tree

  7) RandomForesr

  8) XGBoost

  6、數據挖掘實戰

通過機器學習裡面最著名的庫scikit-learn來進行模型的理解。

   以上,就是為大家釐清的數據挖掘學習邏輯。可是,這還僅僅是開始,在通往數據挖掘師與數據科學家的道路上,我們還要學習文本處理與自然語言的知識、Linux與Spark的知識、深度學習的知識等等,我們要保持持續的興趣來學習數據挖掘。

推薦閱讀:什麼是數據挖掘,為什麼能成為公司差異化競爭的核心? - 大數據 多智時代


python在數據挖掘領域有很多成熟的框架和演算法庫,如numpy,scipy等等,而且在國外作為一門教學語言,一些新提出的演算法理論也大都傾向於使用python之類的腳本語言實現,優勢自然不言而喻。但"適合"這個詞,還是因人而異吧。


數據挖掘感覺還是R專業一些,能直接接觸到最新的方法,某些領域可能R做得更專業一點。

當然,如果python也不是說不行——一般的情景兩者都能實現。

另外,也有人用python調用R的,其實發揮到極致,無論什麼語言都能實現。


挺適合的,最好能與R搭配使用,應該能滿足大多數企業和用戶的需求。電商互聯網的在線實時挖掘除外。


Python作為數據挖掘來使用再適合不過了,作為編程肯定會有諸多不同的想法,只有使用一門開發效率高的語言才能測試其想法是否可行,只要想法OK其他的就簡單了


來聊聊Python的優點吧。

1. 整合能力強,什麼牛鬼蛇神的數據格式都可載入,典型的膠水語言;

2. 入門比較簡單,解釋性強,文科出身亦可讀懂甚者精通;

3. 豐富的數據處理、可視化庫、機器學習庫,包括Numpy、Scipy、Pandas、Matplotlib、SK-learn,從數據研究角度而言很好的繼承了R的優點並融合了最新的機器學習演算法;代碼效率甚高;

4. 別忘了,什麼TensorFlow、MXNet、Keras這些深度學習框架都集成了喲;

所以答案很顯然,必須是一門非常適合數據挖掘的語言~


非常適合,不管是數據預處理、建模、驗證還是部署


有本書叫做《機器學習學習實戰》也是用python的,python在做這類的方向上,國外做的比較多,各類庫啊,資料啊,比較多………所以感覺python就在這方面很有優勢。另外推薦一門,我連門都沒入的語言R語言,更適合做數據挖掘。


這裡是我之前在Quora上看到的兩個問題,希望對你的疑惑能夠有所幫助。

Why Is Python A Language Of Choice For Data Scientists?

http://www.quora.com/Is-Python-the-most-important-programming-language-to-learn-for-aspiring-data-scientists-data-miners


不是說什麼語言適合什麼工作,而是什麼工具適合你做這項工作。

python是一個很好的工具,總看一些文章說一個程序員應該學習一下。那麼就學習一下,看看人家說的是否是對的。

我學習了,發現python很好玩,做東西很快,尤其是做個網路程序,數據處理什麼的。

要我說,我建議你也學學。


推薦閱讀:

隨機森林是否需要後剪枝?sklearn為什麼沒有實現這個功能,是否有人實現了這個功能?
聚類與分類有什麼區別?
數據挖掘SPSS,Python,《機器學習實戰》先學什麼好?
LDA訓練出主題之後,怎麼再通過主題計算出一篇文檔對於所有主題的分布呢?
IBM spss modeler 是什麼?

TAG:Python | 數據挖掘 | 數據分析 | 互聯網數據分析 |