Python數據分析與數據挖掘 課件 第12、13章 實戰案例-乳腺癌數據分析與預測、實戰案例-鉆石數據分析與預測_第1頁
Python數據分析與數據挖掘 課件 第12、13章 實戰案例-乳腺癌數據分析與預測、實戰案例-鉆石數據分析與預測_第2頁
Python數據分析與數據挖掘 課件 第12、13章 實戰案例-乳腺癌數據分析與預測、實戰案例-鉆石數據分析與預測_第3頁
Python數據分析與數據挖掘 課件 第12、13章 實戰案例-乳腺癌數據分析與預測、實戰案例-鉆石數據分析與預測_第4頁
Python數據分析與數據挖掘 課件 第12、13章 實戰案例-乳腺癌數據分析與預測、實戰案例-鉆石數據分析與預測_第5頁
已閱讀5頁,還剩66頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

主講人:***第12章乳腺癌數據分析與預測15-10月-23Python數據分析與數據挖掘目錄contents案例背景0102數據加載和預處理03探索性數據分析04分類模型05提升預測準確率的策略案例背景0112.1案例背景

乳腺癌BC(Breastcancer)是全球女性中最常見的癌癥之一,已成為當今社會重要的公共衛生問題。全球乳腺癌發病率自20世紀70年代末開始一直呈上升趨勢。據國家癌癥中心和衛計委疾病預防控制局2012年公布的2009年乳腺癌發病數據顯示:全國腫瘤登記地區乳腺癌發病率位居女性惡性腫瘤的第1位,女性乳腺癌發病率(粗率)全國合計為42.55/10萬,城市為51.91/10萬,農村為23.12/10萬。

BC的早期診斷可以促進對患者的及時臨床治療,顯著改善預后和生存機會。良性腫瘤的進一步準確分類可以防止患者接受不必要的治療。因此,對BC的正確診斷以及將患者分為惡性或良性組的分類是許多研究的主題。12.1案例背景本例對美國威斯康星州乳腺癌診斷數據集進行分析,并通過構建模型,預測腫瘤是良性還是惡性。方法一:從kaggle的官網下載BreastCancerWisconsin(Diagnostic)數據集/uciml/breast-cancer-wisconsin-data方法二:從UCI機器學習庫中獲取/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29數據下載:12.1案例背景

數據集中的一共有569條數據,其中乳腺結果診斷為良性的有357條,診斷為惡性的有212條。屬性特征:1、ID號2、乳腺組織的診斷結果(M=malignan惡性,B=benign良性)3、為每個細胞核計算的十個實值特征:(1)半徑(從中心到周邊點的距離的平均值);(2)紋理(灰度值的標準偏差);(3)周邊;(4)面積;(5)平滑度(半徑長度的局部變化);(6)緊密度(周長^2/面積-1.0);(7)凹度(輪廓的凹入部分的嚴重程度);(8)凹點(輪廓的凹入部分的數量);(9)對稱性;(10)分形維數(“海岸線近似”-1)。本案例的目的是要用細胞核的實值特征來預測乳腺組織的診斷結果。數據加載和預處理0212.2數據加載和預處理1、加載需要的庫及讀入數據12.2數據加載和預處理2、數據信息初步分析結果:數據中的第1列是編號ID,第2列是診斷結果列,最后一列Unnamed:32中全部為空值,應該被刪除。剩下的第3列至32列為每個細胞核的特征(共30列)2、數據信息初步分析結果:數據集中共有569行,33列。除了診斷特征diagnosis(即M=惡性或B=良性)之外,所有其他特征都是float64類型,除了特征Unnamed:32中全為空值以外,其他特征沒有空值。12.2數據加載和預處理12.2數據加載和預處理3、數據預處理

