国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)器學(xué)習(xí)技術(shù)(四)——特征工程與模型評(píng)估

這篇具有很好參考價(jià)值的文章主要介紹了機(jī)器學(xué)習(xí)技術(shù)(四)——特征工程與模型評(píng)估。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

機(jī)器學(xué)習(xí)技術(shù)(四)——特征工程與模型評(píng)估(1??)

機(jī)器學(xué)習(xí)技術(shù)(四)——特征工程與模型評(píng)估,機(jī)器學(xué)習(xí)技術(shù),機(jī)器學(xué)習(xí),人工智能

??機(jī)器學(xué)習(xí)技術(shù)(四)包含了十二種特征工程的應(yīng)用方法,主要包括標(biāo)準(zhǔn)化,特征縮放,縮放有離群的值的數(shù)據(jù),非線性轉(zhuǎn)換,樣本歸一化,特征二值化,one-hot編碼,缺失值插補(bǔ)以及生成多項(xiàng)式特征等步驟。

??通過(guò)這些步驟可以顯著提高數(shù)據(jù)的質(zhì)量。同時(shí),實(shí)驗(yàn)包含了基于Python代碼的對(duì)特征集進(jìn)行篩選的多種方法。一個(gè)典型的機(jī)器學(xué)習(xí)任務(wù),是通過(guò)樣本的特征來(lái)預(yù)測(cè)樣本所對(duì)應(yīng)的值。而現(xiàn)實(shí)中的情況往往是特征太多了,需要減少一些特征。

??減少特征具有重要的現(xiàn)實(shí)意義,不僅減少過(guò)擬合、減少特征數(shù)量(降維)、提高模型泛化能力,而且還可以使模型獲得更好的解釋性,增強(qiáng)對(duì)特征和特征值之間的理解,加快模型的訓(xùn)練速度,一般的,還會(huì)獲得更好的性能?;趕klearn自帶數(shù)據(jù)集iris,應(yīng)用多種特征篩選方法進(jìn)行特征選擇。

??包含關(guān)于幾個(gè)評(píng)估模型指標(biāo)的參數(shù)計(jì)算及其原理。在日常業(yè)務(wù)有中,當(dāng)我們訓(xùn)練模型時(shí)常常需要在多個(gè)模型中選擇出最優(yōu)模型,因此本實(shí)驗(yàn)中precision, recall rate等參數(shù)就成為評(píng)判的依據(jù),幫助我們選擇和評(píng)價(jià)模型表現(xiàn)。

一、特征工程

在實(shí)際應(yīng)用中,數(shù)據(jù)往往都需要進(jìn)行預(yù)處理,提高數(shù)據(jù)質(zhì)量,也有利于后續(xù)數(shù)據(jù)分析以及挖掘,

主要包括標(biāo)準(zhǔn)化,特征縮放,縮放有離群的值的數(shù)據(jù),非線性轉(zhuǎn)換,樣本歸一化,特征二值化,one-hot編碼,缺失值插補(bǔ)以及生成多項(xiàng)式特征等步驟。通過(guò)這些步驟可以顯著提高數(shù)據(jù)的質(zhì)量?;赑ython代碼的對(duì)特征集進(jìn)行篩選的多種方法

1、標(biāo)準(zhǔn)化

導(dǎo)入相關(guān)庫(kù),并自定義訓(xùn)練集數(shù)據(jù)以及測(cè)試集數(shù)據(jù)

from sklearn import preprocessing
import numpy as np

X_train = np.array([[ 1., -1.,  -2.],
                    [ 2.,  0.,  0.],
                    [ 3.,  1., -1.]])
X_test = [[-1., 1., 0.]]

將每組特征減去均值并除以標(biāo)準(zhǔn)差,使得均值為0,方差為1

#計(jì)算數(shù)據(jù)集的尺度(也就是數(shù)據(jù)集的均值和方差)(各列)
scaler = preprocessing.StandardScaler().fit(X_train)   # 計(jì)算均值和方差
print('均值:',scaler.mean_ )
print('方差:',scaler.scale_ )

