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

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

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

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

機(jī)器學(xué)習(xí)技術(shù)(五)——特征工程與模型評估,機(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)式特征等步驟。

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

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

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

二、模型評估

1、Accuracy score

預(yù)測準(zhǔn)確率 = 預(yù)測正確的樣本數(shù) 總樣本數(shù) 預(yù)測準(zhǔn)確率=\frac{預(yù)測正確的樣本數(shù)}{總樣本數(shù)} 預(yù)測準(zhǔn)確率=總樣本數(shù)預(yù)測正確的樣本數(shù)?

分類準(zhǔn)確率分?jǐn)?shù)是指所有分類正確的百分比。分類準(zhǔn)確率這一衡量分類器的標(biāo)準(zhǔn)比較容易理解,但是它不能告訴你響應(yīng)值的潛在分布,并且它也不能告訴你分類器犯錯(cuò)的類型。

import numpy as np
from sklearn.metrics import accuracy_score
#定義y的預(yù)測集和y的真實(shí)集,進(jìn)行比較
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]

計(jì)算accuracy score

accuracy_score(y_true, y_pred)

由數(shù)據(jù)可見,只有兩個(gè)樣本被預(yù)測正確,分別為第一個(gè)和第四個(gè),所以正確率為0.5

0.5

輸出共有幾個(gè)樣本被預(yù)測正確

accuracy_score(y_true, y_pred, normalize=False)  

結(jié)果如下所示。

2

2、Confusion matrix混淆矩陣

混淆矩陣就是分別統(tǒng)計(jì)分類模型歸錯(cuò)類,歸對類的觀測值個(gè)數(shù),然后把結(jié)果放在一個(gè)表里展示出來。這個(gè)表就是混淆矩陣。該章節(jié)中針對數(shù)據(jù)的特征類型計(jì)算混淆矩陣。

1、多值

該數(shù)據(jù)標(biāo)簽數(shù)量為3大于2

#導(dǎo)入計(jì)算方法
from sklearn.metrics import confusion_matrix
#自定義真實(shí)值以及預(yù)測值
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
#計(jì)算混淆矩陣
confusion_matrix(y_true, y_pred)

輸出結(jié)果如下,列表示預(yù)測值,行表示真實(shí)值。所以第[1,1]=2代表真實(shí)值為0,也同時(shí)被預(yù)測為0的有2個(gè);[2,1]=0表示真實(shí)值為1但被預(yù)測為0的有0個(gè)。

array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])
2、二值

該數(shù)據(jù)中只有兩個(gè)標(biāo)簽0和1

#定義預(yù)測數(shù)據(jù)以及真實(shí)數(shù)據(jù)
y_true = [0, 0, 0, 1, 1, 1, 1, 1]
y_pred = [0, 1, 0, 1, 0, 1, 0, 1]

輸入:

confusion_matrix(y_true, y_pred)

左上,左下,右上,右下分別為true positive(預(yù)測為1,真實(shí)為1),false negative(真實(shí)為1,預(yù)測為0),false positive(真實(shí)為0,預(yù)測為1),true negative(真實(shí)為0,實(shí)際為0)

array([[2, 1],
       [2, 3]])
#查看四個(gè)值
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
tn, fp, fn, tp
(2, 1, 2, 3)

3、Hamming loss

漢明損失 = 預(yù)測錯(cuò)誤的樣本數(shù) 樣本總數(shù) 漢明損失=\frac{預(yù)測錯(cuò)誤的樣本數(shù)}{樣本總數(shù)} 漢明損失=樣本總數(shù)預(yù)測錯(cuò)誤的樣本數(shù)?

預(yù)測標(biāo)簽與真實(shí)標(biāo)簽的異或關(guān)系。漢明損失顯然是越小越好

輸入:

#定義預(yù)測值以及真實(shí)值
from sklearn.metrics import hamming_loss
y_pred = [1, 2, 3, 4]
y_true = [2, 2, 3, 4]

輸出漢明損失

hamming_loss(y_true, y_pred)

只有一個(gè)預(yù)測錯(cuò)誤,錯(cuò)誤率0.25

0.25

4、Precision, recall and F-measures

三個(gè)指標(biāo)基于模型預(yù)測混淆矩陣進(jìn)行計(jì)算

P r e c i s i o n = T P F P + T P Precision=\frac{TP}{FP+TP} Precision=FP+TPTP?

R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP?

F ? m e a s u r e = 2 ? p r e c i s i o n ? R e c a l l p r e c i s i o n + R e c a l l F-measure=\frac{2*precision*Recall}{precision+Recall} F?measure=precision+Recall2?precision?Recall?

