亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

機器學習中特征選擇的幾種方法原理和代碼實現(python)

系統 2093 0

?

一.特征選擇-單變量特征選擇

1.SelectKBest可以依據相關性對特征進行選擇,保留k個評分最高的特征。

方差分析

分類問題使用f_classif,回歸問題使用f_regression。

f_classif:分類任務

跟目標的分類,將樣本劃分成n個子集,S1,S2,..,Sn,我們希望每個子集的均值μ1,μ2,...,μn不相等。

我們假設H0:μ1=μ2=...=μn,當然我們希望拒絕H0,所以我們希望構造出來f最大越好。所以我們可以通過第i個特征xi對分類進行預測。f值越大,預測值越好。

f_regression:回歸任務

引用參考:https://blog.csdn.net/jetFlow/article/details/78884619

要計算f_regression中的ff值,我們首先要計算的是,這個就是i號特征和因變量y之間的樣本相關系數。

我們計算的?,才是f_regression中的ff值,服從F(1,n?2)F(1,n?2)分布。

ff值越大,i號特征和因變量y之間的相關性就越大,據此我們做特征選擇。
?

            
              from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif
from sklearn.datasets import load_iris
# 特征選擇
data = load_iris()
slectKBest = SelectKBest(f_classif,k=2)
dataK = slectKBest.fit_transform(data.data,data.target)
            
          

2.基于學習模型的特征排序

針對每個單獨的特征和響應變量建立預測模型。其實Pearson相關系數等價于線性回歸里的標準化回歸系數。假如某個特征和響應變量之間的關系是非線性的,可以用基于樹的方法(決策樹、隨機森林)、或者擴展的線性模型等。基于樹的方法比較易于使用,因為他們對非線性關系的建模比較好,并且不需要太多的調試。但要注意過擬合問題,因此樹的深度最好不要太大,再就是運用交叉驗證
在波士頓房價數據集使用sklearn的隨機森林回歸給出一個單變量選擇的例子:

            
              from sklearn.cross_validation import cross_val_score, ShuffleSplit
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
 
#Load boston housing dataset as an example
boston = load_boston()
X = boston["data"]
Y = boston["target"]
names = boston["feature_names"]
 
rf = RandomForestRegressor(n_estimators=20, max_depth=4)
scores = []
for i in range(X.shape[1]):
     score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2",
                              cv=ShuffleSplit(len(X), 3, .3))
     scores.append((round(np.mean(score), 3), names[i]))
print sorted(scores, reverse=True)
            
          

結果:

            
              [(0.636, ‘LSTAT’), (0.59, ‘RM’), (0.472, ‘NOX’), (0.369, ‘INDUS’), (0.311, ‘PTRATIO’), (0.24, ‘TAX’), (0.24, ‘CRIM’), (0.185, ‘RAD’), (0.16, ‘ZN’), (0.087, ‘B’), (0.062, ‘DIS’), (0.036, ‘CHAS’), (0.027, ‘AGE’)]
            
          

二. 遞歸特征消除(RFE)

遞歸特征消除(Recursive feature elimination)

遞歸特征消除的主要思想是反復構建模型,然后選出最好的(或者最差的)特征(根據系數來選),把選出來的特征放到一邊,然后在剩余的特征上重復這個過程,直到遍歷了所有的特征。在這個過程中被消除的次序就是特征的排序。

RFE的穩定性很大程度上取決于迭代時,底層用的哪種模型。比如RFE采用的是普通的回歸(LR),沒有經過正則化的回歸是不穩定的,那么RFE就是不穩定的。假如采用的是Lasso/Ridge,正則化的回歸是穩定的,那么RFE就是穩定的。

下面的示例使用RFE和logistic回歸算法來選出前三個特征。算法的選擇并不重要,只需要熟練并且一致:

            
              Import the required packages

Import pandas to read csv
Import numpy for array related operations

Import sklearn's feature selection algorithm from sklearn.feature_selection import RFE

Import LogisticRegression for performing chi square test from sklearn.linear_model import LogisticRegression

#URL for loading the dataset
url ="https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-dia?betes/pima-indians-diabetes.data"
#Define the attribute names

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']

#Create pandas data frame by loading the data from URL

dataframe = pandas.read_csv(url, names=names)

#Create array from data values
array = dataframe.values
#Split the data into input and target

X?=?array[:,:8]

Y?=?array[:,8]

#Feature extraction