(1)數據集中有一個全為空值的列Unnamed:32,此外,id列為編號,對預測腫瘤是否為惡性不起作用。因此我們將使用下面的代碼對數據進行處理,定義要預測的結果列Y,和用來進行預測的特征列集合X,并刪除id和Unnamed:32整列。 (2)為了簡化處理,我們將要預測的目標列--診斷特征diagnosis列映射為數值型0和1,其中M=惡性映射為1,B=良性映射為0 (3)數據集中用來預測診斷特征diagnosis的其他列,即[radius_mean…fractal_dimension_worst]的3-32列,為每個細胞核計算的十個實值特征,這30個特征為取值范圍不同、均值和標準差不同的屬性,我們可以對其進行標準化或規范化,使其滿足在相同的數據區間或滿足高斯分布12.2數據加載和預處理12.2數據加載和預處理探索性數據分析0312.3.1診斷結果列的分布

數據集中腫瘤診斷結果diagnosis列有B(良性)或M(惡性)兩種取值,良性用0表示,惡性用1表示。

首先,檢查一下每個類別中有分別多少條病例,以及每種結果所占的百分比。數據集中共有診斷結果為良性的數據357條,惡性的數據212條其次,對分組統計的結果進行可視化展示。12.3.1診斷結果列的分布還可以查看每類數據所占的百分比并進行可視化展示。

良性數據占62.74%,惡性數據占37.26%,惡性診斷結果所占比例較高。本例中的數據集不代表典型的醫療數據分布。通常情況下,醫療數據中會有比較多的結果為陰性的病例,而只有少數代表陽性(惡性)腫瘤的病例。12.3.1診斷結果列的分布12.3.2數據分布的可視化分析

獲取了數據集的基本信息后,我們是否需要在對數據可視化、特征選擇、特征提取或分類之前,對數據進行標準化或規范化處理嗎?要回答類似的問題,我們還需了解各個特征的數據具體情況,例如數據的方差,標準偏差,樣本數(計數)或者最大、最小值等,掌握這些信息有助于我們更加深入的理解數據。1、數據分布(直方圖)

直方圖是表示每個值的頻率的圖,頻率指每個值在數據集中出現多少次,這種描述稱為變量的分布。直方圖是最常見的表示變量分布的方法。

我們可以用語句:df.hist(‘radius_mean’)或df.radius_mean.hist()這樣一行簡單的代碼,就能繪制出某一列中的值的分布直方圖。12.3.2數據分布的可視化分析1、數據分布(直方圖)【結果】:大部分診斷結果為良性的數據radius_mean列的值比15小,而診斷結果為惡性的數據radius_mean列的值比15大。查看良性和惡性的數據在radius_mean列上的數據分布情況12.3.2數據分布的可視化分析1、數據分布(直方圖)繪制出所有數值型列的數據分布直方圖:df.hist(figsize=(20,15))12.3.2數據分布的可視化分析2、散點圖

散點圖通過用兩組數據序列構成的多個坐標點,來考察坐標點的分布,來判斷兩個變量之間是否存在某種關聯,或分析坐標點的分布模式。散點圖將序列顯示為一組點,值由點在圖表中的位置表示。散點圖通常用于比較跨類別的聚合數據,類別由圖表中的不同標記表示。【例】以radius_mean為橫軸,texture_mean為縱軸,以散點圖顯示了良性和惡性數據的分布情況【結論】惡性腫瘤的radius_mean和texture_mean值均偏大,而良性腫瘤的radius_mean和texture_mean值偏小。12.3.2數據分布的可視化分析3、異常值檢測(箱圖)

錯誤值或異常值可能是一個嚴重的問題,它們通常會造成測量誤差或異常系統條件的結果,不具有描述底層系統的特征。因此,最佳做法是在進行下一步分析之前,就應該進行異常值去除處理。我們采用箱圖進行異常點監測的可視化

為了方便在圖上觀察,首先我們可以對數據進行規范化或標準化,即將數據按比例縮放,使之落入一個小的特定區間。 【例】使用df1.loc[:,['radius_mean']].boxplot()繪制單一特征的箱圖或df1.iloc[:,1:6].boxplot()繪制多個特征的線圖。12.3.2數據分布的可視化分析3、異常值檢測(箱圖) 【例】按診斷結果的不同為各個特征做出異常值檢測的箱圖。下例中為前10個特征的異常檢測箱圖。12.3.3相關性分析