1、定義數(shù)據(jù)
#定義數(shù)據(jù)
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]
2、計(jì)算Precision
# precision=tp/tp+fp
metrics.precision_score(y_true, y_pred)

輸出:

1.0
3、計(jì)算Recall
# recall=tp/fn+tp
metrics.recall_score(y_true, y_pred)

輸出:

0.5
4、計(jì)算F-score

輸入:

# F_beta = (1+beta^2)*(precision*recall/beta^2*precision+recall)
metrics.f1_score(y_true, y_pred)  

輸出:

0.6666666666666666

輸入:

#調(diào)整beta的值以獲得不同標(biāo)準(zhǔn)的fbeta score 
print(metrics.fbeta_score(y_true, y_pred, beta=0.5))
print(metrics.fbeta_score(y_true, y_pred, beta=1))  
print(metrics.fbeta_score(y_true, y_pred, beta=2))  

輸出:

0.8333333333333334
0.6666666666666666
0.5555555555555556

5、Classification report:分類結(jié)果統(tǒng)計(jì)報(bào)告

sklearn中的classification_report函數(shù)用于顯示主要分類指標(biāo)的文本報(bào)告.在報(bào)告中顯示每個(gè)類的精確度,召回率,F(xiàn)1值等信息。

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 0]
y_pred = [0, 0, 2, 1, 0]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))

輸出結(jié)果如下,是一個(gè)綜合統(tǒng)計(jì),其中support表示真實(shí)類別的次數(shù),avg / total 表示各列的均值。

輸出:

             precision    recall  f1-score   support

     class 0       0.67      1.00      0.80         2
     class 1       0.00      0.00      0.00         1
     class 2       1.00      0.50      0.67         2

    accuracy                           0.60         5
   macro avg       0.56      0.50      0.49         5
weighted avg       0.67      0.60      0.59         5

6、??????模型驗(yàn)證相關(guān)的公式及使用

1、加入正則化項(xiàng)后的代價(jià)函數(shù)

1 2 ∑ j = 1 N { y i ? w T σ ( x j ) } 2 + λ 2 ∑ j = 1 N ∣ w j ∣ q \frac{1}{2}\sum_{j=1}^N\{y_i-w^T\sigma(x_j)\}^2+\frac{\lambda}{2}\sum_{j=1}^N|w_j|_q 21?j=1N?{yi??wTσ(xj?)}2+2λ?j=1N?wj?q?

2、L1正則化

J = J 0 + α ∑ ∣ w ∣ J=J_0+\alpha\sum |w| J=J0?+αw

poly = PolynomialFeatures(3)
train_data_poly = poly.fit_transform(train_data)
test_data_poly = poly.transform(test_data)
clf = SGDRegressor(max_iter=1000, tol=1e-3, penalty= 'L1', alpha=0.00001) 
clf.fit(train_data_poly, train_target)
score_train = mean_squared_error(train_target, clf.predict(train_data_poly))
score_test = mean_squared_error(test_target, clf.predict(test_data_poly))
print("SGDRegressor train MSE:   ", score_train)
print("SGDRegressor test MSE:   ", score_test)
#
SGDRegressor train MSE:    0.13511036183307598
SGDRegressor test MSE:    0.14332864452241414
3、L2正則化

J = J 0 + α ∑ w 2 J=J_0+\alpha\sum w^2 J=J0?+αw2

poly = PolynomialFeatures(3)
train_data_poly = poly.fit_transform(train_data)
test_data_poly = poly.transform(test_data)
clf = SGDRegressor(max_iter=1000, tol=1e-3, penalty= 'L2', alpha=0.0001) 
clf.fit(train_data_poly, train_target)
score_train = mean_squared_error(train_target, clf.predict(train_data_poly))
score_test = mean_squared_error(test_target, clf.predict(test_data_poly))
print("SGDRegressor train MSE:   ", score_train)
print("SGDRegressor test MSE:   ", score_test)
SGDRegressor train MSE:    0.13323787756476335
SGDRegressor test MSE:    0.14187259762046708
4、LASSO回歸

J ( θ ) = M S E ( y , y ^ ; θ ) + α ∑ i = 1 n ∣ θ i ∣ J(\theta)=MSE(y,\hat{y};\theta)+\alpha\sum_{i=1}^n|\theta_i| J(θ)=MSE(y,y^?;θ)+αi=1n?θi?

5、平均絕對誤差MAE公式、代碼

