97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

電商網(wǎng)站開發(fā)的流程圖河南城鄉(xiāng)建設(shè)部網(wǎng)站

鶴壁市浩天電氣有限公司 2026/01/22 10:33:20
電商網(wǎng)站開發(fā)的流程圖,河南城鄉(xiāng)建設(shè)部網(wǎng)站,網(wǎng)站建設(shè)報(bào)價(jià)東莞,discuz和WordPress哪個(gè)更好文章目錄自動(dòng)特征選擇使用單一變量法進(jìn)行特征選擇基于模型的特征選擇迭代式特征選擇#x1f4ca; 結(jié)果解讀與對(duì)比自動(dòng)特征選擇 在復(fù)雜數(shù)據(jù)集中#xff0c;各特征對(duì)模型預(yù)測(cè)結(jié)果的重要性往往不同#xff0c;有些特征貢獻(xiàn)顯著#xff0c;有些則影響較弱。本文將介紹如何利用…文章目錄自動(dòng)特征選擇使用單一變量法進(jìn)行特征選擇基于模型的特征選擇迭代式特征選擇 結(jié)果解讀與對(duì)比自動(dòng)特征選擇在復(fù)雜數(shù)據(jù)集中各特征對(duì)模型預(yù)測(cè)結(jié)果的重要性往往不同有些特征貢獻(xiàn)顯著有些則影響較弱。本文將介紹如何利用 scikit-learn 實(shí)現(xiàn)自動(dòng)特征選擇以幫助篩選出對(duì)建模最有價(jià)值的特征。使用單一變量法進(jìn)行特征選擇在進(jìn)行統(tǒng)計(jì)分析時(shí)我們通常優(yōu)先選擇置信度最高的樣本特征進(jìn)行分析。這種方法尤其適用于特征之間無明顯關(guān)聯(lián)的情形也常被稱為單一變量法。在 scikit-learn 中提供了多種特征選擇方法其中較為簡(jiǎn)單的兩種是 SelectPercentile 和 SelectKBest。SelectPercentile 可按指定百分比自動(dòng)選取最重要的特征而 SelectKBest 則根據(jù)評(píng)分自動(dòng)選擇排名前 K 個(gè)的特征。書中此時(shí)用到了當(dāng)日A股股票的數(shù)據(jù)這里推薦大家使用akshare獲取importakshareasak# 獲取滬深京A股實(shí)時(shí)行情數(shù)據(jù)stock_zh_a_spot_em_dfak.stock_zh_a_spot_em()print(stock_zh_a_spot_em_df)stock_zh_a_spot_em_df.to_csv(./A.csv,encodingGBK)如果在jupyter notebook的ipython中獲取接口數(shù)據(jù)可能會(huì)報(bào)錯(cuò)1.18.3版本的akshare要求python內(nèi)核版本大于等于3.11importpandasaspdimportnumpyasnp# 1. 讀取數(shù)據(jù)stockpd.read_csv(./A.csv,encodingGBK)print(f原始數(shù)據(jù)形狀:{stock.shape})# 2. 檢查并處理缺失值print( 缺失值統(tǒng)計(jì):)print(stock.isnull().sum())# 可考慮針對(duì)性刪除或填充而不是直接刪除所有含缺失值的行stock_cleanedstock.dropna()print(f清洗后數(shù)據(jù)形狀:{stock_cleaned.shape})# 3. 定義目標(biāo)變量ystock_cleaned[漲跌幅].astype(np.float64)# 確保為浮點(diǎn)型# 4. 定義特征排除指定列excluded_columns[漲跌幅,漲跌額,Unnamed: 0,序號(hào),代碼,名稱]feature_columns[colforcolinstock_cleaned.columnsifcolnotinexcluded_columns]Xstock_cleaned[feature_columns].values# 5. 驗(yàn)證結(jié)果print(f 目標(biāo)變量 y 形狀:{y.shape})print(f特征矩陣 X 形狀:{X.shape})print(f 特征列名:{feature_columns})print(f第一行特征值: {X[:1]})原始數(shù)據(jù)形狀: (5792, 24) 缺失值統(tǒng)計(jì): Unnamed: 0 0 序號(hào) 0 代碼 0 名稱 0 最新價(jià) 338 漲跌幅 338 漲跌額 338 成交量 339 成交額 339 振幅 338 最高 339 最低 339 今開 339 昨收 2 量比 339 換手率 0 市盈率-動(dòng)態(tài) 321 市凈率 321 總市值 321 流通市值 319 漲速 338 5分鐘漲跌 338 60日漲跌幅 3 年初至今漲跌幅 3 dtype: int64 清洗后數(shù)據(jù)形狀: (5453, 24) 目標(biāo)變量 y 形狀: (5453,) 特征矩陣 X 形狀: (5453, 18) 特征列名: [最新價(jià), 成交量, 成交額, 振幅, 最高, 最低, 今開, 昨收, 量比, 換手率, 市盈率-動(dòng)態(tài), 市凈率, 總市值, 流通市值, 漲速, 5分鐘漲跌, 60日漲跌幅, 年初至今漲跌幅] 第一行特征值: [[ 2.22000000e00 2.77997000e05 5.44917634e07 3.74300000e01 2.22000000e00 1.58000000e00 1.60000000e00 1.71000000e00 1.64000000e00 5.92800000e01 -3.60000000e00 2.94000000e00 1.48739778e08 1.04103224e08 0.00000000e00 0.00000000e00 -7.66800000e01 -8.49800000e01]]# 導(dǎo)入必要的庫(kù)fromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.neural_networkimportMLPRegressor# 初始化一個(gè)多層感知器MLP回歸模型# random_state62 設(shè)置隨機(jī)種子確保結(jié)果可復(fù)現(xiàn)# hidden_layer_sizes[100,100] 定義兩個(gè)隱藏層每層100個(gè)神經(jīng)元# alpha0.001 設(shè)置L2正則化強(qiáng)度防止過擬合mlprMLPRegressor(random_state62,hidden_layer_sizes[100,100],alpha0.001)# 將數(shù)據(jù)集拆分為訓(xùn)練集和測(cè)試集# test_size默認(rèn)值為0.25即25%的數(shù)據(jù)作為測(cè)試集# random_state62 確保每次拆分結(jié)果一致X_train,X_test,y_train,y_testtrain_test_split(X,y,random_state62)# 初始化標(biāo)準(zhǔn)化器將特征數(shù)據(jù)縮放到均值為0、方差為1的分布scalerStandardScaler()# 只在訓(xùn)練集上擬合標(biāo)準(zhǔn)化器計(jì)算均值和標(biāo)準(zhǔn)差scaler.fit(X_train)# 使用訓(xùn)練集得到的標(biāo)準(zhǔn)化參數(shù)轉(zhuǎn)換訓(xùn)練集和測(cè)試集# 注意測(cè)試集必須使用與訓(xùn)練集相同的標(biāo)準(zhǔn)化參數(shù)避免數(shù)據(jù)泄露X_train_scaledscaler.transform(X_train)X_test_scaledscaler.transform(X_test)# 使用標(biāo)準(zhǔn)化后的訓(xùn)練數(shù)據(jù)訓(xùn)練MLP回歸模型mlpr.fit(X_train_scaled,y_train)# 在標(biāo)準(zhǔn)化后的測(cè)試集上評(píng)估模型性能輸出R2分?jǐn)?shù)越接近1越好print(mlpr.score(X_test_scaled,y_test))0.576631460901945# 從原始數(shù)據(jù)中提取股票名稱列wantedstock_cleaned.loc[:,名稱]# 找出漲幅超過10%的股票名稱并打印# 注意這里使用的是整個(gè)數(shù)據(jù)集的y值而不僅僅是測(cè)試集print(wanted[y10])# 導(dǎo)入特征選擇模塊fromsklearn.feature_selectionimportSelectPercentile# 初始化SelectPercentile特征選擇器選擇前50%最重要的特征selectSelectPercentile(percentile50)# 使用標(biāo)準(zhǔn)化后的訓(xùn)練數(shù)據(jù)和對(duì)應(yīng)的標(biāo)簽來訓(xùn)練特征選擇器select.fit(X_train_scaled,y_train)# 根據(jù)選擇器篩選出的重要特征轉(zhuǎn)換訓(xùn)練集和測(cè)試集X_train_selectedselect.transform(X_train_scaled)# 打印特征選擇前后訓(xùn)練集的維度變化print(X_train_scaled.shape)# 原始特征維度print(X_train_selected.shape)# 特征選擇后的維度# 獲取一個(gè)布爾掩碼表示每個(gè)特征是否被選中True表示選中maskselect.get_support()print(mask)# 導(dǎo)入繪圖庫(kù)importmatplotlib.pyplotasplt# 將一維掩碼轉(zhuǎn)換為二維矩陣1行×特征數(shù)列并用熱圖可視化# cmapplt.cm.cool 指定顏色映射plt.matshow(mask.reshape(1,-1),cmapplt.cm.cool)plt.xlabel(Features Selected)# 設(shè)置x軸標(biāo)簽plt.show()# 顯示圖形# 使用相同的特征選擇器轉(zhuǎn)換測(cè)試集X_test_selectedselect.transform(X_test_scaled)# 初始化一個(gè)新的MLP回歸模型用于特征選擇后的數(shù)據(jù)mlpr_spMLPRegressor(random_state62,hidden_layer_sizes[100,100],alpha0.001)# 使用特征選擇后的訓(xùn)練數(shù)據(jù)訓(xùn)練新的MLP模型mlpr_sp.fit(X_train_selected,y_train)# 在特征選擇后的測(cè)試集上評(píng)估模型性能print(mlpr_sp.score(X_test_selected,y_test))0 廣道退 1 C天溯 2 百納千成 3 標(biāo)榜股份 4 宏源藥業(yè) ... 65 中國(guó)衛(wèi)星 66 名臣健康 67 華聯(lián)控股 68 江西銅業(yè) 69 德力股份 Name: 名稱, Length: 70, dtype: object (4089, 18) (4089, 9) [False True True True False False False False True True False False False False True True True True]0.35557528368026325# 添加更多評(píng)估指標(biāo)fromsklearn.metricsimportmean_squared_error,mean_absolute_error y_pred_fullmlpr.predict(X_test_scaled)y_pred_selectedmlpr_sp.predict(X_test_selected)print(f全特征模型 - R2:{mlpr.score(X_test_scaled,y_test):.4f}, fMSE:{mean_squared_error(y_test,y_pred_full):.4f})print(f特征選擇后 - R2:{mlpr_sp.score(X_test_selected,y_test):.4f}, fMSE:{mean_squared_error(y_test,y_pred_selected):.4f})全特征模型 - R2: 0.5766, MSE: 2.8013 特征選擇后 - R2: 0.3556, MSE: 4.2639特征選擇顯著降低了模型的性能解釋力下降R2分?jǐn)?shù)從0.5766降至0.3556意味著模型對(duì)“漲跌幅”波動(dòng)的解釋能力大幅減弱。誤差增大MSE從2.8013升至4.2639表明模型預(yù)測(cè)值與真實(shí)值的平均偏差擴(kuò)大了約52%。這通常意味著當(dāng)前的SelectPercentile方法過于激進(jìn)可能刪除了對(duì)預(yù)測(cè)至關(guān)重要的特征?;谀P偷奶卣鬟x擇基于模型的特征選擇旨在通過評(píng)估并保留關(guān)鍵特征來提升模型性能。其核心是借助隨機(jī)森林、梯度提升等模型內(nèi)置的重要性評(píng)估機(jī)制自動(dòng)完成特征篩選。# 1. 導(dǎo)入基于模型的特征選擇工具和隨機(jī)森林回歸模型# SelectFromModel: 這是一個(gè)元轉(zhuǎn)換器可以與任何在擬合后具有coef_或feature_importances_屬性的評(píng)估器一起使用# RandomForestRegressor: 集成學(xué)習(xí)模型適合評(píng)估特征在復(fù)雜非線性關(guān)系中的重要性fromsklearn.feature_selectionimportSelectFromModelfromsklearn.ensembleimportRandomForestRegressor# 2. 創(chuàng)建基于隨機(jī)森林的特征選擇器# RandomForestRegressor參數(shù)# n_estimators100: 使用100棵決策樹數(shù)量越多通常效果越穩(wěn)定但計(jì)算成本也越高# random_state38: 固定隨機(jī)種子確保結(jié)果可復(fù)現(xiàn)# thresholdmedian: 選擇閾值策略保留重要性高于中位數(shù)的特征# 這意味著大約會(huì)保留50%的特征但這是基于特征重要性分布動(dòng)態(tài)決定的sfmSelectFromModel(RandomForestRegressor(n_estimators100,random_state38),thresholdmedian)# 3. 在標(biāo)準(zhǔn)化后的訓(xùn)練數(shù)據(jù)上擬合特征選擇器# 隨機(jī)森林會(huì)同時(shí)評(píng)估所有特征的重要性考慮特征間的相互作用# 相比SelectPercentile的單變量分析這種方法更適合捕捉復(fù)雜關(guān)系sfm.fit(X_train_scaled,y_train)# 4. 使用訓(xùn)練好的選擇器轉(zhuǎn)換訓(xùn)練數(shù)據(jù)# 只保留被隨機(jī)森林認(rèn)為重要的特征X_train_sfmsfm.transform(X_train_scaled)# 打印特征選擇后的訓(xùn)練數(shù)據(jù)形狀查看保留了多少個(gè)特征print(X_train_sfm.shape)# 5. 獲取特征選擇掩碼# 一個(gè)布爾數(shù)組True表示對(duì)應(yīng)位置的特征被選中False表示被丟棄mask_sfmsfm.get_support()print(mask_sfm)# 6. 可視化特征選擇結(jié)果importmatplotlib.pyplotasplt# 將一維掩碼轉(zhuǎn)換為二維矩陣1行×特征數(shù)列并用熱圖可視化plt.matshow(mask_sfm.reshape(1,-1),cmapplt.cm.cool)plt.xlabel(Features Selected)# 設(shè)置x軸標(biāo)簽plt.show()# 顯示圖形# 7. 使用相同的特征選擇器轉(zhuǎn)換測(cè)試數(shù)據(jù)# 重要測(cè)試集必須使用與訓(xùn)練集相同的特征選擇和標(biāo)準(zhǔn)化參數(shù)避免數(shù)據(jù)泄露X_test_sfmsfm.transform(X_test_scaled)# 8. 創(chuàng)建新的MLP回歸模型使用與之前相同的架構(gòu)便于公平比較mlpr_sfmMLPRegressor(random_state62,hidden_layer_sizes[100,100],alpha0.001)# 9. 使用基于模型選擇后的特征訓(xùn)練MLP模型mlpr_sfm.fit(X_train_sfm,y_train)# 10. 在特征選擇后的測(cè)試集上評(píng)估模型性能print(mlpr_sfm.score(X_test_sfm,y_test))(4089,9)[FalseTrueFalseTrueFalseFalseFalseFalseTrueTrueTrueFalseFalseTrueFalseTrueTrueTrue]0.3650082808317642SelectFromModel的R2介于兩者之間 (0.35-0.55)說明這種方法比SelectPercentile好但仍有改進(jìn)空間。迭代式特征選擇迭代式特征選擇是一種通過多輪建模逐步優(yōu)化特征子集的高級(jí)策略。其核心思想在于不依賴單次評(píng)估結(jié)果做決策而是通過“模型訓(xùn)練 → 特征評(píng)估 → 剔除末位 → 再次訓(xùn)練”的遞歸循環(huán)動(dòng)態(tài)地篩選出最具預(yù)測(cè)力的特征組合。在scikit-learn中遞歸特征剔除法Recursive Feature Elimination, RFE是這一方法的經(jīng)典實(shí)現(xiàn)。RFE的工作流程通常如下首先它利用一個(gè)基模型如線性回歸、支持向量機(jī)或隨機(jī)森林在全部特征上進(jìn)行訓(xùn)練并根據(jù)模型提供的權(quán)重或重要性評(píng)分對(duì)特征排序然后剔除排名最靠后的一定比例或固定數(shù)量的特征接著用剩余的特征集重復(fù)上述訓(xùn)練和剔除的過程直到達(dá)到預(yù)設(shè)的特征數(shù)量或迭代次數(shù)。通過這種遞歸操作RFE能夠克服單變量選擇忽略特征間交互作用的局限也避免了單次模型選擇可能帶來的偏差最終遴選出在協(xié)同作用下貢獻(xiàn)最大的核心特征子集。這種方法特別適用于特征數(shù)量龐大、且特征間存在復(fù)雜關(guān)聯(lián)的場(chǎng)景。其優(yōu)勢(shì)在于通過多輪迭代模型能持續(xù)重新評(píng)估特征在變化的環(huán)境即不同的特征組合中的重要性從而做出更穩(wěn)健的選擇。需要注意的是RFE的計(jì)算成本相對(duì)較高且其效果在很大程度上依賴于所選基模型評(píng)估特征重要性的準(zhǔn)確性。# 1. 從sklearn庫(kù)導(dǎo)入遞歸特征消除RFE模塊# RFE通過遞歸地移除最不重要的特征實(shí)現(xiàn)迭代式特征選擇fromsklearn.feature_selectionimportRFE# 2. 創(chuàng)建RFE特征選擇器# 第一個(gè)參數(shù)指定基評(píng)估器這里使用隨機(jī)森林回歸器作為特征重要性判斷的基礎(chǔ)模型# - RandomForestRegressor: 集成學(xué)習(xí)模型能有效評(píng)估特征在復(fù)雜關(guān)系中的重要性# - n_estimators100: 使用100棵決策樹構(gòu)建隨機(jī)森林# - random_state38: 固定隨機(jī)種子確保結(jié)果可復(fù)現(xiàn)# 第二個(gè)參數(shù)n_features_to_select12指定最終要選擇的特征數(shù)量# - 這意味著RFE會(huì)遞歸地剔除特征直到只剩下12個(gè)最重要的特征# - 這個(gè)數(shù)字通?;陬I(lǐng)域知識(shí)或通過交叉驗(yàn)證確定rfeRFE(RandomForestRegressor(n_estimators100,random_state38),n_features_to_select12)# 3. 在標(biāo)準(zhǔn)化后的訓(xùn)練數(shù)據(jù)上擬合RFE選擇器# RFE會(huì)執(zhí)行以下遞歸過程# 1) 使用當(dāng)前所有特征訓(xùn)練隨機(jī)森林模型# 2) 根據(jù)特征重要性排序剔除最不重要的特征# 3) 重復(fù)步驟1-2直到剩余特征數(shù)達(dá)到n_features_to_select12rfe.fit(X_train_scaled,y_train)# 4. 獲取特征選擇掩碼# 返回一個(gè)布爾數(shù)組True表示對(duì)應(yīng)位置的特征被選中False表示被剔除mask_rferfe.get_support()print(mask_rfe)# 打印掩碼查看哪些特征被選中# 5. 可視化特征選擇結(jié)果importmatplotlib.pyplotasplt# 將一維掩碼轉(zhuǎn)換為二維矩陣1行×特征數(shù)列并用熱圖可視化plt.matshow(mask_rfe.reshape(1,-1),cmapplt.cm.cool)plt.xlabel(Features Selected)# 設(shè)置x軸標(biāo)簽plt.show()# 顯示圖形# 6. 使用訓(xùn)練好的RFE選擇器轉(zhuǎn)換訓(xùn)練數(shù)據(jù)# 只保留被RFE選中的12個(gè)特征X_train_rferfe.transform(X_train_scaled)# 7. 使用相同的RFE選擇器轉(zhuǎn)換測(cè)試數(shù)據(jù)# 重要測(cè)試集必須使用與訓(xùn)練集相同的特征選擇參數(shù)避免數(shù)據(jù)泄露X_test_rferfe.transform(X_test_scaled)# 8. 創(chuàng)建新的MLP回歸模型使用與之前相同的架構(gòu)便于公平比較mlpr_rfeMLPRegressor(random_state62,hidden_layer_sizes[100,100],alpha0.001)# 9. 使用RFE選擇后的特征訓(xùn)練MLP模型mlpr_rfe.fit(X_train_rfe,y_train)# 10. 在特征選擇后的測(cè)試集上評(píng)估模型性能# 輸出R2分?jǐn)?shù)衡量模型對(duì)漲跌幅的解釋能力r2_scoremlpr_rfe.score(X_test_rfe,y_test)print(fRFE特征選擇后的模型R2分?jǐn)?shù):{r2_score:.4f})[False True True True False False False True True True True True False True False True True True]RFE特征選擇后的模型R2分?jǐn)?shù): 0.4114RFE的R2介于全特征和SelectPercentile之間 (0.36-0.57)說明RFE比簡(jiǎn)單的單變量篩選更有效但特征數(shù)量(12個(gè))可能需要調(diào)整。根據(jù)您提供的RFE特征選擇結(jié)果R2: 0.4114和選中的12個(gè)特征我們可以進(jìn)行深入分析并與之前的實(shí)驗(yàn)結(jié)果對(duì)比從而明確下一步的優(yōu)化方向。 結(jié)果解讀與對(duì)比首先我們將所有方法的性能進(jìn)行匯總對(duì)比特征選擇方法R2分?jǐn)?shù)特征數(shù)量 (約)效果評(píng)價(jià)全特征模型(基準(zhǔn))0.5766全部特征性能最佳但模型復(fù)雜可能過擬合。SelectPercentile (50%)0.3556約50%性能下降嚴(yán)重單變量線性篩選不適合此數(shù)據(jù)。RFE (選12個(gè)特征)0.411412個(gè)表現(xiàn)居中比單變量方法好但距離全特征仍有差距。核心結(jié)論RFE是有效的其性能顯著優(yōu)于SelectPercentile說明其多輪迭代、考慮特征交互的篩選策略更適合您復(fù)雜的股票數(shù)據(jù)。仍有提升空間0.4114的R2分?jǐn)?shù)意味著模型僅能解釋約41%的“漲跌幅”波動(dòng)當(dāng)前選出的12個(gè)特征可能尚未達(dá)到最優(yōu)組合或者數(shù)量不足。
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

易安卓做網(wǎng)站51游戲

易安卓做網(wǎng)站,51游戲,學(xué)徒制下的課程網(wǎng)站建設(shè),做網(wǎng)站常德測(cè)試范式變革的時(shí)代機(jī)遇 隨著數(shù)字化轉(zhuǎn)型進(jìn)入深水區(qū)#xff0c;軟件迭代速度呈現(xiàn)指數(shù)級(jí)增長(zhǎng)#xff0c;傳統(tǒng)編碼測(cè)試模式面臨嚴(yán)峻挑戰(zhàn)。無代碼自

2026/01/21 16:01:01