《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第十章】特征選擇與特征聯(lián)合_第1頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第十章】特征選擇與特征聯(lián)合_第2頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第十章】特征選擇與特征聯(lián)合_第3頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第十章】特征選擇與特征聯(lián)合_第4頁(yè)
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第十章】特征選擇與特征聯(lián)合_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第十章特征選擇與特征聯(lián)合數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)(1)掌握常用的過濾法特征選擇方法。(2)掌握常用的裝袋法特征選擇方法。(3)掌握常用的嵌入法特征選擇方法。(4)了解特征聯(lián)合的方法。(5)了解多項(xiàng)式特征。學(xué)習(xí)目標(biāo)目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合定義:從全部特征中選取一個(gè)特征子集來建立模型目的:降低特征維度,提高模型性能基本原則:包含信息較少(方差較低)的特征應(yīng)該被剔除與目標(biāo)特征相關(guān)性高的特征應(yīng)該優(yōu)先被選擇

特征選擇簡(jiǎn)介

特征選擇方法方式說明主要方法過濾法(Filter)先進(jìn)行特征選擇,再建立模型,特征選擇的過程中不涉及建模方差選擇法卡方檢驗(yàn)法相關(guān)系數(shù)法裝袋法(Wrapper)建立模型并給定評(píng)價(jià)標(biāo)準(zhǔn),選擇效果最優(yōu)的特征子集遞歸特征消除法嵌入法(Embedding)特征選擇與模型訓(xùn)練結(jié)合,在訓(xùn)練過程中自動(dòng)進(jìn)行特征選擇10.1.1過濾法常用的過濾法有方差選擇法、卡方檢驗(yàn)法、相關(guān)系數(shù)法。思想:方差小的特征波動(dòng)性小,包含的信息也較少,對(duì)模型影響較小方法:給定一個(gè)方差閾值,計(jì)算所有特征的方差保留方差大于閾值的特征剔除方差小于閾值的特征

方差選擇法feature_selection模塊類說明feature_selection.VarianceThreshold剔除低于方差閾值的特征feature_selection.SelectKBest根據(jù)給定的得分函數(shù)選出K個(gè)得分最高的特征feature_selection.SelectPercentile根據(jù)給定的得分函數(shù)選出前p%個(gè)得分最高的特征(p需指定)feature_selection.RFE遞歸特征消除法feature_selection.RFECV包含交叉驗(yàn)證的遞歸特征消除法feature_selection.SelectFromModel嵌入式特征消除法feature_selection模塊通用方法說明fit(X,y)學(xué)習(xí)怎樣進(jìn)行特征選擇

transform(X)對(duì)X進(jìn)行特征選擇fit_transform(X,y)先學(xué)習(xí)怎樣進(jìn)行特征選擇,再對(duì)X進(jìn)行特征選擇get_support

()返回布爾數(shù)組,指明哪些特征被選擇VarianceThreshold類

參數(shù)

說明threshold輸入方差閾值(浮點(diǎn)型),默認(rèn)為0.0,會(huì)自動(dòng)刪除方差為0的特征屬性說明variances_查看各特征的方差方差選擇法例10-1方差選擇法特征選擇fromsklearn.feature_selectionimportVarianceThresholdsel_var=VarianceThreshold(threshold=0.5)#設(shè)定方差閾值為0.5sel_var_X=sel_var.fit_transform(X)#特征選擇print("選擇的特征數(shù)量:",sel_var_X.shape[1])選擇的特征數(shù)量:272卡方檢驗(yàn)法

相關(guān)系數(shù)檢驗(yàn)法

方法

說明Pearson相關(guān)系數(shù)用于度量?jī)蓚€(gè)特征X與Y的線性相關(guān)性,取值在-1到1之間。-1表示完全的負(fù)相關(guān),+1表示完全的正相關(guān),0表示沒有線性相關(guān)性最大信息系數(shù)克服了互信息的問題。它首先尋找一種最優(yōu)的離散化方式,然后把互信息取值轉(zhuǎn)換成一種度量方式,取值區(qū)間在[0,1]距離相關(guān)系數(shù)克服了Pearson相關(guān)系數(shù)的弱點(diǎn),在x和x^2這個(gè)例子中,即便Pearson相關(guān)系數(shù)是0,也不能斷定這兩個(gè)變量是獨(dú)立的(有可能是非線性相關(guān));但如果距離相關(guān)系數(shù)是0,那么就可以說這兩個(gè)變量是獨(dú)立的