M A E = 1 n ∑ i = 1 n ∣ f i ? y i ∣ = 1 n ∑ i = 1 n ∣ e i ∣ MAE=\frac{1}{n}\sum_{i=1}^n|f_i-y_i|=\frac{1}{n}\sum_{i=1}^n|e_i| MAE=n1?i=1n?fi??yi?=n1?i=1n?ei?

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred)
6、均方誤差MSE

M S E = 1 n ∑ i = 1 n ( o b s e r v e d i ? p r e d i c t e d i ) 2 MSE=\frac{1}{n}\sum_{i=1}^{n}(observed_i-predicted_i)^2 MSE=n1?i=1n?(observedi??predictedi?)2

from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred)
7、均方根誤差RMSE公式、代碼

R M S E = M S E = S S E / N = 1 n ∑ i = 1 n w i ( y i ? y i ^ ) 2 RMSE=\sqrt{MSE}=\sqrt{SSE/N}=\sqrt{\frac{1}{n}\sum_{i=1}^{n}w_i(y_i-\hat{y_i})^2} RMSE=MSE ?=SSE/N ?=n1?i=1n?wi?(yi??yi?^?)2 ?

from sklearn.metrics import mean_squared_error
Pred_Error = mean_squared_error(y_test, y_pred)
Sqrt(Pred_Error)
8、R平方值

R 2 ( y , y ^ ) = 1 ? ∑ i = 0 n s a m p l e s ? 1 ( y i ? y i ^ ) 2 ∑ i = 0 n s a m p l e s ? 1 ( y i ? y i ˉ ) 2 R^2(y,\hat{y})=1-\frac{\sum_{i=0}^{n_{samples}-1}(y_i-\hat{y_i})^2}{\sum_{i=0}^{n_{samples}-1}(y_i-\bar{y_i})^2} R2(y,y^?)=1?i=0nsamples??1?(yi??yi?ˉ?)2i=0nsamples??1?(yi??yi?^?)2?

from sklearn.metrics import r2_score
r2_score(y_test, y_pred)

7、交叉驗(yàn)證

1、交叉驗(yàn)證迭代器

K折交叉驗(yàn)證: KFold 將所有的樣例劃分為 k 個(gè)組,稱為折疊 (fold) (如果 k = n, 這等價(jià)于 Leave One Out(留一) 策略),都具有相同的大小(如果可能)。預(yù)測函數(shù)學(xué)習(xí)時(shí)使用 k - 1 個(gè)折疊中的數(shù)據(jù),最后一個(gè)剩下的折疊會用于測試。

K折重復(fù)多次: RepeatedKFold 重復(fù) K-Fold n 次。當(dāng)需要運(yùn)行時(shí)可以使用它 KFold n 次,在每次重復(fù)中產(chǎn)生不同的分割。

留一交叉驗(yàn)證: LeaveOneOut (或 LOO) 是一個(gè)簡單的交叉驗(yàn)證。每個(gè)學(xué)習(xí)集都是通過除了一個(gè)樣本以外的所有樣本創(chuàng)建的,測試集是被留下的樣本。 因此,對于 n 個(gè)樣本,我們有 n 個(gè)不同的訓(xùn)練集和 n 個(gè)不同的測試集。這種交叉驗(yàn)證程序不會浪費(fèi)太多數(shù)據(jù),因?yàn)橹挥幸粋€(gè)樣本是從訓(xùn)練集中刪除掉的:

留P交叉驗(yàn)證: LeavePOut 與 LeaveOneOut 非常相似,因?yàn)樗ㄟ^從整個(gè)集合中刪除 p 個(gè)樣本來創(chuàng)建所有可能的 訓(xùn)練/測試集。對于 n 個(gè)樣本,這產(chǎn)生了 {n \choose p} 個(gè) 訓(xùn)練-測試 對。與 LeaveOneOut 和 KFold 不同,當(dāng) p > 1 時(shí),測試集會重疊。

用戶自定義數(shù)據(jù)集劃分: ShuffleSplit 迭代器將會生成一個(gè)用戶給定數(shù)量的獨(dú)立的訓(xùn)練/測試數(shù)據(jù)劃分。樣例首先被打散然后劃分為一對訓(xùn)練測試集合。

設(shè)置每次生成的隨機(jī)數(shù)相同: 可以通過設(shè)定明確的 random_state ,使得偽隨機(jī)生成器的結(jié)果可以重復(fù)。

2、基于類標(biāo)簽、具有分層的交叉驗(yàn)證迭代器

