Python-機器學習(一)——特征工程

目錄

特征工程

一、特征提取

1、字典特征提取

2、文本特征提取

2.1 英文文本提取

2.2 中文文本提取

3、TF-IDF文本特征詞的重要程度特征提取

二、無量綱化-預處理

1?MinMaxScaler 歸一化

2?normalize歸一化

3?StandardScaler 標準化

三、特征降維

1、特征選擇

1.1?VarianceThreshold 低方差過濾特征選擇

1.2 主成份分析(PCA)


特征工程

????????就是對特征進行相關的處理,一般使用pandas來進行數據清洗和數據處理、使用sklearn來進行特征工程。特征工程是將任意數據(如文本或圖像)轉換為可用于機器學習的數字特征。

????????步驟:特征提取(dataframe類型不用)---- 無量綱化(預處理)---- 降維

API:

DictVectorizer  	字典特征提取
CountVectorizer 	文本特征提取
TfidfVectorizer 	TF-IDF文本特征詞的重要程度特征提取 
MinMaxScaler 		歸一化
StandardScaler 		標準化
VarianceThreshold 	底方差過濾降維
PCA  				主成分分析降維

一、特征提取

? ? ? ? 1、字典特征提取

? ? ? ? 稀疏矩陣:一個矩陣中大部分元素為零,只有少數元素是非零的矩陣。由于稀疏矩陣中零元素非常多,存儲和處理稀疏矩陣時,通常會采用特殊的存儲格式,以節省內存空間并提高計算效率

? ? ? ? 三元組表:一種稀疏矩陣類型數據,存儲非零元素的行索引、列索引和值:(行,列)值

? ? ? ? 非稀疏矩陣(稠密矩陣):是指矩陣中非零元素的數量與總元素數量相比接近或相等,也就是說矩陣中的大部分元素都是非零的。通常采用二維數組形式存儲

from sklearn.feature_extraction import DictVectorizer

示例:

(稀疏矩陣對象調用toarray()函數, 得到類型為ndarray的二維稀疏矩陣 )

????????2、文本特征提取

from sklearn.feature_extraction.text import CountVectorizer

構造函數關鍵字參數stop_words值為list,表示詞的黑名單(不提取的詞)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fit_transform函數的返回值為稀疏矩陣

? ? ? ? 2.1 英文文本提取

? ? ? ? 2.2 中文文本提取

????????中文文本不像英文文本,中文文本文字之間沒有空格,所以要先分詞,一般使用jieba分詞

# 下載jieba組件
pip install jieba

示例:

? ? ? ? 3、TF-IDF文本特征詞的重要程度特征提取

from sklearn.feature_extraction.text import TfidfVectorizer

詞頻(Term Frequency, TF), 表示一個詞在當前篇文章中的重要性

逆文檔頻率(Inverse Document Frequency, IDF), 反映了詞在整個文檔集合中的稀有程度

逆文檔頻率衡量一個詞的普遍重要性。如果一個詞在許多文檔中都出現,那么它的重要性就會降低。

代碼與CountVectorizer的示例基本相同,僅僅把CountVectorizer改為TfidfVectorizer即可,繼續上面中文文本提取的示例修改(把三段文字分別看成三份文檔)

(這里方便對比數據,用的pandas做了個表)

根據輸出結果可以看到,明明 “喜歡” 出現次數最多,反而在每一篇的重要性偏低,這是為什么?

這里要注意,TF-IDF 的核心假設:一個詞如果在很多文檔都出現,那它對區分文檔就沒有什么價值。IDF 的作用是抑制全局高頻詞的影響,以突出在某些文檔中特有的、有區分度的詞。

所以,“喜歡” 在每一份文檔中都出現了,它的重要性反而比較低,“小明” 只在第一篇中出現過,所以 “小明” 在第一篇中的重要性很高

由此可見,TF-IDF有著嚴重的局限性,一定要注意其符不符合使用場景,誤傷高頻關鍵詞!!

二、無量綱化-預處理

????????無量綱,即沒有單位的數據,無量綱化包括"歸一化"和"標準化", 為什么要進行無量綱化呢?

是為了去掉單位影響,提取本質參數,讓方程、數據或現象在數值計算和理論分析中更簡單、更穩定、更有可比性

????????1?MinMaxScaler 歸一化

from sklearn.preprocessing import MinMaxScaler

????????通過對原始數據進行變換把數據映射到指定區間(默認為0-1)

? ? ? ? 歸一化公式是:

示例:

(缺點:最大值和最小值容易受到影響,所以魯棒性較差,常使用標準化的無量綱化 )

? ? ? ? 2?normalize歸一化

from sklearn.preprocessing import normalize
normalize(data, norm='l2', axis=1)
# data是要歸一化的數據
# norm是使用那種歸一化:"l1"  "l2"  "max"
# axis=0是列  axis=1是行

????????normalize 歸一化主要指把數據按某種規則縮放到一個統一的尺度(常見是 0~1 或者向量長度為 1),以減少量綱和數值范圍對計算的影響

