模塊4 數(shù)據(jù)預(yù)處理《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》教學(xué)課件_第1頁
模塊4 數(shù)據(jù)預(yù)處理《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》教學(xué)課件_第2頁
模塊4 數(shù)據(jù)預(yù)處理《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》教學(xué)課件_第3頁
模塊4 數(shù)據(jù)預(yù)處理《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》教學(xué)課件_第4頁
模塊4 數(shù)據(jù)預(yù)處理《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》教學(xué)課件_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》?精品課件合集《Python數(shù)據(jù)挖掘?qū)崙?zhàn)》

第四章數(shù)據(jù)預(yù)處理4.2數(shù)據(jù)清洗

4.1數(shù)據(jù)集成主要內(nèi)容

4.3數(shù)據(jù)變換4.4數(shù)據(jù)規(guī)約引言從日常生產(chǎn)、生活中收集的數(shù)據(jù)通常質(zhì)量不高,存在異常值(例如,賬號余額:?100)、缺失值、不可能的數(shù)據(jù)組合(例如,年齡為2歲,學(xué)歷為研究生)等情況。數(shù)據(jù)預(yù)處理技術(shù)可以有效改善現(xiàn)有數(shù)據(jù)集的質(zhì)量,從而有助于提升后續(xù)數(shù)據(jù)挖掘工作的準確率和效率,讓數(shù)據(jù)更適合后續(xù)的挖掘任務(wù)。一、數(shù)據(jù)集成數(shù)據(jù)集成是指將來自多個不同(異構(gòu))數(shù)據(jù)源的數(shù)據(jù)(集)組合到一個集成的數(shù)據(jù)存儲中,并提供數(shù)據(jù)統(tǒng)一視圖的過程。這些異構(gòu)數(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.?dāng)?shù)據(jù)堆疊

數(shù)據(jù)堆疊,是按照軸拼接兩個DataFrame對象,通常使用Pandas模塊中的concat()函數(shù)完成,函數(shù)的基本語法如下所示。concat(objs,axis=0,join='outer',ignore_index=False)一、數(shù)據(jù)集成2.?dāng)?shù)據(jù)增補

除了堆疊的方法,append()函數(shù)也可以用于縱向合并兩張表,稱為數(shù)據(jù)增補。一個數(shù)據(jù)框?qū)ο螅―ataFrame)可以調(diào)用append()函數(shù)將另外一個數(shù)據(jù)框?qū)ο筇砑拥狡湮膊?/p>

append(other,ignore_index=False)一、數(shù)據(jù)集成3.?dāng)?shù)據(jù)合并

merge()函數(shù)也可以用于合并兩個數(shù)據(jù)對象,并可以實現(xiàn)類似數(shù)據(jù)庫中的左連接(left)、右連接(right)、內(nèi)連接(inner)和外連接(outer)合并方式。

一、數(shù)據(jù)集成3.?dāng)?shù)據(jù)合并

merge()函數(shù)也可以用于合并兩個數(shù)據(jù)對象,并可以實現(xiàn)類似數(shù)據(jù)庫中的左連接(left)、右連接(right)、內(nèi)連接(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ù)中的重復(fù)值、錯誤值、異常值、缺失值、不一致值等問題而采取的各種措施和手段,目的是為了提高數(shù)據(jù)質(zhì)量。數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理階段中一項非常重要的工作,本節(jié)將重點介紹常見的數(shù)據(jù)清理技術(shù)。二、數(shù)據(jù)清洗在數(shù)據(jù)集成過程中,我們按行或者按列合并不同來源的數(shù)據(jù)對象,不可避免地產(chǎn)生數(shù)據(jù)重復(fù)問題。通常,數(shù)據(jù)重復(fù)包括記錄重復(fù)和特征重復(fù)。(1)

記錄重復(fù)

記錄重復(fù)是指多個數(shù)據(jù)對象(行數(shù)據(jù))都是關(guān)于同一個實體的描述。

1.重復(fù)值處理二、數(shù)據(jù)清洗DataFrame.duplicated(subset=None,keep='first')檢驗重復(fù)記錄:去除重復(fù)記錄DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)二、數(shù)據(jù)清洗(1)

