機器學習:特征工程之特征預處理

目錄

特征預處理

1、簡述

2、內容

3、歸一化

3.1、魯棒性

3.2、存在的問題

4、標準化


?所屬專欄:人工智能

文中提到的代碼如有需要可以私信我發給你😊

特征預處理

1、簡述

什么是特征預處理:scikit-learn的解釋:

provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.

翻譯過來:通過一些轉換函數將特征數據轉換成更加適合算法模型的特征數據過程

詳述:

特征預處理是機器學習和數據分析中的一個重要步驟,它旨在將原始數據轉換為適合機器學習算法的形式,以提高模型的性能和穩定性。特征預處理涵蓋了一系列數據轉換和處理操作,用于清洗、歸一化、縮放、編碼等,以確保輸入特征的質量和一致性。以下是特征預處理的一些常見操作和方法:

  1. 數據清洗和處理:處理缺失值、異常值和噪聲,確保數據的完整性和準確性。常見的方法包括填充缺失值、平滑噪聲、剔除異常值等。
  2. 特征縮放:將不同尺度的特征縮放到相似的范圍,以避免某些特征對模型的影響過大。常見的特征縮放方法有標準化(Z-score標準化)和歸一化(Min-Max縮放)。
  3. 特征選擇:選擇對目標變量有重要影響的特征,減少維度和噪聲,提高模型的泛化能力。常見的特征選擇方法有基于統計指標的方法(如方差選擇、卡方檢驗)、基于模型的方法(如遞歸特征消除)、以及基于嵌入式方法(如L1正則化)。
  4. 特征轉換:將原始特征轉換為更適合模型的形式,如多項式特征、交叉特征、主成分分析(PCA)等。這可以幫助模型更好地捕捉數據的模式和結構。
  5. 特征編碼:將非數值型的特征轉換為數值型的形式,以便機器學習算法處理。常見的編碼方法有獨熱編碼(One-Hot Encoding)和標簽編碼(Label Encoding)。
  6. 文本特征提取:將文本數據轉換為數值特征表示,如詞袋模型、TF-IDF特征提取等,以便用于文本分析和機器學習。
  7. 特征組合和交叉:將多個特征進行組合或交叉,創建新的特征以捕捉更多的信息。這有助于挖掘特征之間的相互作用。
  8. 數據平衡處理:在處理不平衡數據集時,可以使用欠采樣、過采樣等方法來平衡正負樣本的數量,以避免模型偏向于多數類。

特征預處理的目標是使數據更適合機器學習模型,提高模型的性能和穩定性,并且能夠更好地捕捉數據的特征和模式。正確的特征預處理可以顯著影響機器學習模型的結果和效果。不同的數據類型和問題可能需要不同的特征預處理方法,因此在進行特征預處理時需要根據具體情況進行選擇和調整。

2、內容

包含內容:數值型數據的無量綱化:歸一化、標準化 (二者放在后面詳述)

什么是無量綱化:

無量綱化(Dimensionality Reduction)是特征工程的一部分,指的是將數據特征轉換為合適的尺度或形式,以便更好地適應機器學習算法的要求。無量綱化的目的是減少特征的維度,同時保留數據中的重要信息,從而降低計算成本、避免維度災難,并提高模型的性能和泛化能力。

無量綱化可以分為兩種常見的方法:

①特征縮放(Feature Scaling):特征縮放是將特征的數值范圍調整到相似的尺度,以便機器學習算法更好地工作。特征縮放的常見方法包括歸一化和標準化。

????????歸一化(Min-Max Scaling):將特征縮放到一個特定的范圍,通常是[0, 1]。

????????標準化(Z-score Scaling):將特征縮放為均值為0,標準差為1的分布。

②降維(Dimensionality Reduction):降維是將高維特征空間映射到低維空間,以減少特征數量并去除冗余信息,從而提高計算效率和模型性能。常見的降維方法包括主成分分析(PCA)和線性判別分析(LDA)等。

????????主成分分析(PCA):通過線性變換將原始特征投影到新的坐標軸上,使得投影后的數據具有最大的方差。這些新坐標軸稱為主成分,可以按照方差的大小選擇保留的主成分數量,從而降低數據的維度。