如何解決樣本不平衡問題? 使用StratifiedKFold和StratifiedShuffleSplit 分層抽樣。 一些分類問題在目標(biāo)類別的分布上可能表現(xiàn)出很大的不平衡性:例如,可能會出現(xiàn)比正樣本多數(shù)倍的負(fù)樣本。在這種情況下,建議采用如 StratifiedKFold 和 StratifiedShuffleSplit 中實(shí)現(xiàn)的分層抽樣方法,確保相對的類別頻率在每個(gè)訓(xùn)練和驗(yàn)證 折疊 中大致保留。

StratifiedKFold是 k-fold 的變種,會返回 stratified(分層) 的折疊:每個(gè)小集合中, 各個(gè)類別的樣例比例大致和完整數(shù)據(jù)集中相同。

StratifiedShuffleSplit是 ShuffleSplit 的一個(gè)變種,會返回直接的劃分,比如: 創(chuàng)建一個(gè)劃分,但是劃分中每個(gè)類的比例和完整數(shù)據(jù)集中的相同。

3、用于分組數(shù)據(jù)的交叉驗(yàn)證迭代器

如何進(jìn)一步測試模型的泛化能力? 留出一組特定的不屬于測試集和訓(xùn)練集的數(shù)據(jù)。有時(shí)我們想知道在一組特定的 groups 上訓(xùn)練的模型是否能很好地適用于看不見的 group 。為了衡量這一點(diǎn),我們需要確保驗(yàn)證對象中的所有樣本來自配對訓(xùn)練折疊中完全沒有表示的組。

GroupKFold是 k-fold 的變體,它確保同一個(gè) group 在測試和訓(xùn)練集中都不被表示。 例如,如果數(shù)據(jù)是從不同的 subjects 獲得的,每個(gè) subject 有多個(gè)樣本,并且如果模型足夠靈活以高度人物指定的特征中學(xué)習(xí),則可能無法推廣到新的 subject 。 GroupKFold 可以檢測到這種過擬合的情況。

LeaveOneGroupOut是一個(gè)交叉驗(yàn)證方案,它根據(jù)第三方提供的 array of integer groups (整數(shù)組的數(shù)組)來提供樣本。這個(gè)組信息可以用來編碼任意域特定的預(yù)定義交叉驗(yàn)證折疊。

每個(gè)訓(xùn)練集都是由除特定組別以外的所有樣本構(gòu)成的。

LeavePGroupsOut類似于 LeaveOneGroupOut ,但為每個(gè)訓(xùn)練/測試集刪除與 P 組有關(guān)的樣本。

GroupShuffleSplit迭代器是 ShuffleSplit 和 LeavePGroupsOut 的組合,它生成一個(gè)隨機(jī)劃分分區(qū)的序列,其中為每個(gè)分組提供了一個(gè)組子集。

4、時(shí)間序列分割

TimeSeriesSplit是 k-fold 的一個(gè)變體,它首先返回 k 折作為訓(xùn)練數(shù)據(jù)集,并且 (k+1) 折作為測試數(shù)據(jù)集。 請注意,與標(biāo)準(zhǔn)的交叉驗(yàn)證方法不同,連續(xù)的訓(xùn)練集是超越前者的超集。 另外,它將所有的剩余數(shù)據(jù)添加到第一個(gè)訓(xùn)練分區(qū),它總是用來訓(xùn)練模型。

5、簡單交叉驗(yàn)證Hold-Out-Method
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=.4, random_state=0)
6、K折交叉驗(yàn)證K-Fold-CV
from sklearn.model_selection import Kfold 
kf = KFold(n_splits=10)
7、留一法交叉驗(yàn)證LOO-CV
from sklearn.model_selection import LeaveOneOut 
loo = LeaveOneOut()
8、留P法交叉驗(yàn)證LPO-CV
from sklearn.model_selection import LeavePOut 
lpo = LeavePOut(p=5)

數(shù)據(jù)分割算法實(shí)例

from sklearn.model_selection import train_test_split # 交叉驗(yàn)證所需的函數(shù)
from sklearn.model_selection import cross_val_score  # 交叉驗(yàn)證所需的函數(shù)
from sklearn.model_selection import cross_validate  # 交叉驗(yàn)證所需的函數(shù)
from sklearn.model_selection import KFold, LeaveOneOut  
from sklearn.model_selection import LeavePOut, ShuffleSplit  
# 交叉驗(yàn)證所需的子集劃分方法
from sklearn.model_selection import StratifiedKFold # 分層分割
from sklearn.model_selection import StratifiedShuffleSplit  # 分層分割
from sklearn.model_selection import GroupKFold, LeaveOneGroupOut 
from sklearn.model_selection import LeavePGroupsOut, GroupShuffleSplit  
from sklearn.model_selection import TimeSeriesSplit  
# 時(shí)間序列分割
from sklearn import datasets  # 自帶數(shù)據(jù)集
from sklearn import svm  # SVM算法
from sklearn import preprocessing  # 預(yù)處理模塊
from sklearn.metrics import recall_score  # 模型度量