相關(guān)系數(shù)檢驗(yàn)法SelectKBest和SelectPercentile類

參數(shù)

說明score_func給出統(tǒng)計(jì)指標(biāo)的函數(shù),常用函數(shù)如下:“f_regression”(默認(rèn)):相關(guān)系數(shù)檢驗(yàn),用于回歸問題“chi2”:卡方檢驗(yàn),用于分類問題“mutual_info_regression”:計(jì)算互信息,用于回歸問題“f_classif”:基于方差分析的F檢驗(yàn),用于分類問題k(SelectKBest)指定保留得分最高特征的個(gè)數(shù),默認(rèn)為10Percentile(SelectPercentile)指定保留得分最高的前百分之幾的特征,默認(rèn)為10(10%)

屬性說明scores_返回各特征的得分pvalues_返回各特征得分的p值,若score_func僅返回得分,則為無相關(guān)系數(shù)檢驗(yàn)法例10-2最大信息系數(shù)特征選擇importnumpyasnpfromminepyimportMINE#定義mic函數(shù)defmic(x,y,p):m=MINE()pute_score(x,y)return(m.mic(),p)fromsklearn.feature_selectionimportSelectKBest#選擇K個(gè)最好的特征sk=SelectKBest(lambdaX,Y:np.array(list(map(lambdax:mic(x,Y,0.5),X.T))).T[0],k=10)sk.fit_transform(X,Y)#特征選擇相關(guān)系數(shù)檢驗(yàn)法例10-3距離相關(guān)系數(shù)實(shí)現(xiàn)特征選擇fromsklearn.feature_selectionimportSelectKBest#根據(jù)給定的得分函數(shù)選出K個(gè)得分最高的特征importnumpyasnpfromscipy.statsimportpearsonrpr=SelectKBest(lambdaX,Y:np.array(list(map(lambdax:pearsonr(x,Y),X.T))).T[0],k=5).fit(X_train,y_train)#參數(shù)k為選擇的特征個(gè)數(shù)tata_SKB=pr.fit_transform(X_train,y_train)#選擇K個(gè)最好的特征,返回選擇特征后的數(shù)據(jù)相關(guān)系數(shù)檢驗(yàn)法例10-4chi2特征選擇(SelectKBest)fromsklearn.feature_selectionimportSelectKBestfromsklearn.feature_selectionimportchi2,f_classif,f_regressionsel_chi=SelectKBest(chi2,k=5).fit(X,y)#選擇與目標(biāo)變量最相關(guān)的5個(gè)特征print(sel_chi.scores_)#輸出各個(gè)特征變量與目標(biāo)變量的相關(guān)程度特征變量與目標(biāo)變量的相關(guān)程度:[23.5294117653.6862745153.68627451...1.1.1.]print(pd.Series(sel_chi.get_support(),index=X.columns))#輸出篩選結(jié)果相關(guān)系數(shù)檢驗(yàn)法例10-5chi2特征選擇(SelectPercentile)fromsklearn.feature_selectionimportSelectPercentilefromsklearn.feature_selectionimportchi2sel_chi=SelectPercentile(chi2,percentile=50).fit(data,data_y)#選擇50%print(sel_chi.scores_)#特征變量與目標(biāo)變量的相關(guān)程度特征變量與目標(biāo)變量的相關(guān)程度:[23.5294117653.6862745153.68627451...1.1.1.]print(pd.Series(sel_chi.get_support(),index=data.columns).sort_values())裝袋法對(duì)于每一個(gè)待選的特征子集,都在訓(xùn)練集上訓(xùn)練一遍模型,然后在測(cè)試集上根據(jù)誤差大小選擇出合適的特征子集。裝袋法需要先選定算法,通常選用RandomForest、SVM、KNN等。特征子集的搜索可以采用前向搜索法,每次從剩余未選中的特征選出一個(gè)加入特征集中,待達(dá)到閾值或者n時(shí),從所有的F中選出錯(cuò)誤率最小的。