相關性是常用的統計術語,指的是兩個變量之間的關聯程度。兩個變量間通??梢杂腥缦氯N關系之一:正相關、負相關和不相關。如果一個變量高的值對應于另一個變量高的值,低的值對應低的值,那么這兩個變量正相關。反之,如果一個變量高的值對應于另一個變量低的值,那么這兩個變量負相關。如果兩個變量間沒有關系,即一個變量的變化對另一變量沒有明顯影響,那么這兩個變量不相關。

具有高相關性的特征更具線性依賴性,因此對因變量的影響幾乎相同。因此,當兩個特征具有高相關性時,我們可以刪除其中一個特征。12.3.3相關性分析1、jointplot圖

【例】查看特征concavity_worst與特征concavepoints_worst之間的相關性 【結果】pearson相關性結果為0.86,表示這兩個特征的相關性較高12.3.3相關性分析2、生成相關性矩陣12.3.3相關性分析3、生成相關性熱度圖分類模型0412.4.1

LogisticRegression模型

我們首先導入需要的庫并讀入數據,將數據分成訓練集和測試集,構建K近鄰模型,并進行分類,輸出模型的準確率、精度和召回率等幾個評價指標。導入需要的庫并讀入數據12.4.1

LogisticRegression模型(2) 將數據分成訓練集和測試集數據分成70%的訓練集和30%的測試集,輸出訓練集和測試集的shape。12.4.1

LogisticRegression模型(3) 構建模型進行分類

用訓練數據x_train和y_train訓練數模型,并用訓練好的模型model_1對x_test進行預測,結果為y_pred。輸出模型的準確率、精度和召回率等幾個評價指標。12.4.2決策樹模型12.4.3SVM模型提升預測準確率的策略0512.5.1數據標準化或規范化

我們可以在建立模型前,首先對數據進行標準化或規范化,使得特征的范圍具有可比性。它是數據處理的預處理處理,對后面的使用數據具有關鍵作用。

常用的數據標準化和規范化的方法:標準化:一種有用的技術,可將具有高斯分布,均值和標準差不同的屬性轉換為平均值為0和標準差為1的標準高斯分布。規范化:在scikit-learn中進行規范化是指將每個觀察值(行)重新縮放為長度為1(在線性代數中稱為單位范數或長度為1的向量)。二值化:將所有高于閾值的值都標記為1,所有等于或低于閾值的值都標記為0。12.5.1數據標準化或規范化【例】我們采用sklearn中的StandardScaler開展,并在LogisticRegression算法上對比縮放前后預測準確率。使用數據轉換將提高模型的準確性,在Logistic回歸算法中我們有效提升了預測的準確度。12.5.2特征選擇1、使用SelectKBest進行特征選

在單變量特征選擇中,我們將使用SelectKBest來刪除除k個最高得分特征之外的所有特征。在這種方法中,我們需要選擇我們將使用多少特征。例如,k(特征數)應該設置為5還是10、或者是15?我們可以設置不同的值來進行嘗試,我們可以試著將k設置為5來找到最好的5個特征。12.5.2特征選擇2、使用RFE進行特征選擇 RFE遞歸特征消除的主要思想是反復的構建模型(如SVM或者回歸模型)然后選出最好的(或者最差的)的特征(可以根據系數來選),把選出來的特征放到一邊,然后再剩余的特征上重復這個過程,直到所有特征都遍歷了。這個過程中特征被消除的次序就是特征的排序。

RFE自身的特性使得我們可以比較好的進行手動的特征選擇,但是同樣的也存在原模型在去除特征后的數據集上的性能表現要差于原數據集。12.5.2特征選擇2、使用RFE進行特征選擇12.5.2特征選擇3、使用RFECV進行特征選擇 RFE通過學習器返回的coef_屬性

或者feature_importances_屬性來獲得每個特征的重要程度。