#通過(guò)尺度去處理另一個(gè)數(shù)據(jù)集,當(dāng)然另一個(gè)數(shù)據(jù)集仍然可以是自己。
X_scaled = scaler.transform(X_train)
print('均值:',X_scaled.mean(axis=0))  # transform會(huì)轉(zhuǎn)化數(shù)據(jù)集為均值為0
print('方差:',X_scaled.std(axis=0))   # transform會(huì)轉(zhuǎn)化數(shù)據(jù)集為方差為1

#上面兩步的綜合:縮放樣本,是樣本均值為0,方差為1(各列)
X_scaled = preprocessing.scale(X_train,axis=0)      # 標(biāo)準(zhǔn)化:去均值和方差
print('均值:',X_scaled.mean(axis=0))
print('方差:',X_scaled.std(axis=0))

均值以及方差以及標(biāo)準(zhǔn)化后均值以及方差顯示如下

均值: [ 2.  0. -1.]
方差: [0.81649658 0.81649658 0.81649658]
均值: [0. 0. 0.]
方差: [1. 1. 1.]
均值: [0. 0. 0.]
方差: [1. 1. 1.]

2、特征縮放

計(jì)算樣本和數(shù)據(jù)集中所有已知標(biāo)簽樣本的歐氏距離并排序進(jìn)行投票。

MinMaxScaler將特征縮放至特定范圍內(nèi)(默認(rèn)為0-1)

min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)  # 訓(xùn)練同時(shí)轉(zhuǎn)換
print('每列最大值:',X_train_minmax.max(axis=0))   # 每列最大值為1
print('每列最小值:',X_train_minmax.min(axis=0))    # 每列最小值為0

X_test_minmax = min_max_scaler.transform(X_test)   # 轉(zhuǎn)換實(shí)例應(yīng)用到測(cè)試數(shù)據(jù):實(shí)現(xiàn)和訓(xùn)練數(shù)據(jù)一致的縮放和移位操作:

#MaxAbsScaler通過(guò)除以每個(gè)特征的最大值將訓(xùn)練數(shù)據(jù)特征縮放至 [-1, 1] 范圍內(nèi)??梢詰?yīng)用在稀疏矩陣上保留矩陣的稀疏性。
X_train = np.array([[ 0., -1.,  0.],
                    [ 0., 0.,  0.2],
                    [ 2.,  0., 0]])
max_abs_scaler = preprocessing.MaxAbsScaler()
X_train_maxabs = max_abs_scaler.fit_transform(X_train)
print('每列最大值:',X_train_maxabs.max(axis=0))   # 每列最大值為1
print('每列最小值:',X_train_maxabs.min(axis=0))    # 每列最小值不低于-1
print('縮放比例:',max_abs_scaler.scale_)
X_test_maxabs = max_abs_scaler.transform(X_test)   # 轉(zhuǎn)換實(shí)例應(yīng)用到測(cè)試數(shù)據(jù):實(shí)現(xiàn)和訓(xùn)練數(shù)據(jù)一致的縮放和移位操作:
print('縮放后的矩陣仍然具有稀疏性:\n',X_train_maxabs)

縮放對(duì)象是記錄了,平移距離和縮放大小,再對(duì)數(shù)據(jù)進(jìn)行的操作

print('先平移:',min_max_scaler.min_)
print('再縮放:',min_max_scaler.scale_)

轉(zhuǎn)換實(shí)例應(yīng)用到測(cè)試數(shù)據(jù):實(shí)現(xiàn)和訓(xùn)練數(shù)據(jù)一致的縮放和移位操作:

MaxAbsScaler通過(guò)除以每個(gè)特征的最大值將訓(xùn)練數(shù)據(jù)特征縮放至 [-1, 1] 范圍內(nèi)??梢詰?yīng)用在稀疏矩陣上保留矩陣的稀疏性。

X_train = np.array([[ 0., -1.,  0.],
                    [ 0., 0.,  0.2],
                    [ 2.,  0., 0]])
max_abs_scaler = preprocessing.MaxAbsScaler()
X_train_maxabs = max_abs_scaler.fit_transform(X_train)
print('每列最大值:',X_train_maxabs.max(axis=0))   # 每列最大值為1
print('每列最小值:',X_train_maxabs.min(axis=0))    # 每列最小值不低于-1
print('縮放比例:',max_abs_scaler.scale_)
X_test_maxabs = max_abs_scaler.transform(X_test)   # 轉(zhuǎn)換實(shí)例應(yīng)用到測(cè)試數(shù)據(jù):實(shí)現(xiàn)和訓(xùn)練數(shù)據(jù)一致的縮放和移位操作:
print('縮放后的矩陣仍然具有稀疏性:\n',X_train_maxabs)

