Python數(shù)據(jù)分析與應(yīng)用(第2版)課件(共9章)第6章-使用scikit-learn構(gòu)建模型_第1頁
Python數(shù)據(jù)分析與應(yīng)用(第2版)課件(共9章)第6章-使用scikit-learn構(gòu)建模型_第2頁
Python數(shù)據(jù)分析與應(yīng)用(第2版)課件(共9章)第6章-使用scikit-learn構(gòu)建模型_第3頁
Python數(shù)據(jù)分析與應(yīng)用(第2版)課件(共9章)第6章-使用scikit-learn構(gòu)建模型_第4頁
Python數(shù)據(jù)分析與應(yīng)用(第2版)課件(共9章)第6章-使用scikit-learn構(gòu)建模型_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用scikit-learn構(gòu)建模型目錄1構(gòu)建并評價聚類模型使用sklearn轉(zhuǎn)換器處理數(shù)據(jù)2構(gòu)建并評價分類模型3構(gòu)建并評價回歸模型4加載datasets模塊中的數(shù)據(jù)集數(shù)據(jù)集加載函數(shù)數(shù)據(jù)集任務(wù)類型數(shù)據(jù)集加載函數(shù)數(shù)據(jù)集任務(wù)類型load_boston回歸load_breast_cancer分類、聚類fetch_california_housing回歸load_iris分類、聚類load_digits分類load_wine分類load_diabetes回歸load_linnerud回歸sklearn庫的datasets模塊集成了部分數(shù)據(jù)分析的經(jīng)典數(shù)據(jù)集,讀者可以使用這些數(shù)據(jù)集進行數(shù)據(jù)預(yù)處理、建

模等操作,以及熟悉sklearn的數(shù)據(jù)處理流程和建模流程。datasets模塊常用數(shù)據(jù)集的加載函數(shù)及其解釋,如下表所示。

使用sklearn進行數(shù)據(jù)預(yù)處理需要用到sklearn提供的統(tǒng)一接口——轉(zhuǎn)換器(Transformer)。加載datasets模塊中的數(shù)據(jù)集fromsklearn.datasetsimportload_diabetes#加載diabetes數(shù)據(jù)集diabetes=load_diabetes()#將數(shù)據(jù)集賦值給diabetes變量print('diabetes數(shù)據(jù)集的長度為:',len(diabetes))#使用len函數(shù)查看數(shù)據(jù)集長度print('diabetes數(shù)據(jù)集的類型為:',type(diabetes))#使用type函數(shù)查看數(shù)據(jù)集類型diabetes數(shù)據(jù)集的長度為:7diabetes數(shù)據(jù)集的類型為:<class'sklearn.utils.Bunch'>

如果需要加載某個數(shù)據(jù)集,那么可以將對應(yīng)的函數(shù)賦值給某個變量。加載diabetes數(shù)據(jù)集,如以下代碼。加載datasets模塊中的數(shù)據(jù)集diabetes_data=diabetes['data']#獲取數(shù)據(jù)集的數(shù)據(jù)diabetes_target=diabetes['target']#獲取數(shù)據(jù)集的標簽diabetes_names=diabetes['feature_names']#獲取數(shù)據(jù)集的特征名diabetes_desc=diabetes['DESCR']#獲取數(shù)據(jù)集的描述信息查看對應(yīng)信息只需print()輸入對應(yīng)變量名即可加載后的數(shù)據(jù)集可以視為一個字典,幾乎所有的sklearn數(shù)據(jù)集均可以使用如下屬性分別獲取數(shù)據(jù)集的數(shù)據(jù)、標簽、特征名稱和描述信息。datatargetfeature_namesDESCR獲取sklearn自帶數(shù)據(jù)集的內(nèi)部信息,如以下代碼。將數(shù)據(jù)集劃分為訓(xùn)練集和測試集