????????線性判別分析(LDA):在降維的同時,盡可能地保留類別之間的區分性信息,適用于分類問題。

無量綱化可以幫助解決特征維度不一致、尺度不同等問題,使得機器學習算法能夠更準確地學習數據的模式和結構。選擇適當的無量綱化方法取決于數據的特點、問題的要求以及模型的性能。

特征預處理使用的API:sklearn.preprocessing

為什么我們要進行歸一化/標準化?

特征的單位或者大小相差較大,或者某特征的方差相比其他的特征要大出幾個數量級,容易影響(支配)目標結果,使得一些算法無法學習到其它的特征

3、歸一化

定義:通過對原始數據進行變換把數據映射到(默認為[0,1])之間

公式:

API:

sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )

MinMaxScalar.fit_transform(X)

X:numpy array格式的數據[n_samples,n_features]

返回值:轉換后的形狀相同的array

下面分析會用到一組數據,名為dating.txt。展現如下:

實現:

關鍵代碼解讀:
? ? transfer = MinMaxScaler(feature_range=(2, 3)):
? ? ? ? 實例化一個MinMaxScaler轉換器對象,其中feature_range=(2, 3)表示將數據縮放到范圍為[2, 3]之間。
? ? data = transfer.fit_transform(data[['milage', 'Liters', 'Consumtime']]):
? ? ? ? 使用fit_transform方法將選定的特征('milage', 'Liters', 'Consumtime')進行最小-最大歸一化處理。
? ? ? ? fit_transform方法首先計算出特征的最小值和最大值,然后將數據進行線性縮放,使其在指定的范圍內。