輸出為特征縮放的步驟以及縮放后的矩陣

每列最大值: [1. 1. 1.]
每列最小值: [0. 0. 0.]
先平移: [-0.5  0.5  1. ]
再縮放: [0.5 0.5 0.5]
每列最大值: [1. 0. 1.]
每列最小值: [ 0. -1.  0.]
縮放比例: [2.  1.  0.2]
縮放后的矩陣仍然具有稀疏性:
 [[ 0. -1.  0.]
 [ 0.  0.  1.]
 [ 1.  0.  0.]]

3、縮放有離群值的數(shù)據(jù)

根據(jù)百分位數(shù)范圍(默認(rèn)值為IQR:四分位間距)縮放數(shù)據(jù)。

X_train = np.array([[ 1., -11.,  -2.],
                    [ 2.,  2.,  0.],
                    [ 13.,  1., -11.]])
robust_scale = preprocessing.RobustScaler()
X_train_robust = robust_scale.fit_transform(X_train)  # 訓(xùn)練同時(shí)轉(zhuǎn)換
print('縮放后的矩陣離群點(diǎn)被處理了:\n',X_train_robust)

輸出:

縮放后的矩陣離群點(diǎn)被處理了:
 [[-0.16666667 -1.84615385  0.        ]
 [ 0.          0.15384615  0.36363636]
 [ 1.83333333  0.         -1.63636364]]

4、非線性轉(zhuǎn)換

sklearn 將數(shù)據(jù)集映射到均勻分布的方式主要是通過(guò)分位數(shù)轉(zhuǎn)換的方式實(shí)現(xiàn),通過(guò)類(lèi)QuantileTransformer 類(lèi)以及quantile_transform 函數(shù)實(shí)現(xiàn)。

X_train = np.array([[ 1., -1.,  -2.],
                    [ 2.,  0.,  0.],
                    [ 3.,  1., -1.]])
quantile_transformer = preprocessing.QuantileTransformer(n_quantiles=3,random_state=0)  
#將數(shù)據(jù)映射到了零到一的均勻分布上(默認(rèn)是均勻分布)
X_train_trans = quantile_transformer.fit_transform(X_train)

#查看分位數(shù)信息,經(jīng)過(guò)轉(zhuǎn)換以后,分位數(shù)的信息基本不變
print('源分位數(shù)情況:',np.percentile(X_train[:, 0], [0, 25, 50, 75, 100]))
print('變換后分位數(shù)情況:',np.percentile(X_train_trans[:, 0], [0, 25, 50, 75, 100]))

#下面將數(shù)據(jù)映射到了零到一的正態(tài)分布上:輸入的中值稱(chēng)為輸出的平均值,并且以0為中心。正常輸出被剪切,使得輸入的最小和最大值分別對(duì)應(yīng)于1e-7和1-1e-7分位數(shù)
quantile_transformer = preprocessing.QuantileTransformer(output_distribution='normal',random_state=0)

輸出:

源分位數(shù)情況: [1.  1.5 2.  2.5 3. ]
變換后分位數(shù)情況: [0.   0.25 0.5  0.75 1.  ]

5、樣本歸一化

歸一化縮放單個(gè)樣本以具有單位范數(shù) 的過(guò)程。Normalizer 工具類(lèi)通過(guò)使用 Transformer API實(shí)現(xiàn)了相同的歸一化效果。但和其他轉(zhuǎn)換器不一樣的是,這個(gè)轉(zhuǎn)換器沒(méi)有狀態(tài),其fit函數(shù)并沒(méi)有對(duì)轉(zhuǎn)換保留狀態(tài)的。fit函數(shù)只是對(duì)X進(jìn)行數(shù)組校驗(yàn),可見(jiàn)它并無(wú)狀態(tài),整個(gè)轉(zhuǎn)換的過(guò)程,實(shí)際是全在 transform 函數(shù)。實(shí)際上,該類(lèi)調(diào)用的依舊是normalize 函數(shù)。值得一提的是,Normalizer 工具類(lèi)和 normalize 函數(shù)都支持稀疏矩陣的輸入,并會(huì)自動(dòng)轉(zhuǎn)化為壓縮的稀疏行形式。

