【Python機器學習】處理文本數據——用tf-idf縮放數據

為了按照我們預計的特征信息量大小來縮放特征,而不是舍棄那些認為不重要的特征,最常見的一種做法就是使用詞頻-逆向文檔頻率(tf-idf)。這一方法對某個特定文檔中經常出現的術語給與很高的權重,但是堆在語料庫的許多文檔中都經常出現的屬于給與的權重卻不高。如果一個單詞在某個特定文檔中經常出現,但在其他文檔中卻不經常出現,那么這個單詞很可能是對文檔內容的很好描述。

scikit-learn在兩個類中實現了tf-idf方法:TfidfTransformer和TfidfVectorizer,前者接受CountVectorizer生成的稀疏矩陣并將其轉換,后者接受文本數據并完成詞袋特征提取與tf-idf變換。

tf-idf縮放方案有幾種變體。單詞w在文檔d中的tf-idf分數在TfidfTransformer類和TfidfVectorizer類中都有體現,其計算公式如下所示:

tfidf(w,d)=tf log ((N+1)/(N_{w}+1))+1

其中,N是訓練集中文檔數量,N_{w}是訓練集中出現單詞w的文檔數量,tf(詞頻)是單詞w在文檔d(想要變換或編碼的文檔)中出現的次數。兩個類在計算td-idf表示之后都還應用了L2范數。換句話說,它們將每個文檔的表示縮放到歐幾里得范數為1。利用這種縮放方法,文檔長度不會改變向量化表示。

由于tf-idf實際上利用了訓練數據的統計學屬性,所以我們將使用管道,以確保網格搜索的結果有效。所以會得到下列代碼:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCVpipe=make_pipeline(TfidfVectorizer(min_df=5),LogisticRegression())
param_grid={'logisticregression__C':[0.001,0.01,0.1,1,10,100]}grid=GridSearchCV(pipe,param_grid=param_grid,cv=5)
grid.fit(text_train,y_train)

tf-idf代替僅統計詞數,模型性能會有所提高。我們還可以查看tf-idf找到的最重要單詞。要記住,tf-idf縮放的目的是找到能夠區分文檔的單詞,但它完全是一種無監督技術。因此,這里的“重要”不一定與最終要尋找的標簽有關。

首先,我們從管道中提取TfidfVectorizer

vectorizer=grid.best_estimator_.named_steps['tfidfvectorizer']
#變換訓練數據集
X_train=vectorizer.transform(text_train)
#找到數據集中每個特征的最大值
max_value=X_train.max(axis=0).toarray().ravel()
sort_by_tfidf=max_value.argsort()
#獲取特征名稱
feature_names=np.array(vectorizer.get_feature_names())

tf-idf較小的特征要么是在許多文檔中都很常用,要么就是很少使用,且僅出現在非常長的文檔中。有趣的是,許多tf-idf較大的特征實際上對應的是特定的內容。

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

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

相關文章

作業/數據結構/2023/7/10

1.實現單向鏈表隊列的,創建,入隊,出隊,遍歷,長度,銷毀。 main.c #include "head.h"int main(int argc, const char *argv[]) {//創建鏈式隊列queue_ptr QLcreate_queue();//入棧push(QL, 1000)…

imx6ull/linux應用編程學習(16)emqx ,mqtt創建連接mqtt.fx

在很多項目中都需要自己的私人服務器,以保證數據的隱私性,這里我用的是emqx。 1.進入emqx官網 EMQX:用于物聯網、車聯網和工業物聯網的企業級 MQTT 平臺 點擊試用cloud 申請成功后可得:(右邊的忽略) 進入…

告別PS,ChatGPT圖片局部修改,手把手教你成為畫圖高手

大家好,我是YUAN! 今天,我要向大家介紹一個能夠點燃創意火花的畫圖設計神器——DALLE編輯器。讓藝術創作,尤其是畫圖變得更加簡單、直觀,甚至可以說是革命性的。 DALLE是什么? DALLE編輯器的問世&#xf…

macOS系統下載navicat安裝包

鏈接: https://pan.baidu.com/s/1SqTIXNL-B8ZMJxIBu1DfIw?pwdc1z8 提取碼: c1z8 安裝后效果

buuctf題目講解-1

一眼就解密 ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 flag{THEFLAGOFTHISSTRING} base家族 base64 加密原理: 明文:abc 去找ascii碼的二進制形式 a-->97-→01100001 (二進制為8位如果不足8位則在最左邊補0至8位) b-→…

生物環保的技術原理和優點是什么

生物環保的技術原理和優點可以歸納如下: 技術原理 生物環保利用生物學原理,采用生物技術,通過生物過程來凈化環境,消除污染物,減少污染源,從而改善環境質量。這主要依賴于微生物的代謝活動、生長特性和相…

05STM32EXIT外部中斷中斷系統