L1:絕對值相加作為分母,,特征值作為分子

L2:平方相加作為分母,特征值作為分子

max:max作為分母,特征值作為分子

示例:

? ? ? ? 3?StandardScaler 標準化

from sklearn.preprocessing import StandardScale

在機器學習中,標準化是一種數據預處理技術,也稱為數據歸一化或特征縮放。它的目的是將不同特征的數值范圍縮放到統一的標準范圍,以便更好地適應一些機器學習算法,特別是那些對輸入數據的尺度敏感的算法

這是標準化前后分布的對比圖:左邊是原始數據(均值 50,標準差 10),右邊是 StandardScaler 標準化后(均值變成 0,標準差變成 1)。就是把左邊的分布“平移+縮放”成右邊的形狀

三、特征降維

????????實際數據中,有時候特征很多,會增加計算量,降維就是去掉一些特征,或者轉化多個特征為少量個特征,特征降維其目的:是減少數據集的維度,同時盡可能保留數據的重要信息。

????????1、特征選擇

? ? ? ? 1.1?VarianceThreshold 低方差過濾特征選擇

from sklearn.feature_selection import VarianceThreshold

????????如果一個特征的方差很小,說明這個特征的值在樣本中幾乎相同或變化不大,包含的信息量很少,模型很難通過該特征區分不同的對象

? ? ? ? 1.2 主成份分析(PCA)

from sklearn.decomposition import PCA
PCA(n_components=None)n_components:實參為小數時:表示降維后保留百分之多少的信息實參為整數時:表示減少到多少特征

????????PCA的核心目標是從原始特征空間中找到一個新的坐標系統,使得數據在新坐標軸上的投影能夠最大程度地保留數據的方差,同時減少數據的維度

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

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

相關文章

談談SQL計算存儲引擎中的索引和計算

背景 最近在這家公司做了一些事情,做的事情和以往的工作不太一樣,不一樣的點呢就是 之前我主要的工作是關注計算這方面,因為數據量大,研究的是怎么加速查詢,怎么研究規則去優化,怎么去解規則的bug等等。因為…

vscode.window.activeTextEditor 獲取不到 png 圖片路徑問題

vscode 的 extensions 插件開發時用 vscode.window.activeTextEditor?.document.uri 獲取不到編輯器打開的圖片路徑,文檔路徑可以獲取到。個人猜測因為圖片不能編輯,所以沒有 activeTextEditor 屬性吧。解決辦法:巧用右鍵獲取路徑和相對的路…

Java 大視界 -- Java 大數據在智能醫療手術機器人操作數據記錄與性能評估中的應用(390)

Java 大視界 -- Java 大數據在智能醫療手術機器人操作數據記錄與性能評估中的應用(390)引言:正文:一、傳統手術機器人的 “黑箱困境”:記不全、算不清、追不到1.1 設備與臨床的 “斷層”1.1.1 數據記錄 “太粗放”1.1.…

C++的結構體指針

