成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在表格數據上使用特征提取進行機器學習

人工智能 機器學習
在本文中,我們將介紹如何使用特征提取對表格數據進行數據準備。特征提取為表格數據的數據準備提供了另一種方法,其中所有數據轉換都并行應用于原始輸入數據,并組合在一起以創建一個大型數據集。

數據準備最常見的方法是研究一個數據集,審查機器學習算法的期望,然后仔細選擇最合適的數據準備技術來轉換原始數據,以最好地滿足算法的期望。這是緩慢的,昂貴的,并且需要大量的專業知識。

數據準備的另一種方法是并行地對原始數據應用一套通用和常用的數據準備技術,并將所有轉換的結果合并到一個大數據集中,從中可以擬合和評估模型。

這是數據準備的另一種哲學,它將數據轉換視為一種從原始數據中提取顯著特征的方法,從而將問題的結構暴露給學習算法。它需要學習加權輸入特征可伸縮的算法,并使用那些與被預測目標最相關的輸入特征。

這種方法需要較少的專業知識,與數據準備方法的全網格搜索相比,在計算上是有效的,并且可以幫助發現非直觀的數據準備解決方案,為給定的預測建模問題取得良好或最好的性能。

 

[[332888]]

在本文中,我們將介紹如何使用特征提取對表格數據進行數據準備。

特征提取為表格數據的數據準備提供了另一種方法,其中所有數據轉換都并行應用于原始輸入數據,并組合在一起以創建一個大型數據集。

如何使用特征提取方法進行數據準備,以提高標準分類數據集的基準性能。。

如何將特征選擇添加到特征提取建模管道中,以進一步提升標準數據集上的建模性能。

本文分為三個部分:

一、特征提取技術的數據準備

二、數據集和性能基準

  1. 葡萄酒分類數據集
  2. 基準模型性能

三、特征提取方法進行數據準備

特征提取技術的數據準備

數據準備可能具有挑戰性。

最常用和遵循的方法是分析數據集,檢查算法的要求,并轉換原始數據以最好地滿足算法的期望。

這可能是有效的,但也很慢,并且可能需要數據分析和機器學習算法方面的專業知識。

另一種方法是將輸入變量的準備視為建模管道的超參數,并在選擇算法和算法配置時對其進行調優。

盡管它在計算上可能會很昂貴,但它也可能是暴露不直觀的解決方案并且只需要很少的專業知識的有效方法。

在這兩種數據準備方法之間尋求合適的方法是將輸入數據的轉換視為特征工程或特征提取過程。這涉及對原始數據應用一套通用或常用的數據準備技術,然后將所有特征聚合在一起以創建一個大型數據集,然后根據該數據擬合并評估模型。

該方法的原理將每種數據準備技術都視為一種轉換,可以從原始數據中提取顯著特征,以呈現給學習算法。理想情況下,此類轉換可解開復雜的關系和復合輸入變量,進而允許使用更簡單的建模算法,例如線性機器學習技術。

由于缺乏更好的名稱,我們將其稱為“ 特征工程方法 ”或“ 特征提取方法 ”,用于為預測建模項目配置數據準備。

它允許在選擇數據準備方法時使用數據分析和算法專業知識,并可以找到不直觀的解決方案,但計算成本卻低得多。

輸入特征數量的排除也可以通過使用特征選擇技術來明確解決,這些特征選擇技術嘗試對所提取的大量特征的重要性或價值進行排序,并僅選擇與預測目標最相關的一小部分變量。

我們可以通過一個可行的示例探索這種數據準備方法。

在深入研究示例之前,讓我們首先選擇一個標準數據集并制定性能基準。

數據集和性能基準

我們將首先選擇一個標準的機器學習數據集,并為此數據集建立性能基準。這將為探索數據準備的特征提取方法提供背景。

葡萄酒分類數據集

我們將使用葡萄酒分類數據集。

該數據集具有13個輸入變量,這些變量描述了葡萄酒樣品的化學成分,并要求將葡萄酒分類為三種類型之一。

該示例加載數據集并將其拆分為輸入和輸出列,然后匯總數據數組。

  1. # example of loading and summarizing the wine dataset 
  2. from pandas import read_csv 
  3. # define the location of the dataset 
  4. url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/wine.csv' 
  5. load the dataset as a data frame 
  6. df = read_csv(url, header=None) 
  7. # retrieve the numpy array 
  8. data = df.values 
  9. # split the columns into input and output variables 
  10. X, y = data[:, :-1], data[:, -1] 
  11. # summarize the shape of the loaded data 
  12. print(X.shape, y.shape) 
  13. #(178, 13) (178,) 

通過運行示例,我們可以看到數據集已正確加載,并且有179行數據,其中包含13個輸入變量和一個目標變量。