在數(shù)據(jù)分析過程中,為了保證模型在實際系統(tǒng)中能夠起到預(yù)期作用,一般需要將總樣本分劃分成獨立的3

部分如下。訓(xùn)練集(trainset)驗證集(validationset)測試集(testset)

典型的劃分方式如下。

訓(xùn)練集數(shù)量,占總樣本數(shù)量的50%。

驗證集數(shù)量,占總樣本數(shù)量的25%。

測試集數(shù)量,占總樣本數(shù)量的25%。用于估計模型用于確定網(wǎng)絡(luò)結(jié)構(gòu)或控制模型復(fù)雜程度的參數(shù)用于檢驗最優(yōu)模型的性能將數(shù)據(jù)集劃分為訓(xùn)練集和測試集當總樣本數(shù)據(jù)較少時,使用上面的方法將樣本數(shù)據(jù)劃分為3部分將會不合適。常用的方法是留少部分樣本數(shù)據(jù)做測試集,然后對其余N個樣本采用K折交叉驗證法。其基本步驟如下。

將樣本打亂。

均勻分成K份。

輪流選擇其中K-1份做訓(xùn)練,剩余的一份做驗證。

計算預(yù)測誤差平方和。

將K次的預(yù)測誤差平方和的均值作為選擇最優(yōu)模型結(jié)構(gòu)的依據(jù)。將數(shù)據(jù)集劃分為訓(xùn)練集和測試集

在sklearn的model_selection模塊中提供了train_test_split函數(shù),可實現(xiàn)對數(shù)據(jù)集進行拆分,train_test_split函數(shù)