然后,從當前的特征集合中移除最不重要的特征。在特征集合上不斷地重復遞歸這個步驟,直到最終達到所需要的特征數量為止。 RFECV通過交叉驗證來找到最優的特征數量。如果減少特征會造成性能損失,那么將不會去除任何特征。這個方法用以選取單模型特征相當不錯,但是有兩個缺陷,一是計算量大;二是隨著學習器(評估器)的改變,最佳特征組合也會改變,有些時候會造成不利影響。12.5.2特征選擇3、使用RFECV進行特征選擇【運行結果】給出了最優特征個數15及選出的進行預測的特征,最終的準確率可以達到94.2%。對比未做特征選擇的決策樹的分類結果,可以看出在腫瘤數據集上,RFCV能選出最佳特征集,比較顯著的提升決策樹模型的預測準確率。12.5.3參數調優

由于很多機器學習算法的性能高度依賴于超參數的選擇,對機器學習超參數進行調優是一項繁瑣但至關重要的任務。手動調優占用了機器學習算法流程中一些關鍵步驟(如特征工程和結果解釋)的時間。

我們采用sklearn中的網格搜索(GridSearchCV)的方法來為SVM算法尋找最優超參數,比如SVM的懲罰因子C,核函數kernel等,來嘗試提升分類模型的預測準確率。

網格搜索法是一種通過遍歷給定的參數組合來優化模型表現的方法。網格搜索針對超參數組合列表中的每一個組合,實例化給定的模型,做cv次交叉驗證,將平均得分最高的超參數組合作為最佳的選擇,返回模型對象。12.5.3參數調優【結論】對比未做特征選擇的SVM的分類結果,可以看出在腫瘤數據集上,GridSearchCV能為SVM模型選出最佳的超參數集合,比較顯著的提升SVM模型的預測準確率。第12章乳腺癌數據分析與預測謝謝!Python數據分析與數據挖掘主講人:***第13章鉆石數據分析與預測15-10月-23Python數據分析與數據挖掘目錄contents案例背景0102數據加載和預處理03探索性數據分析04回歸模型預測05小結案例背景0113.1案例背景

鉆石是由透明無色的純碳晶體構成的寶石,是人類已知的最堅硬的寶石,只能被其他鉆石刮擦。由于鉆石儲量稀少、加工過程復雜,導致鉆石價格昂貴。Diamonds數據集是一個經典的回歸分析數據集,我們可以從kaggle的官網下載,網址為:/shivam2503/diamonds。diamonds.csv數據集包含了近54000顆鉆石的價格和其他屬性。數據集的目標列為鉆石的價格price,另外包括9個屬性,包括克拉carat、切割cut、顏色color、透明度clarity、鉆石的深度比例depth、鉆石的桌面比例table、以毫米為單位的鉆石的長x、寬y、高z。13.1案例背景

數據集中的屬性特征:(1)price(目標列,以美元為單位的鉆石價格,取值范圍:$326--$18,823);(2)carat(鉆石重量,取值范圍:0.2--5.01);(3)cut(鉆石切割質量,取值范圍:Fair,Good,VeryGood,Premium,Ideal);(4)color(鉆石的顏色,從J到D,分別代表從最差到最佳);(5)clarity(鉆石的透明度的指標,取值為I1,SI2,SI1,VS2,VS1,VVS2,VVS1,IF,分別代表最差到最佳);(6)x(鉆石的長度,取值范圍為0--10.74毫米);(7)y(鉆石的寬度,取值范圍為0--58.9毫米);(8)z(鉆石的深度,取值范圍為0--31.8毫米);(9)depth(總深度百分比,定義為:depth=z/mean(x,y)=2*z/(x+y)(43--79));(10)table(相對于最寬點的菱形頂部寬度,取值范圍:43--95)。本案例的目的是要用鉆石的重量、切割質量、顏色等屬性預測鉆石價格。數據加載和預處理0213.2數據加載和預處理1、加載需要的庫及讀入數據13.2數據加載和預處理2、數據信息初步分析結果:通過以上對數據的初步分析可知,數據集中共有53940行,11列。索引列Unnamed:0為int64類型,carat、depth、table、x、y、z列和目標列price為float64類型,cut、color和clarity列為object類型,數據集中各列均沒有空值。13.2.3數據預處理

通過對數據的初步分析可知,鉆石數據集首列Unnamed:0是為數據加的索引列,對鉆石的價格預測不起作用,因此將該列從數據中刪除,語句如下:1、去掉不需要的列13.2.3數據預處理