iris = datasets.load_iris()  # 加載數(shù)據(jù)集
print('樣本集大?。?, iris.data.shape, iris.target.shape)

# =====數(shù)據(jù)集劃分,訓(xùn)練模型=====
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.4,
    random_state=0)  # 交叉驗(yàn)證劃分訓(xùn)練集和測試集.test_size為測試集所占的比例
print('訓(xùn)練集大?。?, X_train.shape, y_train.shape)  # 訓(xùn)練集樣本大小
print('測試集大?。?, X_test.shape, y_test.shape)  # 測試集樣本大小
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)  # 使用訓(xùn)練集訓(xùn)練模型
print('準(zhǔn)確率:', clf.score(X_test, y_test))  # 計(jì)算測試集的度量值(準(zhǔn)確率)

#  如果涉及到歸一化,則在測試集上也要使用訓(xùn)練集模型提取的歸一化函數(shù)。
scaler = preprocessing.StandardScaler().fit(
    X_train)  # 通過訓(xùn)練集獲得歸一化函數(shù)模型。(也就是先減幾,再除以幾的函數(shù))。在訓(xùn)練集和測試集上都使用這個(gè)歸一化函數(shù)
X_train_transformed = scaler.transform(X_train)
clf = svm.SVC(kernel='linear', C=1).fit(X_train_transformed,
                                        y_train)  # 使用訓(xùn)練集訓(xùn)練模型
X_test_transformed = scaler.transform(X_test)
print(clf.score(X_test_transformed, y_test))  # 計(jì)算測試集的度量值(準(zhǔn)確度)

# =====直接調(diào)用交叉驗(yàn)證評估模型=====
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)  #cv為迭代次數(shù)。
print(scores)  # 打印輸出每次迭代的度量值(準(zhǔn)確度)
print("Accuracy: %0.2f (+/- %0.2f)" %
      (scores.mean(), scores.std() * 2))  # 獲取置信區(qū)間。(也就是均值和方差)

# =====多種度量結(jié)果=====
scoring = ['precision_macro',
           'recall_macro']  # precision_macro為精度,recall_macro為召回率
scores = cross_validate(clf,
                        iris.data,
                        iris.target,
                        scoring=scoring,
                        cv=5,
                        return_train_score=True)
sorted(scores.keys())
print('測試結(jié)果:', scores)  # scores類型為字典。包含訓(xùn)練得分,擬合次數(shù), score-times (得分次數(shù))

# =====K折交叉驗(yàn)證、留一交叉驗(yàn)證、留p交叉驗(yàn)證、隨機(jī)排列交叉驗(yàn)證=====
# k折劃分子集
kf = KFold(n_splits=2)
for train, test in kf.split(iris.data):
    print("k折劃分:%s %s" % (train.shape, test.shape))
    break

# 留一劃分子集
loo = LeaveOneOut()
for train, test in loo.split(iris.data):
    print("留一劃分:%s %s" % (train.shape, test.shape))
    break

# 留p劃分子集
lpo = LeavePOut(p=2)
for train, test in loo.split(iris.data):
    print("留p劃分:%s %s" % (train.shape, test.shape))
    break

# 隨機(jī)排列劃分子集
ss = ShuffleSplit(n_splits=3, test_size=0.25, random_state=0)
for train_index, test_index in ss.split(iris.data):
    print("隨機(jī)排列劃分:%s %s" % (train.shape, test.shape))
    break

# =====分層K折交叉驗(yàn)證、分層隨機(jī)交叉驗(yàn)證=====
skf = StratifiedKFold(n_splits=3)  #各個(gè)類別的比例大致和完整數(shù)據(jù)集中相同
for train, test in skf.split(iris.data, iris.target):
    print("分層K折劃分:%s %s" % (train.shape, test.shape))
    break

skf = StratifiedShuffleSplit(n_splits=3)  # 劃分中每個(gè)類的比例和完整數(shù)據(jù)集中的相同
for train, test in skf.split(iris.data, iris.target):
    print("分層隨機(jī)劃分:%s %s" % (train.shape, test.shape))
    break

