日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言特征提取与特征选择

發布時間:2023/12/29 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言特征提取与特征选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“數據決定了機器學習的上限,而算法只是盡可能逼近這個上限”,這里的數據指的就是經過特征工程得到的數據。特征工程指的是把原始數據轉變為模型的訓練數據的過程,它的目的就是獲取更好的訓練數據特征,使得機器學習模型逼近這個上限。特征工程能使得模型的性能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。
特征工程在機器學習中占有非常重要的作用,一般認為括特征構建、特征提取、特征選擇三個部分。特征構建比較麻煩,需要一定的經驗。 特征提取與特征選擇都是為了從原始特征中找出最有效的特征。它們之間的區別是特征提取強調通過特征轉換的方式得到一組具有明顯物理或統計意義的特征;而特征選擇是從特征集合中挑選一組具有明顯物理或統計意義的特征子集。兩者都能幫助減少特征的維度、數據冗余,特征提取有時能發現更有意義的特征屬性,特征選擇的過程經常能表示出每個特征的重要性對于模型構建的重要性。簡單來說,特征構建是升維的過程,特征提取和特征選擇是獎為的過程。

常用的特征選擇方法大致可以分為三類:過濾式(filter)、包裹式(wrapper)和嵌入式(embedding)。這里主要選用filter過濾法來篩選變量。

在此,應用mlr包進行特征選擇,如對變量重要性排序等操作,首先是通過makeClassifTask()創建一個用于分類的Task,其他回歸等目的有相應的創建函數。通過removeConstantFeatures()函數丟棄零變量,gener ateFilterValuesData()函數可選擇相應的method進行特征重要性排序(這里運用信息增益衡量),并可繪圖實現。

(1)方差選擇法
通過特征本身的方差來篩選特征的類。算各個特征的方差,然后根據閾值,選擇方差大于閾值的特征。

#install.packages('mlr') library(mlr) # 創建task names(df3) train.task <- makeClassifTask(data = df5, target = "label") # 查看變量選擇可選方法listFilterMethods() # 選擇計算方差,進行特征選擇 var_imp <- generateFilterValuesData(train.task, method = "variance", nselect =3) var_imp plotFilterValues(var_imp, feat.type.cols = TRUE, n.show = 40) result_var_imp<-var_imp[["data"]] write.csv(result_var_imp, './result_var_imp.csv') # 寫出數據# 對衡量特征指標進行繪圖 plotFilterValues(var_imp, feat.type.cols = TRUE, n.show = 30)

(2)相關系數法
計算各個特征對目標值的相關系數以及相關系數的P值。從圖6.6可以看出,通過該方法算出的特征偏向于交易次數。

library(mlr) train.task <- makeRegrTask(data = df2, target = "label") # 選擇pearson相關系數,進行特征選擇 也可以選擇秩相關系數(method =# rank.correlation) var_imp2 <- generateFilterValuesData(train.task, method = "linear.correlation") plotFilterValues(var_imp2, feat.type.cols = TRUE, n.show = 30) # 對相關系數進行繪圖 library(corrplot) corrplot(cor(df2), order = "hclust")

(3)卡方檢驗
經典的卡方檢驗是檢驗定性自變量對定性因變量的相關性,考慮自變量等于i且因變量等于j的樣本頻數的觀察值與期望的差距,這個統計量的含義簡而言之就是自變量對因變量的相關性。

train.task <- makeClassifTask(data = df2, target = "label") # 選擇計算卡方值,進行特征選擇 var_imp3 <- generateFilterValuesData(train.task, method = "chi.squared") # 對衡量特征指標進行繪圖 plotFilterValues(var_imp3, feat.type.cols = TRUE) var_imp_chi<-var_imp3[["data"]] write.csv(var_imp_chi, './data/var_imp_chi.csv')


(4)互信息法
經典的互信息也是評價定性自變量對定性因變量的相關性的,可以看成是一個隨機變量中包含的關于另一個隨機變量的信息量。

train.task <- makeClassifTask(data = df2, target = "label") # 查看變量選擇可選方法 listFilterMethods()# 選擇計算信息增益,進行特征選擇 var_imp4 <- generateFilterValuesData(train.task, method = ""FSelector_information.gain"") var_imp4 # 對衡量特征指標進行繪圖 plotFilterValues(var_imp4, feat.type.cols = TRUE)

參考的大佬文章:
https://zhuanlan.zhihu.com/p/25732304

總結

以上是生活随笔為你收集整理的R语言特征提取与特征选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。