835
技術社區[雲棲]
《Python數據挖掘:概念、方法與實踐》擴展你的數據挖掘工具箱
擴展你的數據挖掘工具箱
麵對感官信息時,人類自然想要尋找模式,對其進行區別、分類和預測。這種尋找周圍模式的過程是人類的基本活動,人類的大腦對此很擅長。利用這種技能,我們的祖先更好地掌握了狩獵、聚會、烹飪和組織知識。因此,人類最早計算機化的任務是模式識別和模式預測也就不足為奇了,這種渴望一直持續到現在。近來,根據給定項目的目標,使用計算機找出數據中的模式,已經涉及數據庫係統、人工智能、統計學、信息檢索、計算機視覺和其他各種計算機科學子領域,以及信息係統、數學或者商業等。不管我們將這種活動稱作什麼—數據庫中的知識發現、數據挖掘、數據科學,其主要使命始終是找出有趣的模式。
這一使命聽起來似乎有些微不足道,數據挖掘已經存在了很長時間,對其實現已經積累了足夠多的變種,但是現在它已經成為了一個廣泛而複雜的領域。我們可以想象一所烹飪學校,其中的每位新人首先學習的是如何煮開水,如何使用刀具,然後才轉向更高級的技能,如製作鬆餅或者為雞肉去骨。在數據挖掘中,也有一些常用的技術,剛入門的數據挖掘人員也要學習它們:如何構建分類器,如何在數據中找到聚類宏。但是,本書的主題是精通Python數據挖掘,所以,作為“精通”級別的書籍,目標是傳授給你一些在之前的數據挖掘項目中未曾見過的技術。
在第1章中,我們將介紹如下主題:
什麼是數據挖掘?要確定數據挖掘在不斷增強的其他相似概念中的位置,還將學習這一學科成長和變化的曆史。
我們如何進行數據挖掘?在此,我們將對比數據挖掘項目中常用的幾種過程或者方法論。
數據挖掘中使用哪些技術?在這一部分,將總結數據挖掘定義中包含的典型數據分析技術,並強調這本精通級書籍將要涵蓋的較為獨特卻未得到應有重視的技術。
如何建立數據挖掘工作環境?最後,我們將經曆建立基於Python開發環境的過程,我們將用這個環境完成本書餘下部分中的項目。
1.1 什麼是數據挖掘
前文解釋了數據挖掘的目標是找出數據中的模式,但是細看之下,這一過分簡單的解釋就站不住腳。畢竟,尋找模式難道不也是經典統計學、商業分析、機器學習甚至更新的數據科學或者大數據的目標嗎?數據挖掘和其他這些領域有什麼差別呢?當我們實際上是忙於挖掘模式時,為什麼將其稱作“數據挖掘”?我們不是已經有數據了嗎?
從一開始,“數據挖掘”這一術語就明顯有許多問題。這個術語最初是統計學家們對盲目調查的輕蔑叫法,在這種調查中,數據分析人員在沒有首先形成合適假設的情況下,就著手尋找模式。但是,這一術語在20世紀90年代成為主流,當時的流行媒體風傳一種激動人心的研究,將成熟的數據庫管理係統領域與來自機器學習和人工智能的最佳算法結合起來。“挖掘”這一單詞的加入預示著這是現代的“淘金熱”,執著、無畏的“礦工”們將發現(且可能從中得益)之前隱藏的珍寶。“數據本身可能是珍稀商品”這一思路很快吸引了商業上和技術刊物的注意,使他們無視先驅們努力宣傳的、更為全麵的術語—數據庫中的知識發現(KDD)。
但是,“數據挖掘”這一術語沿用了下來,最終,該領域的一些定義試圖改變其解釋,認為它指的隻是更漫長、更全麵的知識發現過程中的一步。今天“數據挖掘”和KDD被視為非常相似、緊密相關的術語。
那麼,其他相關術語如機器學習、預測性分析、大數據和數據科學又是怎麼回事?這些術語和數據挖掘或者KDD是不是一回事?下麵我們比較這些術語:
機器學習是計算機科學中的一個非常特殊的子領域,其焦點是開發能從數據中學習以作出預測的算法。許多數據挖掘解決方案使用了來自機器學習的技術,但是並不是所有數據挖掘都試圖從數據中作出預測或者學習。有時候,我們隻是想要找到數據中的一個模式。實際上,在本書中,我們所研究的數據挖掘解決方案中隻有少數使用了機器學習技術,而更多的方案中並沒有使用。
預測性分析有時簡稱為分析,是各個領域中試圖從數據中作出預測的計算解決方案的統稱。我們可以思考商業分析、媒體分析等不同術語。有些(但並不是全部)預測性分析解決方案會使用機器學習技術進行預測,但是同樣,在數據挖掘中,我們並不總是對預測感興趣。
大數據這一術語指的是處理非常大量數據的問題和解決方案,與我們是要搜索數據中的模式還是簡單地存儲這些數據無關。對比大數據和數據挖掘這兩個術語,許多數據挖掘問題在數據集很大時更為有趣,所以為處理大數據所開發的解決方案遲早可用於解決數據挖掘問題。但是這兩個術語隻是互為補充,不能互換使用。
數據科學是最接近於KDD過程的術語,數據挖掘是它們的一個步驟。因為數據科學目前是極受歡迎的流行語,它的含義將隨著這一領域的成熟而繼續發展和變化。
我們可以查看Google Trends,了解上述術語在一段時期內的搜索熱度。Google Trends工具展示了一段時期內人們搜索各種關鍵詞的頻度。在圖1-1中,新出現的術語“大數據”目前是炙手可熱的流行語,“數據挖掘”居於第二位,然後是“機器學習”、“數據科學”和“預測性分析”。(我試圖加入搜索詞“數據庫中的知識發現”,但是結果太接近於0,無法看到趨勢線。)y軸以0~100的指數顯示了特定搜索詞的流行度。此外,我們還將Google Trends給出的2014~2015年每周指數組合為月平均值。
圖1-1 5個常用數據相關術語的Google Trends搜索結果
1.2 如何進行數據挖掘
由於數據挖掘傳統上被視為KDD全過程中的一步,並且越來越成為數據科學過程的一部分,在本節中我們將熟悉其所涉及的步驟。進行數據挖掘有多種流行的方法。本書中我們重點介紹4種方法:其中兩種取自數據挖掘理論的教科書,一種取自行業中非常實用的過程,一種是為教授入門者而設計的。
1.2.1 Fayyad等人的KDD過程
知識發現和數據挖掘過程的早期版本之一由Usama Fayyad、Gregory Piatetsky-Shapiro和 Padhraic Smyth在1996年的一篇論文(The KDD Process for Extracting Useful Knowledge from Volumes of Data)中定義。這篇論文在當時很重要,它將快速變化的KDD方法論精煉為具體的一組步驟。如下步驟以原始數據開始,以知識作為結束:
數據選擇。這一步的輸入是原始數據,輸出是較小的數據子集,稱為目標數據。
數據預處理。目標數據得到清理,刪除異常值,處理缺失數據。這一步的輸出是預處理數據或清理後數據。
數據變換。清理後的數據組織成適合於挖掘步驟的格式,如果有必要,精簡特征或者變量的數量。這一步的輸出是變換後數據。
數據挖掘。用適合於問題的一種或者多種數據挖掘算法對變換後數據進行挖掘,這一步的輸出是發現的模式。
數據解釋/評估。評估所發現模式解決手上問題的能力。這一步的輸出是知識。
由於這一過程從原始數據得出知識,因此,這些作者對“數據庫中的知識發現”這一術語作出了真正的貢獻,而不僅僅是簡單的數據挖掘。
1.2.2 韓家煒等人的KDD過程
韓家煒、Micheline Kamber和裴健所著的流行數據挖掘教科書《Data Mining: Concepts and Techniques》描述了知識發現過程的另一個版本,其中的步驟也是從原始數據導出知識:
數據清理。這一步的輸入是原始數據,輸出是清理後的數據。
數據整合。在這一步中,清理後數據被整合(如果它們來自多個來源)。這一步的輸出是整合數據。
數據選擇。數據集被精簡為僅包含手上問題所需的數據。這一步的輸出是較小的數據集。
數據變換。較小的數據集被合並為一種適合於將來的數據挖掘步驟的形式,稱為變換後數據。
數據挖掘。變換後的數據由設計用於發現數據中模式的智能算法處理。這一步的輸出是一種或者多種模式。
模式評估。評估所發現模式的興趣度和解決手上問題的能力。這一步的輸出是適用於每個模式(代表知識)的興趣度計量。
知識表示。在這一步中,通過各種手段(包括可視化)將知識傳達給用戶。
在Fayyad和韓的方法中,都預計該過程在必要時需要多次重複這些步驟。例如,如果在變換步驟中,分析人員發現需要再進行一次數據清理或者預處理,這兩種方法都規定分析人員應該按原路返回,完成前麵未完成步驟的第二次迭代。
1.2.3 CRISP-DM過程
KDD過程的第3種流行版本稱為CRISP-DM,其用於許多商業和應用領域,它的全稱是CRoss-Industry Standard Process for Data Mining(跨行業數據挖掘標準過程),包含如下步驟:
1)業務理解。在這一步中,分析人員花時間從業務視角理解數據挖掘項目的動機。
2)數據理解。在這一步中,分析人員熟悉數據及其潛在優勢和不足,並開始生成假設。分析人員的任務是在必要時重新評估第1步的業務理解。
3)數據準備。這一步包含其他模型作為單獨步驟列舉的選擇、整合、變換和預處理步驟。CRISP-DM模型對這些任務的執行順序沒有要求。
4)建模。這一步中對數據應用算法以發現模式。這一步驟最接近於其他KDD模型中的數據挖掘步驟。分析人員的任務是在建模和挖掘步驟需要的時候重新評估第3步的數據準備。
5)評估。評估模型和發現的模式在回答手上的業務問題中的價值。分析人員的任務是在必要時重溫第1步的業務理解。
6)部署。呈現發現的知識和模型,並投產以解決手上的原始問題。
這種方法的優勢之一是,迭代是內建的。在特定步驟之間,分析人員將檢查當前步驟仍然與之前的某些步驟保持一致。另一個優勢是明確地提醒分析人員,即使在評估步驟中也要將業務問題放在項目的核心位置。
1.2.4 六步過程
當我在大學裏教授數據科學入門課程時,使用了自己創造的一種混合方法。這種方法稱為“六步過程”,這種專門設計的方法對於授課很合適。我的六步方法消除了沒有經驗的學生在CRISP-DM中的開放式任務(如業務理解)或者基於企業任務(如部署)中可能遇到的歧義問題。此外,六步方法要求學生在過程的開始和最後回答“為什麼這麼做”和“這有什麼意義”的問題,以拓展學生的批判性思維技能。我的六步方法如下:
1)問題陳述。在這一步中,學生確定他們試圖解決的問題。在理想狀況下,了解進行這些工作的原因可以提高他們的積極性。
2)數據收集和存儲。在這一步中,學生們定位數據並規劃這一問題所需數據的存儲。他們還提供一些信息,這些信息與回答他們感興趣的問題所需數據的來源、格式以及所有字段含義相關。
3)數據清理。在這一步中,學生們認真選擇真正需要的數據,並將數據處理成挖掘步驟所需的格式。
4)數據挖掘。在這一步中,學生形式化所選擇的數據挖掘方法。他們描述使用的算法以及原因。這一步的輸出是模型和發現的模式。
5)表示和可視化。在這一步中,學生直觀地展示工作成果。這一步的輸出可以是表格、圖示、圖形、圖表、網絡框圖、映射圖等。
6)問題解決。這一步對數據挖掘初學者很重要,它明確地鼓勵學生評估第5步中展示的模式是不是第1步中提出的問題的答案。學生們被要求說明模型或者結果的局限性,確定用這種方法無法回答的部分相關問題。
1.2.5 哪一種數據挖掘方法最好
2014年,Gregory Piatetsky-Shapiro在其非常受歡迎的數據挖掘電子郵件通訊KD-Nuggets上進行的調查包含了一個問題:“你在分析、數據挖掘或者數據庫科學項目中使用哪一種主要方法?”
43%的調查對象表示他們使用CRISP-DM方法。
27%的調查對象使用自己的方法或者混合方法。
7%的調查對象使用傳統的KDD方法。
其餘調查對象選擇另一種KDD方法。
這些結果和2007年同一郵件通訊所做的相同調查結果類似。
我的最佳建議是,不要過於重視用於數據挖掘項目的方法,隨便挑一種即可。如果完全不使用任何方法,那麼就有遺漏重要步驟的危險。選擇看上去對你的項目和需求有效的方法,然後盡可能遵循該方法的步驟。
在本書中,我們將根據相關章節中研究的技術,選擇不同的數據挖掘方法。例如,盡管本書的焦點是數據挖掘步驟,但是仍然需要對每章中的項目實施健全的業務理解(CRISP-DM)或者問題陳述(六步過程)步驟,以便理解我們執行任務的原因和結果的意義。此外,為了學習特定的數據挖掘方法,我們可能還必須進行一些預處理,不管這一過程稱為“數據清理”、“整合”還是“變換”。但是通常來說,我們將盡可能減少此類任務,將焦點清晰地置於數據挖掘之上。在最後一章有個顯著的例外,我們將在那裏展示處理缺失數據和異常數據的具體方法。最後,盡管對於將數據挖掘過程的結果展示給受眾來說,數據可視化通常非常重要,我們仍然將盡可能減少這些任務,以便將重點放在主要的工作—數據挖掘上。
1.3 在數據挖掘中使用哪些技術
現在我們對數據挖掘在整個KDD或者數據科學過程中的位置有了了解,下麵就可以開始討論完成這一任務的細節了。
從試圖定義數據挖掘的早期起,幾類相關的問題就一再出現。Fayyad等人在1996年的另一篇重要論文“From Data Mining to Knowledge Discovery in Databases”中提出了6類問題,我們將其總結如下:
分類問題。這裏,有需要根據某些特征分成預定義類別的數據。我們需要一種算法,使用過去已經分類的數據,學習如何將未知數據置於正確的類別下。
聚類問題。這類問題是,我們需要根據數據點的特征將其分為不同類別,但是事先不知道這些類別。我們需要一種能夠計量數據點之間相似性並自動根據這些相似性分割數據的算法。
回歸問題。我們的數據必須根據某個預測變量進行映射,所以必須學習進行這種映射的函數。
摘要問題。假定我們的數據需要以某種方式縮短或者總結。這可能很簡單,隻是從數據計算基本統計數字;也可能很複雜,需要學習如何總結文本,或者為文本找出一個主題模型。
依賴性建模問題。對於這些問題,我們的數據之間可能有某種聯係,我們需要開發一個算法,計算這種聯係的概率,或者描述互相聯係的數據的結構。
變化和偏差檢測問題。在另一種情況下,我們的數據已經有了顯著的變化,或者數據的一些子集偏離了正常值。為了解決這些問題,我們需要一種能夠自動發現這些問題的算法。
在同年撰寫的另一篇論文中,這些作者還加入了其他幾種類別:
鏈接分析問題。我們有一些相關的數據點,必須發現它們之間的關係,並以數據集的支持程度和關係置信度的方式描述它們。
序列分析問題。想象我們的數據點遵循某種順序,如時間序列或者基因組,我們必須發現序列中的趨勢或者偏差,或者發現導致序列的原因,以及序列的演化方式。
韓家煒、Kamber和裴健在前麵提及的教科書中描述了數據挖掘所能解決的4類問題,並進一步將其分為描述性和預測性兩大類。描述性數據挖掘意味著找出模式,幫助我們理解擁有的數據。預測性數據挖掘意味著找出模式,幫助我們預測尚未擁有的數據。
在描述性類別中,他們列出了如下數據挖掘問題:
數據特性描述和數據區分問題,包括數據摘要或者概念特性描述(或稱描述)。
頻率挖掘,包括找出數據中的頻繁模式、關聯規則和相關性。
在預測性類別中,他們列出了如下問題:
分類,回歸
聚類
離群值和異常檢測
很容易看出,Fayyad等人和韓家煒等人的問題列表有許多相似之處,隻是項目的分組不同。確實,如果你過去曾經完成過數據挖掘項目,這兩個列表上出現的項目就是你可能已經熟悉的數據挖掘問題。分類、回歸和聚類是非常流行的基本數據挖掘技術,所以從業者們所看到的每本數據挖掘書籍幾乎都介紹過它們。
本書將使用哪些技術
由於本書是關於“精通”數據挖掘的圖書,因此我們將介紹幾種在標準書籍中不常介紹的技術。具體地說,我們將在第2章中介紹關聯規則,在第9章中介紹異常檢測。我們還將應用幾種對數據清理和數據預處理有幫助的數據挖掘技術,也就是第9章中的缺失值處理和第3章中通過實體匹配進行的一些數據整合。
除了從技術上定義數據挖掘之外,有時候人們還根據所挖掘的數據類型,劃分各種數據挖掘問題。例如,你可能聽人說過文本挖掘或者社交網絡分析。這些術語指的是所挖掘的數據類型,而不是用於挖掘的具體技術。例如,文本挖掘指的是任何應用於文本文檔的數據挖掘技術,而網絡挖掘指的是從網絡圖表數據中尋找模式。在本書中,我們將在第4章中進行一些網絡挖掘,在第6、7、8章中進行不同類型的文本文檔摘要,在第5章中根據情緒(文本中的情感)進行文本分類。
如果你和我一樣,現在可能會想,“對這些背景資料我受夠了,我想要寫點代碼。”我很高興你對實際項目感興趣。本書幾乎已經做好了開始編碼的準備,但是首先要建立一個好的工作環境。
1.4 如何建立數據挖掘工作環境
前麵幾節幫助我們更好地了解了將要從事的項目及原因。現在可以開始建立一個開發環境,支持所有項目工作了。由於本書的目的是介紹如何構建挖掘數據模式的軟件,因此我們將用一種通用編程語言編寫程序。Python編程語言具有非常強大且仍在不斷成長、專門致力於數據挖掘的社區。這個社區已經貢獻了一些非常方便的程序庫,我們可以用來進行高效的處理,我們還可以依靠他們提供的許多數據類型,更快地工作。
在本書編著時,有兩個版本的Python可供下載:現在被視為經典的Python 2(最新版本為2.7)和Python 3(最新版本為3.5)。本書將使用Python 3。因為我們需要使用許多相關的程序包和程序庫,盡可能地使數據挖掘體驗不那麼痛苦,也因為其中一些程序包和庫難以安裝,所以這裏我建議使用專為科學及數學計算設計的Python分發版本。具體地說,我推薦Continuum Analytics 製作的Python 3.5 Anaconda分發版本。他們的基本Python分發版本是免費的,所有組件都保證能夠協同工作,而無需我們進行令人沮喪的兼容性保證工作。
要下載Anaconda Python分發版本,隻需要用瀏覽器訪問Continuum Analytics的網站(https://www.continuum.io),根據提示符下載適合你的操作係統的Anaconda免費版本(目前的編號是3.5或者更高)。
啟動該軟件,將會看到如圖1-2所示的啟動畫麵。
根據你使用的版本和下載的時間,Anaconda中的每個應用程序中除了Launch按鈕之外可能還有幾個Update(更新)按鈕。如果你的軟件版本顯示需要,可以單擊每個按鈕以更新程序包。
圖1-2 Continuum Anaconda Navigator
為了開始編寫Python代碼,單擊Spyder以啟動代碼編輯器和集成開發環境。如果你想使用自己的文本編輯器(如MacOS上的TextWrangler或者Windows上的Sublime編輯器),完全沒有問題。可以從命令行運行Python代碼。
花一點時間將Spyder配置成你喜歡的樣子,設置顏色和常規布局,或者保留默認值。對於我自己的工作空間,我移動了幾個控製台窗口,建立一個工作目錄,並進行幾個自定義調整,使自己更適應這個新編輯器。你也可以這麼做,使開發環境更舒適。
現在,我們已經為測試編輯器和安裝程序庫做好了準備。單擊File(文件)並選擇New File(新建文件)測試Spyder編輯器,觀察其工作方式。然後,輸入簡單的“Hello World”語句:
單擊綠色箭頭,按下F5鍵或者單擊Run(運行)菜單中的Run命令,運行程序。不管用哪一種方式,程序將執行,你將在控製台輸出窗口看到輸出。
此時,我們知道Spyder和Python正在工作,可以測試和安裝一些程序庫了。
首先,打開一個新文件,將其保存為packageTest.py。在這個測試程序中,我們將確定Scikit-learn是否已經隨Anaconda正確安裝。Scikit-learn是很重要的程序包,包含了許多機器學習函數,以及用於測試這些函數的現成數據集。許多書籍和教程使用Scikit-learn示例教授數據挖掘,所以在我們的工具箱中也有這個程序包。我們將在本書的多個章節中使用這個程序包。
運行Scikit-learn網站上的教程中的如下小程序(可以在https://scikit-learn.org/stable/tutorial/basic/tutorial.html #loading-an-example-dataset上找到),它將告訴我們環境是否正常建立:
如果上述程序運行正常,將在控製台窗口中輸出顯示類列表數據結構中的一係列數值:
這個輸出足以說明Scikit-learn已正常安裝。接下來,添加一行代碼,它將幫助我們學習digits.data結構的數據類型:
輸出如下:
從上述輸出,我們可以確定Scikit-learn依賴另一個重要程序包Numpy處理其數據結構。Anaconda也已經正常安裝Numpy,這正是我們要確認的事項。
接下來,我們將測試是否已經包含了網絡分析庫。我們將在第4章中使用Networkx程序庫構建圖形化社交網絡。下麵的代碼示例創建一個具有一個節點的小型網絡,並在屏幕上打印其類型:
輸出如下:
這正是我們想要看到的輸出,它告訴我們Networkx已經安裝並正常工作。
接下來,我們將測試後麵幾章需要的文本挖掘軟件。這也很方便,自然語言工具包(Natural Language Toolkit,NLTK)也已隨Anaconda安裝。但是,它有自己的圖形化下載工具,用於下載它使用的各種語料庫和單詞列表。Anaconda沒有自動安裝這些組件,因此我們必須人工完成。為了得到單詞列表和字典,需創建一個新的Python文件,導入NTLK模塊,然後提示NTLK啟動圖形化下載工具:
新的下載程序窗口將在Anaconda中打開(見圖1-3):
圖1-3 NTLK下載程序對話窗口
在這個下載程序窗口中,從標識符列表中選擇all(全部),更改Download Directory(下載目錄,可選),並按下Download(下載)按鈕。下載程序窗口左下角的紅色進度條將隨著每個數據集安裝而變動。如果連接較慢,這一步可能需要花費幾分鍾。圖1-4中的屏幕截圖展示了這一下載中的步驟:
圖1-4 工作中的NTLK下載程序
下載程序完成NTLK語料庫的安裝後,可以測試它們是否正常工作。下麵是一個短的Python程序,其中要求NTLK使用布朗大學的語料庫並打印前10個單詞:
該程序的輸出如下,是NTLK布朗文本語料庫的前10個單詞,它們恰好來自一篇新聞報道:
從這個輸出,我們可以確信NTLK已經安裝,所有必要的語料庫也已經安裝。
接下來,將安裝文本挖掘模塊Gensim,在後麵進行主題建模時需要它。Gensim默認不作為Anaconda的一部分預先安裝,而是可使用Anaconda內建的conda安裝程序輕鬆添加,有數百個這樣的程序包,Gensim是第一個。從Anaconda Tools菜單,選擇Open a Terminal(打開終端)命令,並輸入conda install gensim。如果提示更新numpy和scipy,則輸入y,安裝將繼續。
安裝結束時,啟動一個新的Python程序,輸入來自Gensim網站的測試程序的如下精簡版本:
這個程序所做的隻不過是測試該模塊是否正常導入,然後在屏幕上打印一個列表,但是這在現在已經足夠了。
最後,由於本書是關於數據挖掘或者數據結構中的知識發現的書籍,因此使用某種數據庫軟件絕對是個好主意。我選擇MySQL實現本書中的項目,因為它是免費軟件,易於安裝,可用於許多種操作係統。
要得到MySQL,可以進入https://dev.mysql.com/downloads/mysql/,找到你要用操作係統的免費社區版本(Community Edition)下載頁麵。
為了讓Anaconda Python與MySQL通信,必須安裝一些MySQL Python驅動程序。我喜歡pymysql驅動程序,因為它相當健壯,沒有標準驅動程序常會有的一些Bug。從Anaconda中,啟動一個終端窗口,運行如下命令:
現在所有模塊似乎都已經安裝,可以在需要它們時使用。如果還需要其他模塊,或者其中一個模塊過時,現在我們也已經知道如何在必要時安裝或者升級模塊了。
1.5 小結
在本章中,我們學習了將數據挖掘工具箱擴展到大師級別所需要做的工作。首先,我們從作為數據庫知識發現(KDD)過程一部分的數據挖掘曆史開始,對該領域進行了全麵的介紹。還比較了數據挖掘其他類似的領域,如數據科學、機器學習和大數據等。
接下來,概述了KDD過程中大部分專家認為最重要的工具和技術,特別關注挖掘和分析步驟中最頻繁使用的技術。為了真正精通數據挖掘,重要的是要關注和簡單的教科書示例不同的問題。因此,我們將致力於更獨特的數據挖掘技術,如生成摘要和尋找離群值,並關注更加不同尋常的數據類型,如文本和網絡。
在本章的最後,我們組合了一個健全的數據挖掘係統。我們的工作空間以強大的全功能編程語言Python及其許多實用數據挖掘程序包(如NTLK、Gensim、Numpy、Networkx和Scikit-learn)為中心,輔之以易於使用的免費數據庫MySQL。
現在,通過以上對軟件包的討論使我們想到:你是否對哪些程序包最經常一起使用感到疑惑?是較為常見的NTLK和Networkx組合,還是相對不常見的程序包搭配?在下一章中,我們將解決這一類問題。在第2章中,我們將學習如何生成經常發現的配對、三元組、四元組等的列表,然後根據找出的模式作出預測。
最後更新:2017-05-19 16:37:52
上一篇:
《Python數據挖掘:概念、方法與實踐》關聯規則挖掘
下一篇:
Maven安裝第三方Jar包到本地倉庫
《Apache Zookeeper 官方文檔》-1簡介
阿裏雲數據庫CloudDBA智慧解決數據庫性能優化和問題診斷難題
Java中靜態方法不具有多態性
半年盤點:2017年的10大安全收購
TensorFlow教程之進階指南 3.3 TensorBoard:可視化學習
談談Nullable<T>的類型轉換問題
JDBC PreparedStatement 批量查詢 in 的實現 方案
又有哪些劇集被黑客泄露?HBO : 我們不玩了!
undefined reference to `__android_log_print'
hibernate配置文件hibernate.cfg.xml的詳細解釋