# =====組 k-fold交叉驗(yàn)證、留一組交叉驗(yàn)證、留 P 組交叉驗(yàn)證、Group Shuffle Split=====
X = [0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]
y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]

# k折分組
gkf = GroupKFold(n_splits=3)  # 訓(xùn)練集和測試集屬于不同的組
for train, test in gkf.split(X, y, groups=groups):
    print("組 k-fold分割:%s %s" % (train, test))

# 留一分組
logo = LeaveOneGroupOut()
for train, test in logo.split(X, y, groups=groups):
    print("留一組分割:%s %s" % (train, test))

# 留p分組
lpgo = LeavePGroupsOut(n_groups=2)
for train, test in lpgo.split(X, y, groups=groups):
    print("留 P 組分割:%s %s" % (train, test))

# 隨機(jī)分組
gss = GroupShuffleSplit(n_splits=4, test_size=0.5, random_state=0)
for train, test in gss.split(X, y, groups=groups):
    print("隨機(jī)分割:%s %s" % (train, test))

# =====時(shí)間序列分割=====
tscv = TimeSeriesSplit(n_splits=3)
TimeSeriesSplit(max_train_size=None, n_splits=3)
for train, test in tscv.split(iris.data):
    print("時(shí)間序列分割:%s %s" % (train, test))

輸出如下:

樣本集大小: (150, 4) (150,)
訓(xùn)練集大?。?(90, 4) (90,)
測試集大小: (60, 4) (60,)
準(zhǔn)確率: 0.9666666666666667
0.9333333333333333
[0.9666666667 1.           0.9666666667 0.9666666667 1.          ]
Accuracy: 0.98 (+/- 0.03)
測試結(jié)果: {'fit_time': array([0.0007252693, 0.0003640652, 0.0003199577, 0.0004220009, 0.000346899 ]), 'score_time': array([0.0010209084, 0.0009698868, 0.0009701252, 0.0010108948, 0.0009820461]), 'test_precision_macro': array([0.9696969697, 1.          , 0.9696969697, 0.9696969697, 1.          ]), 'train_precision_macro': array([0.976744186 , 0.976744186 , 0.9918699187, 0.9841269841, 0.9833333333]), 'test_recall_macro': array([0.9666666667, 1.          , 0.9666666667, 0.9666666667, 1.          ]), 'train_recall_macro': array([0.975       , 0.975       , 0.9916666667, 0.9833333333, 0.9833333333])}
k折劃分:(75,) (75,)
留一劃分:(149,) (1,)
留p劃分:(149,) (1,)
隨機(jī)排列劃分:(149,) (1,)
分層K折劃分:(99,) (51,)
分層隨機(jī)劃分:(135,) (15,)
組 k-fold分割:[0 1 2 3 4 5] [6 7 8 9]
組 k-fold分割:[0 1 2 6 7 8 9] [3 4 5]
組 k-fold分割:[3 4 5 6 7 8 9] [0 1 2]
留一組分割:[3 4 5 6 7 8 9] [0 1 2]
留一組分割:[0 1 2 6 7 8 9] [3 4 5]
留一組分割:[0 1 2 3 4 5] [6 7 8 9]
留 P 組分割:[6 7 8 9] [0 1 2 3 4 5]
留 P 組分割:[3 4 5] [0 1 2 6 7 8 9]
留 P 組分割:[0 1 2] [3 4 5 6 7 8 9]
隨機(jī)分割:[0 1 2] [3 4 5 6 7 8 9]
隨機(jī)分割:[3 4 5] [0 1 2 6 7 8 9]
隨機(jī)分割:[3 4 5] [0 1 2 6 7 8 9]
隨機(jī)分割:[3 4 5] [0 1 2 6 7 8 9]
時(shí)間序列分割:[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38] [39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75]
時(shí)間序列分割:[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75] [ 76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112]
時(shí)間序列分割:[  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73
  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110
 111 112] [113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149]

8、網(wǎng)格搜索

交叉驗(yàn)證經(jīng)常與網(wǎng)格搜索進(jìn)行結(jié)合,作為參數(shù)評價(jià)的一種方法,這種方法叫做grid search with cross validation。sklearn因此設(shè)計(jì)了一個(gè)這樣的類GridSearchCV,這個(gè)類實(shí)現(xiàn)了fitpredict,score等方法,被當(dāng)做了一個(gè)estimator,使用fit方法,該過程中:

(1)搜索到最佳參數(shù);

(2)實(shí)例化了一個(gè)最佳參數(shù)的estimator;