的基本使用格式如下。train_test_split函數(shù)是最常用的數(shù)據(jù)劃分方法,在model_selection模塊中還提供了其他數(shù)據(jù)集劃分的函數(shù),如PredefinedSplit函數(shù)、ShuffleSplit函數(shù)等。讀者可以通過查看官方文檔學(xué)習(xí)其使用方法。sklearn.model_selection.train_test_split(*arrays,test_size=None,train_size=None,random_state=None,shuffle=True,stratify=None)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集train_test_split函數(shù)的常用參數(shù)及其說明如下表所示。數(shù)值型數(shù)據(jù)類型說明*arrays接收list、numpy數(shù)組、scipy-sparse矩陣、Pandas數(shù)據(jù)幀。表示需要劃分的數(shù)據(jù)集。若為分類回歸,則分別傳入數(shù)據(jù)和標簽;若為聚類,則傳入數(shù)據(jù)。無默認值test_size接收float、int。表示測試集的大小。若傳入為float型參數(shù)值,則應(yīng)介于0~1之間,表示測試集在總數(shù)據(jù)集中的占比;若傳入為int型參數(shù)值,則表示測試樣本的絕對數(shù)量。默認為Nonetrain_size接收float、int。表示訓(xùn)練集的大小,傳入的參數(shù)值說明與test_size參數(shù)的參數(shù)值說明相似。默認為Nonerandom_state接收int。表示用于隨機抽樣的偽隨機數(shù)發(fā)生器的狀態(tài)。默認為Noneshuffle接收bool。表示在拆分數(shù)據(jù)集前是否對數(shù)據(jù)進行混洗。默認為Truestratify接收array。表示用于保持拆分前類的分布平衡。默認為None將數(shù)據(jù)集劃分為訓(xùn)練集和測試集查看對應(yīng)信息只需print()輸入對應(yīng)變量名.shape即可train_test_split函數(shù)可分別將傳入的數(shù)據(jù)集劃分為訓(xùn)練集和測試集。如果傳入的是一組數(shù)據(jù)集,那么生成的就是這一組數(shù)據(jù)集隨機劃分后的訓(xùn)練集和測試集,總共兩組。如果傳入的是兩組數(shù)據(jù)集,則生成的訓(xùn)練集和測試集分別兩組,總共4組。將breast_cancer數(shù)據(jù)集劃分為訓(xùn)練集和測試集,如以下代碼。fromsklearn.model_selectionimporttrain_test_split#加載diabetes數(shù)據(jù)集diabetes_data_train,diabetes_data_test,diabetes_target_train,diabetes_target_test=\#定義變量名train_test_split(diabetes_data,diabetes_target,test_size=0.2,random_state=42)#調(diào)用函數(shù)劃分數(shù)據(jù)集使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維為了幫助用戶實現(xiàn)大量的特征處理相關(guān)操作,sklearn將相關(guān)的功能封裝為轉(zhuǎn)換器。轉(zhuǎn)換器主要包括3個方法:fit()、transform()和fit_transform()。轉(zhuǎn)換器的3種方法及其說明如下表所示。方法名稱方法說明fit()主要通過分析特征和目標值提取有價值的信息,這些信息可以是統(tǒng)計量、權(quán)值系數(shù)等transform()主要用于對特征進行轉(zhuǎn)換。從可利用信息的角度分為無信息轉(zhuǎn)換和有信息轉(zhuǎn)換。無信息轉(zhuǎn)換是指不利用任何其他信息進行轉(zhuǎn)換,如指數(shù)函數(shù)和對數(shù)函數(shù)轉(zhuǎn)換等。有信息轉(zhuǎn)換根據(jù)是否利用目標值向量又可分為無監(jiān)督轉(zhuǎn)換和有監(jiān)督轉(zhuǎn)換。無監(jiān)督轉(zhuǎn)換指只利用特征的統(tǒng)計信息的轉(zhuǎn)換,如標準化和PCA降維等。有監(jiān)督轉(zhuǎn)換指既利用了特征信息又利用了目標值信息的轉(zhuǎn)換,如通過模型選擇特征和LDA降維等fit_transform()即先調(diào)用fit()方法,然后調(diào)用transform()方法使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維目前,使用sklearn轉(zhuǎn)換器能夠?qū)崿F(xiàn)對傳入的NumPy數(shù)組進行如下處理。標準化處理。歸一化處理。二值化處理。PCA降維等操作。在第5章中,基于pandas庫介紹了標準化處理的原理、概念與方法。但是在數(shù)據(jù)分析過程中,各類特征處理相關(guān)的操作都需要對訓(xùn)練集和測試集分開進行,需要將訓(xùn)練集的操作規(guī)則、權(quán)重系數(shù)等應(yīng)用到測試集中。如果使用pandas,那么應(yīng)用至測試集的過程相對煩瑣,使用sklearn轉(zhuǎn)換器可以解決這一困擾。使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維sklearn除了提供離差標準化函數(shù)MinMaxScaler外,還提供了一系列數(shù)據(jù)預(yù)處理函數(shù),如下表所示。函數(shù)名稱函數(shù)說明StandardScaler對特征進行標準差標準化Normalizer對特征進行歸一化Binarizer對定量特征進行二值化處理OneHotEncoder對定性特征進行獨熱編碼處理FunctionTransformer對特征進行自定義函數(shù)變換使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維