# -*- coding: utf-8 -*-
# @Author:︶ㄣ釋然
# @Time: 2023/8/15 21:52
import pandas as pd
from sklearn.preprocessing import MinMaxScaler  # 最大最小值歸一化轉換器'''
歸一化處理。
關鍵代碼解讀:transfer = MinMaxScaler(feature_range=(2, 3)):實例化一個MinMaxScaler轉換器對象,其中feature_range=(2, 3)表示將數據縮放到范圍為[2, 3]之間。data = transfer.fit_transform(data[['milage', 'Liters', 'Consumtime']]):使用fit_transform方法將選定的特征('milage', 'Liters', 'Consumtime')進行最小-最大歸一化處理。fit_transform方法首先計算出特征的最小值和最大值,然后將數據進行線性縮放,使其在指定的范圍內。
'''
def min_max_demo():"""歸一化演示"""data = pd.read_csv("data/dating.txt",delimiter="\t")print(data)# 1、實例化一個轉換器類transfer = MinMaxScaler(feature_range=(2, 3))# 2、調用fit_transformdata = transfer.fit_transform(data[['milage', 'Liters', 'Consumtime']])print("最小值最大值歸一化處理的結果:\n", data)if __name__ == '__main__':min_max_demo()

打印結果:

手動計算(取前9行數據):

計算坐標為(0,0)的元素,總的計算流程為:[(40920-14488)/(75136-14488)] * (3-2)+2 = 2.435826408≈2.43582641

該結果與程序吻合!!

3.1、魯棒性

魯棒性(Robustness)是指在面對異常值、噪聲和其他不完美情況時,系統能夠繼續正常工作并保持良好性能的能力。在數據分析、統計學和機器學習中,魯棒性是一個重要的概念,指的是算法或方法對異常值和數據擾動的敏感程度。一個魯棒性強的方法在存在異常值或數據變動時能夠保持穩定的性能,而魯棒性較差的方法可能會對異常值產生過度敏感的響應。

在數據處理和分析中,魯棒性的重要性體現在以下幾個方面:

  1. 異常值處理:魯棒性的方法能夠有效地識別和處理異常值,而不會因為異常值的存在導致結果的嚴重偏差。
  2. 模型訓練:在機器學習中,使用魯棒性的算法可以減少異常值對模型訓練的影響,防止過擬合,并提高模型的泛化能力。
  3. 特征工程:在特征工程過程中,選擇魯棒性的特征提取方法可以確保提取的特征對異常值不敏感。
  4. 統計分析:魯棒性的統計方法能夠減少異常值對統計分析結果的影響,使得分析結果更可靠。

一些常見的魯棒性方法包括:

  • 中位數(Median):在數據中,中位數對異常值的影響較小,相對于平均值具有更強的魯棒性。
  • 百分位數(Percentiles):百分位數可以幫助識別數據分布的位置和離散程度,對異常值的影響較小。
  • Z-score標準化:Z-score標準化將數據轉化為均值為0、標準差為1的分布,能夠對抗異常值的影響。
  • IQR(四分位距)方法:使用四分位距來定義異常值的界限,對極端值具有一定的容忍度。
  • 魯棒性回歸:使用魯棒性回歸方法可以減少異常值對回歸模型的影響。

總之,魯棒性是數據分析和機器學習中一個重要的考慮因素,能夠保證在現實世界中面對多樣性和不確定性時,方法和模型仍能保持有效性和穩定性。

3.2、存在的問題

使用歸一化處理,如果數據中異常點較多,會有什么影響?

在數據中存在較多異常點的情況下,使用歸一化處理可能會受到一些影響。歸一化是將數據縮放到特定范圍內的操作,但異常點的存在可能會導致以下影響:

  1. 異常點的放大:歸一化可能會導致異常點在縮放后的范圍內被放大。如果異常點的值較大,歸一化后它們可能會被映射到特定范圍的邊緣,從而導致數據在正常值范圍內分布不均勻。
  2. 降低數據的區分性:異常點可能導致歸一化后的數據失去一部分原始數據的分布特征。數據特征的差異性可能被模糊化,從而降低模型的區分能力和準確性。
  3. 對模型的影響:在機器學習中,模型通常會受到輸入數據的影響。異常點可能會干擾模型的訓練,使其難以捕捉正常數據的模式,導致模型的性能下降。
  4. 過擬合的風險:如果異常點被放大或影響了數據的分布,模型可能會過擬合異常點,而忽略了正常數據的重要特征。

為了應對異常點對歸一化處理的影響,可以考慮以下策略:

  • 異常點檢測和處理:在進行歸一化之前,首先要進行異常點檢測,并根據異常點的性質和數量采取適當的處理措施。可以選擇刪除異常點、使用異常點修正方法或將異常點映射到更合理的范圍。
  • 使用魯棒性方法:某些歸一化方法對異常點的影響較小,例如中心化和縮放(例如Z-score標準化),它們對異常值的影響較小,因為它們基于數據的分布特性。
  • 嘗試其他特征預處理方法:如果異常點較多且歸一化效果不好,可以嘗試其他特征預處理方法,如對數變換、截斷、縮尾等。

總之,處理異常點是特征預處理的重要步驟,需要根據數據的特點和問題的需求來選擇適當的策略。

這里使用標準化解決這個問題

4、標準化

定義:通過對原始數據進行變換把數據變換到均值為0,標準差為1范圍內

公式:

標準差:

????????

所以實際上標準化的公式為:

?????????

參數如下:

????????x為當前值

????????mean為平均值

????????N 表示數據的總個數

????????xi 表示第 i 個數據點

????????μ 表示數據的均值

歸一化的異常點:

標準化的異常點:

對于歸一化來說:如果出現異常點,影響了最大值和最小值,那么結果顯然會發生改變

對于標準化來說:如果出現異常點,由于具有一定數據量,少量的異常點對于平均值的影響并不大,從而方差改變較小

API:

sklearn.preprocessing.StandardScaler( )

處理之后每列來說所有數據都聚集在均值0附近標準差差為1

StandardScaler.fit_transform(X)

X:numpy array格式的數據[n_samples,n_features]

返回值:轉換后的形狀相同的array

import pandas as pd
from sklearn.preprocessing import StandardScaler  # 標準化'''
sklearn.preprocessing.StandardScaler( ) 處理之后每列來說所有數據都聚集在均值0附近標準差差為1StandardScaler.fit_transform(X)X:numpy array格式的數據[n_samples,n_features]返回值:轉換后的形狀相同的array
'''
def stand_demo():"""標準化演示:return: None"""data = pd.read_csv("data/dating.txt", delimiter="\t")print(data)# 1、實例化一個轉換器類transfer = StandardScaler()# 2、調用fit_transformdata = transfer.fit_transform(data[['milage', 'Liters', 'Consumtime']])print("標準化的結果:\n", data)print("每一列特征的平均值:\n", transfer.mean_)print("每一列特征的方差:\n", transfer.var_)if __name__ == '__main__':stand_demo()

輸出結果:

手動計算驗證(取前8行數據),公式回顧如下:

手動計算坐標為(0,0)的數據的標準化數據:

????????40920-43318.375=-2398.375

????????N=8,μ=43318.375 -> (40920-43318.375)^2+(14488-43318.375)^2+(26052-43318.375)^2+(75136-43318.375)^2+(38344-43318.375)^2+(72993-43318.375)^2+(35948-43318.375)^2+(42666-43318.375)^2=3107507487.875

????????3107507487.875 / 8 = 388438435.984375

????????根號下388438435.984375 = 19708.84156880802

最終:

????????x-mean=-2398.375

????????標準差=19708.84156880802

最后標準化后的數據結果為:-2398.375 / 19708.84156880802 = 0.121690307957813291 ≈ 0.12169031

與程序結果完全吻合!

標準化總結:在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大數據場景。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38830.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38830.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux系統服務學習(六)FTP服務學習

文章目錄 FTP、NFS、SAMBA系統服務一、FTP服務概述1、FTP服務介紹2、FTP服務的客戶端工具3、FTP的兩種運行模式(了解)☆ 主動模式☆ 被動模式 4、搭建FTP服務(重要)5、FTP的配置文件詳解(重要) 二、FTP任務…

Python基礎語法入門(第二十天)——文件操作

一、基礎內容 在Python中,路徑可以以不同的表現形式進行表示。以下是一些常用的路徑表現形式: 1. 絕對路徑:它是完整的路徑,從根目錄開始直到要操作的文件或文件夾。在Windows系統中,絕對路徑以盤符開始,…

【學會動態規劃】環形子數組的最大和(20)

目錄 動態規劃怎么學? 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后: 動態規劃怎么學? 學習一個算法沒有捷徑,更何況是學習動態規劃, 跟我…

CSS 兩欄布局和三欄布局的實現

文章目錄 一、兩欄布局的實現1. floatmargin2. flaotBFC3. 定位margin4. flex 布局5. grid布局 二、三欄布局的實現1. float margin2. float BFC3. 定位 margin(或者定位BFC)4. flex布局5. 圣杯布局6. 雙飛翼布局 一、兩欄布局的實現 兩欄布局其實就是左側定寬,…

高層建筑全景vr火災隱患排查模擬培訓軟件助力群眾防范火災傷害

隨著城市化進程的加快,樓宇建筑的數量也在不斷增加。然而,樓宇消防安全問題也日益突出。為了提高樓宇員工和居民的消防安全意識,樓宇VR消防安全教育培訓應運而生。VR安全培訓公司深圳華銳視點制作的樓宇vr消防安全教育培訓,包括消…

谷粒商城第十一天-完善商品分組(主要添上關聯屬性)

目錄 一、總述 二、前端部分 2.1 改良前端獲取分組列表接口及其調用 2.2 添加關聯的一整套邏輯 三、后端部分 四、總結 一、總述 前端部分和之前的商品品牌添加分類差不多。 也是修改一下前端的分頁獲取列表的接口,還有就是加上關聯的那一套邏輯,…

nginx負載均衡與反向代理與正向代理

負載均衡:通過反向代理來實現 正向代理的配置方法。 正向代理: 工作原理:用戶端直接訪問不了,需要通過代理服務器來訪問web服務器,用戶端先訪問代理服務器,再訪問web服務器。web服務器響應給代理服務器&a…

【C語言】調試技巧

目錄 一、什么是bug? 二、調試 1.一般調試的步驟 2.Debug 和 Release 三、調試環境準備 四、調試時要查看的信息 1.查看臨時變量的值 2.查看內存信息 3.查看調用堆棧 4.查看反匯編信息 5.查看寄存器 五、練習 六、常見的coding技巧 七、const的作用 八、編程常見…

Linux - MongoDB 數據庫自動退出服務問題/閃退

問題:MongoDB 自動退出服務問題 原因: 由于 Mongodb 服務,使用過多系統內存,導致系統強制停止 Mongodb 服務。 解決方法: 在 mongodb.conf 配置文件內,添加新配置內容: wiredTigerCacheSi…

POI與EasyExcel--寫Excel

簡單寫入 03和07版的簡單寫入注意事項: 1. 對象不同:03對應HSSFWorkbook,07對應XSSFWorkbook 2. 文件后綴不同:03對應xls,07對應xlsx package com.zrf;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import …

如何應用項目管理軟件進行敏捷開發管理

敏捷開發(Agile Development)是一種軟件開發方法論,強調在不斷變化的需求和環境下,通過迭代、協作和自適應的方式來開發軟件。敏捷方法的目標是提供更快、更靈活、更高質量的軟件交付,以滿足客戶需求并實現項目成功。 …

服務器數據恢復-EqualLogic存儲RAID5數據恢復案例

服務器數據恢復環境: 一臺DELL EqualLogic存儲中有一組由16塊SAS硬盤組建的RAID5陣列。存儲存放虛擬機文件,采用VMFS文件系統,劃分了4個lun。 服務器故障&檢測&分析: 存儲設備上有兩個硬盤指示燈顯示黃色,存儲…

【Windows 常用工具系列 6 -- CSDN字體格式(字體、顏色、大小)、背景色設置】

文章目錄 背景字體大小設置字體顏色設置字體類型背景色 上篇文章:Windows 常用工具系列 5 – Selenium IDE的使用方法 下篇文章:Windows 常用工具系列 7 – 禁用win10自帶的微軟輸入法 背景 Markdown是一種輕量級標記語言,它的目標是實現“…

1022.從根到葉的二進制之和

目錄 一、題目 二、代碼 一、題目 二、代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

基于java計算機類考研交流平臺設計與實現

摘要 高校的大學生考研是繼高校的高等教育更上一層的表現形式,教育的發展是我們社會的根本,那么信息技術的發展又是改變我們生活的重要因素,生活當中各種各樣的場景都存在著信息技術的發展。信息技術發展WEB信息化的到來讓人們的生活感受到了…

vue項目的實用性總結

1、mockjs 基本使用 ★ 安裝:npm i mockjs。 在src/mock/index.js內容如下: import Mock from mockjs //制訂攔截規則 Mock.mock(http://www.0313.com,get,你好啊)記得在main.js中引入一下,讓其參與整個項目的運行。 只要發出去的是get類型…

家紡行業小程序商城搭建指南

家紡行業作為一個不可或缺的消費領域,近年來備受關注。隨著互聯網的發展,小程序商城成為家紡行業拓展市場的新利器。搭建一個家紡行業小程序商城并不是一件困難的事情,只需要按照以下幾個步驟進行操作,就能輕松上手。 首先&#x…

Java后端框架模塊整合

提示:使用Java后端開發框架能夠提高開發效率、代碼質量,提升可擴展性,降低開發成本和易于維護。 文章目錄 前言MyBatis 框架知識Spring 框架知識SpringMVC 框架知識SpringBoot 框架知識 前言 提示:這里可以添加本文要記錄的大概內…

2023-08-15 LeetCode每日一題(字符串中的查找與替換)

2023-08-15每日一題 一、題目編號 833. 字符串中的查找與替換二、題目鏈接 點擊跳轉到題目位置 三、題目描述 你會得到一個字符串 s (索引從 0 開始),你必須對它執行 k 個替換操作。替換操作以三個長度均為 k 的并行數組給出:indices, sources, tar…

UI設計師個人工作總結范文

UI設計師個人工作總結范文篇一 感受到了領導們“海納百川”的胸襟,感受到了作為廣告人“不經歷風雨,怎能見彩虹”的豪氣,也體會到了重慶廣告從業人員作為拓荒者的艱難和堅定(就目前國內廣告業而言,我認為重慶廣告業尚在發展階段并…