1、網(wǎng)格搜索示例
from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data,
                                                    iris.target,
                                                    random_state=0)
print("Size of training set:{} size of testing set:{}".format(
    X_train.shape[0], X_test.shape[0]))

####   grid search start
best_score = 0
for gamma in [0.001, 0.01, 0.1, 1, 10, 100]:
    for C in [0.001, 0.01, 0.1, 1, 10, 100]:
        svm = SVC(gamma=gamma, C=C)  #對于每種參數(shù)可能的組合,進(jìn)行一次訓(xùn)練;
        svm.fit(X_train, y_train)
        score = svm.score(X_test, y_test)
        if score > best_score:  #找到表現(xiàn)最好的參數(shù)
            best_score = score
            best_parameters = {'gamma': gamma, 'C': C}
####   grid search end
print("Best score:{:.2f}".format(best_score))
print("Best parameters:{}".format(best_parameters))

輸出結(jié)果:

Size of training set:112 size of testing set:38
Best score:0.97
Best parameters:{'gamma': 0.001, 'C': 100}
2、Grid Search with Cross Validation
X_trainval,X_test,y_trainval,y_test = train_test_split(iris.data,iris.target,random_state=0)
X_train,X_val,y_train,y_val = train_test_split(X_trainval,y_trainval,random_state=1)
print("Size of training set:{} size of validation set:{} size of testing set:{}".format(X_train.shape[0],X_val.shape[0],X_test.shape[0]))

best_score = 0.0
for gamma in [0.001,0.01,0.1,1,10,100]:
    for C in [0.001,0.01,0.1,1,10,100]:
        svm = SVC(gamma=gamma,C=C)
        svm.fit(X_train,y_train)
        score = svm.score(X_val,y_val)
        if score > best_score:
            best_score = score
            best_parameters = {'gamma':gamma,'C':C}
svm = SVC(**best_parameters) #使用最佳參數(shù),構(gòu)建新的模型
svm.fit(X_trainval,y_trainval) #使用訓(xùn)練集和驗(yàn)證集進(jìn)行訓(xùn)練,more data always results in good performance.
test_score = svm.score(X_test,y_test) # evaluation模型評估
print("Best score on validation set:{:.2f}".format(best_score))
print("Best parameters:{}".format(best_parameters))
print("Best score on test set:{:.2f}".format(test_score))

輸出結(jié)果:

Size of training set:84 size of validation set:28 size of testing set:38
Best score on validation set:0.96
Best parameters:{'gamma': 0.001, 'C': 10}
Best score on test set:0.92

sklearn方法:

from sklearn.model_selection import cross_val_score

best_score = 0.0
for gamma in [0.001,0.01,0.1,1,10,100]:
    for C in [0.001,0.01,0.1,1,10,100]:
        svm = SVC(gamma=gamma,C=C)
        scores = cross_val_score(svm,X_trainval,y_trainval,cv=5) #5折交叉驗(yàn)證
        score = scores.mean() #取平均數(shù)
        if score > best_score:
            best_score = score
            best_parameters = {"gamma":gamma,"C":C}
svm = SVC(**best_parameters)
svm.fit(X_trainval,y_trainval)
test_score = svm.score(X_test,y_test)
print("Best score on validation set:{:.2f}".format(best_score))
print("Best parameters:{}".format(best_parameters))
print("Score on testing set:{:.2f}".format(test_score))


from sklearn.model_selection import GridSearchCV

#把要調(diào)整的參數(shù)以及其候選值 列出來;
param_grid = {"gamma":[0.001,0.01,0.1,1,10,100],
             "C":[0.001,0.01,0.1,1,10,100]}
print("Parameters:{}".format(param_grid))

grid_search = GridSearchCV(SVC(),param_grid,cv=5) #實(shí)例化一個(gè)GridSearchCV類
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=10)
grid_search.fit(X_train,y_train) #訓(xùn)練,找到最優(yōu)的參數(shù),同時(shí)使用最優(yōu)的參數(shù)實(shí)例化一個(gè)新的SVC estimator。
print("Test set score:{:.2f}".format(grid_search.score(X_test,y_test)))
print("Best parameters:{}".format(grid_search.best_params_))
print("Best score on train set:{:.2f}".format(grid_search.best_score_))

輸出:

Parameters:{'gamma': [0.001, 0.01, 0.1, 1, 10, 100], 'C': [0.001, 0.01, 0.1, 1, 10, 100]}
Test set score:0.97
Best parameters:{'C': 10, 'gamma': 0.1}
Best score on train set:0.98