10.1.2裝袋法初始化特征集F為空;掃描i從1到n,如果第i個(gè)特征不在F中,那么特征i和F放在一起作為Fi。在只使用Fi中特征的情況下,利用交叉驗(yàn)證來得到Fi的錯(cuò)誤率;從上步中得到的n個(gè)Fi中選出錯(cuò)誤率最小的Fi,更新F為Fi;如果F中的特征數(shù)達(dá)到了n或者預(yù)定的閾值,那么輸出整個(gè)搜索過程中最好的特征值子集;若沒達(dá)到,則轉(zhuǎn)到2,繼續(xù)掃描。特征子集的搜索也可以采用后向搜索。先將F設(shè)置為{1,2,...,n},然后每次刪除一個(gè)特征,并評(píng)價(jià),直到達(dá)到閾值或者為空,然后選擇最佳的F。這兩種算法都可以工作,但是計(jì)算復(fù)雜度比較大。

裝袋法具體過程思想:利用可以學(xué)習(xí)到特征權(quán)重或重要性的模型,通過遞歸的方式減少特征個(gè)數(shù)來進(jìn)行特征選擇步驟基于所有特征訓(xùn)練模型,得到每個(gè)特征的權(quán)重或重要性剔除權(quán)重或重要性最小的特征,基于新的特征集合訓(xùn)練模型最后,重復(fù)上述步驟,進(jìn)行遞歸消除,直到剩下的特征個(gè)數(shù)滿足條件為止執(zhí)行RFE的過程中,可以通過交叉驗(yàn)證的方式來評(píng)價(jià)模型在某個(gè)特征集合上的表現(xiàn),以此來選擇最佳的特征集合

遞歸特征消除法(RFE)RFE類參數(shù)說明estimator監(jiān)督學(xué)習(xí)器,必須包含coef_或feature_importances_屬性n_features_to_select

指定選出幾個(gè)特征,默認(rèn)為None(所有特征的一半)step每次迭代剔除的特征數(shù),默認(rèn)為1,大于1為剔除的個(gè)數(shù),0~1之間為剔除的比例

屬性說明support_指明哪些特征被選擇(布爾數(shù)組)ranking_特征的排名(表示被剔除的順序)遞歸特征消除法(RFE)例10-6遞歸特征消除法實(shí)現(xiàn)特征選擇fromsklearn.feature_selectionimportRFEfromsklearn.treeimportDecisionTreeClassifierrfe=RFE(DecisionTreeClassifier(random_state=10),step=200,n_features_to_select=7)rfe.fit_transform(train_X,train_y)#先對(duì)test_X進(jìn)行轉(zhuǎn)換后,再用設(shè)定好的學(xué)習(xí)器進(jìn)行預(yù)測(cè)y_pred=rfe.predict(test_X)#將test_X進(jìn)行特征選擇后,再用設(shè)定好的學(xué)習(xí)器評(píng)分print("正確率:",rfe.score(X_test,y_test))#輸出正確率輸出正確率如下:正確率:0.9775#特征排名print(rfe.ranking_)輸出特征排名如下:[363534...785]RFECV類

屬性說明grid_scores_各特征子集的交叉驗(yàn)證得分support_指明哪些特征被選擇(布爾數(shù)組)ranking_特征的排名(表示被剔除的順序)參數(shù)

說明estimator監(jiān)督學(xué)習(xí)器,必須包含coef_或feature_importances_屬性min_features_to_select

需要選擇的最小特征數(shù),默認(rèn)為1step每次迭代剔除的特征數(shù),默認(rèn)為1,大于1為剔除的個(gè)數(shù),0~1之間為剔除的比例cv交叉驗(yàn)證的折數(shù),默認(rèn)為3scoring字符串或可調(diào)用對(duì)象,用于評(píng)估學(xué)習(xí)器的預(yù)測(cè)性能遞歸特征消除法(RFE)例10-7交叉驗(yàn)證的遞歸特征消除法fromsklearn.feature_selectionimportRFECVrfeCV=RFECV(DecisionTreeClassifier(random_state=10),cv=5,step=200,scoring='roc_auc')rfeCV.fit(X_train,y_train)##查看特征排名print(pd.Series(rfeCV.ranking_,index=X.columns))