檢查數據集中是否有缺失值,并進行相應處理:2、缺失值處理13.2.3數據預處理

離群點(outlier)是指數據中和其他觀測點偏離非常大的數據點。離群點是異常的數據點,但不一定是錯誤的數據點。離群點可能會對數據分析、數據建模等工作帶來不利的影響,例如,增大錯誤方差、影響預測和影響數據正態性等,GBDT等模型對異常值很敏感。因此,離群點(outlier)是數據預處理的重要環節。可以采用對數據繪制散點圖、箱線圖等方式檢測離群點。3、離群點檢測及處理13.2.3數據預處理

通過箱線圖、散點圖和回歸關系圖的分析,發現數值型列depth、table、y和z中存在比較明顯的離群點,可以用下面的語句刪去數據集中的離群點。3、離群點檢測及處理刪除離群點后,數據集的維度由(53920,10)變為(53907,10),說明有13條數據被刪除。13.2.3數據預處理

本例將采用多種回歸模型對鉆石價格price進行預測,因此,需要將類別特征進行編碼處理,轉換為數值型數據。類別特征(categorical)是包含標簽值而非數值的列,列的取值通常為一個固定的集合。類別特征也可稱為分類變量或名義變量。許多機器學習算法不能直接對類別特征進行處理,它們要求所有輸入變量和輸出變量都是數值型變量,此時需要對類別特征進行處理,將其轉換為數值類型。如果類別特征是輸出變量,可能還需要將模型的數值型預測結果轉換為類別形式,以便在某些應用中顯示或使用結果。

4、類別特征的處理本例中,我們首先將數據df復制到label_df中,避免更改原始數據,然后采用標簽編碼方式對類別變量進行編碼,轉換為數值型,轉換后label_df中所有列均為數值型。探索性數據分析03首先查看各個類別特征中數據的分布情況。13.3.1類別特征分析將使用seaborn的displot函數,對鉆石數據集中的數值型特征carat、depth、table、x、y、z列和目標列price進行分析,以便了解數據的趨勢和分布。

結果可知,特征carat,price和x的數據分布向右傾斜,特征y和z的分布呈鋸齒狀。特征depth的數據分布相當對稱,接近正態分布。同時,本數據集中的各個數值型特征在每一側都有長尾,這表明可能存在極值。13.3.2數值特征分析13.3.3相關性分析在查看單個變量分布的基礎上,有時也需要查看變量之間的聯系,可以使用pairplot繪制成對變量的關系圖,分析變量間是否存在線性關系,有無較為明顯的相關關系。1、pairplot圖分析從輸出結果可知,x、y、z、carat和price之間存在較明顯的線性關系,"depth"、"table"與price的線性關系較弱。13.3.3相關性分析seaborn中的jointplot是聯合分布圖,可以深入地分析兩個特征的相關性。jointplot函數用于將成對特征的相關情況、聯合分布以及各自的分布在一張圖上集中呈現,是相關性分析最常用的工具,jointplot圖上還能展示回歸曲線及相關系數。在下例中,使用jointplot分別顯示特征'carat'與'price'、特征'depth'與'price'之間的相關性。2、jointplot圖分析從輸出可知,鉆石的carat特征與鉆石的價格price有較強的正相關關系,depth與price之間存在較弱的負相關關系。13.3.3相關性分析可計算鉆石價格price與其他特征的相關度,并排序顯示。3、價格與其他特征的相關度13.3.3相關性分析可以用熱度圖heatmap來觀察所有特征之間的相關性。生成熱度圖的語句如下:4、生成相關性熱度圖由相關性分析可知,鉆石的重量特征carat和維度特征x、y、z是鉆石價格的決定因素,而特征table和depth與價格Price的相關度較低,對鉆石價格的影響較小,可以考慮在進行回歸分析前,將其刪除,我們在13.4中的分析中暫時先保留這兩個特征。回歸模型預測0413.4回歸模型預測

本節將構建線性回歸、嶺回歸、Lasso回歸、隨機森林回歸及XGB回歸等多個模型,對鉆石價格進行預測。我們首先將數據集分割成訓練集和測試集,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論