model = LogisticRegression() 
rfe = RFE(model, 3)

fit = rfe.fit(X, Y)

print("Num?Features:?%d"%?fit.n_features_)?
print("Selected?Features:?%s"%?fit.support_)

print("Feature?Ranking:?%s"%?fit.ranking_)

            
          

3.主成分分析

原理參考:https://blog.csdn.net/program_developer/article/details/80632779

PCA python 代碼實現:

            
              #Python實現PCA
import numpy as np
def pca(X,k):#k is the components you want
  #mean of each feature
  n_samples, n_features = X.shape
  mean=np.array([np.mean(X[:,i]) for i in range(n_features)])
  #normalization
  norm_X=X-mean
  #scatter matrix
  scatter_matrix=np.dot(np.transpose(norm_X),norm_X)
  #Calculate the eigenvectors and eigenvalues
  eig_val, eig_vec = np.linalg.eig(scatter_matrix)
  eig_pairs = [(np.abs(eig_val[i]), eig_vec[:,i]) for i in range(n_features)]
  # sort eig_vec based on eig_val from highest to lowest
  eig_pairs.sort(reverse=True)
  # select the top k eig_vec
  feature=np.array([ele[1] for ele in eig_pairs[:k]])
  #get new data
  data=np.dot(norm_X,np.transpose(feature))
  return data
 
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
print(pca(X,1))
            
          

上面代碼實現了對數據X進行特征的降維。結果如下:

            
              [[-0.50917706],[-2.40151069],[]-3.7751606],[1.20075534],[2.05572155],[3.42937146]]
            
          

2)用sklearn的PCA

            
              ##用sklearn的PCA
from sklearn.decomposition import PCA
import numpy as np
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca=PCA(n_components=1)pca.fit(X)
print(pca.transform(X)
            
          

相關博客:

Reference:

(1) 主成分分析(PCA)原理詳解

http://blog.csdn.net/zhongkelee/article/details/44064401

(2) 機器學習之PCA主成分分析 - steed灬 - 博客園

https://www.cnblogs.com/steed/p/7454329.html

(3) 簡單易學的機器學習算法——主成分分析(PCA)

https://blog.csdn.net/google19890102/article/details/27969459

(4) 機器學習實戰之PCA - 笨鳥多學 - 博客園

https://www.cnblogs.com/zy230530/p/7074215.html

(5) 機器學習中的數學(5)-強大的矩陣奇異值分解(SVD)及其應用 - LeftNotEasy - 博客園

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

(6) 從PCA和SVD的關系拾遺

https://blog.csdn.net/Dark_Scope/article/details/53150883

(7) CodingLabs - PCA的數學原理

http://blog.codinglabs.org/articles/pca-tutorial.html

(8) PCA(主成分分析)python實現

https://www.jianshu.com/p/4528aaa6dc48

(9) 主成分分析PCA(Principal Component Analysis)在sklearn中的應用及部分源碼分析

https://www.cnblogs.com/lochan/p/7001907.html


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 香蕉在线精品亚洲第一区 | 国产成人mv在线观看入口视频 | 亚洲丶国产丶欧美一区二区三区 | 青青青手机视频 | 九热这里只有精品 | 视频一区欧美 | 五月婷六月婷婷 | 精品视频在线观看免费 | 爱爱网站在线观看免费 | 久久精品国产线看观看亚洲 | 婷婷色六月 | 国产激情久久久久影 | 免费超爽大片黄网站 | 国产免费一区二区三区在线 | 欧美成人精品第一区二区三区 | 色片免费观看 | 日韩不卡毛片 | 亚洲精品乱码久久久久久蜜桃 | 无遮挡一级毛片呦女视频 | 欧美啪 | 日本亚洲欧美国产日韩ay高清 | 日韩免费高清一级毛片在线 | 成人在线视频国产 | 韩国色三级伦不卡高清在线观看 | 国产成人免费手机在线观看视频 | 国产女人视频 | 久久这里只有精品国产99 | 7777奇米影视| 久9热精品视频在线观看 | 久久天堂一区二区三区 | 久久精品国产清白在天天线 | 中文字幕在线视频观看 | 国产一区二区三区四区在线观看 | 性做久久久久久久免费看 | 不卡一区二区在线 | 日本中文字幕免费 | 综合色中色 | 国产欧美综合在线一区二区三区 | 一级特黄女人生活片 | 久久综合免费视频 | 亚洲一区二区高清 |