10.1.3嵌入法SelectFromModel類

參數(shù)

說明estimator監(jiān)督學(xué)習(xí)器,必須包含coef_或feature_importances_屬性threshold

用于特征選擇的閾值,設(shè)置方法如下:

若為浮點(diǎn)型:則表示閾值的絕對(duì)大小

若為字符串,可設(shè)為:”mean”(默認(rèn))(權(quán)重或重要性的均值)

“median”(權(quán)重或重要性的中位數(shù))

若estimator包含“l(fā)1”正則化項(xiàng),則默認(rèn)值為1e-510.1.3嵌入法例10-8嵌入法實(shí)現(xiàn)特征選擇feature_selection.SelectFromModel嵌入式特征消除法fromsklearn.feature_selectionimportSelectFromModelfromsklearn.ensembleimportRandomForestClassifier#使用隨機(jī)森林作為監(jiān)督學(xué)習(xí)器select=SelectFromModel(RandomForestClassifier(n_estimators=200,random_state=10),max_features=7,threshold='median')select.fit(train_X,train_y)support=pd.Series(select.get_support(),index=X_train.columns)print(support[support==True])#輸出選擇的特征目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合10.2.1目標(biāo)對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集采用不同的方法進(jìn)行特征選擇。10.2.2數(shù)據(jù)集該數(shù)據(jù)計(jì)算了兩所葡萄牙學(xué)校中學(xué)教育的學(xué)生成績(jī)。數(shù)據(jù)屬性包括學(xué)生成績(jī)、人口統(tǒng)計(jì)、社會(huì)和學(xué)校相關(guān)特征,它是通過使用學(xué)校報(bào)告和問卷收集的。目標(biāo)屬性為G3,學(xué)生第三學(xué)期是最終的成績(jī)。屬性說明school

學(xué)生所在學(xué)校sex

學(xué)生的性別(“F”-女性或“M”-男性)age

學(xué)生年齡(數(shù)字:從15到22)address

學(xué)生的家庭地址類型(二進(jìn)制:“U”-城市或“R”-農(nóng)村)famsize

家庭成員數(shù)量(二進(jìn)制:“LE3”-小于或等于3或“GT3”-大于3)Pstatus

父母的婚姻狀況(二進(jìn)制:“T”-同居或“A”-分開)Medu

母親受教育程度(數(shù)字:0-無,1-小學(xué)教育(四年級(jí)),2-5至9年級(jí),3-中學(xué)教育或4-高等教育)Fedu

父親受教育程度(數(shù)字:0-無,1-小學(xué)教育(四年級(jí)),2-5至9年級(jí),3-中學(xué)教育或4-高等教育)Mjob

母親的職業(yè)(名義:“教師”、“保健”相關(guān)、民事“服務(wù)”(例如行政或警察)、“在家”或“其他”)Fjob父親的職業(yè)(名義:“教師”、“保健”相關(guān)、民事“服務(wù)”(例如行政或警察)、“在家”或“其他”)Reason選擇這所學(xué)校的理由(接近“家”、學(xué)?!奥曌u(yù)”、“課程”偏好或“其他”)Guardian學(xué)生的監(jiān)護(hù)人(“母親”、“父親”或“其他”)Traveltime家到學(xué)校的路途時(shí)間(數(shù)字:1-<15分鐘,2-15至30分鐘,3-30分鐘至1小時(shí),或4->1小時(shí))studytime

每周學(xué)習(xí)時(shí)間(數(shù)字:1-<2小時(shí),2-2至5小時(shí),3-5至10小時(shí),或4->10小時(shí))10.2.2數(shù)據(jù)集屬性說明failures

轉(zhuǎn)班次數(shù)(數(shù)字:n如果1<=n<3,否則為4)schoolup

額外的教育支持(二進(jìn)制:是或否)famsup

家庭教育支持(二進(jìn)制:是或否)paid

課程科目(數(shù)學(xué)或葡萄牙語)內(nèi)的額外付費(fèi)課程(二進(jìn)制:是或否)activities