使用 l1l2 范式。縮放使每個(gè)樣本(每行)的一范數(shù)或二范數(shù)為1

X = [[ 1., -1.,  2.],
     [ 2.,  0.,  0.],
     [ 0.,  1., -1.]]
X_normalized = preprocessing.normalize(X, norm='l1')  # 
print('樣本歸一化:\n',X_normalized)

當(dāng)然仍然可以先通過(guò)樣本獲取轉(zhuǎn)換對(duì)象,再用轉(zhuǎn)換對(duì)象歸一化其他數(shù)據(jù)

normalizer = preprocessing.Normalizer().fit(X)  # 獲取轉(zhuǎn)換對(duì)象
normalizer.transform(X)  # 轉(zhuǎn)換任何數(shù)據(jù),X或測(cè)試集

輸出為進(jìn)行l(wèi)1范數(shù)歸一化的數(shù)據(jù),以及進(jìn)行l(wèi)2范數(shù)歸一化的數(shù)據(jù)

樣本歸一化:
 [[ 0.25 -0.25  0.5 ]
 [ 1.    0.    0.  ]
 [ 0.    0.5  -0.5 ]]

array([[ 0.40824829, -0.40824829,  0.81649658],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

6、特征二值化

特征二值化 是將數(shù)值特征用閾值過(guò)濾得到布爾值的過(guò)程,可以通過(guò)binarize 函數(shù)實(shí)現(xiàn)

獲取轉(zhuǎn)換模型,生成的門(mén)限,默認(rèn)為0

binarizer = preprocessing.Binarizer().fit(X)  # 
print(binarizer)
#binarizer = preprocessing.Binarizer(threshold=1) 

自定義轉(zhuǎn)換器。門(mén)限以上為1,門(mén)限(包含)以下為0

X_normalized = binarizer.transform(X)  # 轉(zhuǎn)換任何數(shù)據(jù),X或測(cè)試集
print('特征二值化:\n',X_normalized)

輸出:

Binarizer(copy=True, threshold=0.0)
特征二值化:
 [[1. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

7、標(biāo)稱(chēng)特征編碼(one-hot編碼)

獨(dú)熱碼,在英文文獻(xiàn)中稱(chēng)做 one-hot code, 直觀來(lái)說(shuō)就是有多少個(gè)狀態(tài)就有多少比特,而且只有一個(gè)比特為1,其他全為0的一種碼制。舉例如下: 假如有三種顏色特征:紅、黃、藍(lán)。 在利用機(jī)器學(xué)習(xí)的算法時(shí)一般需要進(jìn)行向量化或者數(shù)字化。那么你可能想令 紅=1,黃=2,藍(lán)=3. 那么這樣其實(shí)實(shí)現(xiàn)了標(biāo)簽編碼,即給不同類(lèi)別以標(biāo)簽。然而這意味著機(jī)器可能會(huì)學(xué)習(xí)到“紅<黃<藍(lán)”,但這并不是我們的讓機(jī)器學(xué)習(xí)的本意,只是想讓機(jī)器區(qū)分它們,并無(wú)大小比較之意。所以這時(shí)標(biāo)簽編碼是不夠的,需要進(jìn)一步轉(zhuǎn)換。因?yàn)橛?code>三種顏色狀態(tài),所以就有3個(gè)比特。即紅色:1 0 0 ,黃色: 0 1 0,藍(lán)色:0 0 1 。如此一來(lái)每?jī)蓚€(gè)向量之間的距離都是根號(hào)2,在向量空間距離都相等,所以這樣不會(huì)出現(xiàn)偏序性,基本不會(huì)影響基于向量空間度量算法的效果。

自然狀態(tài)碼為:000,001,010,011,100,101

獨(dú)熱編碼為:000001,000010,000100,001000,010000,100000
以下為例子

輸入:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(categories='auto')
enc.fit([[0, 1, 2],   # 每列一個(gè)屬性,每個(gè)屬性一種編碼
         [1, 0, 0],
         [0, 2, 1],
         [1, 0, 1]])
print('編碼后:',enc.transform([[0, 1, 1]]).toarray()) 

轉(zhuǎn)換目標(biāo)對(duì)象。根據(jù)可取值所占位數(shù)進(jìn)行羅列。前2位為第一個(gè)數(shù)字one-hot編碼,緊接著的3位為第二個(gè)數(shù)字的編碼,最后3位為第三個(gè)數(shù)字的編碼

編碼后: [[1. 0. 0. 1. 0. 0. 1. 0.]]

8、缺失值插補(bǔ)

在scikit-learn的模型中都是假設(shè)輸入的數(shù)據(jù)是數(shù)值型的,并且都是有意義的,如果有缺失數(shù)據(jù)是通過(guò)NAN,或者空值表示的話,就無(wú)法識(shí)別與計(jì)算了。要彌補(bǔ)缺失值,可以使用均值,中位數(shù),眾數(shù)等等。Imputer這個(gè)類(lèi)可以實(shí)現(xiàn)。

import numpy as np
from sklearn.impute import SimpleImputer

imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
x = [[np.nan, 2], [6, np.nan], [7, 6]]
imp = imp_mean.fit(x)
new_x = imp_mean.transform(x)

print(imp)
print('缺失值插值后:\n',new_x)

輸出:

SimpleImputer(add_indicator=False, copy=True, fill_value=None,
              missing_values=nan, strategy='mean', verbose=0)
缺失值插值后:
 [[6.5 2. ]
 [6.  4. ]
 [7.  6. ]]

9、生成多項(xiàng)式特征

有的時(shí)候線性的特征并不能做出美的模型,于是我們會(huì)去嘗試非線性。非線性是建立在將特征進(jìn)行多項(xiàng)式地展開(kāi)上的。比如將兩個(gè)特征
( X 1 , X 2 ) (X_1, X_2) (X1?,X2?)
,它的平方展開(kāi)式便轉(zhuǎn)換成5個(gè)特征
( 1 , X 1 , X 2 , X 1 2 , X 1 X 2 , X 2 2 ) . (1, X_1, X_2, X_1^2, X_1X_2, X_2^2). (1,X1?,X2?,X12?,X1?X2?,X22?).

from sklearn.preprocessing import PolynomialFeatures
X = np.array([[0, 1],
              [2, 3],
              [4, 5]])
# 最大二次方。interaction_only參數(shù)設(shè)置為T(mén)rue,則會(huì)只保留交互項(xiàng)
poly = PolynomialFeatures(2,interaction_only=False)  
 # 從 (X_1, X_2) 轉(zhuǎn)換為 (1, X_1, X_2, X_1^2, X_1X_2, X_2^2)
print('生成多項(xiàng)式:\n',poly.fit_transform(X))  

輸出:

生成多項(xiàng)式:
 [[ 1.  0.  1.  0.  0.  1.]
 [ 1.  2.  3.  4.  6.  9.]
 [ 1.  4.  5. 16. 20. 25.]]

10、過(guò)濾法

1、導(dǎo)入數(shù)據(jù)集

我們本實(shí)驗(yàn)中特征數(shù)據(jù)主要是依賴(lài)于sklearn自帶數(shù)據(jù)集iris,對(duì)其進(jìn)行多種方法的特征篩選。所以我們首先導(dǎo)入數(shù)據(jù)集。

#加載數(shù)據(jù)集

from sklearn.datasets import load_iris
 
iris = load_iris() # 導(dǎo)入IRIS數(shù)據(jù)集
iris.data # 特征矩陣
iris.target # 目標(biāo)向量
2、采用方差過(guò)濾

方差過(guò)濾法需要計(jì)算每個(gè)特征的方差,然后根據(jù)閾值刪除取值小于閾值的特征。

例如,假設(shè)某特征的取值為0和1,且訓(xùn)練集中有90%以上的數(shù)據(jù)在該特征的取值為1,那么可認(rèn)為該特征對(duì)于區(qū)分不同數(shù)據(jù)的作用不大。方差過(guò)濾法只能用于篩選離散的特征,如果特征的取值是連續(xù)的,就需要將連續(xù)值離散化之后才能用。

from sklearn.feature_selection import VarianceThreshold
 
#方差選擇法,返回值為特征選擇后的數(shù)據(jù)
#參數(shù)threshold為方差的閾值
VarianceThreshold(threshold=3).fit_transform(iris.data)

通過(guò)篩除方差較小的特征數(shù)據(jù),只保留了一個(gè)特征。

優(yōu)點(diǎn):效果最好速度最快,模式單調(diào),快速并且效果明顯。

缺點(diǎn):但是如何參數(shù)設(shè)置, 需要深厚的背景知識(shí)。

3、采用卡方檢驗(yàn)

經(jīng)典的卡方檢驗(yàn)是檢驗(yàn)定性自變量對(duì)定性因變量的相關(guān)性。假設(shè)自變量有N種取值,因變量有M種取值,考慮自變量等于i且因變量等于j的樣本頻數(shù)的觀察值與期望的差距。

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

#選擇K個(gè)最好的特征,返回選擇特征后的數(shù)據(jù)
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)

通過(guò)卡方檢驗(yàn)只留下兩個(gè)特征值

11、Wrapper

遞歸消除特征法使用一個(gè)基模型來(lái)進(jìn)行多輪訓(xùn)練,每輪訓(xùn)練后,移除若干權(quán)值系數(shù)的特征,再基于新的特征集進(jìn)行下一輪訓(xùn)練。

#遞歸特征消除

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
 
#遞歸特征消除法,返回特征選擇后的數(shù)據(jù)
#參數(shù)estimator為基模型
#參數(shù)n_features_to_select為選擇的特征個(gè)數(shù)
rfe=RFE(estimator=LogisticRegression(C=1.0, class_weight=None, dual=False,
                                 fit_intercept=True, intercept_scaling=1,
                                 l1_ratio=None, max_iter=1000,
                                 multi_class='auto', n_jobs=None, penalty='l2',
                                 random_state=None, solver='lbfgs', tol=0.0001,
                                 verbose=0, warm_start=False),
    n_features_to_select=2, step=1, verbose=0)
rfe.fit_transform(iris.data, iris.target)

上面的代碼中,首先,通過(guò)全部特征利用logistic回歸訓(xùn)練評(píng)估函數(shù),得出每個(gè)特征的權(quán)重。然后,將最小權(quán)重的特征從特征集合中去除
循環(huán)執(zhí)行以上兩個(gè)過(guò)程,直到特征數(shù)達(dá)成需要。

array([[1.4, 0.2],
       [1.4, 0.2],
       [1.3, 0.2],
       [1.5, 0.2],
       [1.4, 0.2],
       [1.7, 0.4],
       [1.4, 0.3],
       [1.5, 0.2],
       [1.4, 0.2],
       ..........

由數(shù)據(jù)可知,遞歸特征消除,只留下了兩個(gè)特征。

12、嵌入法 Embedding

1、基于懲罰項(xiàng)的特征選擇法
#通過(guò)加入L1懲罰項(xiàng),將許多系數(shù)壓縮至0以實(shí)現(xiàn)特征篩選
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
SelectFromModel(LogisticRegression(penalty="l1", C=0.3,solver='saga',multi_class='multinomial',max_iter=10000)).fit_transform(iris.data, iris.target)

通過(guò)加入L1懲罰項(xiàng),將許多系數(shù)壓縮至0以實(shí)現(xiàn)特征篩選

array([[1.4, 0.2],
       [1.4, 0.2],
       [1.3, 0.2],
       [1.5, 0.2],
       [1.4, 0.2],
       [1.7, 0.4],
       [1.4, 0.3],
       [1.5, 0.2],
       [1.4, 0.2],
       [1.5, 0.1],
       ..........])
2、基于樹(shù)模型的特征選擇法

樹(shù)模型中GBDT也可用來(lái)作為基模型進(jìn)行特征選擇,使用feature_selection庫(kù)的SelectFromModel類(lèi)結(jié)合GBDT模型

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier

#GBDT作為基模型的特征選擇
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)

通過(guò)特征選擇只留下2個(gè)特征

輸出:

array([[1.4, 0.2],
       [1.4, 0.2],
       [1.3, 0.2],
       [1.5, 0.2],
       [1.4, 0.2],
       [1.7, 0.4],
       .....)

特征工程總結(jié)

通過(guò)特征工程的一系列代碼,可以了解在面對(duì)不同數(shù)據(jù)集時(shí),先進(jìn)行怎么樣的預(yù)處理來(lái)清洗數(shù)據(jù)提高數(shù)據(jù)質(zhì)量,使得后續(xù)實(shí)驗(yàn)可以事半功倍。特征選擇是數(shù)據(jù)挖掘中非常重要的一步,可以為后續(xù)建模省去很多時(shí)間,提高效率以及模型表現(xiàn)能力。在具體業(yè)務(wù)中,需要根據(jù)場(chǎng)景不同選擇不同的方法。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-548832.html

到了這里,關(guān)于機(jī)器學(xué)習(xí)技術(shù)(四)——特征工程與模型評(píng)估的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【機(jī)器學(xué)習(xí)入門(mén)與實(shí)踐】數(shù)據(jù)挖掘-二手車(chē)價(jià)格交易預(yù)測(cè)(含EDA探索、特征工程、特征優(yōu)化、模型融合等)

    【機(jī)器學(xué)習(xí)入門(mén)與實(shí)踐】數(shù)據(jù)挖掘-二手車(chē)價(jià)格交易預(yù)測(cè)(含EDA探索、特征工程、特征優(yōu)化、模型融合等)

    【機(jī)器學(xué)習(xí)入門(mén)與實(shí)踐】數(shù)據(jù)挖掘-二手車(chē)價(jià)格交易預(yù)測(cè)(含EDA探索、特征工程、特征優(yōu)化、模型融合等) note:項(xiàng)目鏈接以及碼源見(jiàn)文末 了解賽題 賽題概況 數(shù)據(jù)概況 預(yù)測(cè)指標(biāo) 分析賽題 數(shù)據(jù)讀取pandas 分類(lèi)指標(biāo)評(píng)價(jià)計(jì)算示例 回歸指標(biāo)評(píng)價(jià)計(jì)算示例 EDA探索 載入各種數(shù)據(jù)科學(xué)以

    2023年04月13日
    瀏覽(1661)
  • 打造你的專(zhuān)屬大模型,學(xué)完即可使用上崗!技術(shù)人的大模型課程(人工智能/機(jī)器學(xué)習(xí)/深度學(xué)習(xí))

    打造你的專(zhuān)屬大模型,學(xué)完即可使用上崗!技術(shù)人的大模型課程(人工智能/機(jī)器學(xué)習(xí)/深度學(xué)習(xí))

    技術(shù)人的大模型課 讓一部分人在大模型時(shí)代,先擁抱AI,為編程專(zhuān)家開(kāi)啟AI新篇章 在2024年,大模型不再是可選技能,而是技術(shù)行業(yè)的必備。你是否曾在夜深人靜時(shí)想象,從一名代碼專(zhuān)家轉(zhuǎn)型為AI行業(yè)的引領(lǐng)者? 如果你的答案是肯定的,那么這門(mén)課程正是為你量身定制, 針對(duì)

    2024年04月27日
    瀏覽(28)
  • 機(jī)器學(xué)習(xí)筆記 - 數(shù)據(jù)科學(xué)中基于 Scikit-Learn、Tensorflow、Pandas 和 Scipy的7種最常用的特征工程技術(shù)

    ????????特征工程描述了制定相關(guān)特征的過(guò)程,這些特征盡可能準(zhǔn)確地描述底層數(shù)據(jù)科學(xué)問(wèn)題,并使算法能夠理解和學(xué)習(xí)模式。換句話說(shuō):您提供的特征可作為將您自己對(duì)世界的理解和知識(shí)傳達(dá)給模型的一種方式。 ????????每個(gè)特征描述一種信息“片段”。這些部分的

    2024年02月10日
    瀏覽(31)
  • 機(jī)器學(xué)習(xí)基礎(chǔ)之《特征工程(2)—特征工程介紹、特征抽取》

    機(jī)器學(xué)習(xí)基礎(chǔ)之《特征工程(2)—特征工程介紹、特征抽取》

    一、什么是特征工程 機(jī)器學(xué)習(xí)領(lǐng)域的大神Andrew Ng(吳恩達(dá))老師說(shuō)“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ” 注:業(yè)界廣泛流傳:數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已

    2024年02月13日
    瀏覽(21)
  • 【機(jī)器學(xué)習(xí)】特征工程 - 字典特征提取

    「作者主頁(yè)」: 士別三日wyx 「作者簡(jiǎn)介」: CSDN top100、阿里云博客專(zhuān)家、華為云享專(zhuān)家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專(zhuān)欄」: 對(duì)網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專(zhuān)欄《網(wǎng)絡(luò)安全入門(mén)到精通》 特征工程就是從 「原始數(shù)據(jù)」 中提取 「特征」 ,以供 「算法」 和 「模型

    2024年02月11日
    瀏覽(29)
  • 機(jī)器學(xué)習(xí):特征工程之特征預(yù)處理

    機(jī)器學(xué)習(xí):特征工程之特征預(yù)處理

    目錄 特征預(yù)處理 1、簡(jiǎn)述 2、內(nèi)容 3、歸一化 3.1、魯棒性 3.2、存在的問(wèn)題 4、標(biāo)準(zhǔn)化 ?所屬專(zhuān)欄:人工智能 文中提到的代碼如有需要可以私信我發(fā)給你?? 什么是特征預(yù)處理:scikit-learn的解釋?zhuān)?provides several common utility functions and transformer classes to change raw feature vectors into a r

    2024年02月12日
    瀏覽(36)
  • 機(jī)器學(xué)習(xí)重要內(nèi)容:特征工程之特征抽取

    機(jī)器學(xué)習(xí)重要內(nèi)容:特征工程之特征抽取

    目錄 1、簡(jiǎn)介 2、?為什么需要特征工程 3、特征抽取 3.1、簡(jiǎn)介 3.2、特征提取主要內(nèi)容 3.3、字典特征提取 3.4、\\\"one-hot\\\"編碼 3.5、文本特征提取 3.5.1、英文文本 3.5.2、結(jié)巴分詞 3.5.3、中文文本 3.5.4、Tf-idf ?所屬專(zhuān)欄:人工智能 文中提到的代碼如有需要可以私信我發(fā)給你噢?? 特

    2024年02月12日
    瀏覽(27)
  • 【機(jī)器學(xué)習(xí)】特征工程 - 文本特征提取TfidfVectorizer

    「作者主頁(yè)」: 士別三日wyx 「作者簡(jiǎn)介」: CSDN top100、阿里云博客專(zhuān)家、華為云享專(zhuān)家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專(zhuān)欄」: 對(duì)網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專(zhuān)欄《網(wǎng)絡(luò)安全入門(mén)到精通》 對(duì) 「文本」 進(jìn)行特征提取時(shí),一般會(huì)用 「單詞」 作為特征,即特征詞。

    2024年02月12日
    瀏覽(29)
  • python機(jī)器學(xué)習(xí)——機(jī)器學(xué)習(xí)相關(guān)概念 & 特征工程

    python機(jī)器學(xué)習(xí)——機(jī)器學(xué)習(xí)相關(guān)概念 & 特征工程

    監(jiān)督學(xué)習(xí):輸入數(shù)據(jù)有特征有標(biāo)簽,即有標(biāo)準(zhǔn)答案 分類(lèi):k-近鄰算法、貝葉斯分類(lèi)、決策樹(shù)與隨機(jī)森林、邏輯回歸、神經(jīng)網(wǎng)絡(luò) 回歸:線性回歸、嶺回歸 標(biāo)注:隱馬爾可夫模型 (不做要求) 無(wú)監(jiān)督學(xué)習(xí):輸入數(shù)據(jù)有特征無(wú)標(biāo)簽,即無(wú)標(biāo)準(zhǔn)答案 聚類(lèi):k-means 特征工程是將原始數(shù)據(jù)

    2024年02月11日
    瀏覽(18)
  • 機(jī)器學(xué)習(xí)特征工程學(xué)習(xí)筆記(一)

    ????????機(jī)器學(xué)習(xí)特征工程是指在機(jī)器學(xué)習(xí)任務(wù)中對(duì)原始數(shù)據(jù)進(jìn)行轉(zhuǎn)換、提取和選擇,以創(chuàng)建更有效、更具有表征能力的特征的過(guò)程。良好的特征工程可以顯著提升模型的性能,并幫助解決數(shù)據(jù)中存在的各種問(wèn)題。 ????????以下是一些常見(jiàn)的機(jī)器學(xué)習(xí)特征工程技術(shù):

    2024年02月11日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包