




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《Python數(shù)據(jù)挖掘實戰(zhàn)》第一章緒論第1章緒論.pptx第2章Python數(shù)據(jù)挖掘模塊.pptx第3章數(shù)據(jù)探索.pptx第4章數(shù)據(jù)預處理.pptx第5章特征選擇.pptx第6章基礎分類模型及回歸.pptx第7章集成技術.pptx第8章聚類分析.pptx第9章關聯(lián)規(guī)則挖掘.pptx第10章時間序列挖掘.pptx第11章異常檢測.pptx第12章智能推薦.pptx全套可編輯PPT課件二、
數(shù)據(jù)挖掘的基本步驟
一、數(shù)據(jù)挖掘概述主要內容三、數(shù)據(jù)挖掘的常見任務四、數(shù)據(jù)挖掘的主要工具3
為什么挖掘數(shù)據(jù)?大量數(shù)據(jù)被收集,存儲在數(shù)據(jù)庫、數(shù)據(jù) 倉庫中。計算機越來越便宜,功能越來越強大。數(shù)據(jù)爆炸但知識貧乏。人們積累的數(shù)據(jù)越來越多。但是,目前這些數(shù)據(jù)還僅僅應用在數(shù)據(jù)的錄入、查詢、統(tǒng)計等功能,無法發(fā)現(xiàn)數(shù)據(jù)中存在的關系和規(guī)則,無法根據(jù)現(xiàn)有的數(shù)據(jù)預測未來的發(fā)展趨勢,導致了“數(shù)據(jù)爆炸但知識貧乏”的現(xiàn)象。一、數(shù)據(jù)挖掘概述為什么挖掘數(shù)據(jù)?數(shù)據(jù)以極快的速度收集和存儲(GB/hour)傳統(tǒng)的技術難以處理這些——
rawdata低價值密度的數(shù)據(jù)許多數(shù)據(jù)根本未曾分析過數(shù)據(jù)挖掘可能幫助科學家一、數(shù)據(jù)挖掘概述定義:數(shù)據(jù)、信息和知識(1)數(shù)據(jù)(Data):以文本、數(shù)字、圖形、聲音和視頻等形式對現(xiàn)實世界中的某種實體、事件或活動的記錄,是未經(jīng)加工和修飾的原料。(2)信息(Information):是為了特定的目的,對數(shù)據(jù)進行過濾、融合、標準化、歸類等一系列處理后得到的有價值的數(shù)據(jù)流。(3)知識(Knowledge):是通過對信息進行歸納、演繹、提煉和總結,得到的更具價值的觀點、規(guī)律或者方法論。一、數(shù)據(jù)挖掘概述什么是數(shù)據(jù)挖掘?定義:數(shù)據(jù)挖掘是從大量的、不完全的、有噪聲的、模糊的、隨機的數(shù)據(jù)中提取隱含在其中的、人們事先不知道的、但又是潛在有用的信息和知識的過程。其它名字:Knowledgediscovery(mining)indatabases(KDD),knowledgeextraction,data/patternanalysis,informationharvesting一、數(shù)據(jù)挖掘概述數(shù)據(jù)挖掘的歷史演變一、數(shù)據(jù)挖掘概述數(shù)據(jù)挖掘是多學科交叉領域利用了來自如下一些領域的思想:統(tǒng)計學的抽樣、估計和假設檢驗人工智能、機器學習的搜索算法、建模技術和學習理論數(shù)據(jù)庫系統(tǒng)提供有效的存儲、索引和查詢處理支持此外,還包括:分布式技術、最優(yōu)化、進化計算、信息論、信號處理、可視化和信息檢索等技術。MachineLearning/AIStatisticsDataMiningDatabasesystems一、數(shù)據(jù)挖掘概述
在什么樣的數(shù)據(jù)上進行挖掘?在計算機科學中,數(shù)據(jù)是數(shù)字、文字、聲音、圖像、視頻等可以輸入到計算機并被識別的符號。如:企業(yè)運營數(shù)據(jù)用戶數(shù)據(jù)視頻、游戲數(shù)據(jù)等從表現(xiàn)形式上:數(shù)字、文本、聲音、圖像、視頻等從數(shù)據(jù)組織和存儲方式上看,分為:結構化數(shù)據(jù)非結構數(shù)據(jù)一、數(shù)據(jù)挖掘概述通常,數(shù)據(jù)挖掘可以在任何類型的數(shù)據(jù)上進行,包括:關系數(shù)據(jù)庫、數(shù)據(jù)倉庫、事務數(shù)據(jù)庫、高級數(shù)據(jù)庫系統(tǒng)、文本、Web、日志、圖像、視頻、語音等。
在什么樣的數(shù)據(jù)上進行挖掘?一、數(shù)據(jù)挖掘概述數(shù)據(jù)挖掘的應用
數(shù)據(jù)挖掘技術的應用非常廣泛,在金融、電子商務、醫(yī)學、市場營銷、生物學、科學研究等方面均有大量應用,例如:信貸風險管理反洗錢監(jiān)測客戶關系管理蛋白質分子結構預測股票交易地震預警商品推薦一、數(shù)據(jù)挖掘概述二、數(shù)據(jù)挖掘的一般流程典型的數(shù)據(jù)分析的流程:需求分析:數(shù)據(jù)分析中的需求分析也是數(shù)據(jù)分析環(huán)節(jié)的第一步和最重要的步驟之一,決定了后續(xù)的分析的方向、方法。數(shù)據(jù)獲?。簲?shù)據(jù)是數(shù)據(jù)分析工作的基礎,是指根據(jù)需求分析的結果提取,收集數(shù)據(jù)。數(shù)據(jù)預處理:數(shù)據(jù)預處理是指對數(shù)據(jù)進行數(shù)據(jù)合并,數(shù)據(jù)清洗,數(shù)據(jù)變換和數(shù)據(jù)標準化,數(shù)據(jù)變換后使得整體數(shù)據(jù)變?yōu)楦蓛粽R,可以直接用于分析建模這一過程的總稱。數(shù)據(jù)挖掘建模:通過統(tǒng)計分析、回歸分析、聚類、分類、關聯(lián)規(guī)則、智能推薦等模型與算法發(fā)現(xiàn)數(shù)據(jù)中的有價值信息,并得出結論的過程。模型評價與優(yōu)化:模型評價是指對已經(jīng)建立的一個或多個模型,根據(jù)其模型的類別,使用不同的指標評價其性能優(yōu)劣的過程。部署:部署是指將通過了正式應用數(shù)據(jù)分析結果與結論應用至實際生產(chǎn)系統(tǒng)的過程。二、數(shù)據(jù)挖掘的一般流程三、數(shù)據(jù)挖掘的常見任務預測vs.描述預測(Prediction)根據(jù)其他屬性的值,預測特定屬性的值描述(Description)導出概括數(shù)據(jù)中潛在聯(lián)系的模式任務類型:分類(Classification)[Predictive]回歸(Regression)[Predictive]關聯(lián)規(guī)則發(fā)現(xiàn)(AssociationRuleDiscovery)[Descriptive]聚類(Clustering)[Descriptive]異常/偏差檢測(Anomaly/DeviationDetection)[Predictive]時間序列分析(timeseriesanalysis)四、數(shù)據(jù)挖掘工具介紹
數(shù)據(jù)挖掘是一個包含多個步驟的復雜數(shù)據(jù)處理流程,在實施過程中必須依賴特定的數(shù)據(jù)挖掘工具或軟件,才能取得較好的結果。商業(yè)化的數(shù)據(jù)挖掘軟件:SAS的EnterpriseMiner,IBM的SPSSModeler,Oracle的DataMiner等開源數(shù)據(jù)挖掘軟件:Weka,RapidMiner,KNIME等基于腳本語言的工具:如Python語言,R語言等語法簡單精練。對于初學者來說,比起其他編程語言,Python更容易上手。有很強大的庫??梢灾皇褂肞ython這一種語言去構建以數(shù)據(jù)為中心的應用程序。功能強大。Python是一個混合體,豐富的工具集使它介于傳統(tǒng)的腳本語言和系統(tǒng)語言之間。Python不僅具備所有腳本語言簡單和易用的特點,還提供了編譯語言所具有的高級軟件工程工具。不僅適用于研究和原型構建,同時也適用于構建生產(chǎn)系統(tǒng)。研究人員和工程技術人員使用同一種編程工具,會給企業(yè)帶來非常顯著的組織效益,并降低企業(yè)的運營成本。Python是一門膠水語言。Python程序能夠以多種方式輕易地與其他語言的組件“粘接”在一起。Python數(shù)據(jù)分析主要包含以下5個方面優(yōu)勢四、數(shù)據(jù)挖掘工具介紹快速高效的多維數(shù)組對象ndarray。對數(shù)組執(zhí)行元素級的計算以及直接對數(shù)組執(zhí)行數(shù)學運算的函數(shù)。讀寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具。線性代數(shù)運算、傅里葉變換,以及隨機數(shù)生成的功能。將C、C++、Fortran代碼集成到Python的工具。
Python數(shù)據(jù)分析常用類庫1.NumPy(NumericalPython)——
Python科學計算的基礎包四、數(shù)據(jù)挖掘工具介紹SciPy主要包含了8個模塊,不同的子模塊有不同的應用,如插值、積分、優(yōu)化、圖像處理和特殊函數(shù)等。egrate數(shù)值積分例程和微分方程求解器scipy.linalg擴展了由numpy.linalg提供的線性代數(shù)例程和矩陣分解功能scipy.optimize函數(shù)優(yōu)化器(最小化器)以及根查找算法scipy.signal信號處理工具scipy.sparse稀疏矩陣和稀疏線性系統(tǒng)求解器scipy.specialSPECFUN(這是一個實現(xiàn)了許多常用數(shù)學函數(shù)的Fortran庫)的包裝器scipy.stats檢驗連續(xù)和離散概率分布、各種統(tǒng)計檢驗方法,以及更好的描述統(tǒng)計法scipy.weave利用內聯(lián)C++代碼加速數(shù)組計算的工具2.SciPy——專門解決科學計算中各種標準問題域的模塊的集合四、數(shù)據(jù)挖掘工具介紹提供了一系列能夠快速、便捷地處理結構化數(shù)據(jù)的數(shù)據(jù)結構和函數(shù)。高性能的數(shù)組計算功能以及電子表格和關系型數(shù)據(jù)庫(如SQL)靈活的數(shù)據(jù)處理功能。復雜精細的索引功能,以便便捷地完成重塑、切片和切塊、聚合及選取數(shù)據(jù)子集等操作。3.Pandas——數(shù)據(jù)訪問的核心庫四、數(shù)據(jù)挖掘工具介紹Python的2D繪圖庫,非常適合創(chuàng)建出版物上用的圖表。操作比較容易,只需幾行代碼即可生成直方圖、功率譜圖、條形圖、錯誤圖和散點圖等圖形。提供了pylab的模塊,其中包括了NumPy和pyplot中許多常用的函數(shù),方便用戶快速進行計算和繪圖。交互式的數(shù)據(jù)繪圖環(huán)境,繪制的圖表也是交互式的。4.Matplotlib——繪制數(shù)據(jù)圖表的Python庫四、數(shù)據(jù)挖掘工具介紹簡單有效,可以供用戶在各種環(huán)境下重復使用。封裝了一些常用的算法方法?;灸K主要有數(shù)據(jù)預處理、模型選擇、分類、聚類、數(shù)據(jù)降維和回歸6個,在數(shù)據(jù)量不大的情況下,scikit-learn可以解決大部分問題。5.scikit-learn——數(shù)據(jù)挖掘和數(shù)據(jù)分析工具四、數(shù)據(jù)挖掘工具介紹Python環(huán)境的安裝和配置學習編程語言的第一關,就是安裝和環(huán)境配置。我們必須與計算機約定如何理解代碼、指令和語法,才能夠順利地與計算機交流,賦予它復雜的功能。Python便是其中的一種“方言”。對于新手,Python及其第三方模塊在安裝環(huán)節(jié)有許多已知的難題。比如源碼編譯的安裝方式、環(huán)境變量的配置、不同模塊之間的版本依賴問題。為了避免不必要的麻煩,我們將采用更加簡單的安裝方式。本書使用的是Python的科學計算發(fā)行版——Anaconda。
除Python本身之外,Anaconda囊括了科學計算和數(shù)據(jù)分析所需的主流模塊,獨立的包管理工具Conda,以及兩款不同風格的編輯器Jupyter和Spyder.四、數(shù)據(jù)挖掘工具介紹預裝了大量常用Packages。完全開源和免費。額外的加速和優(yōu)化是收費的,但對于學術用途,可以申請免費的License。對全平臺和幾乎所有Python版本支持。
Python的Anaconda發(fā)行版Anaconda最新版本的下載地址:/download四、數(shù)據(jù)挖掘工具介紹安裝包——“next”——“Iagree”——“AllUsers(requiresadminprivileges)”——選擇安裝路徑——“Install”——“finish”。在Windows系統(tǒng)上安裝Anaconda四、數(shù)據(jù)挖掘工具介紹JupyterNotebook是一種基于Web的交互式Python開發(fā)環(huán)境,能夠將代碼、運行結果、文本、公式、圖表以富文本的形式一起展示在網(wǎng)頁中,是一種廣受歡迎Python程序開發(fā)工具。Anaconda包含了JupyterNotebook和Spyder兩種Python程序的開發(fā)工具。JupyterNotebook開發(fā)工具四、數(shù)據(jù)挖掘工具介紹謝謝大家!《Python數(shù)據(jù)挖掘實戰(zhàn)》
第二章Python數(shù)據(jù)挖掘模塊二、
Panda一、Numpy主要內容三、Matplotlib四、Scikit-learn29
Numpy是NumericalPython的簡稱,是高性能計算和數(shù)據(jù)分析的基礎包。Numpy主要提供以下幾個主要功能:Ndarray數(shù)據(jù)對象:Numpy的多維數(shù)組對象,用于存儲和處理數(shù)據(jù)。提供可用于對數(shù)組數(shù)據(jù)進行快速運算的數(shù)學函數(shù)。提供可用于讀寫磁盤數(shù)據(jù)的工具。提供常用的線性代數(shù)、傅里葉變化和隨機數(shù)操作。提供可調用C/C++和Fortran代碼的工具。提供能夠無縫、快速地與各種數(shù)據(jù)庫集成的工具。一、Numpy30
1.Ndarray數(shù)組的創(chuàng)建
Ndarray是一個快速、靈活的數(shù)據(jù)容器,是由同質元素(指幾乎所有元素的類型和大小都相同)組成的多維數(shù)組。Ndarray數(shù)組的常用創(chuàng)建方法有:array()、arange()、linspace()、ones()、zeros()以及各種隨機生成函數(shù)。(1)array()函數(shù)
可以將Python的列表、元組或者其他序列類型數(shù)據(jù)轉化為一個Ndarray數(shù)組。一、Numpy31(2)arrange()函數(shù)
用于創(chuàng)建一個等差數(shù)組,基本函數(shù)語法為:arange([start,]stop[,step],dtype=None)
它在區(qū)間[start,stop)上以start為起點,以step為步長構建一個等差數(shù)組。一、Numpy32(3)linespace()函數(shù)
用于創(chuàng)建一個等差數(shù)組,基本函數(shù)語法:linspace(start,stop,num=50,endpoint=True,dtype=None)
該函數(shù)可以將區(qū)間[start,stop]等分為具有num個元素的等差數(shù)組。其中,endpoint參數(shù)用于控制所生成的數(shù)組是否包含stop。一、Numpy33(4)zeros()、ones()、zeros_like()、ones_like()函數(shù)
用于生成一個指定形狀,且初始值全為0或者1的數(shù)組。zeros():生成全0數(shù)組,參數(shù)為一個指示數(shù)組形狀的元組ones():生成全1數(shù)組,參數(shù)為一個指示數(shù)組形狀的元組zeros_like():生成全0數(shù)組,參數(shù)為一個現(xiàn)有數(shù)組ones_like():生成全1數(shù)組,參數(shù)為一個現(xiàn)有數(shù)組一、Numpy34(5)隨機生成函數(shù)
Numpy的random模塊提供了多種隨機數(shù)組構造函數(shù),用于生成指定形狀且符合特定分布的隨機Ndarray數(shù)組,包括:Numpy.random.rand(d0,d1,…):生成一個值在區(qū)間[0,1)上均勻分布的隨機數(shù)組。數(shù)組的形狀由d0,d1等參數(shù)給定。Numpy.random.randn(d0,d1,…):生成一個符合標準正態(tài)分布的隨機數(shù)組,數(shù)組的形狀由d0,d1等參數(shù)給定。Numpy.random.randint(low,high=None,size=None):生成一個在區(qū)間[low,high)上均勻分布,形狀為size的整數(shù)數(shù)組。一、Numpy35
2.Ndarray數(shù)組的屬性
多維數(shù)組Ndarray有3個重要的屬性:(1)dtype屬性Ndarray的數(shù)據(jù)類型包括:一、Numpy36(1)dtype屬性
在創(chuàng)建Ndarray數(shù)組時,均可通過設置dtype參數(shù)指定其數(shù)據(jù)類型。也可以使用astype()函數(shù)對數(shù)組對象的類型進行轉化。一、Numpy37(2)ndim和shape屬性ndim屬性用來參看數(shù)組對象的維數(shù),即具有多少個維度。shape屬性可以獲得數(shù)組對象的形狀,即在每個維度的具體大小。一、Numpy383.索引和切片
Numpy可以通過下標索引的方式獲取Numpy數(shù)組中的某個元素,或者通過切片的方式獲取數(shù)組中的一塊數(shù)據(jù)。(1)普通索引Numpy可以將每個維度的索引值單獨放到一個中括號“[]”,拼接多個維度的索引值來獲得某一個元素值。一、Numpy39(2)切片
Numpy中的切片用于獲取Numpy數(shù)組的一塊數(shù)據(jù),其操作方式與Python列表中的切片很相似,均使用“[]”指定下標實現(xiàn)。
其中,每個維度上使用冒號“:”分割起始位置、截止位置(切片時不包含該位置)與步長,逗號“,”用于區(qū)分不同維度上的切片操作,用省略號“…”表示切片操作遍歷剩余所有的維度。一、Numpy404.排序
Numpy提供了排序函數(shù)sort()實現(xiàn)數(shù)組對象的排序。并且,它可以使用axis參數(shù)來指定在指定維度(軸)上進行排序。
在Numpy中,調用sort()函數(shù)的方式有兩種:np.sort(Ndarray數(shù)組對象)Ndarray數(shù)組對象.sort()區(qū)別在于:前一種方式會返回一個排序好的新數(shù)組,不會對原數(shù)組的順序做修改。后一種調用方式會直接在原數(shù)組上進行重新排序。一、Numpy415.Numpy的數(shù)組運算(1)數(shù)組與數(shù)值的算術運算Numpy支持數(shù)組和數(shù)值之間進行加、減、乘、除、求余、乘方等算術運算。(2)數(shù)組與數(shù)組的算術運算Numpy數(shù)組與數(shù)組進行運算時,如果兩個數(shù)組的形狀相同,則運算過程為兩個數(shù)組對應位置的元素進行相應算術運算。如果形狀不同,則要利用Numpy的“廣播”特性進行計算。一、Numpy426.Numpy的統(tǒng)計函數(shù)Numpy支持一組統(tǒng)計函數(shù)對數(shù)組進行統(tǒng)計分析一、Numpy43Pandas是基于Numpy構建的一個數(shù)據(jù)分析模塊,它也是Python語言中最強大也最重要的數(shù)據(jù)分析和處理模塊之一。Pandas是一個專門為處理表格和混雜數(shù)據(jù)而設計的高效模塊,而Numpy更適合處理統(tǒng)一的數(shù)值數(shù)據(jù)。
可以在Anaconda命令行終端中使用pip命令或者conda命令進行安裝,如下所示。pipinstallpandas#pip安裝方式
condainstallpandas#Anaconda安裝方式二、Pandas44Pandas的數(shù)據(jù)結構
Pandas提供了兩種重要的數(shù)據(jù)結構:Series和DataFrame。
(1)SeriesSeries由一組數(shù)據(jù)(可以是不同數(shù)據(jù)類型)和與之對應的索引值所組成。創(chuàng)建一個Series對象時,可以通過向pd.Series傳遞一個Python列表、字典或者Numpy一維數(shù)組來實現(xiàn)。二、Pandas45
(2)DataFrame
一個DataFrame對象由多個列組成,每列的數(shù)據(jù)類型可以不同(數(shù)值、文本等)。
創(chuàng)建DataFrame對象的典型方法是向pd.DataFrame()方法傳入二維列表、字典或者二維數(shù)組。二、Pandas462.查看和獲取數(shù)據(jù)
(1)數(shù)據(jù)查看和設置
在創(chuàng)建一個DataFrame對象后,可以使用對象的一些內置函數(shù)和屬性對它的基本信息進行觀察和設置。常用的操作包括。獲取df的行數(shù):df.shape[0]或者len(df)。獲取df的列數(shù):df.shape[1]。獲取df的維數(shù):df.shape。獲取df的列名或者行名:df.columns或df.index。重新定義列名字:df.columns=[‘A’,‘B’,‘C’]。更改某些列的名字:df.rename(columns={‘x’:‘X’},inplace=True)查看df的概要信息:()查看df中前n行的數(shù)據(jù)信息:df.head(n)查看df最后n行的信息:df.tail(n)二、Pandas47(2)數(shù)據(jù)獲取
Pandas也支持使用索引和切片等方式獲取DataFrame中的值,進而進行計算或者修改。Pandas進行數(shù)據(jù)索引和切片的方式通常有以下三種:
通過列索引獲得對象中的一列或者多列。通過對象的loc[]函數(shù)或iloc[]函數(shù)獲取指定行索引、列索引位置上的數(shù)據(jù)。使用條件索引獲得滿足條件的部分數(shù)據(jù)或切片。二、Pandas48(2)數(shù)據(jù)獲取
二、Pandas493.Pandas的算術運算Pandas支持將Series或DataFrame對象當作一個整體進行算術運算。Pandas提供了兩種算術運算方法。第一種是直接采用“+”、“-”、“*”、“/”等算術運算符實現(xiàn);第二種方法是使用add()、sub()、mul()、div()、mod()等函數(shù)實現(xiàn)算術運算。Pandas在對兩個對象進行算術運算時,只有對應索引(行索引和列索引)相同的兩個數(shù)據(jù)才可以進行算術運算;而不同索引的數(shù)據(jù)不能直接進行算術運算,但默認情況下,它們會以NaN出現(xiàn)在計算結果中。二、Pandas503.Pandas的算術運算二、Pandas514.Pandas的統(tǒng)計匯總函數(shù)二、Pandas525.Pandas讀寫文件Pandas可以方便地讀取本地文件如CSV、TXT和XLSX等。
(1)讀CSV文本文件Pandas使用read_csv()函數(shù)讀入一個CSV文件,并將所讀取的數(shù)據(jù)存入到一個DataFrame對象中。
read_csv(filepath_or_buffer,sep,delimiter=",",
header=0,encoding="gbk")
主要參數(shù)的含義是:filepath_or_buffer:文件路徑名,也可以是存儲數(shù)據(jù)的URL地址。sep:讀取CSV文件時指定的分隔符,默認為逗號。delimiter:定界符,備選分隔符。header:設置導入DataFrame的列名稱。如果設置為0,則表示文件的第0行為列名稱。encoding:文件的編碼方式,常用的有utf8,ansi和gbk等。二、Pandas53(2)寫CSV文本文件
數(shù)據(jù)處理完畢以后,可以使用to_csv()函數(shù)將DataFrame格式的數(shù)據(jù)保存為CSV文件。to_csv()函數(shù)的完整形式如下:
to_csv(path_or_buf,sep,na_rep,index,header,encoding)
主要參數(shù)的含義是:path_or_buf:所要保存的文件路徑名。sep:數(shù)據(jù)保存時,不同項目之間的分隔符。na_rep:數(shù)據(jù)保存時,空值的存儲形式。index:bool型值,其中True表示將行索引存入文件,F(xiàn)alse表示不存儲header:可以設置為字符串或布爾列表,默認為True,此時寫出列encoding:文件的編碼方式,常用的有utf-8,ansi和gbk等。二、Pandas54(1)讀Excel文件Pandas可以讀寫擴展名為.xls或.xlsx的Excel文件。
read_excel(io,sheetname=0,header=0,index_col=None)
主要參數(shù)的含義是:io:Excel文件的路徑名。sheetname:默認值為0,此時返回Excel中第一個表;也可設置為str,int,list或None。header:指定哪一行作為列名的,默認是第0行。index_col:作用是指定用哪一列作為行索引。二、Pandas55(2)寫Excel文件
使用to_excel()函數(shù)將DataFrame格式的數(shù)據(jù)保存為Excel文件。
to_excel(excel_writer,sheetname=None,na_rep="",
header=True,index=True)
主要參數(shù)的含義是:excel_writer:所要保存的Excel文件路徑名或者Excel_writer對象。sheetname:str類型參數(shù),存放數(shù)據(jù)的表格名稱。na_rep:數(shù)據(jù)保存時,空值的存儲形式,默認為空字符串。header:可設置為bool型或者字符串列表;默認為Truebool型值,其中True表示將行索引存入文件,F(xiàn)alse表示不存儲行索引二、Pandas56
Matplotlib是Python的基礎繪圖模塊,可以繪制多種樣式的圖形,如線圖、直方圖、餅圖、散點圖、三維圖形等。
安裝Matplotlib模塊,可以使用pip或者conda命令:pipinstallmatplotlib
#使用pip安裝matplotlibcondainstallmatplotlib#使用conda安裝
三、Matplotlib571Matplotlib繪圖元素
在Matplotlib中,整個圖形是一個畫布(Figure)對象。使用Matplotlib進行繪圖,實質上是在調用各種函數(shù)在畫布上添加各種基本繪圖元素,并通過設置函數(shù)的參數(shù)來控制各元素的外形。
三、Matplotlib58設置坐標軸參數(shù)所需的函數(shù)
三、Matplotlib三、Matplotlib參數(shù)名稱解釋取值linewidth線條寬度取0-10之間的數(shù)值,默認為1.5。linestyle線條樣式可取“-”“--”“-.”“:”四種。默認為“-”。marker線條上點的形狀可取“o”“D”“h”“.”“,”“S”等20種,默認為None。markersize點的大小取0-10之間的數(shù)值,默認為1。Matplotlib中圖形的參數(shù)linestyle取值意義linestyle取值意義-實線-.點線--長虛線:短虛線602常用Matplotlib圖形的繪制(1)折線圖
使用plot()函數(shù)進行折線圖的繪制,并通過設置函數(shù)的參數(shù)來控制各元素的外形。
其基本語法為:
plot(x,y,color,linewidth,linestyle,marker,markersize)
主要參數(shù)的含義是:x,y:折線上的一系列點的X坐標和Y坐標。color:折線的顏色。linewidth:折線的線條寬度。linestyle:折線的樣式。marker:線條上的標記點類型。markersize:折線上標記點的大小。
三、Matplotlib61繪制折線圖的示例62(2)散點圖
散點圖可以將數(shù)據(jù)集中的每個點繪制在二維平面上,用戶可根據(jù)數(shù)據(jù)點的散布情況對數(shù)據(jù)的分布進行觀察和推測,或者分析變量之間的相關性。Matplotlib使用scatter()函數(shù)來繪制散點圖,其基本語法為:
scatter(x,y,s,c,marker,alpha)主要參數(shù)為:x,y:數(shù)據(jù)點的X坐標和Y坐標。s:散點(標記點)的大小。c:散點的顏色。marker:散點的樣式,默認為’o’,即散點用圓圈表示。alpha:透明度,該值越小則繪制的散點越透明
三、Matplotlib63繪制散點圖的示例64Scikit-learn是Python語言中構建數(shù)據(jù)挖掘模型的強大模塊,它涵蓋了幾乎所有主流的數(shù)據(jù)挖掘算法,并且提供了統(tǒng)一的調用接口。Scikit-learn提供了覆蓋數(shù)據(jù)挖掘任務主要階段的多個功能模塊,包括:1.數(shù)據(jù)集模塊2.數(shù)據(jù)預處理模塊3.模型訓練模塊4.模型評估模塊5.其他功能模塊四、Scikit-learn謝謝大家!《Python數(shù)據(jù)挖掘實戰(zhàn)》
第三章數(shù)據(jù)探索3.2數(shù)據(jù)統(tǒng)計描述3.1數(shù)據(jù)對象與特征主要內容
3.3數(shù)據(jù)可視化
3.4相關性和相似性度量引言數(shù)據(jù)收集和存儲技術的快速發(fā)展使得現(xiàn)代計算機系統(tǒng)正在以無法想象的速度積累著海量數(shù)據(jù)。與此同時,數(shù)據(jù)的來源也愈發(fā)廣泛。通過使用數(shù)據(jù)統(tǒng)計描述和可視化等方法,認識數(shù)據(jù)的統(tǒng)計特征,探索數(shù)據(jù)的分布規(guī)律,了解異常值、缺失值等情況,以便更好地掌握數(shù)據(jù)的特點,進而有針對性地開展后續(xù)數(shù)據(jù)預處理和構建數(shù)據(jù)挖掘模型工作。
“數(shù)據(jù)探索”,它通常是數(shù)據(jù)挖掘過程中的首要任務。一、數(shù)據(jù)對象和特征數(shù)據(jù)集可以看作由數(shù)據(jù)對象構成的集合。一個數(shù)據(jù)對象則代表一個實體,有時也被稱為記錄、樣本、實例、點、向量、模式等。
數(shù)據(jù)對象通常由一組刻畫對象基本屬性的特征來描述。對于存儲在數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫的一行對應著一個數(shù)據(jù)對象,它們也被稱為“元組”,一列則對應著數(shù)據(jù)的一個特征。一、數(shù)據(jù)對象和特征一、數(shù)據(jù)對象和特征數(shù)據(jù)對象的特征可以使用各種類型的數(shù)據(jù)進行描述,例如文本、數(shù)值、序數(shù)等。我們把特征分為5種主要類型:標稱特征二元特征序數(shù)特征區(qū)間標度特征比率標度特征
1特征及其類型一、數(shù)據(jù)對象和特征2離散和連續(xù)特征從特征的取值數(shù)量的角度將其分為兩種類型:離散特征和連續(xù)特征。(1)離散特征在一定區(qū)間范圍內具有有限個取值,可以用整數(shù)、符號、布爾值、序數(shù)數(shù)據(jù)等表示。通常,標稱特征、二元特征、序數(shù)特征和整數(shù)數(shù)值特征都是離散特征。例如,職工人數(shù)、設備臺數(shù)、顏色、性別、年齡等。(2)連續(xù)特征可以在一定區(qū)間范圍內任意取值,具有無限個取值。通常,區(qū)間標度特征和比率標度特征屬于連續(xù)特征。例如,生產(chǎn)零件的規(guī)格尺寸、人體的身高和體重、污染物濃度等。一、數(shù)據(jù)對象和特征二、數(shù)據(jù)統(tǒng)計描述數(shù)據(jù)統(tǒng)計描述通過計算數(shù)據(jù)的一些統(tǒng)計度量指標幫助我們認識數(shù)據(jù),是較為常用的探索數(shù)據(jù)分布特點的方法之一。
統(tǒng)計描述通常包括兩類度量指標:集中趨勢和離中趨勢。1.集中趨勢
二、數(shù)據(jù)統(tǒng)計描述二、數(shù)據(jù)統(tǒng)計描述
二、數(shù)據(jù)統(tǒng)計描述(2)中位數(shù)
有些時候特征的取值并非集中在取值區(qū)間中心區(qū)域附近或者均勻分布,而是集中在區(qū)間的一側,這樣的數(shù)據(jù)稱為“有偏”數(shù)據(jù)。
對于這樣的偏度較大的數(shù)據(jù),較好的度量數(shù)據(jù)集中趨勢的指標是中位數(shù),用xM
表示。中位數(shù)是數(shù)據(jù)排序后位于中間位置的那個取值:二、數(shù)據(jù)統(tǒng)計描述(3)眾數(shù)
眾數(shù)是另外一種中心趨勢的度量指標,它只對離散型的特征有意義。它是指一個特征的取值范圍內出現(xiàn)頻數(shù)最高的值。因此,眾數(shù)通常用于離散特征上的集中趨勢度量。
例如,一組學生的成績分別為:85、80、81、85、90、85、72、94、88、81、70。其中,分數(shù)85出現(xiàn)的頻數(shù)最高(3次),因此該組學生成績的眾數(shù)為85。然而,有時頻數(shù)最高的值可能會同時有多個,從而出現(xiàn)多個眾數(shù)。具有多個眾數(shù)的數(shù)據(jù)一般被稱為多峰數(shù)據(jù)。2離中趨勢
二、數(shù)據(jù)統(tǒng)計描述二、數(shù)據(jù)統(tǒng)計描述
二、數(shù)據(jù)統(tǒng)計描述(3)四分位極差
四分位數(shù)也稱四分位點,是指在統(tǒng)計描述過程中把特征的所有取值由小到大排列后,通過3個點(25%位置,50%位置,75%位置)可以將數(shù)據(jù)分割成4等份,這3個位置點對應的數(shù)值分別稱為1/4分位數(shù)(Q1,下四分位數(shù))、2/4分位數(shù)(Q2中位數(shù))和3/4分位數(shù)(Q3,上四分位數(shù))
四分位數(shù)極差(Inter-QuartileRange,IQR)是指上四分位數(shù)與下四分位數(shù)之差。一般來說,其間距應該涵蓋一半的數(shù)據(jù)量。
所以,IQR值越大說明特征的離中程度越大,反之,說明離中程度越小。
二、數(shù)據(jù)統(tǒng)計描述三、數(shù)據(jù)可視化在數(shù)據(jù)挖掘過程中,利用圖形工具對數(shù)據(jù)進行可視化,直接在二維或三維空間中觀察數(shù)據(jù)的分布規(guī)律,或者觀察特征之間的相關關系,是對數(shù)據(jù)進行探索的常用方法之一。散點圖散點圖是一種直接將數(shù)據(jù)點繪制在二維或者三維坐標系中的圖形,用戶可根據(jù)數(shù)據(jù)點的散布情況對數(shù)據(jù)的分布或者特征之間的相關關系進行直觀的觀察。三、數(shù)據(jù)可視化使用Matplotlib模塊中的scatter()函數(shù)實現(xiàn)散點圖。
(a)散點圖
(b)分類顯示的散點圖三、數(shù)據(jù)可視化
兩個特征之間的相關性分為多種情況,包括完全線性正相關、完全線性負相關、線性正相關、線性負相關、線性無關和非線性相關。
三、數(shù)據(jù)可視化箱線圖也稱盒圖,一般用來展現(xiàn)數(shù)據(jù)的分布(如上、下四分位數(shù),中位數(shù)等),也可以用箱線圖來反映數(shù)據(jù)的異常情況
(2)箱線圖箱線圖展示花萼寬度三、數(shù)據(jù)可視化頻率直方圖,亦稱頻率分布直方圖,是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。
(3)頻率直方圖頻率直方圖展示花瓣長度三、數(shù)據(jù)可視化柱狀圖也稱條形圖、長條圖,是一種以長方形的長度為變量的表達圖形的統(tǒng)計報告圖,由一系列高度不等的縱向條紋表示數(shù)據(jù)大小的情況,用來比較兩個或以上的變量。柱狀圖亦可橫向排列,或用多維方式表達。
(4)柱狀圖柱狀圖展示三個品種鳶尾花的數(shù)量三、數(shù)據(jù)可視化餅圖,或稱餅狀圖,是一個劃分為幾個扇形的圓形統(tǒng)計圖,用于描述數(shù)量、頻率或百分比之間的相對關系或占比情況。在餅圖中,每個扇區(qū)的弧長大小為其所表示的數(shù)量的比例。這些扇區(qū)合在一起剛好是一個完整的圓。
(5)餅圖餅圖展示三個品種鳶尾花所占比例與簡單的散點圖不同,散點圖矩陣可以同時看到多個特征的分布情況,以及兩兩特征之間的關系。
(6)散點圖矩陣鳶尾花數(shù)據(jù)散點矩陣四、相關性和相似性度量其一,觀察數(shù)據(jù)的特征之間是否存在相關性,以便判斷是否存在冗余特征,或者觀察特征和目標變量之間是否相關性,以便為特征工程提供依據(jù)。探索數(shù)據(jù)有兩項非常重要的工作。其二,許多數(shù)據(jù)挖掘模型的工作依賴于對數(shù)據(jù)之間相似性的計算。例如,給定兩個數(shù)據(jù)對象,如何評價它們是否是相似對象等。本節(jié)將介紹針對不同類型數(shù)據(jù)的定量計算方法四、相關性和相似性度量1.數(shù)據(jù)相關性度量相關性是數(shù)據(jù)不同特征之間相關關系的度量,也即一個特征的取值隨著另外一個特征取值的變化情況。常用的相關性度量方法包括:協(xié)方差、皮爾遜(Pearson)相關系數(shù)、斯皮爾曼(Spearman)相關系數(shù)、肯德爾(Kendall)相關系數(shù)等四、相關性和相似性度量1.數(shù)據(jù)相關性度量(2)皮爾遜(Pearson)相關系數(shù)皮爾遜相關系數(shù)最早是由統(tǒng)計學家卡爾·皮爾遜提出,用于衡量兩個連續(xù)變量之間的線性相關性程度,通常用
表示。它定義為兩個隨機變量之間協(xié)方差和標準差的商,如下公式所示:四、相關性和相似性度量1.數(shù)據(jù)相關性度量(3)斯皮爾曼(Spearman)相關系數(shù)
斯皮爾曼相關系數(shù)主要用于描述分類或等級變量之間、分類或等級變量與連續(xù)變量之間的關系。斯皮爾曼相關系數(shù)主要通過關注兩個變量的秩次大?。▽獢?shù)值的位置)來計算其之間的相關性:即若兩個變量的對應值,在各組內的排列順位是相同或類似的,則具有顯著的相關性。其計算公式如下所示:四、相關性和相似性度量1.數(shù)據(jù)相關性度量(3)斯皮爾曼(Spearman)相關系數(shù)
斯皮爾曼相關系數(shù)主要用于描述分類或等級變量之間、分類或等級變量與連續(xù)變量之間的關系。斯皮爾曼相關系數(shù)主要通過關注兩個變量的秩次大小(對應數(shù)值的位置)來計算其之間的相關性:即若兩個變量的對應值,在各組內的排列順位是相同或類似的,則具有顯著的相關性。其計算公式如下所示:四、相關性和相似性度量又稱肯德爾秩相關系數(shù)或一致性系數(shù)。與斯皮爾曼秩相關系數(shù)相似,肯德爾相關系數(shù)也是一種秩相關系數(shù),主要用于度量兩個等級變量(即有序的類別變量,如名次,評分等)的相關程度或單調關系強弱??系聽栂嚓P系數(shù)使用了“對(Pairs,兩個元素為一對)”這一概念來決定相關系數(shù)的強弱?!皩Α笨梢跃唧w分為一致對/同序對(ConcordantPairs)和分歧對/異序對(DiscordantPairs):一致對表示相對關系取值一致,分歧對則表示相對關系取值不一致。肯德爾相關系數(shù)計算公式下,即一致對和分歧對之差與總對數(shù)的比值:(4)肯德爾(Kendall)相關系數(shù)四、相關性和相似性度量2.數(shù)據(jù)相似性度量相似性是度量數(shù)據(jù)對象之間相似程度的方法,它是聚類、推薦等數(shù)據(jù)挖掘模型的核心概念之一。
不同類型的數(shù)據(jù)有對應的相似性度量指標:針對二元特征的杰卡德相似系數(shù)(Jaccard)針對文檔數(shù)據(jù)的余弦相似度(Cosine)針對數(shù)值特征的各種距離度量(Distance),如:歐式距離(Euclideandistance)、馬氏距離(Mahalanobisdistance)、曼哈頓距離(Manhattandistance)、切比雪夫距離(Chebyshevdistance)等。四、相關性和相似性度量(1)杰卡德相似系數(shù)(Jaccard)
四、相關性和相似性度量(2)余弦相似度(Cosine)
四、相關性和相似性度量(3)歐式距離
四、相關性和相似性度量(4)馬式距離
四、相關性和相似性度量(5)曼哈頓距離
曼哈頓距離,也稱為城市街區(qū)距離(CityBlockdistance)或出租車幾何(Taxicabgeometry)。為充分理解曼哈頓距離和歐式距離的區(qū)別:假設你在城市中要從一個十字路口到另外一個十字路口,真實行駛的距離由于有建筑的存在,因此不是直線距離,可以理解為直角邊距離。在此過程中,實際行駛的距離就是曼哈頓距離。
謝謝大家!《Python數(shù)據(jù)挖掘實戰(zhàn)》
第四章數(shù)據(jù)預處理4.2數(shù)據(jù)清洗
4.1數(shù)據(jù)集成主要內容
4.3數(shù)據(jù)變換4.4數(shù)據(jù)規(guī)約引言從日常生產(chǎn)、生活中收集的數(shù)據(jù)通常質量不高,存在異常值(例如,賬號余額:?100)、缺失值、不可能的數(shù)據(jù)組合(例如,年齡為2歲,學歷為研究生)等情況。數(shù)據(jù)預處理技術可以有效改善現(xiàn)有數(shù)據(jù)集的質量,從而有助于提升后續(xù)數(shù)據(jù)挖掘工作的準確率和效率,讓數(shù)據(jù)更適合后續(xù)的挖掘任務。一、數(shù)據(jù)集成數(shù)據(jù)集成是指將來自多個不同(異構)數(shù)據(jù)源的數(shù)據(jù)(集)組合到一個集成的數(shù)據(jù)存儲中,并提供數(shù)據(jù)統(tǒng)一視圖的過程。這些異構數(shù)據(jù)源可能包括多維數(shù)據(jù)集、數(shù)據(jù)庫或數(shù)據(jù)文件等。其基本概念和過程如所示。
一、數(shù)據(jù)集成在這個過程中,需要解決的問題主要包括:同名異義、異名同義、單位不統(tǒng)一和顆粒度不統(tǒng)一等:(1)同名異義:例如,員工信息表A中的屬性ID和交易記錄表B中的屬性ID可能分別描述的是員工編號和訂單編號,即描述的是不同的實體.(2)異名同義:例如,數(shù)據(jù)表A中的sales_dt和數(shù)據(jù)表B中的sales_date都是描述銷售日期,但是使用了不同的特征名稱,即A.sales_dt=B.sales_date。(3)單位不統(tǒng)一:例如,數(shù)據(jù)表A和B中,描述同一個實體分別用的是國際單位和我國傳統(tǒng)的計量單位。(4)顆粒度不統(tǒng)一:例如,數(shù)據(jù)表A描述每天每個城市的數(shù)據(jù),數(shù)據(jù)表B描述每月每個省份的數(shù)據(jù)。一、數(shù)據(jù)集成在識別實體后,數(shù)據(jù)集成常做的一項工作是將不同來源的數(shù)據(jù)合并在一起,Python提供了數(shù)據(jù)堆疊、數(shù)據(jù)增補、數(shù)據(jù)合并等函數(shù)進行集成。1.數(shù)據(jù)堆疊
數(shù)據(jù)堆疊,是按照軸拼接兩個DataFrame對象,通常使用Pandas模塊中的concat()函數(shù)完成,函數(shù)的基本語法如下所示。concat(objs,axis=0,join='outer',ignore_index=False)一、數(shù)據(jù)集成2.數(shù)據(jù)增補
除了堆疊的方法,append()函數(shù)也可以用于縱向合并兩張表,稱為數(shù)據(jù)增補。一個數(shù)據(jù)框對象(DataFrame)可以調用append()函數(shù)將另外一個數(shù)據(jù)框對象添加到其尾部
append(other,ignore_index=False)一、數(shù)據(jù)集成3.數(shù)據(jù)合并
merge()函數(shù)也可以用于合并兩個數(shù)據(jù)對象,并可以實現(xiàn)類似數(shù)據(jù)庫中的左連接(left)、右連接(right)、內連接(inner)和外連接(outer)合并方式。merge(left,right,how='inner',on=None,
left_on=None,right_on=None,left_index=False,right_index=False,suffixes)二、數(shù)據(jù)清洗數(shù)據(jù)清洗是指為檢測和消除數(shù)據(jù)中的重復值、錯誤值、異常值、缺失值、不一致值等問題而采取的各種措施和手段,目的是為了提高數(shù)據(jù)質量。數(shù)據(jù)清洗是數(shù)據(jù)預處理階段中一項非常重要的工作,本節(jié)將重點介紹常見的數(shù)據(jù)清理技術。二、數(shù)據(jù)清洗在數(shù)據(jù)集成過程中,我們按行或者按列合并不同來源的數(shù)據(jù)對象,不可避免地產(chǎn)生數(shù)據(jù)重復問題。通常,數(shù)據(jù)重復包括記錄重復和特征重復。(1)
記錄重復
記錄重復是指多個數(shù)據(jù)對象(行數(shù)據(jù))都是關于同一個實體的描述。
1.重復值處理二、數(shù)據(jù)清洗DataFrame.duplicated(subset=None,keep='first')檢驗重復記錄:去除重復記錄DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)二、數(shù)據(jù)清洗(1)
記錄重復importpandasaspdscores={'姓名':['張三','李四','王五','張三'],'語文':[84,92,87,84],'數(shù)學':[89,90,95,89],'英語':[90,81,75,92],'計算機':[85,92,90,85]}df=pd.DataFrame(scores)print("檢驗重復的記錄:\n",df.duplicated(subset=['姓名']))df_drop=df.drop_duplicates(subset=['姓名'],keep='first')print("去重的數(shù)據(jù)為:\n",df_drop)二、數(shù)據(jù)清洗
(2)特征重復
由于數(shù)據(jù)集成是將多來源數(shù)據(jù)表格進行堆疊或合并的過程,這個過程較常出現(xiàn)特征冗余的問題:如果一個特征(數(shù)據(jù)集的列或屬性)的數(shù)據(jù)信息可以從任何其他特征或特征集合直接或間接得出,則稱為特征冗余。
冗余處理是數(shù)據(jù)集成過程中需要關注的一個重要的問題。有些特征冗余是可以通過相關分析檢測出來的。例如,給定兩個特征,如果是標稱特征,我們可以使用卡方系數(shù)進行檢驗;如果是數(shù)值特征,我們可以使用相關系數(shù)(CorrelationCoefficient)進行檢驗。二、數(shù)據(jù)清洗
(2)特征重復常用的缺失值檢測采用統(tǒng)計分析方法,逐個檢查數(shù)據(jù)的每個特征的缺失情況。Pandas對象中isnull()函數(shù)提供了非常方便的缺失值檢查功能,它將為返回一個布爾型矩陣,每個布爾值(True或False)指示數(shù)據(jù)是否缺失具體使用中,我們可以使用isnull().sum()返回Pandas對象的每一列的缺失值計數(shù)。二、數(shù)據(jù)清洗2.缺失值處理直接刪除缺失值是直接刪除存在缺失值的行或者列來獲得完整的數(shù)據(jù)。然而,這種方法將同時刪掉有用的數(shù)據(jù),造成信息的損失。通常,特定的行或者列存在大量的缺失時(例如,超過70-75%數(shù)據(jù)缺失),我們采用直接刪除的方法。dropna(axis=0,how='any',subset=None,inplace=False)pandas模塊的dropna()函數(shù)可以實現(xiàn)缺失值的刪除功能,它的基本語法如下所示。(1).直接刪除二、數(shù)據(jù)清洗(1).直接刪除importpandasaspdscores={'姓名':['張三','李四','王五','劉一'],'語文':[84,92,87,84],'數(shù)學':[89,pd.NA,95,89],'英語':[90,81,pd.NA,92],'計算機':[85,92,90,85]}df=pd.DataFrame(scores)print('成績數(shù)據(jù)對象的特征缺失值情況:')print(df.isnull().sum())df.dropna(axis=0,how='any',inplace=True)#刪除所有包含缺失值的行print('刪除包含缺失值記錄后的數(shù)據(jù)為:\n',df)二、數(shù)據(jù)清洗(2)替換或插補缺失值常用的數(shù)據(jù)填充方法包括:(1)使用均值、中位數(shù)或眾數(shù)等具有代表性的數(shù)值進行替換;(2)可以使用某些固定值(如0值或‘Unknown’)對缺失值替換;(3)使用臨近值進行替換fillna(value=None,method=None,axis=None,inplace=False,limit=None)上述三種替換方法均可以使用Pandas模塊中的fillna()函數(shù)實現(xiàn)二、數(shù)據(jù)清洗(2)替換或插補缺失值importpandasaspdimportnumpyasnp#生成包含缺失值的數(shù)據(jù)scores={'姓名':['張三','李四','王五','劉一'],'語文':[84,92,87,84],'數(shù)學':[89,pd.NA,95,89],'英語':[90,81,pd.NA,92],'計算機':[85,92,90,85]}df=pd.DataFrame(scores)#1.均值替換df_mean=df['數(shù)學'].fillna(value=df['數(shù)學'].mean(),inplace=False)print('使用均值替換:\n',df_mean)#2.中位數(shù)替換df_median=df['數(shù)學'].fillna(df['數(shù)學'].median(),inplace=False)print('使用中位數(shù)替換:\n',df_median)4.2.2缺失值處理數(shù)據(jù)缺失是較為常見的數(shù)據(jù)質量問題,通常指數(shù)據(jù)記錄中某些特征的缺失。造成數(shù)據(jù)缺失的原因很多,可能包括:字段在存儲時的遺漏或丟失(例如,數(shù)據(jù)錯誤刪除、采集設備故障、人為因素等)、數(shù)據(jù)獲取成本較高等。缺失值的存在會對數(shù)據(jù)挖掘模型的準確性、可靠性產(chǎn)生較大的影響。因此,在數(shù)據(jù)預處理階段,需要檢查缺失數(shù)據(jù)的情況,并給予針對性的處理。二、數(shù)據(jù)清洗3.異常值檢測和處理在數(shù)據(jù)挖掘中,異常值是指不符合預期模式,且觀測值明顯偏離其它觀測值的數(shù)據(jù)。異常值也稱為離群點(Outlier),產(chǎn)生的原因很多,可能包括但不限于錄入錯誤、測量錯誤、數(shù)據(jù)生成過程中的錯誤等。異常值的存在將顯著影響構建的數(shù)據(jù)挖掘模型的準確性和可靠性。因此,需要對異常值進行檢測和處理。通常,異常值的檢測方法包括:3σ原則、箱線圖分析、聚類分析。二、數(shù)據(jù)清洗3.異常值檢測和處理又稱為“拉伊達準則”,是在假定數(shù)據(jù)服從正態(tài)分布的情況下,絕大部分數(shù)據(jù)的取值都應該位于3倍標準差范圍內,那么超出3倍標準差范圍的值被識別為異常值。下表給出了正態(tài)分布的數(shù)據(jù)的取值分布情況。顯然,只有不到0.3%的數(shù)據(jù)位于3倍標準差之外(這里,符號μ和σ分別表示數(shù)據(jù)的均值和標準差)。取值的分布范圍在全部數(shù)據(jù)中的比例(μ-σ,μ-σ)68.27%(μ-2σ,μ-2σ)95.45%(μ-3σ,μ-3σ)99.73%(1)3σ原則
二、數(shù)據(jù)清洗(2)
箱線圖分析箱線圖,也稱盒圖,有五個基本數(shù)值信息組成:最小值(min),下四分位數(shù)(Q1),中位數(shù)(median),上四分位數(shù)(Q3)和最大值(max),常用來展現(xiàn)數(shù)據(jù)的分布情況,也可以用于異常值檢測。其中,箱體中部的線通常表示中位數(shù)(也可以通過參數(shù)設置增加均值),箱體的兩端邊分別表示上四分位數(shù)和下四分位數(shù)。二、數(shù)據(jù)清洗(2)
箱線圖分析異常值判斷的主要原理和過程為:首先需要計算IQR(四分位數(shù)極差,inter-quartilerange),即上四分位數(shù)(Q3)與下四分位數(shù)(Q1)之間的差值(IQR=Q3-Q1),可以看做是箱子的長度;在此基礎上,計算箱子的最小觀測值min為:Q1-1.5*IQR,最大觀測值max為:Q3+1.5*IQR。箱體外部的兩邊緣線(胡須,whisker)分別表示最大觀測值和最小觀測值。因此,小于最小觀測值(Q1-1.5*IQR)和大于最大觀測值(Q3+1.5*IQR)的數(shù)值則被認定為異常值,在箱線圖中表示為上下邊緣線外的孤立點。二、數(shù)據(jù)清洗(2)
箱線圖分析importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成原始數(shù)據(jù)scores={'姓名':['S1','S2','S3','S4','S5','S6'],'英語':[90,81,110,92,83,85]}df=pd.DataFrame(scores)print(df)#繪制箱線圖plt.figure(figsize=(8,6),dpi=200)axes=plt.boxplot(df['英語'],notch=True,patch_artist=True)#箱線圖print(axes['fliers'][0].get_ydata)outlier=axes['fliers'][0].get_ydata()#獲取異常值plt.show()#圖形展示print('異常值為:\n',outlier)二、數(shù)據(jù)清洗(3)
聚類方法異常值通常數(shù)量較少,且正常數(shù)據(jù)有明顯的差異。從聚類的角度,異常值在數(shù)據(jù)空間中孤立存在,不構成特定的簇,所在區(qū)域的密度很低。因此,一些基于密度的聚類算法能根據(jù)數(shù)據(jù)點所在位置的密度識別出異常數(shù)據(jù),例如DBSCAN聚類算法,以上統(tǒng)計描述方法和可視化方法輔助檢測異常值或離群點。那么如果檢測到數(shù)據(jù)集出現(xiàn)異常值或離群點,常見的處理方法包括:直接剔除掉異常值,主要用于異常值數(shù)量較少的時候。借鑒缺失值的處理方法進行替換或插值。不處理,在某些情況下,異常值可能代表特殊的含義,如何處理需要咨詢業(yè)務人員或深入了解數(shù)據(jù)收集過程。
三、數(shù)據(jù)變換
數(shù)據(jù)變換是對數(shù)據(jù)進行規(guī)范化處理,轉換為“適當”的形式以適應數(shù)據(jù)挖掘算法的需要。常見的數(shù)據(jù)變換操作包括:數(shù)據(jù)規(guī)范化、數(shù)值特征的二值化和離散化、標稱特征的數(shù)值化處理等。三、數(shù)據(jù)變換數(shù)據(jù)規(guī)范化是指為了消除不同數(shù)據(jù)(特征)在度量單位上的差異以及取值范圍的影響,將數(shù)據(jù)按照一定比例進行標準化,使其落入到同一水平的取值范圍內。常用規(guī)范化方法包括:“最小-最大(min-max)”規(guī)范化,“零-均值(Z-score)”規(guī)范化和小數(shù)定標規(guī)范化。1.數(shù)據(jù)規(guī)范化三、數(shù)據(jù)變換(1)
最小最大規(guī)范化“最小-最大”規(guī)范化,也稱為“離差標準化”,是將數(shù)據(jù)按比例線性縮放到特定區(qū)間[min,max],通常是[0,1]區(qū)間。對于每個特征,其最小值被轉換為0,最大值被轉換為1。計算方式如下式所示。
sklearn.preprocessing模塊提供了MinMaxScaler類能幫助我們快速實現(xiàn)數(shù)據(jù)的最小-最大規(guī)范化三、數(shù)據(jù)變換(1)
最小最大規(guī)范化fromsklearn.datasetsimportload_irisfromsklearn.preprocessingimportMinMaxScalerimportpandasaspdiris=load_iris().data#使用離差標準化對數(shù)據(jù)進行預處理m_scaler=MinMaxScaler()#創(chuàng)建一個min-max規(guī)范化對象iris_scale=m_scaler.fit_transform(iris)iris_scale=pd.DataFrame(data=iris_scale,columns=["petal_len","petal_wid","sepal_len","sepal_wid"])print("規(guī)范化后的前5條iris數(shù)據(jù):\n",iris_scale[0:5])三、數(shù)據(jù)變換(2)
零均值規(guī)范化“零-均值”規(guī)范化,也稱為標準差規(guī)范化或Z-分數(shù)規(guī)范化(Z-scoreScaling),是按照均值中心化,然后利用標準差重新縮放數(shù)據(jù),使數(shù)據(jù)服從均值為0,方差為1的正態(tài)分布,計算方式如下:
sklearn.preprocessing模塊提供了StandardScaler類能幫助我們快速實現(xiàn)數(shù)據(jù)的“零-均值三、數(shù)據(jù)變換(2)
零均值規(guī)范化fromsklearn.datasetsimportload_irisfromsklearn.preprocessingimportStandardScalerimportpandasaspdiris=load_iris().data#使用標準差規(guī)范化對數(shù)據(jù)進行處理iris_scale=StandardScaler()#創(chuàng)建一個標準差規(guī)范化對象iris_scale=iris_scale.fit_transform(iris)iris_scale=pd.DataFrame(data=iris_scale,columns=["petal_len","petal_wid","sepal_len","sepal_wid"])print("規(guī)范化后的前5條iris數(shù)據(jù):\n",iris_scale[0:5])三、數(shù)據(jù)變換2.數(shù)值特征的二值化和離散化二值化(Binarization)是將連續(xù)取值的數(shù)據(jù)轉換為數(shù)值0和1的操作,即把數(shù)值特征轉換為二元特征的過程。sklearn.preprocessing模塊中的Binarizer類能創(chuàng)建一個二值化對象,用于數(shù)據(jù)的二值化操作。它的基本語法為:Binarizer(threshold=0.0)其中,參數(shù)threshold表示用于二值化的閾值,默認為0。(1)二值化三、數(shù)據(jù)變換2.數(shù)值特征的二值化和離散化(1)二值化fromsklearn.preprocessingimportBinarizerimportnumpyasnpprice=np.array([1000,2530,3500,6000,200,8200])b=Binarizer(threshold=3000)#創(chuàng)建二值化對象,闕值為3000b_price=b.fit_transform(price.reshape(1,-1))print("二值化后的價格:\n",b_price)三、數(shù)據(jù)變換2.數(shù)值特征的二值化和離散化(2)離散化離散化(Discretization)是通過將連續(xù)特征值映射到一定區(qū)間或通過使用標稱來轉換成離散數(shù)值或分類特征的過程。常用的離散化方法主要包括等寬法、等頻法、以及通過聚類、決策樹等算法進行離散化三、數(shù)據(jù)變換(2)離散化等寬法(Fixed-Width)該方法將連續(xù)屬性的特征從最小值到最大值劃分成具有相同寬度的n個區(qū)間,即n個等距區(qū)間。其中區(qū)間總個數(shù)n需要自行設定。等寬法離散化可以通過pandas模塊的cut()函數(shù)實現(xiàn),其基本語法為:pandas.cut(x,bins,right=True,labels=None,retbins=False)三、數(shù)據(jù)變換(2)離散化等頻法(Fixed-Frequency)該方法主要根據(jù)數(shù)據(jù)頻率進行區(qū)間劃分,即將數(shù)量基本相同的記錄放入?yún)^(qū)間,劃分成為等頻區(qū)間,以保證每個區(qū)間的頻率基本一致。與等寬法類似,等頻法離散化可以通過pandas庫中的qcut()函數(shù)實現(xiàn),其基本語法為:pandas.qcut(x,
q,
labels=None,
retbins=False)三、數(shù)據(jù)變換(2)離散化importpandasaspd#生成銷量數(shù)據(jù)sale_df=pd.DataFrame({'sale':[400,50,100,450,500,320,160,280,320,380,200,460]})#等寬離散化sale_df['sale_fixedwid']=pd.cut(sale_df["sale"],bins=3)print(sale_df)#等頻離散化sale_df['sale_fixedfreq']=pd.qcut(sale_df["sale"],q=4)print(sale_df)三、數(shù)據(jù)變換3.標稱特征的數(shù)值化處理它將標稱特征類型編碼為二元數(shù)值特征,如0或1。例如,一個名稱為“天氣”的標稱特征可能包含的取值為“晴天”、“陰天”和“雨天”。通過數(shù)據(jù)變換處理,結果生成三個二元特征,即判斷“天氣=晴天”、“天氣=陰天”和“天氣=雨天”。這三個二元特征的可能值為1(True/真)或0(False/假)。獨熱編碼主要通過調用sklearn.preprocessing模塊中的OneHotEncoder類實現(xiàn),基本使用語法如下所示。OneHotEncoder(
categories='auto',
drop=None,
sparse=True,
handle_unknown='error')(1)獨熱編碼三、數(shù)據(jù)變換3.標稱特征的數(shù)值化處理(1)獨熱編碼
另外,使用Pandas模塊中的get_dummies()函數(shù)實現(xiàn)標稱特征的二元數(shù)值化,這種方法又稱為啞變量編碼。其基本使用語法如下所示。get_dummies(data,
prefix=None,
prefix_sep='_',
dummy_na=False,
columns=None,
drop_first=False,
dtype=None)三、數(shù)據(jù)變換(1)獨熱編碼importpandasaspdfromsklearn.preprocessingimportOneHotEncoder,LabelEncoder#原始數(shù)據(jù)weather_df=pd.DataFrame({'天氣':['晴天','雨天','陰天','晴天'],'銷量':[400,50,100,450]})print(weather
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國打印墨水行業(yè)市場運營現(xiàn)狀及投資規(guī)劃研究建議報告
- 第14課 制作數(shù)字小報教學設計
- 第25章 第3節(jié) 《遠離煙酒 拒絕毒品》教學設計-2024-2025學年初中生物八年級下冊同步教學(蘇科版)
- 2025年酒店總經(jīng)理任期目標與績效管理合同
- Unit 3 Fascinating Parks Explore theme parks and write about a park 教學設計-2024-2025學年高中英語人教版(2019)選擇性必修第一冊
- 第1章第3節(jié) 怎樣學習化學教學設計-2024-2025學年九年級化學滬教版(全國)(2024)上冊
- 家政人員派遣合同模板
- 汽車賽事運輸合同樣本
- 二零二五年度醫(yī)院與醫(yī)療志愿者簽訂的志愿服務勞動合同書
- 二零二五年度家庭育兒嫂雇傭服務協(xié)議
- 2024年江蘇省衛(wèi)生健康委員會所屬事業(yè)單位招聘筆試真題
- 教育強國建設規(guī)劃綱要(2024-2035年)要點解讀(教育是強國建設民族復興之基)
- 廉潔知識培訓課件
- 2025年電梯專用電機項目可行性研究報告
- 煤礦安全生產(chǎn)方針及法律法規(guī)課件
- 建筑行業(yè)新員工試用期考核制度
- 二年級經(jīng)典誦讀社團計劃
- 潔凈室施工組織設計方案
- 2025年教科室工作計劃樣本(四篇)
- 2024年版古董古玩買賣合同:古玩交易稅費及支付規(guī)定
- 高職院校高水平現(xiàn)代物流管理專業(yè)群建設方案(現(xiàn)代物流管理專業(yè)群)
評論
0/150
提交評論