課外活動(dòng)(二進(jìn)制:是或否)nursery

就讀托兒所(二進(jìn)制:是或否)higher

想接受高等教育(二進(jìn)制:是或否)internet

在家上網(wǎng)(二進(jìn)制:是或否)romantic

有浪漫關(guān)系(二進(jìn)制:是或否)famrel

家庭關(guān)系的質(zhì)量(數(shù)值:從1-非常差到5-非常好)freetime

放學(xué)后的空閑時(shí)間(數(shù)字:從1-非常低到5-非常高)goout

與朋友外出(數(shù)字:從1-非常低到5-非常高)Dalc

工作日飲酒量(數(shù)字:從1-非常低到5-非常高)Walc

周末飲酒量(數(shù)字:從1-非常低到5-非常高)health

當(dāng)前健康狀況(數(shù)字:從1-非常差到5-非常好)absences

學(xué)校缺勤次數(shù)(數(shù)字:從0到93)G1

第一期成績(jī)(數(shù)字:從0到20)G2

第二期成績(jī)(數(shù)字:從0到20)G3

最終成績(jī)(數(shù)字:從0到20,輸出目標(biāo))10.2.3實(shí)現(xiàn)代碼1.導(dǎo)入必要的包importpandasaspdimportnumpyasnpimportwarningswarnings.filterwarnings("ignore")2.讀入數(shù)據(jù)集data=pd.read_csv("d:/datasets/student-por.csv",delimiter=";")3.隨機(jī)查看5個(gè)樣本data.sample(5)10.2.3實(shí)現(xiàn)代碼4.查看數(shù)據(jù)的樣本量、缺失情況以及數(shù)據(jù)類型()輸出結(jié)果如下:10.2.3實(shí)現(xiàn)代碼5.對(duì)object類型數(shù)據(jù)進(jìn)行標(biāo)簽編碼fromsklearn.preprocessingimportLabelEncoderLe=LabelEncoder()forkindata.columns:#標(biāo)簽編碼、遍歷所有的類型為“object”的特征

ifdata[k].dtype=="object":data[k]=Le.fit_transform(data[k])#編碼6.查看編碼后數(shù)據(jù)類型()輸出結(jié)果如下:10.2.3實(shí)現(xiàn)代碼7.特征標(biāo)簽分離X=data.drop("G3",axis=1)Y=data[“G3”]8.過濾法-方差選擇法fromsklearn.feature_selectionimportVarianceThresholdsel_var=VarianceThreshold(threshold=0.9)sel_var_x=sel_var.fit_transform(X)print(sel_var_x.shape[1])#輸出方差選擇后的特征數(shù)量方差選擇后的特征數(shù)量為:1310.2.3實(shí)現(xiàn)代碼9.查看特征選擇情況fori,jinzip(sel_var.get_support(),X.columns):ifi:print(j,end=",")選中的特征:age,Medu,F(xiàn)edu,Mjob,reason,famrel,freetime,goout,Walc,health,absences,G1,G210.2.3實(shí)現(xiàn)代碼10.過濾法-卡方選擇法(指定保留的特征數(shù))fromsklearn.feature_selectionimportSelectKBestfromsklearn.feature_selectionimportchi2sel_chi=SelectKBest(chi2,k=10).fit(X,Y)fori,jinzip(sel_chi.get_support(),X.columns):ifi:print(j,end=",")選中的特征:school,Medu,F(xiàn)edu,Mjob,reason,failures,Dalc,absences,G1,G210.2.3實(shí)現(xiàn)代碼11.過濾法-卡方選擇法(指定保留特征數(shù)的比例)fromsklearn.feature_selectionimportSelectPercentilefromsklearn.feature_selectionimportchi2sel_chi_p=SelectPercentile(chi2,percentile=20).fit(X,Y)fori,jinzip(sel_chi_p.get_support(),X.columns):ifi:print(j,end=",")選中的特征:school,Mjob,failures,Dalc,absences,G1,G210.2.3實(shí)現(xiàn)代碼12.遞歸特征消除法REFfromsklearn.feature_selectionimportRFEfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLogisticRegressionfromsklearn.neighborsimportKNeighborsClassifierX_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.15,random_state=5)rfe=RFE(LogisticRegression(),n_features_to_select=5)rfe.fit(X_train,y_train)#模型訓(xùn)練以及特征選擇fori,jinzip(rfe.support_,X.columns):#輸出選中的特征