sklearn除了提供基本的特征變換函數(shù)外,還提供了降維算法、特征選擇算法,這些算法的使用也是通過轉(zhuǎn)換器的方式進行的。sklearn的decomposition模塊中提供了PCA類,可實現(xiàn)對數(shù)據(jù)集進行PCA降維,PCA類的基本使用格式如下。classsklearn.decomposition.PCA(n_components=None,*,copy=True,whiten=False,svd_solver='auto',tol=0.0,iterated_power='auto',random_state=None)使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維PCA類常用參數(shù)及其說明如下表所示。參數(shù)名稱參數(shù)說明n_components接收int、float、'mle'。表示降維后要保留的特征緯度數(shù)目。若未指定參數(shù)值,則表示所有特征均會被保留下來;若傳入為int型參數(shù)值,則表示將原始數(shù)據(jù)降低到n個維度;若傳入為float型參數(shù)值,則將根據(jù)樣本特征方差來決定降維后的維度數(shù);若賦值為“mle”,則將會使用MLE算法來根據(jù)特征的方差分布情況自動選擇一定數(shù)量的主成分特征來降維。默認為Nonecopy接收bool。表示是否在運行算法時將原始訓(xùn)練數(shù)據(jù)進行復(fù)制。若為True,則運行算法后原始訓(xùn)練數(shù)據(jù)的值不會有任何改變;若為False,則運行算法后原始訓(xùn)練數(shù)據(jù)的值將會發(fā)生改變。默認為Truewhiten接收bool。表示對降維后的特征進行標準化處理,使得具有相同的方差。默認為Falsesvd_solver接收str。表示使用的SVD算法,可選randomized、full、arpack、auto。randomized一般適用于數(shù)據(jù)量大,數(shù)據(jù)維度多,同時主成分數(shù)目比例又較低的PCA降維。full是使用SciPy庫實現(xiàn)的傳統(tǒng)SVD算法。arpack和randomized的適用場景類似,區(qū)別在于,randomized使用的是sklearn自己的SVD實現(xiàn),而arpack直接使用了SciPy庫的sparseSVD實現(xiàn)。auto則代表PCA類會自動在上述3種算法中去權(quán)衡,選擇一個合適的SVD算法來降維。默認為auto目錄1構(gòu)建并評價聚類模型使用sklearn轉(zhuǎn)換器處理數(shù)據(jù)2構(gòu)建并評價分類模型3構(gòu)建并評價回歸模型4使用sklearn估計器構(gòu)建聚類模型聚類的輸入是一組未被標記的樣本,聚類根據(jù)數(shù)據(jù)自身的距離或相似度將它們劃分為若干組,劃分的原則是組內(nèi)(內(nèi)部)距離最小化,而組間(外部)距離最大化,如圖所示。使用sklearn估計器構(gòu)建聚類模型常用的聚類算法及其類別如下表所示。算法類別包括的主要算法劃分(分裂)方法K-Means算法(K-平均)、K-MEDOIDS算法(K-中心點)和CLARANS算法(基于選擇的算法)層次分析方法BIRCH算法(平衡迭代規(guī)約和聚類)、CURE算法(代表點聚類)和CHAMELEON算法(動態(tài)模型)基于密度的方法DBSCAN算法(基于高密度連接區(qū)域)、DENCLUE算法(密度分布函數(shù))和OPTICS算法(對象排序識別)基于網(wǎng)格的方法STING算法(統(tǒng)計信息網(wǎng)絡(luò))、CLIOUE算法(聚類高維空間)和WAVE-CLUSTER算法(小波變換)使用sklearn估計器構(gòu)建聚類模型sklearn常用的聚類算法模塊cluster提供的聚類算法及其適用范圍如下表所示。算法名稱參數(shù)適用范圍距離度量K-Means簇數(shù)可用于樣本數(shù)目很大、聚類數(shù)目中等的場景點之間的距離Spectralclustering簇數(shù)可用于樣本數(shù)目中等、聚類數(shù)目較小的場景圖距離Wardhierarchicalclustering簇數(shù)可用于樣本數(shù)目較大、聚類數(shù)目較大的場景點之間的距離Agglomerativeclustering簇數(shù)、鏈接類型、距離可用于樣本數(shù)目較大、聚類數(shù)目較大的場景任意成對點線圖間的距離使用sklearn估計器構(gòu)建聚類模型聚類算法模塊cluster提供的聚類算法及其適用范圍續(xù)表。算法名稱參數(shù)適用范圍距離度量DBSCAN半徑大小、最低成員數(shù)目可用于樣本數(shù)目很大、聚類數(shù)目中等的場景最近的點之間的距離Birch分支因子、閾值、可選全局集群可用于樣本數(shù)目很大、聚類數(shù)目較大的場景點之間的歐式距離使用sklearn估計器構(gòu)建聚類模型方法名稱方法說明fit()fit()方法主要用于訓(xùn)練算法。該方法可接收用于有監(jiān)督學(xué)習(xí)的訓(xùn)練集及其標簽兩個參數(shù),也可以接收用于無監(jiān)督學(xué)習(xí)的數(shù)據(jù)predict()predict()方法用于預(yù)測有監(jiān)督學(xué)習(xí)的測試集標簽,亦可以用于劃分傳入數(shù)據(jù)的類別聚類算法實現(xiàn)需要使用sklearn估計器(estimator)。sklearn估計器擁有fit()和predict()兩個方法,其說明如下表所示。使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維

