版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程教案課程名稱:大數(shù)據(jù)分析技術(shù)課程類型:專業(yè)核心課程上課時間:2024至2025學(xué)年第2學(xué)期授課對象:22級應(yīng)用統(tǒng)計學(xué)23級數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)23級應(yīng)用統(tǒng)計學(xué)教師姓名:所屬院部:數(shù)學(xué)與計算機學(xué)院第一章數(shù)據(jù)預(yù)處理§1導(dǎo)言教案教學(xué)過程設(shè)計第一課時一、提出問題,并導(dǎo)出新知課主講教師教學(xué)思路向?qū)r間20分鐘(一)問題:為什么要預(yù)處理數(shù)據(jù)數(shù)據(jù)采集完成后所獲得的數(shù)據(jù)是對研究對象的第一手資料,稱為原始數(shù)據(jù)。原始數(shù)據(jù)一般要經(jīng)過預(yù)處理之后才能應(yīng)用于數(shù)據(jù)分析。(二)原因:根據(jù)原始數(shù)據(jù)的特征分析1.原始數(shù)據(jù)一般有多個來源,不同來源的數(shù)據(jù)往往有不同的格式,需要將這些不同源、不同格式的數(shù)據(jù)集成為一個整體。2.原始數(shù)據(jù)含有臟信息,需要清洗。所謂數(shù)據(jù)含有臟信息,是指數(shù)據(jù)具有下列一些性質(zhì)。(1)不完整:基于分析目的的重要屬性在數(shù)據(jù)中沒有。(2)有缺失:有些屬性的個別值沒有采集到導(dǎo)致數(shù)據(jù)表中出現(xiàn)空白項。(3)有重復(fù):操作失誤,重復(fù)記錄。(4)有異常值:一是離群點,二是不一致數(shù)據(jù)。(5)含噪聲:數(shù)據(jù)中存在隨機干擾。(6)不一致:數(shù)據(jù)“不一致性”含義非常豐富,包括量綱不一致、尺度不一致、時段不一致、數(shù)據(jù)格式不一致,等等。(7)值唯一:有些變量的值是唯一的,這樣的變量在數(shù)據(jù)分析時沒有意義。(8)數(shù)據(jù)有誤:數(shù)據(jù)采集不準(zhǔn)確,出現(xiàn)錯誤數(shù)據(jù)。(9)有冗余信息:比如交易管理系統(tǒng)對每筆交易時間的記錄形如“2011/2/2000:00:00”,該時間型數(shù)據(jù)含“年月日時分秒”,實際上做客戶流分析時“時分秒”信息是冗余的。(10)有特殊符號:數(shù)據(jù)值帶有如“#,$,¥”等符號,不利于數(shù)據(jù)分析需要清洗。3.原始變量中屬性變量需要轉(zhuǎn)換為數(shù)值型數(shù)據(jù)之后才能應(yīng)用于分析。比如,在推斷身高與“性別”的相關(guān)關(guān)系時,需要將變量“性別”數(shù)值化才能引入模型中。詳情見第3節(jié)。4.某些連續(xù)型數(shù)據(jù)離散化為屬性變量對于挖掘數(shù)據(jù)的價值更有意義。比如,在研究年齡對高血壓、糖尿病等慢性病的影響時,將“年齡”離散化為“青年、中年、老年”,比將“年齡”作為連續(xù)型數(shù)據(jù)更有意義。5.有時原始數(shù)據(jù)中變量太多,在實際分析時有不少特征用不上,此時需要通過對變量進行篩選、刪除、主成分分析(PCA)或線性判別分析(LDA)等方法進行降維。6.數(shù)據(jù)變換:原始數(shù)據(jù)應(yīng)用于數(shù)據(jù)分析時,需消除量綱和量級的影響。具有左述特征的數(shù)據(jù)的質(zhì)量是低劣的,而質(zhì)量低劣的數(shù)據(jù)不可能挖掘出高質(zhì)量的結(jié)果,進而就不可能有高質(zhì)量的應(yīng)用,更不可能有高質(zhì)量的決策。二、數(shù)據(jù)預(yù)處理流程主講教師教學(xué)思路向?qū)r間25分鐘(一)數(shù)據(jù)預(yù)處理流程圖介紹1.數(shù)據(jù)預(yù)處理流程如下圖所示:2.數(shù)據(jù)預(yù)處理中各模塊的含義(1)數(shù)據(jù)集成:將多源數(shù)據(jù)整合在一起,將多個數(shù)據(jù)表整合為一個數(shù)據(jù)表,等。(2)數(shù)據(jù)清洗:清洗數(shù)據(jù)中的臟信息。(3)數(shù)據(jù)變換:把原始數(shù)據(jù)轉(zhuǎn)換成適合數(shù)據(jù)分析的形式。(4)數(shù)據(jù)歸約:在盡可能保持數(shù)據(jù)原貌的前提下最大限度地精簡數(shù)據(jù)量。(5)數(shù)據(jù)倉庫:數(shù)據(jù)預(yù)處理好之后,存儲于數(shù)據(jù)倉庫備用。三、課堂小結(jié)主講教師教學(xué)思路向?qū)r間13分鐘1.總結(jié)總結(jié)這節(jié)內(nèi)容知識點2.引入下一節(jié)內(nèi)容
教學(xué)過程設(shè)計第一課時一、內(nèi)容回顧,并導(dǎo)出新知課主講教師教學(xué)思路向?qū)r間5分鐘(一)回顧數(shù)據(jù)進行預(yù)處理有關(guān)的概念1.預(yù)處理數(shù)據(jù)的原因2.數(shù)據(jù)預(yù)處理的流程(二)引入:數(shù)據(jù)集成1.數(shù)據(jù)集成的概念數(shù)據(jù)集成就是將多個數(shù)據(jù)集整合為一個數(shù)據(jù)集。這些數(shù)據(jù)集或有著共同的研究對象,或描述的對象有著基于研究目的的共性,但它們或來源不同(比如,基于體檢數(shù)據(jù)的慢性病研究,體檢數(shù)據(jù)來自不同的醫(yī)院),或格式不同(比如xls,xlsx,txt,csv,mat,db等),或變量名稱不一致,或數(shù)據(jù)尺度不一致,等等。2.典型的數(shù)據(jù)集成操作(1)將來自不同數(shù)據(jù)源的數(shù)據(jù)整合在一起;(2)將格式不同的數(shù)據(jù)文件整合為相同的格式,然后合并在一起;(3)清洗多個數(shù)據(jù)集的不一致性,然后整合為一個數(shù)據(jù)集。在數(shù)據(jù)分析之前需首先對數(shù)據(jù)進行預(yù)處理。數(shù)據(jù)預(yù)處理的第一個步驟是數(shù)據(jù)集成。二、合并數(shù)據(jù)主講教師教學(xué)思路向?qū)r間20分鐘堆疊合并數(shù)據(jù)—concat1.堆疊合并數(shù)據(jù)的概念堆疊合并數(shù)據(jù)是指將兩個或多個表的數(shù)據(jù)沿x軸或y軸合并起來。2.concat函數(shù)的主要參數(shù)將兩個或多個表沿X軸方向(橫向增列)或Y軸方向(縱向增行)拼接在一起,可用pandas庫中concat函數(shù)來實現(xiàn)。concat函數(shù)的主要參數(shù)介紹如下。pd.concat(objs,axis=0,join='outer')Objs=要拼接的對象axis:{0,1},拼接方向—0:上下(增加行),1:左右(增加列)join:{inner,outer},拼接軸之外另一個軸的合并方式,其中inner:交集,outer:并集上述參數(shù)中axis和join不同設(shè)置下的結(jié)果綜合如下:joinaxisinnerouter0增加行,列取交集增加行,列取并集1增加列,行取交集增加列,行取并集【例1.1】下面程序中,數(shù)據(jù)框a,b如下兩表所示。表1.1數(shù)據(jù)框a表1.2數(shù)據(jù)框bABCDBDF1A1B1C1D12B2D2F22A2B2C2D24B4D4F43A3B3C3D36B6D6F64A4B4C4D48B8D8F8(1)按“axis=0、join='outer'”合并a,b結(jié)果如表1.3所示。表1.3“axis=0、join='outer'”合并a,bABCDF1A1B1C1D12A2B2C2D23A3B3C3D34A4B4C4D42B2D2F24B4D4F46B6D6F68B8D8F8按“axis=1、join='outer'”合并a,b結(jié)果如表1.4所示。表1.4“axis=0、join='outer'”合并a,bABCDBDF1A1B1C1D12A2B2C2D2B2D2F23A3B3C3D34A4B4C4D4B4D4F46B6D6F68B8D8F8(3)按“axis=0、join='inner'”合并a,b結(jié)果如表1.5所示。表1.5“axis=0、join='inner'”合并a,bBD1B1D12B2D23B3D34B4D42B2D24B4D46B6D68B8D8(4)按“axis=1、join='inner'”合并a,b結(jié)果如表1.6所示。表1.6“axis=1、join='inner'”合并a,bABCDBDF2A2B2C2D2B2D2F24A4B4C4D4B4D4F4通過上述兩個合并示例知,合并中沒有元素的地方用空值補全。例1.1的完整程序:#%%數(shù)據(jù)合并###例1.1concat數(shù)據(jù)合并示例##生成數(shù)據(jù)importpandasaspd#生成數(shù)據(jù)框aacol=['A','B','C','D']arow=range(1,5)a=[['A1','B1','C1','D1'],['A2','B2','C2','D2'],['A3','B3','C3','D3'],['A4','B4','C4','D4']]a=pd.DataFrame(data=a,index=arow,columns=acol)#生成數(shù)據(jù)框bbcol=['B','D','F']brow=[2,4,6,8]b=[['B2','D2','F2'],['B4','D4','F4'],['B6','D6','F6'],['B8','D8','F8']]b=pd.DataFrame(data=b,index=brow,columns=bcol)##數(shù)據(jù)合并#axis=0,join='outer':縱向增行、橫向并集axb_0_outer=pd.concat([a,b],axis=0,join='outer')#axis=1,join='outer':橫向增列、縱向并集axb_1_outer=pd.concat([a,b],axis=1,join='outer')#axis=0,join='inner':縱向增行、橫向交集axb_0_inner=pd.concat([a,b],axis=0,join='inner')#axis=1,join='inner':橫向增列、縱向交集axb_1_inner=pd.concat([a,b],axis=1,join='inner')(二)主鍵合并數(shù)據(jù)—merge1.主鍵合并數(shù)據(jù)的概念主鍵合并,即通過一個或多個鍵將兩個數(shù)據(jù)集的行連接起來。2.merge函數(shù)實現(xiàn)主鍵合并的函數(shù)是merge,有五種連接方式:左連接(left)、右連接(right)、內(nèi)連接(inner)、外連接(outer)和交叉連接(cross)。其中最簡單的合并方式-inner和outer,涉及的主要參數(shù)如下。pd.merge(left,right,how='inner',on=None)left和right分別表示要合并的左表和右表How:{'left','right','outer','inner','cross'},數(shù)據(jù)連接方式on:表示兩個表合并的主鍵(兩表主鍵必須一致)【例1.2】將例1.1中的a,b兩張表以列鍵“B,D”為主鍵進行交集合并;(2)并集合并。在例1.1的程序后繼續(xù)添加下述代碼:#例1.2merge數(shù)據(jù)合并示例axb_merge_inner=a.merge(b,how='inner',on=['B','D'])axb_merge_outer=a.merge(b,how='outer',on=['B','D'])合并結(jié)果如表1.7所示。表1.7(a)how='inner',on=['B','D']表1.7(b)how='outer',on=['B','D']ABCDFABCDF0A2B2C2D2F20A1B1C1D11A4B4C4D4F41A2B2C2D2F22A3B3C3D33A4B4C4D4F44B6D6F65B8D8F8(三)重疊數(shù)據(jù)合并—combine_first數(shù)據(jù)分析和處理過程中若出現(xiàn)兩份數(shù)據(jù)的內(nèi)容幾乎一致的情況,但是某些特征在其中一張表上是完整的,而在另外一張表上的數(shù)據(jù)則是缺失的時候,可以用combine_first方法進行重疊數(shù)據(jù)合并,其原理示意如下。表1.8表1.9表1.10表1.8和表1.9重疊合并0120120120NaN3.05.0142NaN8.20NaN3.05.01NaN4.6NaN2107.04.01424.68.22NaN7.0NaN2107.04.0combine_first的具體用法如下。df=bine_first(df2)對df1和df2進行重疊合并為df【例1.3】下述程序中數(shù)據(jù)框c和d如表11和表12所示。表1.11數(shù)據(jù)框c表1.12數(shù)據(jù)框d表1.13重疊合并idcpuidcpuidcpu010i701i71i312i312i323i52323i533i53i54545i345i3對c和d進行重疊合并,得到表1.13所示的數(shù)據(jù)框。#例1.3-重疊合并示例importpandasaspdimportnumpyasnpc=pd.DataFrame({'id':[1,np.nan,3,np.nan,5],'cpu':[np.nan,'i3','i5',np.nan,np.nan]})d=pd.DataFrame({'id':[np.nan,2,3,np.nan,5],'cpu':['i7','i3',np.nan,'i5','i3']})#對c和d進行重疊合并cxd=bine_first(d)多源原始數(shù)據(jù)首先需要合并,即將兩個或多個表的數(shù)據(jù)合并為一張表。左面介紹pandas的數(shù)據(jù)合并功能。。培養(yǎng)編寫程序能力。當(dāng)合并方式是inner或outer時的含義:兩表的列按并集合并,行則按on指定的主鍵進行交集(inner)或并集(outer)合并!特別注意concat與merge在合并數(shù)據(jù)時的差異。三、案例分析主講學(xué)生教學(xué)思路向?qū)r間15分鐘數(shù)據(jù)集“第2節(jié)-運籌學(xué)成績.xlsx”是某?!敖鹑跀?shù)學(xué)”和“應(yīng)用數(shù)學(xué)”兩個專業(yè)五個年級的運籌學(xué)成績,五個年級的成績分別保存在不同的表中。試將五張表格的成績合并在一張表中。1.實驗過程將合并成績輸出為數(shù)據(jù)框,該數(shù)據(jù)框有三列:“年級”、“金融數(shù)學(xué)”、“應(yīng)用數(shù)學(xué)”。五張表有相同的列標(biāo)簽:“金融數(shù)學(xué)”、“應(yīng)用數(shù)學(xué)”,所以用數(shù)據(jù)框的append()方法將五張表整合在一張表中。2.實驗程序#%%第1章第2節(jié)案例分析-數(shù)據(jù)集成示例importpandasaspdimportnumpyasnpscore=pd.DataFrame(columns=["金融工程","數(shù)學(xué)"])grade=[]forkinrange(2015,2020):#逐一讀入五張表的數(shù)據(jù)temp=pd.read_excel("第2節(jié)-運籌學(xué)成績.xlsx",sheet_name=str(k))score=pd.concat([score,temp],axis=0,join='inner')#生成“年級”列r=temp.shape[0]grade=grade+list(k*np.ones(r))#將“年級”插入第1列score.insert(loc=0,column="年級",value=grade)#將集成結(jié)果寫入excelscore.to_excel("運籌學(xué)合并成績.xlsx")3.實驗結(jié)果序號年級金融數(shù)學(xué)應(yīng)用數(shù)學(xué)120157168220157882…………55201574NaN56201591NaN5720166145820165257…………114201645NaN115201650NaN1162017729011720179863…………201201774NaN202201797NaN2032018845820420186049…………269201872NaN270201874NaN2712019909727220198396…………3672019NaN433682019NaN39培養(yǎng)學(xué)生編程思想,掌握數(shù)據(jù)集成步驟,為實驗鋪路。四、課堂小結(jié)主講教師教學(xué)思路向?qū)r間5分鐘對學(xué)生的講課進行點評2.引出下一個知識點3.下課培養(yǎng)學(xué)生學(xué)習(xí)素養(yǎng)?,F(xiàn)學(xué)現(xiàn)考查:培養(yǎng)學(xué)生課堂注意力的持久性和實時學(xué)習(xí)力。
教學(xué)過程設(shè)計第一課時一、內(nèi)容回顧,并導(dǎo)出新知課主講教師教學(xué)思路向?qū)r間5分鐘(一)回顧數(shù)據(jù)集成有關(guān)的知識數(shù)據(jù)集成的概念合并數(shù)據(jù):concat,merge,combine_first高階:三個參數(shù)的經(jīng)濟學(xué)意義(二)數(shù)據(jù)清洗原始數(shù)據(jù)在集成之后需要通過補充完整數(shù)據(jù)、填補缺失數(shù)據(jù)或刪除空白數(shù)據(jù)、刪除重復(fù)數(shù)據(jù)、消除異常數(shù)據(jù)、平滑噪聲數(shù)據(jù)、糾正不一致數(shù)據(jù)等一系列清洗操作。1.可簡單處理的清洗項(1)數(shù)據(jù)不完整:補充采集或仿真。(2)屬性值唯一:直接刪除該屬性。(3)屬性值含冗余信息:直接刪除冗余信息。(4)屬性值含特殊符號,比如$、*等符號:根據(jù)分析需要直接刪除特殊符號或通過標(biāo)準(zhǔn)化數(shù)據(jù)來消除特殊符號。二、重復(fù)值的檢測與處理主講教師教學(xué)思路向?qū)r間10分鐘(一)重復(fù)數(shù)據(jù)的概念所謂數(shù)據(jù)重復(fù),即一個或者多個特征中出現(xiàn)了完全相同的觀測值。(二)數(shù)據(jù)去重方法1.unique函數(shù)去重2.set函數(shù)去重3.drop_duplicates函數(shù)去重df(Series).drop_duplicates(subset=None,keep='first',inplace=False)subset:表示需要去重列的列名,默認表示刪除重復(fù)的行keep:{fisrt,last,False},表示重復(fù)時保留第幾個數(shù)據(jù)first=保留第一個last=保留最后一個False=只要有重復(fù),一個都不保留inplace:{True,False},表示是否在原表上進行操作需特別提醒的是,drop_duplicates是按某一列或某幾列的重復(fù)元素刪去重復(fù)數(shù)據(jù)所在的行!【例1.4】隨機生成兩個介于5~15之間的整數(shù)m和n,再隨機生成一個元素介于10~20之間的m×n整數(shù)矩陣M。應(yīng)用三種去重方法對M的每列元素去重。#例1.4程序-數(shù)據(jù)去重示例importnumpyasnpimportpandasaspd#生成數(shù)據(jù)np.random.seed(2)m=np.random.randint(10,15,size=1)n=np.random.randint(5,m,size=1)M=np.random.randint(10,20,size=(m[0],n[0]))print('\n',"生成的矩陣為:M=",'\n',M)#1.unique去重#1.1numpy中的unique函數(shù)A=np.unique(M)print('\n',"矩陣M元素經(jīng)np.unique函數(shù)去重后的數(shù)據(jù):",'\n',A)#此時輸出的是一個一維數(shù)組,包含M中全部的互異元素#1.2pandas中的unique方法df=pd.DataFrame(data=M)col=df.shape[1]B=[[]foriinrange(col)]foriinrange(col):B[i]=df.iloc[i].unique()print('\n',"矩陣M元素經(jīng)df.unique()方法去重后的數(shù)據(jù):",'\n',B)#此時輸出項B是個列表,第i個元素就是M第i列的全部互異值!#2.set去重#set只能去一維數(shù)據(jù)的重復(fù)元素【一維數(shù)據(jù):沒有嵌套的一維列表或一維數(shù)組】,#所以用set去重前,需將數(shù)據(jù)轉(zhuǎn)化為一維數(shù)據(jù)。C=set(M.flatten())print('\n',"矩陣M元素經(jīng)set函數(shù)去重后的數(shù)據(jù):",'\n',C)#此時輸出的是一個集合,包含M中全部的互異元素!#3.drop_duplicate去重#按第2列重復(fù)元素去行D=df.drop_duplicates(subset=1)print('\n',"矩陣M元素經(jīng)drop_duplicates函數(shù)按第2列重復(fù)元素刪去行的數(shù)據(jù):",'\n',D)相應(yīng)結(jié)果如下:0.生成的矩陣為:M=[[1612181712][1115141415][1713161413][1716111315][1814161319][1210141214][1117181219][1817111618][1519191913][1010121818]]1.矩陣M元素經(jīng)np.unique函數(shù)去重后的數(shù)據(jù):[10111213141516171819]2.矩陣M元素經(jīng)df.unique()方法去重后的數(shù)據(jù):[array([16,12,18,17]),array([11,15,14]),array([17,13,16,14]),array([17,16,11,13,15]),array([18,14,16,13,19])]3.矩陣M元素經(jīng)set函數(shù)去重后的數(shù)據(jù):{10,11,12,13,14,15,16,17,18,19}4.矩陣M元素經(jīng)drop_duplicates函數(shù)按第2列重復(fù)元素刪去行的數(shù)據(jù):關(guān)于重復(fù)數(shù)據(jù),要注意以下幾點:a.弄清楚發(fā)生重復(fù)數(shù)據(jù)的原因;b.如何找到重復(fù)數(shù)據(jù);c.找到重復(fù)數(shù)據(jù)后如何處理。注意,set去重應(yīng)用的是集合元素的唯一性特性,會導(dǎo)致數(shù)據(jù)的排列發(fā)生改變。方法三只對pandas中的數(shù)據(jù)框或Series類型有效,該方法不會改變數(shù)據(jù)的原始排列,且兼具代碼簡潔和運行穩(wěn)定的特點。三、缺失值的檢測與處理主講教師教學(xué)思路向?qū)r間10分鐘數(shù)據(jù)中某個或某些特征的值是不完整的,這些值稱為缺失值。(一)缺失值處理方法概覽1.直接刪除:簡單粗暴;2.直接忽略:既不刪除也不填充;3.填充:有光滑填充和不光滑填(二)pandas對缺失值的檢測與處理1.pandas對缺失值的檢測pandas提供了識別缺失值的方法isnull以及識別非缺失值的方法notnull,兩種方法在返回的都是布爾值True或False。返回的結(jié)果正好相反,結(jié)合sum函數(shù)可檢測數(shù)據(jù)中一共含有多少缺失值以及缺失值的分布。2.pandas處理缺失值的方法(1)刪除法刪除法分為刪除觀測記錄和刪除特征,它屬于利用減少樣本量來換取信息完整度的一種方法,是一種最簡單的缺失值處理方法。刪除缺失值的方法:dropna,該方法既可以刪除觀測記錄,也可以刪除特征。df.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)axis:{0,1},0為刪除觀測記錄(行),1為刪除特征(列)。how:{'any','all'},'any'表示只要有缺失值就執(zhí)行刪除操作,'all'則表示刪除全部為缺失值的行或列。Thresh=n,表示保留至少含有n個非na數(shù)值的行。subset:表示進行刪除缺失值操作的列或行,默認表示所有列或行。inplace:{True,False},表示是否在原表上操作。(2)填充法填充法是指用一個特定的值填充缺失值。特征可分為數(shù)值型和類別型,兩者出現(xiàn)缺失值時的處理方法也是不同的。pandas提供了缺失值填充的方法:fillna,其基本語法如下。df.fillna(value=None,method=None,axis=1,inplace=False,limit=None)value:用來替換缺失值的值method:{backfill/bfill,pad/ffill},bfill/ffill分別表示使用下/上一個非缺失值填充缺失值。axis:{0,1},填充方向inplace:{True,False},是否在原表上操作limit:表示填補缺失值個數(shù)的上限,超過則不進行填補【例1.5】下述程序中數(shù)據(jù)框a如下表1.14所示。表1.14數(shù)據(jù)框a表1.15填充后idcpuidcpu0101i31i3填充13i323i523i53i333i34545i3均值3眾數(shù)i3(1)對缺失值進行填充(2)對缺失值進行刪除:刪除有缺失值的行程序:#例1.5-缺失值處理示例importpandasaspdimportnumpyasnpa=pd.DataFrame({'id':[1,np.nan,3,np.nan,5],'cpu':[np.nan,'i3','i5','i3',np.nan]})#1.填充b=a.copy()#--數(shù)值型數(shù)據(jù)id_mean=a['id'].mean()#均值填充缺失值b['id'].fillna(id_mean,inplace=True)#--類別型數(shù)據(jù)cpu_mode=a['cpu'].value_counts().index[0]#眾數(shù)填充缺失值b['cpu'].fillna(cpu_mode,inplace=True)#2.刪除:刪除有缺失值的行c=a.dropna()print('\n',"刪除有缺失值的行:",'\n',c)結(jié)果如下:刪除有缺失值的行:idcpu23.0i5(3)插值法插值是一種通過已知的、離散的數(shù)據(jù)點,計算新數(shù)據(jù)點的過程或方法。常用的插值法有線性插值、多項式插值和樣條插值等。缺失值所在特征為數(shù)值型時,通常利用其均值、中位數(shù)和眾數(shù)等描述其集中趨勢的統(tǒng)計量來填充缺失值。缺失值所在特征為類別型時,則選擇使用眾數(shù)來填充缺失值。四、異常值的檢測與處理主講教師教學(xué)思路向?qū)r間5分鐘所謂的異常值,是指離群點,就是過大或過小、偏離常態(tài)的值。(一)簡單統(tǒng)計量分析簡單統(tǒng)計量分析是指最大值最小值判斷,是否超出合理范圍。(二)3σ原則3σ原則又稱為拉依達法則,它將異常值定義為一組測定值中與平均值的偏差超過3倍標(biāo)準(zhǔn)差的值。距離平均值3σ之外的值概率為Px-μ(三)箱線圖識別1.異常值的定義箱線圖將異常值定義為不在此范圍的值2.箱線圖對異常值識別的圖示3.箱線圖的python實現(xiàn)bx=series.boxplot(return_type='dict')sigulary=bx['fliers'][0].get_ydata()培養(yǎng)數(shù)學(xué)建模思想,掌握數(shù)學(xué)建模步驟,為實驗鋪路,為數(shù)學(xué)建模奠基。五、含噪聲數(shù)據(jù)的處理方法主講教師教學(xué)思路向?qū)r間5分鐘噪聲,是指隨機誤差。數(shù)據(jù)含有噪聲,是指數(shù)據(jù)的觀測值偏離真實值,出現(xiàn)了隨機誤差。數(shù)據(jù)一般都要去噪處理,也稱為數(shù)據(jù)的平滑處理。Python使用rolling方法來平滑數(shù)據(jù)。df.rolling(window,min_periods=none,center=False,win_type=none,on=none,axis=0,closed=none)window:表示時間窗的大小,int或表示移動窗向前幾個數(shù)據(jù);Offset則是針對datetime格式的index進行范圍限定min_periods:每個窗口最少包含的觀測值數(shù)量,小于這個值的窗口結(jié)果為NA。值可以是int,默認None。offset情況下,默認為1。center:把窗口的標(biāo)簽設(shè)置為居中。默認False,居右win_type:窗口的類型,即截取窗的各種函數(shù),默認為None。on:可選參數(shù)。對于dataframe而言,指定要計算滾動窗口的列。值為列名。axis:默認為0,即對列進行計算closed:定義區(qū)間的開閉,支持int類型的window。對于offset類型默認是左開右閉的,即默認為right,可以根據(jù)情況指定為left或both等。六、案例分析主講學(xué)生教學(xué)思路向?qū)r間5分鐘titanic數(shù)據(jù)集記錄了titanic號游輪上891位乘客的12個方面的信息的數(shù)據(jù)集。此處截取前面12條記錄如表1.18所示PassengerIDSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked103Braund,Mr.OwenHarrismale2210A/5211717.25S211Cumings,Mrs.JohnBradley(FlorenceBriggsThayer)female3810PC1759971.2833C85C313Heikkinen,Miss.Lainafemale2600STON/O2.31012827.925S411Futrelle,Mrs.JacquesHeath(LilyMayPeel)female351011380353.1C123S503Allen,Mr.WilliamHenrymale35003734508.05S603Moran,Mr.Jamesmale003308778.4583Q701McCarthy,Mr.TimothyJmale54001746351.8625E46S803Palsson,Master.GostaLeonardmale23134990921.075S913Johnson,Mrs.OscarW(ElisabethVilhelminaBerg)female270234774211.1333S1012Nasser,Mrs.Nicholas(AdeleAchem)female141023773630.0708C1113Sandstrom,Miss.MargueriteRutfemale411PP954916.7G6S1211Bonnell,Miss.Elizabethfemale580011378326.55C103S進行titanic數(shù)據(jù)集基于研究目的的數(shù)據(jù)清洗過程。結(jié)果如下:RangeIndex:891entries,0to890Datacolumns(total12columns):#ColumnNon-NullCountDtype缺失量缺失率0PassengerId891non-nullint64001Survived891non-nullint64002Pclass891non-nullint64003Name891non-nullobject004Sex891non-nullobject005Age714non-nullfloat641770.1986536SibSp891non-nullint64007Parch891non-nullint64008Ticket891non-nullobject009Fare891non-nullfloat640010Cabin204non-nullobject6870.77104411Embarked889non-nullobject20.002245培養(yǎng)學(xué)生能力素質(zhì)。四、課堂小結(jié)主講教師教學(xué)思路向?qū)r間5分鐘1.總結(jié)2.引出下一個知識點3.下課
教學(xué)過程設(shè)計第一課時一、內(nèi)容回顧主講教師教學(xué)思路向?qū)r間4分鐘(一)回顧數(shù)據(jù)清洗有關(guān)的知識可簡單處理的清洗項重復(fù)值的檢測與處理缺失值的檢測與處理異常值的檢測與處理含噪聲數(shù)據(jù)的處理方法二、定性變量的賦值方法主講教師教學(xué)思路向?qū)r間13分鐘(一)獨熱編碼1.定義對于有n個取值的定性變量,獨熱編碼時需要引入n個符號變量:(1)一個符號變量對應(yīng)原定性變量的一個取值;(2)每個符號變量的取值都是一個n維布爾向量,其中有且僅有一個“1”(這個唯一的“1”就是獨熱的含義所在);(3)每個符號變量中那個僅有的“1”對應(yīng)著原定性變量的一個取值。2.pandas的get_dummies函數(shù)pd.get_dummies(data,prefix=None,prefix_sep='_',dummy_na=False,columns=None,sparse=False,drop_first=False)data:需要啞變量處理的數(shù)據(jù)prefix:表示啞變量化后列名的前綴prefix_sep:表示前綴的連接符dummy_na:{True,False},表示是否為NaN值增加一列columns:表示dataframe中需要編碼的列名,默認為None,表示對所有object和category類型進行編碼spare:表示虛擬列是否是稀疏的drop_first:{True,False},表示是否通過從k個分類級別中刪除第一級獲得k-1個分類級別。(二)多熱編碼對于有n個選項的定性變量,多熱編碼時需要引入n個符號變量:(1)一個符號變量對應(yīng)原定性變量的一個取值;(2)對每個參與調(diào)研的個體給出的選項,符號變量中對應(yīng)選項賦值為“1”,沒被選擇的選項,賦值為“0”。三、連續(xù)性數(shù)據(jù)的離散化主講教師教學(xué)思路向?qū)r間15分鐘設(shè)有產(chǎn)銷平衡的運輸問題,其綜合運輸表如表4所示。試建立其數(shù)學(xué)模型。(一)等寬離散化pandas提供了cut函數(shù)實現(xiàn)連續(xù)型數(shù)據(jù)的等寬離散化,語法如下:pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates='raise')x:表示需要進行離散化處理的數(shù)據(jù)bins:接收int,list,array或tuple。若為int,代表離散化后的類別數(shù);若為序列類型的數(shù)據(jù),則表示切分區(qū)間right:{True,False},表示右側(cè)是否閉區(qū)間labels:離散化后各類別的名稱retbins:{True,False},是否返回區(qū)間標(biāo)簽precision:顯示標(biāo)簽的精度include_lowest:{True,False},表示區(qū)間的左邊是開還是閉的duplicates:{'raise','drop'},表示重復(fù)值處理。當(dāng)值為raise時不忽略,當(dāng)值為drop時忽略(二)等頻離散化pandas提供了qcut函數(shù)實現(xiàn)連續(xù)型數(shù)據(jù)的基于百分位數(shù)的等頻離散化,語法如下:pd.qcut(x,q,labels=None,retbins=False,precision=3,duplicates='raise')x:表示需要進行離散化處理的數(shù)據(jù)q:接收int,list,array或tuple。若為int,則q既表示離散化后的類別數(shù),又表示按百分位數(shù)為0,1/q,…,(q-1)/q,1/q的等頻離散化;若為百分位數(shù)序列類型的數(shù)據(jù),則表示百分位數(shù)切分區(qū)間labels:離散化后各類別的名稱retbins:{True,False},是否返回區(qū)間標(biāo)簽precision:顯示標(biāo)簽的精度duplicates:{'raise','drop'},表示重復(fù)值處理。當(dāng)值為raise時不忽略,當(dāng)值為drop時忽略等寬法離散化對數(shù)據(jù)分布具有較高要求,若數(shù)據(jù)分布不均勻,那么各個類的數(shù)目也會變得非常不均勻。還可通過聚類對連續(xù)性數(shù)據(jù)離散化,比如單變量的Fisher最優(yōu)分割法、多變量的k-means聚類法,等等。四、數(shù)據(jù)變換主講教師教學(xué)思路向?qū)r間13分鐘數(shù)據(jù)變換的概念將數(shù)值化數(shù)據(jù)變換為或統(tǒng)一成適合于數(shù)據(jù)分析的形式,稱為數(shù)據(jù)變換。數(shù)據(jù)變換方法1.標(biāo)準(zhǔn)化(Standardization)(1)概念又稱為規(guī)范化或特征縮放(featurescaling),是指將數(shù)值化數(shù)據(jù)按比例縮放,使之落入一個合適的或事先設(shè)定的區(qū)間。(2)適用范圍z-score標(biāo)準(zhǔn)化方法適用于連續(xù)性變量的最大值和最小值未知的情況,或有超出取值范圍的離群數(shù)據(jù)的情況,并要求原始數(shù)據(jù)的分布近似于高斯分布,否則效果會變得不理想。(3)是否標(biāo)準(zhǔn)化需要標(biāo)準(zhǔn)化的模型總結(jié)如下:1)涉及或隱含距離計算的算法,比如K-means、KNN、PCA、SVM等;2)損失函數(shù)中含有正則項時,一般需要標(biāo)準(zhǔn)化;3)梯度下降算法,需要標(biāo)準(zhǔn)化。不需要標(biāo)準(zhǔn)化的模型總結(jié)如下:1)0/1取值的特征通常不需要標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化會破壞它的稀疏性。2)與距離計算無關(guān)的概率模型,不需要標(biāo)準(zhǔn)化,比如樸素貝葉斯算法。3)與距離計算無關(guān)的基于樹的模型,不需要標(biāo)準(zhǔn)化,比如決策樹、隨機森林等,樹中節(jié)點的選擇只關(guān)注當(dāng)前特征在哪里切分對分類更好,即只在意特征內(nèi)部的相對大小,而與特征間的相對大小無關(guān)。4)基于平方損失(即不含正則項)的最小二乘法不需要標(biāo)準(zhǔn)化(4)操作步驟設(shè)有形狀為m,n型的二維數(shù)組我們對X進行列標(biāo)準(zhǔn)化,其步驟如下。S1.求出第j列的均值xj和標(biāo)準(zhǔn)差sS2.進行標(biāo)準(zhǔn)化變換:其中zij為標(biāo)準(zhǔn)化數(shù)據(jù),i=1,2,?,m。這就完成了第j列的標(biāo)準(zhǔn)化,j=1,2,?,nS3.標(biāo)準(zhǔn)化后的數(shù)據(jù)圍繞0上下波動,大于0說明高于平均水平,小于0則低于平均水平。2.歸一化(Normalization)(1)歸一化的目標(biāo)1)把數(shù)據(jù)縮放至0~1范圍之內(nèi)2)把有量綱表達式變?yōu)闊o量綱表達式(2)歸一化的好處1)提升模型的收斂速度2)提升模型的精度3)深度學(xué)習(xí)中數(shù)據(jù)歸一化可以防止模型梯度爆炸(3)常見的數(shù)據(jù)歸一化方法1)min-max歸一化變換2)logistic歸一化變換3)arctan歸一化變換4)小數(shù)定標(biāo)歸一化變換5)將數(shù)據(jù)歸一化到a,b的方法(三)數(shù)據(jù)變換的python實現(xiàn)1.標(biāo)準(zhǔn)化(Standardization)使用前需導(dǎo)入環(huán)境:fromsklearn.preprocessingimportStandardScaler1)功能首先,通過計算訓(xùn)練集中特征的均值、標(biāo)準(zhǔn)差,對每個特征進行獨立居中和縮放。然后,將平均值和標(biāo)準(zhǔn)偏差存儲起來,在以后的測試集上有相同比例來縮放。奇異值(Outlier)會影響均值和標(biāo)準(zhǔn)差,所以會影響標(biāo)準(zhǔn)化效果。2)參數(shù)①copy:boolean,默認為True。如果為False,會盡量避免返回副本,并且直接在原數(shù)據(jù)上標(biāo)準(zhǔn)化。②with_mean:boolean,默認為True。如果為True,會在縮放前對數(shù)據(jù)中心化;如果為False,平均值為0。③with_std:boolean,默認為True。如果為True,將數(shù)據(jù)縮放到單位標(biāo)準(zhǔn)差;如果為False,標(biāo)準(zhǔn)差為1,還可以避免破壞數(shù)據(jù)的稀疏性。3)屬性①mean_:一維數(shù)組或None;每個特征的均值。如果with_mean=False,返回None。②var_:一維數(shù)組或None;每個特征的方差,也為了計算scale_。如果with_std=False,返回None。③scale_:一維數(shù)組或None;每個特征的標(biāo)準(zhǔn)差,對var_開方獲得。如果為with_std=False,返回None。4)擴展:scale()函數(shù)2.歸一化(Normalization)使用前需導(dǎo)入環(huán)境:fromsklearn.preprocessingimportMinMaxScaler1)功能:基于最大值和最小值的歸一化方法,將數(shù)據(jù)轉(zhuǎn)換到區(qū)間0,1上。①適用性:適用于分布范圍較穩(wěn)定的數(shù)據(jù),當(dāng)新數(shù)據(jù)的加入導(dǎo)致最大值和最小值變化時,則需重新定義;②奇異值(Outlier)的影響:因為奇異值會影響最大值或最小值,因此對奇異值非常敏感。2)參數(shù)①min:默認為0,指定區(qū)間的下限;②max:默認為1,指定區(qū)間的上限;③copy:布爾值,默認為True,可選參數(shù),表示拷貝一份數(shù)據(jù)以避免在原數(shù)據(jù)上進行操作,若設(shè)置為False執(zhí)行插入行規(guī)范化并避免復(fù)制。3)屬性①min_:每個功能調(diào)整為最??;②scale_:每個特征數(shù)據(jù)的相對縮放;③data_min_:每個特征在數(shù)據(jù)中出現(xiàn)的最小值;④data_max_:每個特征在數(shù)據(jù)中心出現(xiàn)的最大值。3.正則化:Normalizer一般約定:在矩陣數(shù)據(jù)中,矩陣的每一行是一個樣本觀測值,每一列是一個變量觀測值。若一個矩陣是n×p型的,則表示該矩陣是n個樣本在p個變量上的觀測值。Normalizer就是專門針對矩陣的行進行標(biāo)準(zhǔn)化的類。使用前需先導(dǎo)入環(huán)境:fromsklearn.preprocessingimportNormalizer1)功能:將樣本向量轉(zhuǎn)換為單位向量,或?qū)⒕仃嚨拿恳恍卸嫁D(zhuǎn)換為單位向量。2)思想:Normalization主要思想是對每個樣本計算其p-范數(shù),然后對該樣本中每個元素除以該范數(shù),這樣處理的結(jié)果是使得每個處理后樣本的p-范數(shù)等于1。p-范數(shù)的計算公式:當(dāng)p=1時稱為L1范,p=2時稱為L2范,p=∞時稱為L∞3)參數(shù)①norm:有三個值{'l1','l2','max'},缺省值為l2。②copy:含義與上面的一樣。4)適用①施行Normalizer變換的目的在于樣本向量在點乘運算或其他核函數(shù)計算相似性時,擁有統(tǒng)一的標(biāo)準(zhǔn),有效防止過擬合。②正則化的過程是將每個樣本縮放到單位范數(shù)(每個樣本的范數(shù)為1),如果后面要使用如二次型(點積)或者其它核方法計算兩個樣本之間的相似性,則正則化方法會很有用。③該方法主要應(yīng)用于文本分類和聚類中。例如,對于兩個TF-IDF向量的l2-norm進行點積,就可以得到這兩個向量的余弦相似性。5)擴展:preprocessing.normalize()函數(shù)4.穩(wěn)健標(biāo)準(zhǔn)化:RobustScaler()使用前需先導(dǎo)入環(huán)境:fromsklearn.preprocessingimportRobustScaler1)功能:使用具有魯棒性的統(tǒng)計量縮放帶有異常值(離群值)的數(shù)據(jù)①處理方法:該縮放器刪除中位數(shù),并根據(jù)百分位數(shù)范圍(默認值為IQR:四分位間距)縮放數(shù)據(jù);②IQR:是第1個四分位數(shù)(25%)和第3個四分位數(shù)(75%)之間的范圍;③適用性:適用于包含許多異常值的數(shù)據(jù);④奇異值的影響:RobustScaler利用IQR進行縮放來弱化奇異值的影響。2)參數(shù)①with_centering:布爾值,默認為True,表示在縮放之前將數(shù)據(jù)居中。若使用稀疏矩陣時,這將導(dǎo)致轉(zhuǎn)換引發(fā)異常,因為將它們居中需要建立一個密集的矩陣,在通常的使用情況下,該矩陣可能太大而無法容納在內(nèi)存中;②with_scaling:布爾值,默認為True,表示將數(shù)據(jù)縮放到四分位數(shù)范圍;③quantile_range:元組,默認值為(25.0,75.0),即IQR,表示用于計算scale_的分位數(shù)范圍;④copy:布爾值,默認為True,可選參數(shù),表示拷貝一份數(shù)據(jù)以避免在原數(shù)據(jù)上進行操作,若設(shè)置為False執(zhí)行插入行規(guī)范化并避免復(fù)制。3)屬性①center_:訓(xùn)練集中每個屬性的中位數(shù);②scale_:訓(xùn)練集中每個屬性的四分位間距。五、課堂小結(jié)主講教師教學(xué)思路向?qū)r間13分鐘1.總結(jié)2.引出下一個知識點3.下課
課程教案課程名稱:大數(shù)據(jù)分析技術(shù)課程類型:專業(yè)核心課程上課時間:2024至2025學(xué)年第2學(xué)期授課對象:22級應(yīng)用統(tǒng)計學(xué)23級數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)23級應(yīng)用統(tǒng)計學(xué)教師姓名:所屬院部:數(shù)學(xué)與計算機學(xué)院第二章插值與擬合§1插值§2擬合教案教學(xué)過程設(shè)計第一課時一、導(dǎo)出新知課主講教師教學(xué)思路向?qū)r間4分鐘(一)引例:人口問題【例1】據(jù)中國人口編年史記載,我國人口演化情況如表2.1所示:表2.1中國人口演化時間(年)人口數(shù)量(億)備注13810.5989明太祖洪武十四年14030.6658明太宗永樂元年14790.7186明憲宗成化十五年16851.0172清圣祖康熙二十四年17943.1304清高宗乾隆五十九年18514.3219清文宗咸豐元年1896?“四萬萬人齊下淚,天涯何處是神州”19013.9013清德宗光緒二十七年19083.8231清遜帝宣統(tǒng)元年19334.3726中華民國22年19394.7359中華民國28年1949年10月1日?“中華人民共和國中央人民政府今天成立了!”1953年6月30日6.0191第一次人口普查1964年7月1日6.9458第二次人口普查1982年7月1日10.0818第三次人口普查1989年7月1日11.3368第四次人口普查2000年7月1日12.4260第五次人口普查2005年11月1日13.0628(?)1%抽樣調(diào)查2010年7月1日13.3972第六次人口普查2020年7月1日?第七次人口普查請依據(jù)上述數(shù)據(jù)回答以下幾個問題:(1)1896年面對山河破碎、民不聊生,譚嗣同悲慟寫下“四萬萬人齊下淚,天涯何處是神州!”請估計當(dāng)年的人數(shù)究竟是多少?與譚嗣同所言“四萬萬人”差異幾何?(2)1949年10月1日,毛主席在天安門城樓莊嚴宣布“中華人民共和國中央人民政府今天成立了!”請估計當(dāng)年有多少人口莊嚴地成為了新中國國民?(3)2005年11月1日,按1%抽樣調(diào)查得到當(dāng)時人口數(shù)量為13.0628億。請估計當(dāng)年人口數(shù)量,并與抽樣數(shù)量相比較,誤差是多少?(4)2020年7月1日,或許會開展第七次人口普查。請預(yù)測到時全國人口數(shù)量是多少?運輸問題的數(shù)學(xué)模型是線性規(guī)劃模型,所以對線性規(guī)劃簡單回顧一下,備用。上述問題是典型的數(shù)據(jù)缺失項填充問題,如何由此引出光滑填充法中的插值法和擬合法呢?二、插值的概念主講學(xué)生1教學(xué)思路向?qū)r間9分鐘已知一對變量x,y的一組觀測值:表2.2(x,xxxx…x…xyyyy…y…y其中x1問題:現(xiàn)有變量x的另一組與x1,x2,?,xn完全互異的值t1,t2,?,表2.3觀測數(shù)據(jù)外函數(shù)值的計算xtt…ty也就是問,如何填充表2.3?插值法所遵循的原則插值法處理數(shù)據(jù)填充問題的一個不可破壞的原則是表2中的數(shù)據(jù)是無偏差數(shù)據(jù),從而任何用插值法來填充t1,t2,?,tm處的yy插值的規(guī)范描述真相:設(shè)表2.2確定的真實函數(shù)為fxy我們可以稱fx為描述表2.2的真相目的:計算ft因為真相不得而知,所以ft1,ft2,?,ftm是無法獲得的。此時我們只能按一定的規(guī)則來尋找一個函數(shù)逼近真相:事先選定一個初等函數(shù)類H,比如H是線性函數(shù)的全體:H=從H中找出滿足條件I2.1的函數(shù)Ix,以Ix來逼近fx,從而用I2.1式的含義是,用于逼近真相的函數(shù)Ix必須過表2.2中的所有已知點,即插值原則是不可破壞的。稱等式組2.1為插值條件此處真相fx的專業(yè)稱謂是被插值函數(shù);x1,x2H稱為插值函數(shù)類,一般含有待定參數(shù)c1,c2,?,函數(shù)類Hc1,c2差函數(shù)Rx=fxt1,t當(dāng)插值點t∈x1,xn當(dāng)插值點t?x1,xn表2.1中,已知人口年份從1381年到2010年,所以插值區(qū)間為[1381,2010]。有1896、1949、2005和2020共四個年份的人口是未知的,其中1896、1949和2005在年份區(qū)間[1381,2010]內(nèi),2020則在[1381,2010]外。所以估計1896、1949和2005這三個年份的人口數(shù)量是內(nèi)插值,2020年的人口數(shù)量是外插值。插值和擬合是基礎(chǔ)的數(shù)據(jù)分析技術(shù)。首先介紹插值。給出一組觀測值,給出相關(guān)問題,如何用插值法處理這類問題?以插值法所遵循的原則和插值的規(guī)范描述為基礎(chǔ),為插值法的介紹做鋪墊。真相永遠存在,但我們不得而知。我們能做的、要做的就是對真相的近似,即用一個函數(shù)逼近真相。三、插值方法主講學(xué)生2教學(xué)思路向?qū)r間9分鐘Lagrange多項式插值法設(shè)觀測值如表2.2所示。這樣有n個節(jié)點的插值問題,用作插值函數(shù)的多項式一般是n-1次的,即形如其中a0,a根據(jù)上述條件即可求得Ln-1不難推得,Ln-1L多項式插值的優(yōu)點:光滑;缺點:不具收斂性,一般不宜采用高次多項式。分段線性插值設(shè)已知n+1個觀測點:xi,所謂分段線性插值,是指將兩個相鄰的節(jié)點用直線段連起來,如此形成的一條折線所在的函數(shù)就取為分段線性插值函數(shù)In圖2.1分段線性插值示意圖不難推得,Inx的表達式為其中插值基函數(shù)li分段線性插值的優(yōu)點:收斂;缺點:不光滑。三次樣條插值由節(jié)點a=x0<x1三次樣條函數(shù),記作Sx(1)在每個小區(qū)間上xi(2)滿足插值條件,即Sx(3)曲線光滑,即Sx特點:既光滑又收斂。要用一個函數(shù)逼近真相,該如何尋找用于逼近真相的插值函數(shù)呢?給出三種插值方法。樣條插值是推薦的插值方法。四、插值法的實現(xiàn)主講教師教學(xué)思路向?qū)r間13分鐘SciPy庫中的interpolate模塊提供了豐富的插值函數(shù),比如interp1d、lagrange、UnivariateSpline、griddata等,在實際應(yīng)用中根據(jù)不同的場景選擇合適的插值函數(shù)。1.一維插值從scipy包interpolate模塊中,interp1d是使用較為廣泛的插值函數(shù)。但它有一個缺陷,就是不能外插值。UnivariateSpline是應(yīng)用較廣、既可內(nèi)插值也可外插值的樣條插值函數(shù)。另外還有三個附加插值函數(shù),lagrange是其中典型的一個。下表給出了interp1d、UnivariateSpline、lagrange三個一維插值函數(shù)的調(diào)用格式及相應(yīng)參數(shù)的意義。表2.4常用一維插值命令一覽函數(shù)語法及功能interp1dfun=interp1d(x,y,kind='linear')輸出項:fun,插值函數(shù)輸入項:(1)x,y:觀測點坐標(biāo)(2)kind,插值方法,有如下取值:'linear'線性插值'nearest'最近點插值(向下舍入)'nearest-up'最近點插值(向上舍入)'zero'0階樣條插值'slinear'1階樣條插值'quadratic'2階樣條插值'cubic'3階樣條插值'previous'前點插值'next'后點插值UnivariateSplinefun=UnivariateSpline(x,y,k=3,s=None)輸出項:fun,插值函數(shù)輸入項:(1)x,y:觀測點坐標(biāo)(2)k:樣條多項式的階數(shù),默認為3(3)s-平滑度,s大時平滑度高s=0,插值函數(shù)過樣本點s>0,殘差平方和≤slagrangepoly=erpolate.lagrange(x,y)輸出項:poly-lagrange插值多項式輸入項:x,y-觀測點坐標(biāo)教具演示手機學(xué)習(xí)通投影,幻燈片展示表2.4【實驗2.1】試回答引例中的各個問題。實驗過程:首先,輸入已知數(shù)據(jù)到變量x和y中,并可視化已知數(shù)據(jù);然后,列出內(nèi)插值點和外插值點xi=[1896,1949,2005,2020]最后,因為有外插值,所以應(yīng)用UnivariateSpline或lagrange進行插值。實驗結(jié)果:(1)應(yīng)用UnivariateSpline和lagrange分別插值,結(jié)果如下:表2.5插值結(jié)果t1896194920052020UnivariateSpliney3.975.6612.8315.61lagrangey-2.2560e+09-2.7569e+09-3.4016e+09-3.6113e+09由上述結(jié)果看出,lagrange插值結(jié)果可靠性低。(2)原始觀測值和插值結(jié)果的可視化:圖2.2分段線性插值示意圖教具演示在投影儀上進行演示,輸入相關(guān)程序,輸出相關(guān)結(jié)果,顯示圖2.2?!緦嶒?.2】溫度變化曲線從1:00到12:00的11個小時內(nèi)每隔1小時測量一次溫度,測得數(shù)據(jù)如下。表2.6插值結(jié)果時刻1:002:003:004:005:006:007:008:009:0010:0011:0012:00溫度589152529313022252724試估計從0:00到14:00每隔0.1小時的溫度值。實驗過程:首先,將時間t從0:00到14:00分割為間隔0.1的數(shù)組。然后,因為有外插值,所以用UnivariateSpline函數(shù)求解t對應(yīng)的溫度w,其中0:00到0:54及12:06到14:00是外插值,其余為內(nèi)插值。最后,可視化插值數(shù)據(jù)。實驗結(jié)果:(1)python插值結(jié)果(完整結(jié)果見課程資料文檔“實驗2插值結(jié)果.xlsx”)表2.7溫度插值結(jié)果插值類型插值點插值結(jié)果外插值0-8.217760.1-6.20198……0.83.436840.94.27362內(nèi)插值1.15.624211.26.15445……11.824.965311.924.5044外插值12.123.452912.222.8637……13.97.11592145.89367(2)原始觀測值及插值結(jié)果的可視化圖2.3插值結(jié)果可視化教具演示在投影儀上用Spyder進行演示,輸入相關(guān)程序,輸出相關(guān)結(jié)果,顯示圖2.3。2.多維插值表2.8常用多維插值命令一覽函數(shù)語法及功能二維插值interp2dfun=interp2d(x,y,z,kind='linear')輸出項:fun,插值函數(shù),輸出二維數(shù)組(矩陣)輸入項:(1)x,y:一維數(shù)組(2)z:形狀為(len(y),len(x))的二維數(shù)組(3)kind:'linear','cubic','quintic'SmoothBivariateSplinefun=SmoothBivariateSpline(x,y,z,s=None)輸出項:fun,插值函數(shù),輸出一維數(shù)組(向量)輸入項:(1)x,y,z:一維數(shù)據(jù)點序列(2)s:平滑度LSQBivariateSplinevals=LSQBivariateSpline(x,y,z,tx,ty)輸入項:(1)x,y,z:一維數(shù)據(jù)點序列(2)tx,ty:嚴格的一維插值節(jié)點序列輸出項:vals:tx,ty對應(yīng)的插值,一維數(shù)組多維及多維插值griddatavali=griddata(points,values,xi,method='linear')輸入項:(1)points:數(shù)據(jù)點坐標(biāo)(2)values:數(shù)據(jù)點坐標(biāo)對應(yīng)的值(3)vali是xi對應(yīng)的插值,一維數(shù)組(4)method:'linear','nearest','cubic'教具演示手機學(xué)習(xí)通投影,幻燈片展示表2.8【實驗2.3】平板溫度分布曲面測得平板表面3×5網(wǎng)格點處的溫度分別為:828180828479636165818484828586試作出平板表面的溫度分布曲面的圖形。實驗過程:(1)先在三維坐標(biāo)畫出原始數(shù)據(jù),畫出粗糙的溫度分布曲面圖。圖2.4原始數(shù)據(jù)可視化(2)對x,y進行加細以平滑數(shù)據(jù)分別在x軸、y軸上應(yīng)用linspace函數(shù)對x,y進行均勻采樣,在采樣點處插值。(3)畫出插值后的溫度分布曲面圖。圖2.5插值后溫度曲面教具演示在投影儀上用Spyder進行演示,輸入相關(guān)程序,輸出相關(guān)結(jié)果,顯示圖2.4和圖2.5。不同場景選擇合適的插值函數(shù),下面通過給出一維插值和多維插值的案例進一步深入了解。培養(yǎng)分析問題和解決問題能力。四、課堂小結(jié)主講教師教學(xué)思路向?qū)r間7分鐘對學(xué)生1、學(xué)生2的講課進行點評教態(tài)、節(jié)奏、課堂語言組織、板書;糾正描述有瑕疵的知識點,帶動學(xué)生整體進步?,F(xiàn)學(xué)現(xiàn)考查打開隨機成對點名器抽點兩個學(xué)生,相互之間各提一問、各答一問,不會時允許班內(nèi)求助。引出下一個知識點下課培養(yǎng)學(xué)生師范生素質(zhì)?,F(xiàn)學(xué)現(xiàn)考查:培養(yǎng)學(xué)生課堂注意力的持久性和實時學(xué)習(xí)力和短時記憶力;活躍課堂氣氛。第二課時五、引導(dǎo)進入課堂主講教師教學(xué)思路向?qū)r間2分鐘引出本節(jié)課的知識點:曲線擬合,那么關(guān)鍵問題(1)什么是曲線擬合?(2)曲線擬合如何實現(xiàn)?引導(dǎo)課堂進入曲線擬合的相關(guān)介紹,以上課時的人口問題為例引出擬合的概念。六、曲線擬合的概念主講學(xué)生3教學(xué)思路向?qū)r間15分鐘問題描述已知一對變量(x表2.9(x,xxxx…x…xyyyy…y…y其中x1問題:現(xiàn)有變量x的另一組與x1,x2,?,xn完全互異的值t1,t2,?,表2.10觀測數(shù)據(jù)外函數(shù)值的計算xtt…ty也就是問,如何填充表2.10?表2.9說明x和y之間存在依賴關(guān)系:y=fx。這個關(guān)系也稱為真相,是真實存在卻又不為人知的。所以對表2.10的填充不可能通過y=f(二)擬合所遵循的原則擬合法處理數(shù)據(jù)填充問題的一個原則是表2.9中的數(shù)據(jù)是可能有偏差的數(shù)據(jù),即y=fx不必通過表2.9y2.2其中?i是真相fxi(三)逼近真相表2.9中的數(shù)據(jù)是我們當(dāng)前僅有的x和y的信息。但由擬合原則知,與插值不同,擬合中的真相y=fx對這僅有的信息也是不滿足的,即實際上我們無法從表2.9中的數(shù)據(jù)獲得x和y之間的真實依賴關(guān)系y=f那我們是否就此放棄對真相y=fx的我們雖然無法從表2.9數(shù)據(jù)獲知y=fx的真實表達式,但我們可以由表2.9中的數(shù)據(jù)找到一個的連續(xù)函數(shù)y=?x來最大程度地逼近y=fx,也就是說雖然我們無法獲知真相,卻可以無限地逼近真相。用于逼近真相的函數(shù)y=?(四)擬合步驟假設(shè)表2.9是如下一組數(shù)據(jù):表2.11觀測數(shù)據(jù)外函數(shù)值的計算序號xy101.708620.26181.704830.52360.594640.7854-0.284151.0472-1.297961.309-2.218671.5708-2.261981.8326-1.427892.0944-0.3589102.35621.5756112.6182.7453122.87983.7628133.14164.4986表2.11中的數(shù)據(jù)必然唯一確定了一個y與x的函數(shù)關(guān)系:y=fx第一步,描繪散點圖,觀察y隨x的變化趨勢。描繪表2.9中數(shù)據(jù)的散點圖,如圖2.6所示。圖2.6表2.11數(shù)據(jù)對應(yīng)的散點圖第二步,選擇逼近函數(shù)族:根據(jù)散點圖2.6觀察y隨x的變化趨勢,據(jù)此選擇逼近y=fx的連續(xù)曲線y=?x,其中含有待定參數(shù)一般地,y=?x選擇為多項式函數(shù)、基本初等函數(shù)的簡單組合、可線性化函數(shù)(見表2.12)、logistic函數(shù)、雙曲函數(shù)表2.12可線性化模型編號模型名稱模型表達式*1“倒數(shù)-倒數(shù)”模型:因變量y和自變量x都取倒數(shù)2“對數(shù)-對數(shù)”模型:因變量y和自變量x都取對數(shù)3“對數(shù)-線性”模型:y取對數(shù),x是線性的4“對數(shù)-倒數(shù)”模型:y取對數(shù),x取倒數(shù)5“線性-對數(shù)”模型:y是線性的,x取對數(shù)表2.12中第1個逼近函數(shù)族是。第三步,確定待定參數(shù)。在第二步的函數(shù)族中確定最優(yōu)逼近函數(shù),確定參數(shù)的方法一般是Gauss于1809年發(fā)表在《天體運動論》中的最小二乘法。確定參數(shù)的算法已集成在python相應(yīng)的函數(shù)中,我們只需會調(diào)用這些函數(shù)即可。上述確定最優(yōu)逼近函數(shù)的步驟統(tǒng)稱為曲線擬合,是各種實驗和統(tǒng)計問題有關(guān)變量的多次觀測數(shù)據(jù)的常用處理方法。不能通過這種填充的方式處理,那又該如何處理這類問題呢?曲線擬合是我們逼近真相的相對簡單而又常用的方法。通過描述曲線擬合的步驟,自然形成曲線擬合的定義。第二步是最難的一步,因為需要根據(jù)散點圖揣摩逼近真相(散點圖所在曲線)的函數(shù)的表達式。其它模型可以類似理解。只有確定了逼近函數(shù)中參數(shù)的值以后,才能得到逼近真相的具體的函數(shù)。七、曲線擬合的實現(xiàn)主講教師教學(xué)思路向?qū)r間16分鐘(一)擬曲線擬合命令表2.13常用曲線擬合命令一覽函數(shù)(庫.模塊)語法及功能polyfit(numpy)poly=polyfit(x,y,d)輸出項:poly,擬合多項式的系數(shù)(降冪排列)輸入項:(1)x,y:一維數(shù)組(2)d:多項式次數(shù)備注:(1)需配合polyval函數(shù)求多項式的函數(shù)值(2)poly1d函數(shù)輸出poly的具體的多項式表達式least_squares(scipy.optimize)xopt=least_squares(fun,x0,args=(),bounds=(-inf,inf),method='trf',loss='linear')輸出項:xopt.x,最優(yōu)參數(shù)值輸入項:(1)fun:殘差函數(shù)(2)x0:迭代初值(3)args():傳遞樣本觀測數(shù)據(jù)及其他參數(shù)值(4)bounds:約定參數(shù)取值范圍(5)method:{‘trf’,‘dogbox’,‘lm’}(6)loss:損失函數(shù)形式,取值有五個:{linear,soft_l1,huber,cauchy,arctan}curve_fit(scipy.optimize)popt,pcov=curve_fit(fun,xdata,ydata,p0=None,bounds=(-inf,inf),method=None)輸出項:popt是最優(yōu)參數(shù)值輸入項:(1)fun:擬合函數(shù)(2)xdata,ydata:樣本數(shù)據(jù)(3)p0:迭代初值(4)bounds,method:同least_squaresleastsq(scipy.optimize)xopt=leastsq(fun,x0,args=())輸出項:xopt,最優(yōu)參數(shù)值輸入項:(1)fun:殘差函數(shù)(2)x0:迭代初值(3)args():傳遞樣本觀測數(shù)據(jù)及其他參數(shù)值上述擬合函數(shù)中輸入項method有三個值:trf、dogbox、lm,含義簡介如下。(1)lm=Levenberg-Marquardt(萊文伯格-麥夸特)算法,非常強大且高效。對于不受限制的問題它應(yīng)該是首選算法。(2)trf=trust-regionreflect(可信區(qū)域反射)算法,該算法在無界和有界問題上都非常健壯,因此被選為默認算法。(3)dogbox在trust-region框架中運行,但考慮了矩形信任區(qū)域,而不是常規(guī)的橢球體。在有少量變量的有界問題中該算法通常優(yōu)于trf。(二)案例解析【實驗2.4】為了測定刀具的磨損速度,做如下實驗:每經(jīng)過了時間t測量一次刀具的厚度d,得到一組實驗數(shù)據(jù)見表2.14。表2.14刀具厚度隨使用時間變化數(shù)據(jù)t01234567d2726.826.526.326.125.725.324.8試分析刀具磨損速度。實驗過程:這是一個探索刀具厚度d與使用時間t的函數(shù)關(guān)系的問題,是一個典型的曲線擬合問題。按曲線擬合的步驟一步步進行。第一步,描散點圖,觀察d隨t的變化趨勢。圖2.7表2.14數(shù)據(jù)對應(yīng)的散點圖第二步,根據(jù)變化趨勢選擇逼近函數(shù)族。據(jù)圖觀察,d隨t呈近似線性變化趨勢,故逼近函數(shù)選擇為d=kt+b其中k,b為待定參數(shù)。第三步,確定逼近函數(shù)族中的待定參數(shù),得到逼近函數(shù)族中對真相的最佳逼近。應(yīng)用表2.13中的擬合函數(shù)求解參數(shù)k,b的估計值,對四個函數(shù)的結(jié)果進行比較。實驗結(jié)果:(1)參數(shù)擬合結(jié)果參數(shù)polyfitleast_squaresleastsqcurve_fitk-0.3036-0.3036-0.3036-0.3036b=27.12527.12527.12527.125經(jīng)過對比,四個函數(shù)擬合結(jié)果相同。相應(yīng)的可視化結(jié)果如下:圖2.8擬合曲線(2)刀具磨損速度曲線為d=-0.3036t+27.125教具演示在投影儀上進行演示,輸入相關(guān)程序,輸出相關(guān)結(jié)果,顯示圖2.8?!緦嶒?.5】測得某零件局部輪廓線的坐標(biāo)如下表所示:表2.15局部輪廓線數(shù)據(jù)x0.040.350.670.981.301.611.922.242.552.873.18y0.020.120.390.781.211.591.811.801.500.890.02試問該零件邊沿線大致是一條什么曲線?實驗過程:第一步,描散點圖,觀察y隨x的變化趨勢。圖2.9表2.15數(shù)據(jù)對應(yīng)的散點圖第二步,根據(jù)變化趨勢選擇逼近函數(shù)族;據(jù)圖觀察,y隨x近似呈三次曲線變化趨勢,故逼近函數(shù)選擇為y=a其中a,b,c,d為待定參數(shù)。第三步,確定逼近函數(shù)族中的待定參數(shù)得逼近函數(shù)族中對真相的最佳逼近函數(shù)。應(yīng)用表2.13中的擬合函數(shù)求解參數(shù)a,b,c,d的估計值。實驗結(jié)果:1.參數(shù)擬合結(jié)果(1)curvefit在不同方法(method)下的擬合結(jié)果參數(shù)methoda=b=c=d=trf-0.3827021.213610.00268435-0.00542872dogbox-0.3827021.213610.00268433-0.00542871lm-0.3827021.213610.00268396-0.00542866可以看出,curve_fit的三種方法(method)擬合結(jié)果僅有十分微小的差異。所以,在curve_fit下輪廓線局部方程可取為:y=-0.3827(2)least_squares在不同損失(loss)下的擬合結(jié)果參數(shù)lossa=b=c=d=linear-0.3827021.213610.00268435-0.00542872soft_l1-0.3827161.213680.00259024-0.00540865huber-0.3827021.213610.00268438-0.00542873cauchy-0.3827311.213760.002496-0.00538856arctan-0.3827021.213610.00268372-0.00542859可以看出,least_squares的五種損失(loss)擬合結(jié)果也僅有些微的差異。所以,在least_squares下輪廓線局部方程與curvefit是一致的。相應(yīng)的可視化結(jié)果如下圖所示:圖2.10curve_fit三種方法擬合結(jié)果圖示教具演示在投影儀上進行演示,輸入相關(guān)程序,輸出相關(guān)結(jié)果,顯示圖2.10。圖2.11least_squares五種損失擬合結(jié)果圖示所有回歸命令都可以求解相應(yīng)的曲線擬合問題。培養(yǎng)學(xué)生分析問題和解決問題的能力。通過相應(yīng)的編程演示和學(xué)生動手操作,提高學(xué)生編程和實際操作能力。八、課堂小結(jié)主講教師教學(xué)思路向?qū)r間10分鐘講課點評教態(tài)、節(jié)奏、課堂語言組織、板書;糾正描述有瑕疵的知識點,帶動學(xué)生整體進步。課堂小結(jié)提升課程的兩性一度。九、作業(yè)布置主講教師教學(xué)思路向?qū)r間2分鐘(一)課后作業(yè)學(xué)習(xí)通(二)課后輔導(dǎo)學(xué)習(xí)通-課程討論課程教案課程名稱:大數(shù)據(jù)分析技術(shù)課程類型:專業(yè)核心課程上課時間:2024至2025學(xué)年第2學(xué)期授課對象:22級應(yīng)用統(tǒng)計學(xué)23級數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)23級應(yīng)用統(tǒng)計學(xué)教師姓名:所屬院部:數(shù)學(xué)與計算機學(xué)院第三章回歸分析§1線性回歸分析§2非線性回歸分析教案教學(xué)過程設(shè)計第一課時一、內(nèi)容回顧,并導(dǎo)出新知課主講教師教學(xué)思路向?qū)r間4分鐘(一)回顧線性回歸有關(guān)的概念線性回歸類型:包括一元線性回歸和多元線性回歸。線性回歸函數(shù)和
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年駐馬店幼兒師范高等??茖W(xué)校單招綜合素質(zhì)考試題庫附答案解析
- 2026中國中醫(yī)科學(xué)院望京醫(yī)院招聘國內(nèi)應(yīng)屆高校畢業(yè)生11人(提前批)考試筆試備考題庫及答案解析
- 汽車研發(fā)實驗室技術(shù)員面試技巧與題目解析
- 某大型地產(chǎn)公司項目部負責(zé)人面試題目集
- 注冊事務(wù)專員考試題庫及答案
- 建筑設(shè)計師面試題及設(shè)計理念探討
- 2025固原市新時代購物中心招聘4人筆試考試備考試題及答案解析
- 2025遼寧康復(fù)醫(yī)學(xué)中心科研助理招聘考試筆試參考題庫附答案解析
- 物流經(jīng)理面試技巧與面試題庫含答案
- 高職第三學(xué)年(軟件工程)軟件開發(fā)流程2026年試題及答案
- 全球重點區(qū)域算力競爭態(tài)勢分析報告(2025年)-
- 2025北京熱力熱源分公司招聘10人參考筆試題庫及答案解析
- 2025年湖南省法院系統(tǒng)招聘74名聘用制書記員筆試參考題庫附答案
- 2025廣西機電職業(yè)技術(shù)學(xué)院招聘教職人員控制數(shù)人員79人備考題庫及答案解析(奪冠)
- 2026屆高考政治一輪復(fù)習(xí):必修2 經(jīng)濟與社會 必背主干知識點清單
- 大學(xué)生校園創(chuàng)新創(chuàng)業(yè)計劃書
- 護士職業(yè)壓力管理與情緒調(diào)節(jié)策略
- 貴州國企招聘:2025貴州涼都能源有限責(zé)任公司招聘10人備考題庫及答案詳解(必刷)
- 招標(biāo)人主體責(zé)任履行指引
- 2025-2026學(xué)年北師大版五年級數(shù)學(xué)上冊(全冊)知識點梳理歸納
- 2021年廣東省廣州市英語中考試卷(含答案)
評論
0/150
提交評論