ifi:print(j,end="")選中的特征為:school,age,freetime,G1,G210.2.3實(shí)現(xiàn)代碼13.嵌入法fromsklearn.feature_selectionimportSelectFromModelfromsklearn.ensembleimportRandomForestClassifierselect=SelectFromModel(RandomForestClassifier(n_estimators=200,random_state=10),threshold="1.25*mean")select.fit(X_train,y_train)#模型訓(xùn)練以及特征選擇fori,jinzip(select.get_support(),X.columns):#輸出選中的特征

ifi:print(j,end="")選中的特征為:age,goout,absences,G1,G2目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合10.3多項(xiàng)式特征多項(xiàng)式特征(PolynomialFeatures)是組合原始特征的所有多項(xiàng)式組合創(chuàng)建一個(gè)新的特征組合,新的特征組合包含等于以及小于指定階數(shù)的所有多項(xiàng)式組合,將低維的特征轉(zhuǎn)化為高維度的多項(xiàng)式特征。如原始特征為(a,b)兩個(gè)特征,那么二階的多項(xiàng)式特征組合就包含(1,a,b,a*a,a*b,b*b)6個(gè)特征。目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征10.4.1目標(biāo)

構(gòu)建多項(xiàng)式特征,實(shí)現(xiàn)同心圓上點(diǎn)的正確區(qū)分。10.4.2數(shù)據(jù)集介紹 sklearn.datasets中的模塊make_circles()生成仿真數(shù)據(jù)集。參數(shù)n_samples設(shè)定樣本的數(shù)量,noise設(shè)定噪聲的大小,factor設(shè)定內(nèi)外圓半徑的比例因子。很明顯,該數(shù)據(jù)集上的點(diǎn)線性不可分。10.4.3實(shí)現(xiàn)代碼1.生成仿真數(shù)據(jù)doublecirclesimportpandasaspdfromsklearn.datasetsimportmake_circlesfromsklearn.model_selectionimporttrain_test_splitdata=make_circles(n_samples=10000,factor=0.3,noise=0.15)X=pd.DataFrame(data[0])Y=data[1]X_train,X_test,y_train,y_test=train_test_split(X,data[1],train_size=0.8)10.4.3實(shí)現(xiàn)代碼2.可視化仿真數(shù)據(jù)importmatplotlib.pyplotaspltplt.scatter(X.iloc[:,0],X.iloc[:,1],c=Y)plt.title("doublecircles")doublecircles可視化如下圖:10.4.3實(shí)現(xiàn)代碼3.邏輯回歸分類doublecircles數(shù)據(jù)lr=LogisticRegression()lr.fit(X_train,y_train)print("訓(xùn)練集正確率(擬合精度):",lr.score(X_train,y_train))訓(xùn)練集正確率(擬合精度):0.625625print("測(cè)試集正確率:",lr.score(X_test,y_test))測(cè)試集正確率:0.619可見在原始數(shù)據(jù)集上直接進(jìn)行邏輯回歸,分類的正確率較低。10.4.3實(shí)現(xiàn)代碼4.多項(xiàng)式特征fromsklearn.preprocessingimportPolynomialFeaturespf=PolynomialFeatures(degree=2)X_train_pf=pf.fit_transform(X_train)X_test_pf=pf.transform(X_test)10.4.3實(shí)現(xiàn)代碼5.邏輯回歸分類doublecircles數(shù)據(jù)lr_pf=LogisticRegression()lr_pf.fit(X_train_pf,y_train)print("訓(xùn)練集正確率(擬合精度):",lr_pf.score(X_train_pf,y_train))訓(xùn)練集正確率(擬合精度):0.988625print("測(cè)試集正確率:",lr_pf.score(X_test_pf,y_test))測(cè)試集正確率:0.9895可見對(duì)原始數(shù)據(jù)集進(jìn)行多項(xiàng)式特征升維后,再進(jìn)行邏輯回歸,分類的正確率得到較大的提高。目錄特征選擇過濾法裝袋法嵌入法案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合10.5特征聯(lián)合特征聯(lián)合(FeatureUnion),不同于特征選擇,通過特征聯(lián)合,通常會(huì)生成比原始數(shù)據(jù)維度更大的數(shù)據(jù)集。如圖將列表中的transformer并行應(yīng)用于數(shù)據(jù),然后將多transformer的結(jié)果橫向連接。實(shí)現(xiàn)多個(gè)特征提取機(jī)制組合到一個(gè)transformer中,拼接成一個(gè)更大的特征向量矩陣。10.5特征聯(lián)合FeatureUnion實(shí)現(xiàn)特征聯(lián)合。FeatureUnion用法:FeatureUnion([('D_1',D1(…)),('D_2',D2(…)), ('D_3',D3(…)), …])其中D1,D2,D3為不同的降維方法,D_1,D_2,D_3為每個(gè)transformer指定的名字。使用make_union構(gòu)建FeatureUnion,不需要為每個(gè)transformer命名。make_union用法:make_union([(D1(…),#D2(…), D3(…) …])目錄特征選擇案例:對(duì)中學(xué)教育學(xué)生成績(jī)數(shù)據(jù)集進(jìn)行特征選擇多項(xiàng)式特征案例:對(duì)makecircles同心圓數(shù)據(jù)集使用多項(xiàng)式特征特征聯(lián)合案例:對(duì)Boston房?jī)r(jià)預(yù)測(cè)實(shí)現(xiàn)特征聯(lián)合10.6.1目標(biāo)本案例僅為展示如何實(shí)現(xiàn)特征聯(lián)合,將13維的Boston房?jī)r(jià)數(shù)據(jù)集,采用PCA降維為4維,采用PolynomialFeatures(degree=3),升維為164維,然后將其組合成168維的數(shù)據(jù)集,如圖所示。10.6.2數(shù)據(jù)集介紹樣本總數(shù):10000特征數(shù)量:13個(gè)相關(guān)特征(即13個(gè)指標(biāo)變量),1個(gè)目標(biāo)變量(房?jī)r(jià))。特征說明:特征說明CRIM城鎮(zhèn)人均犯罪率ZN大于25,000平方英尺的地塊劃分為住宅用地的比例INDUS每個(gè)城鎮(zhèn)非零售業(yè)務(wù)的比例CHAS查爾斯河虛擬變量(如果1則沿河;0則不沿河)NOX一氧化氮濃度(每千萬)RM每間住宅的平均房間數(shù)AGE自住房屋是在1940年之前建造的比例DIS到加州五個(gè)就業(yè)中心的加權(quán)距離RAD對(duì)徑向高速公路的可達(dá)性指數(shù)TAX每10,000美元的全價(jià)物業(yè)稅PTRATIO城鎮(zhèn)的學(xué)生與教師比例B-1000(Bk-0.63)^2其中Bk是城鎮(zhèn)的黑人的比例LSTAT低社會(huì)階層人口比例%MEDV以1000美元為單位的自住房屋的中位數(shù)價(jià)格10.6.3實(shí)現(xiàn)代碼1.導(dǎo)入必要的包importpandasaspdfromsklearn.decompositionimportPCAfromsklearn.pipelineimportFeatureUnionfromsklearn.preprocessingimportPolynomialFeaturesfromsklearn.pipelineimportmake_unionfromsklearn.pipelineimportFeatureUnion2.讀入數(shù)據(jù)data=pd.read_csv("d:/datasets/HousingData.csv")#讀取csv文件10.6.3實(shí)現(xiàn)代碼3.測(cè)試集訓(xùn)練集分離fromsklearn.model_selectionimporttrain_test_splitdata=data.dropna()X=data.iloc[:,:-1]Y=data.iloc[:,-1]X_train,X_test,y_train,y_test=train_test_split(X,Y,train_size=0.8)10.6.3實(shí)現(xiàn)代碼4.FeatureUnion#構(gòu)建FeatureUnion,需要為每個(gè)transformer命名fea_un=FeatureUnion([('pca',PCA(n_components=4)),

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論