結構體變量和結構體指針的區別特性結構體變量結構體指針存儲內容結構體的實際數據內存地址內存開銷結構體總大小固定4/8字節(指針大小)成員訪問運算符.->函數傳參時的行為值拷貝(新副本)地址傳遞(操作原數據&#x…

pdf文件轉word免費使用幾個工具

在線工具(無需安裝) Smallpdf ? 核心功能: 網頁端直接操作,支持 PDF 與 Word 格式互轉 免費用戶每日限 2 次轉換(免注冊) 自動清除服務器文件,確保隱私安全 🔗 訪問鏈接&#xff1a…

Vue3 組件化開發

文章目錄前言組件化開發底部菜單 TabMenu父子組件相互傳數據父傳子:自定義屬性子傳父:自定義事件父子組件互傳案例插槽 slot多個插槽總結組件化開發總結Vue組件的基本組成子組件使用的三個步驟父子組件相互傳遞數據前言 提示:這里可以添加本…

服務器硬件電路設計之I2C問答(二):I2C總線的傳輸速率與上拉電阻有什么關系?

I2C 總線傳輸速率與上拉電阻關系密切。上拉電阻阻值決定總線電平切換速度:電阻越小,充放電電流越大,信號邊沿更陡,支持更高速率(如 400kHz 快速模式);電阻過大則切換慢,限制速率&…

大語言模型提示工程與應用:LLMs文本生成與數據標注實踐

提示詞應用實踐 學習目標 本課程通過LLMs生成情感分析樣本和標注葡萄9品鑒數據,展示了其文本生成和數據標注能力。同時,利用PAL模型解決日期計算問題,學習了LLMs與編程運行時結合實現復雜推理的方法,為自然語言處理應用提供了實…

node.js 零基礎入門

Node.js 零 基礎入門與核心語法 適用對象:完全沒接觸過 Node.js 的同學 目標:從 0 到能寫 CLI、小型 HTTP 服務、文件腳本、調用系統/網絡資源 目錄 什么是 Node.js安裝與運行運行腳本與 REPL模塊體系:CommonJS 與 ES Modules基礎語法在 Node…

《Day3-PyTorch 自動微分入門:從計算圖到梯度下降的實踐指南》

八、自動微分自動微分模塊torch.autograd負責自動計算張量操作的梯度,具有自動求導功能。自動微分模塊是構成神經網絡訓練的必要模塊,可以實現網絡權重參數的更新,使得反向傳播算法的實現變得簡單而高效。1. 基礎概念張量Torch中一切皆為張量…

apache cgi測試

test.cgi #!/bin/sh echo "Content-type: text/html" echo "" echo "<h1>Hello from a Mac CGI script!</h1>" echo "<p>Current time is: $(date)</p>"?% 放置目錄 /opt/homebrew/Cellar/mapserver/8.4.0_1…

力扣 30 天 JavaScript 挑戰 第二題筆記

這道題是涉及知識–閉包 1. 閉包定義以及相關知識點 官方定義為&#xff1a;在 JavaScript 中&#xff0c;函數具有對在相同作用域以及任何外部作用域中聲明的所有變量的引用。這些作用域被稱為函數的 詞法環境。函數與其環境的組合被稱為 閉包。 簡單理解&#xff1a;內層函數…

OpenAI GPT-5 深度解析:API Key定價與ChatGPT(Free, Plus, Pro)用戶的區別

前言&#xff1a;兩年等待&#xff0c;只為這一躍 在科技圈長達兩年的屏息期待與無盡猜想之后&#xff0c;2025年8月8日北京時間凌晨&#xff0c;OpenAI終于揭開了其新一代旗艦模型——GPT-5的神秘面紗。這不僅僅是一次常規的產品迭代&#xff0c;更被整個行業視為一塊試金石&a…

ClickHouse集群部署實踐---3分片2副本集群

ClickHouse集群部署實踐—3分片2副本集群 未完待續。。。 喜歡的先點贊收藏&#xff01;&#xff01; 由于我們準備部署的是3分片2副本的集群&#xff0c;現在來解釋一下配置參數的意思&#xff1a; shard標簽代表分片的意思&#xff0c;如上圖我們有3個分片&#xff0c;clickh…

Unity_VR_Pico開發手冊

文章目錄一、配置開發環境1.下載PICO Unity Integration SDK2.安裝 Unity 編輯器&#xff08;添加安卓開發平臺模塊&#xff09;3.導入下載的SDK4.項目配置和切換開發平臺5.導入 XR Interaction Toolkit6.安裝 Universal RP(通用渲染管線)并設置 (選做)二、調試環境搭建&#x…

Linux系統之Docker命令與鏡像、容器管理

目錄 一、 Docker命令 docker命令幫助 docker常用子命令&#xff08;必須背會&#xff09; docker管理子命令(暫時不需要) swarm集群管理子命令&#xff08;不需要&#xff09; docker容器管理子命令&#xff08;必須背會&#xff09; docker全局選項 二、 docker鏡像管…

比亞迪第五代DM技術:AI能耗管理的深度解析與實測驗證

比亞迪第五代DM技術&#xff1a;AI能耗管理的深度解析與實測驗證 &#xff08;面向新能源汽車研發/測試工程師&#xff09;目錄 技術背景與核心突破AI能耗管理系統架構解析關鍵技術創新點 2.1 動力域三腦合一控制2.2 全溫域熱管理協同2.3 導航數據深度耦合 實測數據與場景驗證 …

sqli-labs通關筆記-第37關POST寬字符注入(單引號閉合 手工注入+腳本注入 3種方法)

目錄 一、寬字符注入 二、sqlmap之unmagicquotes 三、addslashes與mysqli_real_escape_string 四、源碼分析 1、代碼審計 2、SQL注入安全性分析 五、滲透實戰 1、進入靶場 2、正確用戶名密碼探測 3、手工注入&#xff08;方法1&#xff09; &#xff08;1&#xff…

Kubernetes 集群密鑰與機密管理方案對比分析:Vault、Sealed Secrets 與 AWS KMS

Kubernetes 集群密鑰與機密管理方案對比分析&#xff1a;Vault、Sealed Secrets 與 AWS KMS 在容器化與編排環境中&#xff0c;機密&#xff08;Secrets&#xff09;管理是確保應用安全性的重要環節。對于 Kubernetes 集群而言&#xff0c;內置的 Secret 對象存在明文存儲的風…

Java基礎-TCP通信單服務器接受多客戶端

目錄 案例要求&#xff1a; 實現思路&#xff1a; 代碼&#xff1a; User類&#xff1a;用戶端 Client類&#xff1a;服務端 ServerReader類&#xff1a;多線程通信類 總結&#xff1a; 案例要求&#xff1a; TCP通信下,正常的寫法只能單個服務器和單個客戶端進行通信&a…