9、學(xué)習(xí)曲線

學(xué)習(xí)曲線用于觀察模型在訓(xùn)練集和驗(yàn)證集上的表現(xiàn)隨著訓(xùn)練樣本數(shù)量的增加而變化的情況,幫助我們判斷是否存在過擬合或欠擬合問題;

import numpy as np
import matplotlib.pyplot as plt

from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

from sklearn.datasets import load_digits
from sklearn.model_selection import learning_curve
from sklearn.model_selection import ShuffleSplit
def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,
                        n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)):
    plt.figure()
    plt.title(title)
    if ylim is not None:
        plt.ylim(*ylim)
    plt.xlabel("Training examples")
    plt.ylabel("Score")
    train_sizes, train_scores, test_scores = learning_curve(
        estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)
    train_scores_mean = np.mean(train_scores, axis=1)
    train_scores_std = np.std(train_scores, axis=1)
    test_scores_mean = np.mean(test_scores, axis=1)
    test_scores_std = np.std(test_scores, axis=1)
    plt.grid()

    plt.fill_between(train_sizes, train_scores_mean - train_scores_std,
                     train_scores_mean + train_scores_std, alpha=0.1,
                     color="r")
    plt.fill_between(train_sizes, test_scores_mean - test_scores_std,
                     test_scores_mean + test_scores_std, alpha=0.1, color="g")
    plt.plot(train_sizes, train_scores_mean, 'o-', color="r",
             label="Training score")
    plt.plot(train_sizes, test_scores_mean, 'o-', color="g",
             label="Cross-validation score")

    plt.legend(loc="best")
    return plt 
digits = load_digits()
X, y = digits.data, digits.target


title = "Learning Curves (Naive Bayes)"
# Cross validation with 100 iterations to get smoother mean test and train
# score curves, each time with 20% data randomly selected as a validation set.
cv = ShuffleSplit(n_splits=100, test_size=0.2, random_state=0)

estimator = GaussianNB()
plot_learning_curve(estimator, title, X, y, ylim=(0.7, 1.01), cv=cv, n_jobs=4)

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

title = "Learning Curves (SVM, RBF kernel, $\gamma=0.001$)"
# SVC is more expensive so we do a lower number of CV iterations:
cv = ShuffleSplit(n_splits=10, test_size=0.2, random_state=0)
estimator = SVC(gamma=0.001)
plot_learning_curve(estimator, title, X, y, (0.7, 1.01), cv=cv, n_jobs=4)

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

10、驗(yàn)證曲線

驗(yàn)證曲線用于評估模型在不同超參數(shù)取值下的性能,幫助我們選擇最佳的超參數(shù)取值。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_digits
from sklearn.svm import SVC
#from sklearn.learning_curve import validation_curve
from sklearn.model_selection import validation_curve

digits = load_digits()
X, y = digits.data, digits.target

param_range = np.logspace(-6, -1, 5)
train_scores, test_scores = validation_curve(
    SVC(), X, y, param_name="gamma", param_range=param_range,
    cv=10, scoring="accuracy", n_jobs=1)
train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)

plt.title("Validation Curve with SVM")
plt.xlabel("$\gamma$")
plt.ylabel("Score")
plt.ylim(0.0, 1.1)
plt.semilogx(param_range, train_scores_mean, label="Training score", color="r")
plt.fill_between(param_range, train_scores_mean - train_scores_std,
                 train_scores_mean + train_scores_std, alpha=0.2, color="r")
plt.semilogx(param_range, test_scores_mean, label="Cross-validation score",
             color="g")
plt.fill_between(param_range, test_scores_mean - test_scores_std,
                 test_scores_mean + test_scores_std, alpha=0.2, color="g")
plt.legend(loc="best")
plt.show()

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

總結(jié)

可以更加了解如何去評價(jià)模型表現(xiàn)以及如何去選擇模型的的原理,為后續(xù)數(shù)據(jù)挖掘工作了解更深。文章來源地址http://www.zghlxwxcb.cn/news/detail-571047.html

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    一、什么是特征工程 機(jī)器學(xué)習(xí)領(lǐng)域的大神Andrew Ng(吳恩達(dá))老師說“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í)】特征工程 - 字典特征提取

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

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

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

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

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

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

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

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

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

    目錄 1、簡介 2、?為什么需要特征工程 3、特征抽取 3.1、簡介 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 ?所屬專欄:人工智能 文中提到的代碼如有需要可以私信我發(fā)給你噢?? 特

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

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

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包