接下來,讓我們在該數據集上評估一個模型,并建立性能基準。

基準模型性能

通過評估原始輸入數據的模型,我們可以為葡萄酒分類任務建立性能基準。

在這種情況下,我們將評估邏輯回歸模型。

首先,如scikit-learn庫所期望的,我們可以通過確保輸入變量是數字并且目標變量是標簽編碼來執行最少的數據準備。

  1. # minimally prepare dataset 
  2. X = X.astype('float'
  3. y = LabelEncoder().fit_transform(y.astype('str')) 

接下來,我們可以定義我們的預測模型。

  1. # define the model 
  2. model = LogisticRegression(solver='liblinear'

我們將使用重復分層k-fold交叉驗證的標準(10次重復和3次重復)來評估模型。

模型性能將用分類精度來評估。

  1. model = LogisticRegression(solver='liblinear'
  2. # define the cross-validation procedure 
  3. cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
  4. # evaluate model 
  5. scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1) 

在運行結束時,我們將報告所有重復和評估倍數中收集的準確性得分的平均值和標準偏差。

  1. # report performance 
  2. print('Accuracy: %.3f (%.3f)' % (mean(scores), std(scores))) 

結合在一起,下面列出了在原酒分類數據集上評估邏輯回歸模型的完整示例。

  1. # baseline model performance on the wine dataset 
  2. from numpy import mean 
  3. from numpy import std 
  4. from pandas import read_csv 
  5. from sklearn.preprocessing import LabelEncoder 
  6. from sklearn.model_selection import RepeatedStratifiedKFold 
  7. from sklearn.model_selection import cross_val_score 
  8. from sklearn.linear_model import LogisticRegression 
  9. load the dataset 
  10. url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/wine.csv' 
  11. df = read_csv(url, header=None) 
  12. data = df.values 
  13. X, y = data[:, :-1], data[:, -1] 
  14. # minimally prepare dataset 
  15. X = X.astype('float'
  16. y = LabelEncoder().fit_transform(y.astype('str')) 
  17. # define the model 
  18. model = LogisticRegression(solver='liblinear'
  19. # define the cross-validation procedure 
  20. cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
  21. # evaluate model 
  22. scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1) 
  23. # report performance 
  24. print('Accuracy: %.3f (%.3f)' % (mean(scores), std(scores))) 
  25.      
  26. #Accuracy: 0.953 (0.048) 

 

如何在表格數據上使用特征提取進行機器學習

通過運行示例評估模型性能,并報告均值和標準差分類準確性。

考慮到學習算法的隨機性,評估程序以及機器之間的精度差異,您的結果可能會有所不同。嘗試運行該示例幾次。

在這種情況下,我們可以看到,對原始輸入數據進行的邏輯回歸模型擬合獲得了約95.3%的平均分類精度,為性能提供了基準。

接下來,讓我們探討使用基于特征提取的數據準備方法是否可以提高性能。

特征提取方法進行數據準備

第一步是選擇一套通用且常用的數據準備技術。

在這種情況下,假設輸入變量是數字,我們將使用一系列轉換來更改輸入變量的比例,例如MinMaxScaler,StandardScaler和RobustScaler,以及使用轉換來鏈接輸入變量的分布,例如QuantileTransformer和KBinsDiscretizer。最后,我們還將使用轉換來消除輸入變量(例如PCA和TruncatedSVD)之間的線性相關性。

FeatureUnion類可用于定義要執行的轉換列表,這些轉換的結果將被聚合在一起。這將創建一個具有大量列的新數據集。

列數的估計將是13個輸入變量乘以五次轉換或65次再加上PCA和SVD維數降低方法的14列輸出,從而得出總共約79個特征。

  1. # transforms for the feature union 
  2. transforms = list() 
  3. transforms.append(('mms', MinMaxScaler())) 
  4. transforms.append(('ss', StandardScaler())) 
  5. transforms.append(('rs', RobustScaler())) 
  6. transforms.append(('qt', QuantileTransformer(n_quantiles=100, output_distribution='normal'))) 
  7. transforms.append(('kbd', KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform'))) 
  8. transforms.append(('pca', PCA(n_components=7))) 
  9. transforms.append(('svd', TruncatedSVD(n_components=7))) 
  10. create the feature union 
  11. fu = FeatureUnion(transforms) 

 

如何在表格數據上使用特征提取進行機器學習

然后,我們可以使用FeatureUnion作為第一步,并使用Logistic回歸模型作為最后一步來創建建模管道。

  1. # define the model 
  2. model = LogisticRegression(solver='liblinear'
  3. # define the pipeline 
  4. steps = list() 
  5. steps.append(('fu', fu)) 
  6. steps.append(('m', model)) 
  7. pipeline = Pipeline(steps=steps) 

然后可以像前面一樣使用重復的分層k-fold交叉驗證來評估管道。

下面列出了完整的示例。

  1. # data preparation as feature engineering for wine dataset 
  2. from numpy import mean 
  3. from numpy import std 
  4. from pandas import read_csv 
  5. from sklearn.model_selection import RepeatedStratifiedKFold 
  6. from sklearn.model_selection import cross_val_score 
  7. from sklearn.linear_model import LogisticRegression 
  8. from sklearn.pipeline import Pipeline 
  9. from sklearn.pipeline import FeatureUnion 
  10. from sklearn.preprocessing import LabelEncoder 
  11. from sklearn.preprocessing import MinMaxScaler 
  12. from sklearn.preprocessing import StandardScaler 
  13. from sklearn.preprocessing import RobustScaler 
  14. from sklearn.preprocessing import QuantileTransformer 
  15. from sklearn.preprocessing import KBinsDiscretizer 
  16. from sklearn.decomposition import PCA 
  17. from sklearn.decomposition import TruncatedSVD 
  18. load the dataset 
  19. url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/wine.csv' 
  20. df = read_csv(url, header=None) 
  21. data = df.values 
  22. X, y = data[:, :-1], data[:, -1] 
  23. # minimally prepare dataset 
  24. X = X.astype('float'
  25. y = LabelEncoder().fit_transform(y.astype('str')) 
  26. # transforms for the feature union 
  27. transforms = list() 
  28. transforms.append(('mms', MinMaxScaler())) 
  29. transforms.append(('ss', StandardScaler())) 
  30. transforms.append(('rs', RobustScaler())) 
  31. transforms.append(('qt', QuantileTransformer(n_quantiles=100, output_distribution='normal'))) 
  32. transforms.append(('kbd', KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform'))) 
  33. transforms.append(('pca', PCA(n_components=7))) 
  34. transforms.append(('svd', TruncatedSVD(n_components=7))) 
  35. create the feature union 
  36. fu = FeatureUnion(transforms) 
  37. # define the model 
  38. model = LogisticRegression(solver='liblinear'
  39. # define the pipeline 
  40. steps = list() 
  41. steps.append(('fu', fu)) 
  42. steps.append(('m', model)) 
  43. pipeline = Pipeline(steps=steps) 
  44. # define the cross-validation procedure 
  45. cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
  46. # evaluate model 
  47. scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1) 
  48. # report performance 
  49. print('Accuracy: %.3f (%.3f)' % (mean(scores), std(scores))) 
  50. #Accuracy: 0.968 (0.037) 

 

如何在表格數據上使用特征提取進行機器學習

通過運行示例評估模型性能,并報告均值和標準差分類準確性。

考慮到學習算法的隨機性,評估程序以及機器之間的精度差異,您的結果可能會有所不同。嘗試運行該示例幾次。

在這種情況下,我們可以看到性能相對于基準性能有所提升,實現了平均分類精度約96.8%。

嘗試向FeatureUnion添加更多數據準備方法,以查看是否可以提高性能。

我們還可以使用特征選擇將大約80個提取的特征縮減為與模型最相關的特征的子集。除了減少模型的復雜性之外,它還可以通過刪除不相關和冗余的輸入特征來提高性能。

在這種情況下,我們將使用遞歸特征消除(RFE)技術進行特征選擇,并將其配置為選擇15個最相關的特征。

  1. # define the feature selection 
  2. rfe = RFE(estimator=LogisticRegression(solver='liblinear'), n_features_to_select=15) 

然后我們可以將RFE特征選擇添加到FeatureUnion算法之后和LogisticRegression算法之前的建模管道中。

  1. # define the pipeline 
  2. steps = list() 
  3. steps.append(('fu', fu)) 
  4. steps.append(('rfe', rfe)) 
  5. steps.append(('m', model)) 
  6. pipeline = Pipeline(steps=steps) 

將這些結合起來,下面列出了特征選擇的特征選擇數據準備方法的完整示例。

  1. # data preparation as feature engineering with feature selection for wine dataset 
  2. from numpy import mean 
  3. from numpy import std 
  4. from pandas import read_csv 
  5. from sklearn.model_selection import RepeatedStratifiedKFold 
  6. from sklearn.model_selection import cross_val_score 
  7. from sklearn.linear_model import LogisticRegression 
  8. from sklearn.pipeline import Pipeline 
  9. from sklearn.pipeline import FeatureUnion 
  10. from sklearn.preprocessing import LabelEncoder 
  11. from sklearn.preprocessing import MinMaxScaler 
  12. from sklearn.preprocessing import StandardScaler 
  13. from sklearn.preprocessing import RobustScaler 
  14. from sklearn.preprocessing import QuantileTransformer 
  15. from sklearn.preprocessing import KBinsDiscretizer 
  16. from sklearn.feature_selection import RFE 
  17. from sklearn.decomposition import PCA 
  18. from sklearn.decomposition import TruncatedSVD 
  19. load the dataset 
  20. url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/wine.csv' 
  21. df = read_csv(url, header=None) 
  22. data = df.values 
  23. X, y = data[:, :-1], data[:, -1] 
  24. # minimally prepare dataset 
  25. X = X.astype('float'
  26. y = LabelEncoder().fit_transform(y.astype('str')) 
  27. # transforms for the feature union 
  28. transforms = list() 
  29. transforms.append(('mms', MinMaxScaler())) 
  30. transforms.append(('ss', StandardScaler())) 
  31. transforms.append(('rs', RobustScaler())) 
  32. transforms.append(('qt', QuantileTransformer(n_quantiles=100, output_distribution='normal'))) 
  33. transforms.append(('kbd', KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform'))) 
  34. transforms.append(('pca', PCA(n_components=7))) 
  35. transforms.append(('svd', TruncatedSVD(n_components=7))) 
  36. create the feature union 
  37. fu = FeatureUnion(transforms) 
  38. # define the feature selection 
  39. rfe = RFE(estimator=LogisticRegression(solver='liblinear'), n_features_to_select=15) 
  40. # define the model 
  41. model = LogisticRegression(solver='liblinear'
  42. # define the pipeline 
  43. steps = list() 
  44. steps.append(('fu', fu)) 
  45. steps.append(('rfe', rfe)) 
  46. steps.append(('m', model)) 
  47. pipeline = Pipeline(steps=steps) 
  48. # define the cross-validation procedure 
  49. cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
  50. # evaluate model 
  51. scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1) 
  52. # report performance 
  53. print('Accuracy: %.3f (%.3f)' % (mean(scores), std(scores))) 
  54. #Accuracy: 0.989 (0.022) 

 

如何在表格數據上使用特征提取進行機器學習

運行實例評估模型的性能,并報告均值和標準差分類精度。

由于學習算法的隨機性、評估過程以及不同機器之間的精度差異,您的結果可能會有所不同。試著運行這個例子幾次。

再一次,我們可以看到性能的進一步提升,從所有提取特征的96.8%提高到建模前使用特征選擇的98.9。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2022-02-13 00:27:34

機器學習數字隱私技術

2025-01-16 16:24:07

2019-09-30 10:12:21

機器學習數據映射

2022-04-01 15:39:13

機器學習讓孩子們軟件交付

2019-09-29 09:40:20

LinuxWindowsMacOS

2016-04-11 14:35:59

機器學習數據挖掘數據模型

2017-09-17 23:14:41

機器學習人工智能設計

2024-08-26 12:57:15

2020-03-13 08:38:18

電磁指紋提取

2022-06-09 09:14:31

機器學習PythonJava

2020-06-24 10:15:05

機器學習RancherKubeflow

2022-06-05 21:16:08

機器學習Python

2020-06-24 07:53:03

機器學習技術人工智能

2023-03-30 15:12:47

2017-02-27 18:26:45

UbuntuADBAndroid

2021-10-02 10:10:47

LinuxBusyBox命令

2022-05-09 23:03:38

機器學習人工智能工業4.0

2021-02-22 11:44:43

機器學習數據泄露學習

2018-09-04 10:24:35

網絡流量提取工具

2022-08-15 15:16:20

機器學習圖片深度學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合影院 | 一a一片一级一片啪啪 | 成人网视频| 欧美一区二区在线看 | 久久四虎 | 日韩精品在线视频 | 99久久婷婷 | 天天看天天摸天天操 | 久久精品二区 | 欧美视频三级 | 成人黄色在线 | 青青草精品 | 久草久草久草 | 午夜欧美a级理论片915影院 | 国产色网站 | 精品久久国产老人久久综合 | 精品中文视频 | 日韩靠逼| 色一阁| 一区二区三区视频在线观看 | 超碰97免费| 久久久久久www | 日韩在线精品视频 | 热久久久久| 欧美成人精品在线 | 99免费视频| 精品国产欧美一区二区三区成人 | 亚洲精品久久久久久久久久久久久 | 视频一区二区在线观看 | 亚洲精品高清视频 | 亚洲va在线va天堂va狼色在线 | 中文字幕乱码视频32 | 亚洲欧美综合 | 综合九九| 成人二区三区 | 黄色网络在线观看 | 日本欧美视频 | 毛片国产 | 亚洲欧美成人影院 | 亚洲一区二区三区在线视频 | 99资源站|