使用customer數(shù)據(jù)集,通過sklearn估計器構(gòu)建K-Means聚類模型,對客戶群體進行劃分。并使用sklearn的manifold模塊中的TSNE類可實現(xiàn)多維數(shù)據(jù)的可視化展現(xiàn)功能,查看聚類效果,TSNE類的基本使用格式如下。classsklearn.manifold.TSNE(n_components=2,*,perplexity=30.0,early_exaggeration=12.0,learning_rate=200.0,n_iter=1000,n_iter_without_progress=300,min_grad_norm=1e-07,metric='euclidean',init='random',verbose=0,random_state=None,method='barnes_hut',angle=0.5,n_jobs=None,square_distances='legacy')使用sklearn轉(zhuǎn)換器進行數(shù)據(jù)預(yù)處理與降維TSNE類常用參數(shù)及其說明如下表所示。參數(shù)名稱參數(shù)說明n_components接收int。表示要嵌入空間中的緯度。默認為2perplexity接收float。表示在優(yōu)化過程中鄰近點數(shù)量。默認為30early_exaggeration接收float。表示嵌入空間中簇的緊密程度及簇之間的空間大小。默認為12learning_rate接收float。表示梯度下降的速率。默認為200metric接收str、callable對象。表示用于計算特征數(shù)組中實例之間的距離時使用的度量方式。默認為euclideaninit接收str、ndarray對象。表示嵌入的初始化方式。默認為randomrandom_state接收int。表示所確定的隨機數(shù)生成器。默認為Nonemethod接收str。表示在進行梯度計算時所選用的優(yōu)化方法。默認為barnes_hut評價聚類模型聚類評價的標準是組內(nèi)的對象相互之間是相似的(相關(guān)的),而不同組中的對象是不同的(不相關(guān)的),即組內(nèi)的相似性越大,組間差別越大,聚類效果就越好。sklearn的metrics模塊提供的聚類模型評價指標如下表所示。評價指標名稱真實值最佳值sklearn函數(shù)ARI評價法(蘭德系數(shù))需要1.0adjusted_rand_scoreAMI評價法(互信息)需要1.0adjusted_mutual_info_scoreV-measure評分需要1.0completeness_scoreFMI評價法需要1.0fowlkes_mallows_score輪廓系數(shù)評價法不需要畸變程度最大silhouette_scoreCalinski-Harabasz指數(shù)評價法不需要相較最大calinski_harabaz_score需要真實值的配合才能夠評價聚類算法的優(yōu)劣,評價的效果更具有說服力,并且在實際運行的過程中,在有真實值做參考的情況下,聚類方法的評價可以等同于分類算法的評價。不需要真實值的配合評價聚類模型除了輪廓系數(shù)評價法以外的評價方法,在不考慮業(yè)務(wù)場景的情況下都是得分越高,其效果越好,最高分值為1。而輪廓系數(shù)評價法則需要判斷不同類別數(shù)目情況下的輪廓系數(shù)的走勢,尋找最優(yōu)的聚類數(shù)目。綜合以上聚類評價方法,在真實值作為參考的情況下,幾種方法均可以很好地評估聚類模型。在沒有真實值作為參考的時候,輪廓系數(shù)評價法和Calinski-Harabasz指數(shù)評價法可以結(jié)合使用。目錄1構(gòu)建并評價聚類模型使用sklearn轉(zhuǎn)換器處理數(shù)據(jù)2構(gòu)建并評價分類模型3構(gòu)建并評價回歸模型4使用sklearn估計器構(gòu)建分類模型在數(shù)據(jù)分析領(lǐng)域,分類算法很多,其原理千差萬別,常用算法如下。基于樣本距離的最近鄰算法基于特征信息熵的決策樹算法基于bagging的隨機森林算法基于boosting的梯度提升分類樹算法但其實現(xiàn)的過程相差不大,如圖所示。使用sklearn估計器構(gòu)建分類模型sklearn庫中提供的分類算法非常多,分別存在于不同的模塊中。常用的分類算法如下表所示。模塊名稱函數(shù)名稱算法名稱linear_modelLogisticRegression邏輯斯蒂回歸svmSVC支持向量機neighborsKNeighborsClassifierK最近鄰分類naive_bayesGaussianNB高斯樸素貝葉斯treeDecisionTreeClassifier分類決策樹ensembleRandomForestClassifier隨機森林分類ensembleGradientBoostingClassifier梯度提升分類樹評價分類模型分類模型對測試集進行預(yù)測而得出的準確率并不能很好地反映模型的性能,為了有效判斷一個預(yù)測模型的性能表現(xiàn),需要結(jié)合真實值計算出精確率、召回率、F1值和Cohen’sKappa系數(shù)等指標來衡量。常規(guī)分類模型的評價方法如下表所示。方法名稱最佳值sklearn函數(shù)Precision(精確率)1.0metrics.precision_scoreRecall(召回率)1.0metrics.recall_scoreF1值1.0metrics.f1_scoreCohen’sKappa系數(shù)1.0metrics.cohen_kappa_scoreROC曲線最靠近y軸metrics.roc_curve分值越高越好,其使用方法基本相同通常情況下,ROC曲線與x軸形成的面積越大,表示模型性能越好目錄1構(gòu)建并評價聚類模型使用sklearn轉(zhuǎn)換器處理數(shù)據(jù)2構(gòu)建并評價分類模型3構(gòu)建并評價回歸模型4使用sklearn估計器構(gòu)建線性回歸模型從19世紀初高斯提出最小二乘估計法算起,回歸分析的歷史已有200多年。從經(jīng)典的回歸分析方法到近代的回歸分析方法,按照研究方法劃分,回歸分析研究的范圍大致如圖所示。使用sklearn估計器構(gòu)建線性回歸模型模塊名稱函數(shù)名稱算法名稱線性回歸因變量與自變量是線性關(guān)系對一個或多個自變量和因變量之間的線性關(guān)系進行建模,可用最小二乘估計法求解模型系數(shù)非線性回歸因變量與自變量之間不都是線性關(guān)系對一個或多個自變量和因變量之間的非線性關(guān)系進行建模。如果非線性關(guān)系可以通過簡單的函數(shù)變換轉(zhuǎn)化成線性關(guān)系,那么可用線性回歸的思想求解;如果不能轉(zhuǎn)化,那么可用非線性最小二乘估計法求解在回歸模型中,自變量與因變量具有相關(guān)關(guān)系,自變量的值是已知的,因變量是要預(yù)測的。回歸算法的實現(xiàn)步驟和分類算法基本相同,分為學(xué)習(xí)和預(yù)測兩個步驟。學(xué)習(xí)是通過訓(xùn)練樣本數(shù)據(jù)來擬合回歸方程的;預(yù)測則是利用學(xué)習(xí)過程中擬合出的回歸方程,將測試數(shù)據(jù)放入方程中求出預(yù)測值。常用的回歸模型如下表所示。使用sklearn估計器構(gòu)建線性回歸模型常用

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論