STM32EXIT外部中斷&中斷系統 中斷系統中斷觸發條件:中斷處理流程和用途: STM32中斷NVIC嵌套中斷向量控制器基本結構 中斷系統 中斷觸發條件: 對外部中斷來說,可以是引腳發生了電平跳變 對定時器來說,可以是定時的…

算法系列--鏈表問題

一.一些經驗總結 鏈表天然具有遞歸性質,單鏈表可以看做一個單叉樹,很多可以應用到二叉樹的題目也可以應用到鏈表的題目之中,下面是一個體現單鏈表遞歸性質很好的例子逆序打印鏈表的值 private void reversePrint(ListNode head) {if(head null) return;reversePrint(head.ne…

速盾:cdn節點作用?

CDN(Content Delivery Network)指的是內容分發網絡,是一種通過部署在全球不同地理位置的服務器節點來提供快速、高效的內容傳輸和分發的技術架構。CDN節點在網絡中的作用非常重要,下面就對其作用進行詳細解析。 提供高速內容傳輸&…

《算法筆記》總結No.6——貪心

一.簡單貪心 貪心法是求解一類最優化問題的方法,它總是考慮在當前狀態下局部最優(或較優)之后,來使全局的結果達到最優(或較優)的策略。顯然,如果采取較優而非最優的策略(最優策略可能不存在或是不易想到),得到的全局結果也無法是…

socketserver和WSGI服務端實現教程

Python socketserver 和 WSGI 服務端實現教程 在本文中,我們將詳細解析一個使用 socketserver 模塊實現的簡單 WSGI 服務器。該服務器能夠處理 HTTP 請求,支持 WSGI 應用,并正確處理響應頭和錯誤。 代碼概述 這段代碼定義了一個 run_wsgi …

【深入理解JVM】關于Object o = new Object()

1. 解釋一下對象的創建過程 “半初始化”狀態通常指的是對象在內存分配后、但在完全初始化之前的一種狀態。在Java中,雖然JVM的規范和設計努力避免對象處于這種不穩定的狀態,但在多線程環境下,由于指令重排序等并發問題,仍有可能…

Apache Spark詳解

目錄 性能優化 銀行業務案例: 步驟1:環境準備和數據加載 步驟2:數據探索和預處理 步驟3:特征工程 步驟4:數據轉換 步驟5:構建機器學習模型 步驟6:模型評估 步驟7:部署和監控…

Spring JdbcTemplate使用

maven引入Spring JDBC <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.19</version></dependency> Spring配置中配置 <!-- DataSource配置 --><bean id"…

java代理簡單理解

一、什么是代理 舉例說明&#xff1a;當我想買一臺電腦&#xff0c;國內太貴了。委托好友A在國外幫忙買。 這個情節中我要實現的動作和好友實現的動作一樣&#xff0c;都是買電腦。好友幫我完成了這個動作&#xff0c;這就是代理。 類A和類B都實現一個interface接口C&#x…

【LeetCode刷題筆記】LeetCode.24.兩兩交換鏈表中的節點

創作不易&#xff0c;本篇文章如果幫助到了你&#xff0c;還請點贊 關注支持一下?>&#x16966;<)!! 主頁專欄有更多知識&#xff0c;如有疑問歡迎大家指正討論&#xff0c;共同進步&#xff01; 更多算法知識專欄&#xff1a;算法分析&#x1f525; 給大家跳段街舞感謝…

新手小白的pytorch學習第一彈-------張量

1 導入pytorch包 import torch2 創建張量&#xff08;tensor&#xff09; scalar標量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的維度&#xff0c;因為scalar是標量&#xff0c;所以維度為0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

Apache功能配置:訪問控制、日志分割; 部署AWStats日志分析工具

目錄 保持連接 訪問控制 只允許指定ip訪問 拒絕指定主機其他正常訪問 用戶授權 日志格式 日志分割 操作步驟 使用第三方工具cronolog分割日志 AWStats日志分析 操作步驟 訪問AwStats分析系統 保持連接 Apache通過設置配置文件httpd-default.conf中相關的連接保持參…

基于Java的科大訊飛大模型API調用實現

寫在前面&#xff1a;因為現在自己實習的公司新拓展的一個業務是結合AI的低代碼平臺&#xff0c;我負責后端的開發&#xff0c;之前一直都是直接使用gpt或者文心一言等ui界面來直接使用大模型&#xff0c;從來沒有自己調接口過&#xff0c;所以本文記錄一下自己第一次使用大模型…

源代碼防泄漏的正確方法

為了保護公司的源代碼不被泄露&#xff0c;IT企業可以采取一系列嚴格的安全措施。這些措施涵蓋技術手段、管理策略和操作流程&#xff0c;形成多層次的防護體系做到源代碼防泄漏工作。 技術手段 1、源代碼加密&#xff1a; 采用高級加密標準&#xff08;AES&#xff09;或其他…