本節書摘來自華章出版社《safe 4.0參考指南:精益軟體與系統工程的規模化靈活架構》一書中的第1章,第1節,作者[美] 梅甘·斯誇爾(megan squire)更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
擴充你的資料挖掘工具箱
面對感官資訊時,人類自然想要尋找模式,對其進行差別、分類和預測。這種尋找周圍模式的過程是人類的基本活動,人類的大腦對此很擅長。利用這種技能,我們的祖先更好地掌握了狩獵、聚會、烹饪群組織知識。是以,人類最早計算機化的任務是模式識别和模式預測也就不足為奇了,這種渴望一直持續到現在。近來,根據給定項目的目标,使用計算機找出資料中的模式,已經涉及資料庫系統、人工智能、統計學、資訊檢索、計算機視覺和其他各種計算機科學子領域,以及資訊系統、數學或者商業等。不管我們将這種活動稱作什麼—資料庫中的知識發現、資料挖掘、資料科學,其主要使命始終是找出有趣的模式。
這一使命聽起來似乎有些微不足道,資料挖掘已經存在了很長時間,對其實作已經積累了足夠多的變種,但是現在它已經成為了一個廣泛而複雜的領域。我們可以想象一所烹饪學校,其中的每位新人首先學習的是如何煮開水,如何使用刀具,然後才轉向更進階的技能,如制作松餅或者為雞肉去骨。在資料挖掘中,也有一些常用的技術,剛入門的資料挖掘人員也要學習它們:如何建構分類器,如何在資料中找到聚類宏。但是,本書的主題是精通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網站上的教程中的如下小程式(可以在http://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,可以進入http://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章中,我們将學習如何生成經常發現的配對、三元組、四元組等的清單,然後根據找出的模式作出預測。