記錄重復(fù)importpandasaspdscores={'姓名':['張三','李四','王五','張三'],'語文':[84,92,87,84],'數(shù)學(xué)':[89,90,95,89],'英語':[90,81,75,92],'計算機':[85,92,90,85]}df=pd.DataFrame(scores)print("檢驗重復(fù)的記錄:\n",df.duplicated(subset=['姓名']))df_drop=df.drop_duplicates(subset=['姓名'],keep='first')print("去重的數(shù)據(jù)為:\n",df_drop)二、數(shù)據(jù)清洗

(2)特征重復(fù)

由于數(shù)據(jù)集成是將多來源數(shù)據(jù)表格進行堆疊或合并的過程,這個過程較常出現(xiàn)特征冗余的問題:如果一個特征(數(shù)據(jù)集的列或?qū)傩裕┑臄?shù)據(jù)信息可以從任何其他特征或特征集合直接或間接得出,則稱為特征冗余。

冗余處理是數(shù)據(jù)集成過程中需要關(guān)注的一個重要的問題。有些特征冗余是可以通過相關(guān)分析檢測出來的。例如,給定兩個特征,如果是標稱特征,我們可以使用卡方系數(shù)進行檢驗;如果是數(shù)值特征,我們可以使用相關(guān)系數(shù)(CorrelationCoefficient)進行檢驗。二、數(shù)據(jù)清洗

(2)特征重復(fù)常用的缺失值檢測采用統(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ù)學(xué)':[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ù)學(xué)':[89,pd.NA,95,89],'英語':[90,81,pd.NA,92],'計算機':[85,92,90,85]}df=pd.DataFrame(scores)#1.均值替換df_mean=df['數(shù)學(xué)'].fillna(value=df['數(shù)學(xué)'].mean(),inplace=False)print('使用均值替換:\n',df_mean)#2.中位數(shù)替換df_median=df['數(shù)學(xué)'].fillna(df['數(shù)學(xué)'].median(),inplace=False)print('使用中位數(shù)替換:\n',df_median)4.2.2缺失值處理數(shù)據(jù)缺失是較為常見的數(shù)據(jù)質(zhì)量問題,通常指數(shù)據(jù)記錄中某些特征的缺失。造成數(shù)據(jù)缺失的原因很多,可能包括:字段在存儲時的遺漏或丟失(例如,數(shù)據(jù)錯誤刪除、采集設(shè)備故障、人為因素等)、數(shù)據(jù)獲取成本較高等。

4.2.2缺失值處理數(shù)據(jù)缺失是較為常見的數(shù)據(jù)質(zhì)量問題,通常指數(shù)據(jù)記錄中某些特征的缺失。造成數(shù)據(jù)缺失的原因很多,可能包括:字段在存儲時的遺漏或丟失(例如,數(shù)據(jù)錯誤刪除、采集設(shè)備故障、人為因素等)、數(shù)據(jù)獲取成本較高等。缺失值的存在會對數(shù)據(jù)挖掘模型的準確性、可靠性產(chǎn)生較大的影響。因此,在數(shù)據(jù)預(yù)處理階段,需要檢查缺失數(shù)據(jù)的情況,并給予針對性的處理。二、數(shù)據(jù)清洗3.異常值檢測和處理在數(shù)據(jù)挖掘中,異常值是指不符合預(yù)期模式,且觀測值明顯偏離其它觀測值的數(shù)據(jù)。異常值也稱為離群點(Outlier),產(chǎn)生的原因很多,可能包括但不限于錄入錯誤、測量錯誤、數(shù)據(jù)生成過程中的錯誤等。異常值的存在將顯著影響構(gòu)建的數(shù)據(jù)挖掘模型的準確性和可靠性。因此,需要對異常值進行檢測和處理。通常,異常值的檢測方法包括:3σ原則、箱線圖分析、聚類分析。二、數(shù)據(jù)清洗3.異常值檢測和處理又稱為“拉伊達準則”,是在假定數(shù)據(jù)服從正態(tài)分布的情況下,絕大部分數(shù)據(jù)的取值都應(yīng)該位于3倍標準差范圍內(nèi),那么超出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ù)。二、數(shù)據(jù)清洗(2)

