基於sklearn
的feature_selection
進行特徵選擇
將變數集中的特徵變數與目標變數根據指定函式進行分析打分,只保留使用者指定百分比的最高得分的特徵
from sklearn import feature_selection
from sklearn.feature_selection import f_classif
# 預設使用f_classif進行分析打分,precentile=30表示只保留30%的特徵
selector_1 = feature_selection.selectpercentile(score_func=f_classif,percentile=30)
# x為輸入的變數集,y為目標變數
sel_features1 = selector_1.fit_transform(x, y)
保留高於指定**閾值(方差)**的特徵
from sklearn import feature_selection
selector_2 = feature_selection.variancethreshold(1)
# 保留閾值即方差大於1的特徵
sel_features2 = selector_2.fit_transform(x)
新增乙個評估器計算各特徵的權重分配,遞推地去掉不重要的特徵,最後保留指定數量特徵
from sklearn import feature_selection
from sklearn.svm import svc
model_svc = svc(kernel=
"linear"
)# 增加評估器
selector_3 = feature_selection.rfe(model_svc,3)
# 代入評估器,並指定保留3個最高分的特徵
sel_features3 = selector_3.fit_transform(x, y)
指定乙個模型,通過設定特徵重要性閾值選擇特徵
from sklearn import feature_selection
from sklearn.linear_model import logisticregression
model = logisticregression(
)# 建立模型物件
# 代入模型,並設定閾值
線性判別式分析,資料集帶有label(分類標誌),使用lda
進行特徵轉換,得到新的特徵,新特徵的數量≤label中唯一值的個數,若目標變數唯一值數量有n個,可指定的特徵個數最多為n-1個
from sklearn.discriminant_analysis import lineardiscriminantanalysis as lda
model_lda = lda(
)# 建立lda模型物件
model_lda.fit(x, y)
# 將資料集輸入模型並訓練
convert_features = model_lda.transform(x)
# 轉換資料
from sklearn.ensemble import gradientboostingclassifier as gbdt
model_gbdt = gbdt(
)model_gbdt.fit(x, y)
conbine_features = model_gbdt.
(x)[:,
:,0]
生成多項式,先指定多項式的項數(degree)
n個特徵的變數集,轉換後的得到的多項式第1列的值為1,第2列到第n+1列為原始特徵值,後面的列為原始特徵之間的乘積,若指定的多項式項數為3,則為兩個特徵之間所有可能的相互乘積和三個特徵之間所有可能的相互乘積
from sklearn.preprocessing import polynomialfeatures as plf
model_plf = plf(2)
plf_features = model_plf.fit_transform(x)
model_plf.get_feature_names(
)# 檢視每個特徵的名稱,即由哪些原始特徵進行了相互乘積
gplearn的庫主要有以下2個:
from gplearn.genetic import symbolictransformer
from sklearn import datasets
raw_data = datasets.load_boston(
)# 載入資料集
x, y = raw_data.data, raw_data.target # 分割形成x和y
model_symbolic = symbolictransformer(n_components=
5, generations=18,
function_set=
('add'
,'sub'
,'mul'
,'div'
,'sqrt'
,'log'
,'abs'
,'neg'
,'inv'
,'max'
,'min'),
max_samples=
0.9, metric=
'pearson'
, random_state=
0, n_jobs=2)
model_symbolic.fit(x, y)
# 訓練資料
symbolic_features = model_symbolic.transform(x)
# 轉換資料
print
(symbolic_features.shape)
# 列印形狀
print
(symbolic_features[0]
)# 列印第1條資料
print
(model_symbolic)
# 輸出公式
python降維分析 Python資料降維
一些資料降維的特徵提取演算法,先導入包和資料 import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl toolkits.mplot3d import axes3d from sklearn.dec...
常用降維方法
降維方法分為線性核非線性降維,非線性降維又分為基於核函式和基於特徵值的方法。線性降維方法 pca ica lda lfa lpp le的線性表示 基於核函式的非線性降維方法 kpca kica kda 基於特徵值的非線性降維方法 流型學習 isomap lle le lpp ltsa mvu lle...
python用tsne降維 tSNE降維
我有兩套資料訓練和測試。這兩個資料集分別有30213和30235個專案,每個專案有66個維度。在 我正在嘗試應用scikit learn的t sne將維數降到2。由於資料集很大,如果我試圖一次性處理整個資料,我會遇到記憶體錯誤,我會嘗試將它們分成塊,然後一次轉換乙個塊,如下所示 tsne manif...