箱線圖分析異常值判斷的主要原理和過程為:首先需要計算IQR(四分位數(shù)極差,inter-quartilerange),即上四分位數(shù)(Q3)與下四分位數(shù)(Q1)之間的差值(IQR=Q3-Q1),可以看做是箱子的長度;在此基礎(chǔ)上,計算箱子的最小觀測值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ù)空間中孤立存在,不構(gòu)成特定的簇,所在區(qū)域的密度很低。因此,一些基于密度的聚類算法能根據(jù)數(shù)據(jù)點所在位置的密度識別出異常數(shù)據(jù),例如DBSCAN聚類算法,以上統(tǒng)計描述方法和可視化方法輔助檢測異常值或離群點。那么如果檢測到數(shù)據(jù)集出現(xiàn)異常值或離群點,常見的處理方法包括:直接剔除掉異常值,主要用于異常值數(shù)量較少的時候。借鑒缺失值的處理方法進行替換或插值。不處理,在某些情況下,異常值可能代表特殊的含義,如何處理需要咨詢業(yè)務(wù)人員或深入了解數(shù)據(jù)收集過程。

三、數(shù)據(jù)變換

數(shù)據(jù)變換是對數(shù)據(jù)進行規(guī)范化處理,轉(zhuǎn)換為“適當(dāng)”的形式以適應(yīng)數(shù)據(jù)挖掘算法的需要。常見的數(shù)據(jù)變換操作包括:數(shù)據(jù)規(guī)范化、數(shù)值特征的二值化和離散化、標稱特征的數(shù)值化處理等。三、數(shù)據(jù)變換數(shù)據(jù)規(guī)范化是指為了消除不同數(shù)據(jù)(特征)在度量單位上的差異以及取值范圍的影響,將數(shù)據(jù)按照一定比例進行標準化,使其落入到同一水平的取值范圍內(nèi)。常用規(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ū)間。對于每個特征,其最小值被轉(zhuǎn)換為0,最大值被轉(zhuǎn)換為1。計算方式如下式所示。

sklearn.preprocessing模塊提供了MinMaxScaler類能幫助我們快速實現(xiàn)數(shù)據(jù)的最小-最大規(guī)范化三、數(shù)據(jù)變換(1)

最小最大規(guī)范化fromsklearn.datasetsimportload_irisfromsklearn.preprocessingimportMinMaxScalerimportpandasaspdiris=load_iris().data#使用離差標準化對數(shù)據(jù)進行預(yù)處理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ù)轉(zhuǎn)換為數(shù)值0和1的操作,即把數(shù)值特征轉(zhuǎn)換為二元特征的過程。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ū)間或通過使用標稱來轉(zhuǎn)換成離散數(shù)值或分類特征的過程。常用的離散化方法主要包括等寬法、等頻法、以及通過聚類、決策樹等算法進行離散化三、數(shù)據(jù)變換(2)離散化等寬法(Fixed-Width)該方法將連續(xù)屬性的特征從最小值到最大值劃分成具有相同寬度的n個區(qū)間,即n個等距區(qū)間。其中區(qū)間總個數(shù)n需要自行設(shè)定。等寬法離散化可以通過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ù)變換處理,結(jié)果生成三個二元特征,即判斷“天氣=晴天”、“天氣=陰天”和“天氣=雨天”。這三個二元特征的可能值為1(True/真)或0(False/假)。獨熱編碼主要通過調(diào)用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_df)#獨熱編碼oneHot_weather=OneHotEncoder(sparse=False).fit_transform(weather_df[["天氣"]])print('獨熱編碼的結(jié)果為:')print(oneHot_weather)#啞變量編碼dummy_weather=pd.get_dummies(weather_df[["天氣"]],drop_first=False)print('啞變量的結(jié)果為:')print(dummy_weather)三、數(shù)據(jù)變換(1)獨熱編碼天氣銷量0晴天4001雨天502陰天1003晴天450獨熱編碼的結(jié)果為:[[1.0.0.][0.0.1.][0.1.0.][1.0.0.]]啞變量的結(jié)果為:天氣_晴天天氣_陰天天氣_雨天0100100120103100三、數(shù)據(jù)變換(2)標簽編碼獨熱編碼和啞變量編碼的方法可以簡單、有效地將標稱特征進行數(shù)值編碼,但是也可能會帶來維度“爆炸”和特征稀疏等問題。標簽編碼可以在避免此類問題的同時簡單、有效地將標稱變量轉(zhuǎn)換為連續(xù)的數(shù)值型變量,即對離散的類別進行編號。例如,對應(yīng)上述“天氣”標稱特征的3個取值:['晴天','陰天','雨天'],分別讓'晴天'=0、'陰天'=1、'雨天'=2,以實現(xiàn)數(shù)值編碼。sklearn.preprocessing模塊中的LabelEncoder類創(chuàng)建一個標簽編碼對象,實現(xiàn)編碼操作:

LabelEncoder()四、數(shù)據(jù)規(guī)約盡管目前的硬件技術(shù)和存儲技術(shù)已經(jīng)能夠較為有效地處理大規(guī)模數(shù)據(jù),但是當(dāng)數(shù)據(jù)的規(guī)模過大時,數(shù)據(jù)挖掘的性能和效率會受到巨大的挑戰(zhàn)。另一方面,構(gòu)建一個有效的數(shù)據(jù)挖掘模型通常也不需要全部的數(shù)據(jù)集或者特征。因此,我們常需要使用數(shù)據(jù)規(guī)約技術(shù)在建模之前降低數(shù)據(jù)的規(guī)模。

四、數(shù)據(jù)規(guī)約盡管目前的硬件技術(shù)和存儲技術(shù)已經(jīng)能夠較為有效地處理大規(guī)模數(shù)據(jù),但是當(dāng)數(shù)據(jù)的規(guī)模過大時,數(shù)據(jù)挖掘的性能和效率會受到巨大的挑戰(zhàn)。另一方面,構(gòu)建一個有效的數(shù)據(jù)挖掘模型通常也不需要全部的數(shù)據(jù)集或者特征。因此,我們常需要使用數(shù)據(jù)規(guī)約技術(shù)在建模之前降低數(shù)據(jù)的規(guī)模。數(shù)據(jù)規(guī)約(DataReduction)是指在盡量保持數(shù)據(jù)原始分布及特點的基礎(chǔ)上,降低數(shù)據(jù)規(guī)模的方法,主要包括:樣本規(guī)約,維度規(guī)約和數(shù)據(jù)壓縮等。四、數(shù)據(jù)規(guī)約樣本規(guī)約,也稱為“數(shù)據(jù)抽樣”,是指在原數(shù)據(jù)集中選取一部分具有代表性子集的過程。抽樣的方法包括:簡單隨機抽樣、分層抽樣、聚類(整群)抽樣等。1.樣本規(guī)約四、數(shù)據(jù)規(guī)約1.樣本規(guī)約簡單隨機抽樣(SimpleRandomSampling)是指從數(shù)據(jù)總體中隨機抽樣出一定比例或數(shù)量的樣本子集。Pandas模塊中的sample()函數(shù)可以實現(xiàn)簡單隨機抽樣,其基本語法為:sample(n,

frac,

replace,

axis,random_state)(1)簡單隨機抽樣四、數(shù)據(jù)規(guī)約1.樣本規(guī)約(2)分層抽樣分層抽樣也稱為“按類別”抽樣,即數(shù)據(jù)先分成不同類別(或?qū)樱?,再針對每個類別(或?qū)樱┓謩e進行隨機抽樣的方法。顯然這種方法保證了抽樣結(jié)果中每一類樣本的比例不發(fā)生明顯改變,能保留數(shù)據(jù)的原始條件分布,對于類別不平衡情況下的數(shù)據(jù)抽樣更加有效。Scikit-learn的model_selection模塊中提供StratifiedShuffleSplit類可以實現(xiàn)分層抽樣。StratifiedShuffleSplit(n_splits,test_size,train_size,random_state)四、數(shù)據(jù)規(guī)約1.樣本規(guī)約importpandasaspdsale_df=pd.DataFrame({'weather':['晴天','雨天','陰天','晴天','晴天','晴天','晴天','晴天','晴天','晴天','晴天','陰天','雨天','陰天','晴天','陰天','雨天','陰天','晴天','晴天','晴天','晴天','陰天','晴天','晴天','晴天','陰天','晴天','晴天','晴天'],'sale':[400,50,100,450,620,325,170,280,710,330,500,320,160,280,175,240,605,270,250,510,320,380,200,460,380,420,560,80,240,630]})#1.簡單隨機抽樣random_sample=sale_df.sample(10,random_state=124)print('簡單隨機抽樣方法的結(jié)果:\n',random_sample)#2.分層抽樣fromsklearn.model_selectionimportStratifiedShuffleSplitsplit=StratifiedShuffleSplit(n_sp

溫馨提示

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

評論

0/150

提交評論