python學智能算法(十四)|機器學習樸素貝葉斯方法進階-CountVectorizer文本處理簡單測試

【1】引用

前序學習文章中,已經對拉普拉斯平滑和簡單二元分類進行了初步探索,相關文章鏈接為:

python學智能算法(十二)|機器學習樸素貝葉斯方法初步-拉普拉斯平滑計算條件概率-CSDN博客

python學智能算法(十三)|機器學習樸素貝葉斯方法進階-簡單二元分類-CSDN博客

在實踐應用中也會發現,樸素貝葉斯方法還能對文本進行分類,今天的學習目標就是學習簡單的文本操作技巧,需要使用sklearn里面的CountVectorizer包。

【2】代碼學習

首先是引入必要的模塊或者說庫:

# 引入必要的模塊
from sklearn.feature_extraction.text import CountVectorizer

輸入待處理的文本:

# 單個文檔
document = ["Python programming is fun and useful for data science."]

這里只有一個句子:Python programming is fun and useful for data science.

直接創建一個文本處理器:

# 創建向量化器
vectorizer = CountVectorizer()

CountVectorizer是 scikit-learn 庫中用于文本向量化的工具,將文本轉換為詞頻矩陣。CountVectorizer()滿足默認配置:

  • 自動將文本轉為小寫。
  • 按空格分詞。
  • 不處理停用詞。
  • 只考慮單個詞。
  • ?

實際上,vectorizer在這里被定義為一個工具,通過這個工具才可以調用具體的文本處理命令。

然后就是:

X = vectorizer.fit_transform(document)

這里的fit_transform是由fit和transform兩個命令合并在一起的快捷操作:

fit命令的作用是分析文本中有哪些詞;

transform命令的作用是將文本轉化為詞頻矩陣,有合并同類項的功能。

CountVectorizer()是類的構造函數,vectorizer是實例,fit和transform是實例方法。

然后是查看詞匯表操作:

# 查看詞匯表
print("詞匯表:", vectorizer.get_feature_names_out())

這里的vectorizer.get_feature_names_out()執行后,會按照各個詞匯首字母的順序將組成句子的詞依次輸出,比如上方的句子Python programming is fun and useful for data science會輸出為:['and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful']。

最后的向量輸出為:

# 查看向量表示
print("向量表示:", X.toarray())

X.toarray()本質上是輸出各個詞在句子中出現的次數。

比如上方的句子Python programming is fun and useful for data science,X.toarray()會輸出一系列1,因為每個單詞出現的頻次都是1。

完整代碼為:

# 引入必要的模塊
from sklearn.feature_extraction.text import CountVectorizer# 單個文檔
document = ["Python programming is fun and useful for data science."]# 創建向量化器
vectorizer = CountVectorizer()
print('vetorizer=',vectorizer)
# 擬合并轉換文檔
X = vectorizer.fit_transform(document)
print('X=',X)
# 查看詞匯表
print("詞匯表:", vectorizer.get_feature_names_out())# 查看向量表示
print("向量表示:", X.toarray())

代碼運行后的輸出為:

vetorizer= CountVectorizer()
X=? ?(0, 6)? ? 1
? (0, 5)? ? 1
? (0, 4)? ? 1
? (0, 3)? ? 1
? (0, 0)? ? 1
? (0, 8)? ? 1
? (0, 2)? ? 1
? (0, 1)? ? 1
? (0, 7)? ? 1
詞匯表: ['and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful']
向量表示: [[1 1 1 1 1 1 1 1 1]]

【3】代碼測試

實際上要想測試代碼非常簡單,只需要改變初始句子即可,比如把句子改成:

# 單個文檔
document = ["Python programming is fun and useful for data science and math."]

此時的輸出就會變成:

詞匯表: ['and' 'data' 'for' 'fun' 'is' 'math' 'programming' 'python' 'science'
?'useful']
向量表示: [[2 1 1 1 1 1 1 1 1 1]]

顯然,出現了兩個and后,向量表示的頻次會自動增加。

?【4】細節說明

代碼中文本后面的點號不是必須的。

【5】總結

學習了CountVectorizer文本處理的簡單應用。

?

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

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

相關文章

Java枚舉類的規范設計與常見錯誤規避

前言 在Java開發中,枚舉(enum)是一種強大的工具,用于定義一組固定常量集合。然而,許多開發者在使用枚舉時容易陷入設計誤區,導致代碼可維護性差、運行時錯誤頻發,甚至引發生產事故。 一、枚舉…

Vue指令v-if

目錄 一、Vue中的v-if指令是什么?二、v-if指令的使用 一、Vue中的v-if指令是什么? v-if指令是根據表達值的真假,切換元素的顯示和隱藏, 本質是通過操縱dom元素來切換顯示狀態。 注意: 表達式的值為true,元…

探秘阿里云云數據庫Tair:性能、特性與應用全景解析

引言 在數字化浪潮席卷全球的當下,數據已然成為企業最為關鍵的資產之一,如何高效管理和運用這些數據,成為了企業在激烈競爭中脫穎而出的關鍵。云數據庫作為現代數據管理的核心工具,憑借其卓越的可擴展性、靈活性以及高效的數據處…

百度大模型免費上線,學AI大模型就選近嶼智能

3月16日,文心大模型4.5和文心大模型X1正式發布!目前兩款模型已免費對用戶開放。 文心大模型4.5是百度自主研發的新一代原生多模態基礎大模型,通過多個模態聯合建模實現協同優化,提高多模態理解能力,精進語言能力&#…

PostgreSQL 中實現跨庫連接主要有兩種解決方案

方法一:使用 dblink 擴展 dblink 是 PostgreSQL 的內置擴展,允許在一個數據庫會話中執行遠程 SQL 查詢。 步驟 1:在源數據庫中啟用 dblink 擴展 CREATE EXTENSION IF NOT EXISTS dblink;步驟 2:執行跨庫查詢 -- 簡單查詢示例&…

Qt中的布局

Qt6.8的布局管理系統,用于自動排列部件:水平布局QHBoxLayout、垂直布局QVBoxLayout、網格布局QGridLayout、表單布局QFormLayout 布局(layout)是一種優雅而靈活的方式,可以在其容器內自動排列子部件(child widgets)。每個部件通過sizeHint和s…

Agent成本降低46%:緩存規劃器的思路模板

論文標題 Cost-Efficient Serving of LLM Agents via Test-Time Plan Caching 論文地址 https://arxiv.org/pdf/2506.14852 作者背景 斯坦福大學 動機 大模型能力的飛速進步催收了大量 AI 智能體應用,它們協調多種模型、工具、工作流來解決實際復雜任務。然而…

Vue 3 + Axios 完整入門實戰指南

從入門到深入,手把手教你在 Vue 3 中正確使用 Axios,支持全局掛載、局部分離、使用 proxy 連接場景,適合所有前端小白和實戰設計。 大家好,我是石小石!一個熱愛技術分享的開源社區貢獻者,小冊《油猴腳本實戰…

CppCon 2017 學習:Effective Qt: 2017 Edition

這段內容講的是 Qt 容器(Qt Containers)和標準庫容器(STL Containers)之間的選擇和背景: 主要觀點: Qt 容器的歷史背景 Qt 自身帶有一套容器類(如 QList, QVector, QMap 等)&#…

Pandas 核心數據結構詳解:Series 和 DataFrame 完全指南

1. 前言:為什么需要 Pandas 數據結構? 在數據處理和分析中,我們需要高效的方式來存儲和操作結構化數據。Python 原生的列表(List)和字典(Dict)雖然靈活,但缺乏針對數據分析的優化。…

使用 Solscan API 的開發指南:快速獲取 Solana 鏈上數據

Solana 生態中有多個區塊瀏覽器,其中 Solscan 提供了功能全面的 API,適用于查詢地址資產、Solana 生態中有多個區塊瀏覽器,其中 Solscan 提供了功能全面的 API,適用于查詢地址資產、交易詳情、合約交互等多種開發場景。相比直接使…

高效工具-libretv

什么是libretv? LibreTV 是一個輕量級、免費的在線視頻搜索與觀看平臺,提供來自多個視頻源的內容搜索與播放服務。無需注冊,即開即用,支持多種設備訪問。項目結合了前端技術和后端代理功能,可部署在支持服務端功能的各類網站托管…

回溯----5.括號生成

題目鏈接 /** 合法括號生成規則: 第一個括號必須是左括號(第一個為右必定無法閉合) 選擇過程中左括號數量必須小于n才可選擇左括號(大于n則一定有括號無法閉合) 左括號數量必須大于右括號數量才可選擇右括號(相等代表所有前驅括號都已閉合) 所需參數: left 記錄已選擇左括號數…

【weaviate】分布式數據寫入之LSM樹深度解析:讀寫放大的權衡

文章目錄 一、LSM樹的設計哲學:寫優化的根本動機1、 傳統B樹存儲的性能瓶頸2、 LSM樹的根本性創新 二、寫入路徑的深度技術分析1、 WAL機制的精密設計2、 MemTable的數據結構3、 刷盤(Flush)過程的技術細節 三、Compaction策略:LS…

Pygame 大魚吃小魚

【Pygame 大魚吃小魚】是一款基于Python編程語言和Pygame庫開發的趣味游戲。Pygame是Python中一個廣泛用于開發2D游戲的開源模塊集合,它提供了豐富的功能,如窗口管理器、事件處理、圖形繪制等,使得初學者也能快速上手創建游戲。 這段 Python …

【為什么在觸發的事件中修改控件屬性需要使用`Invoke`】

在C#中,特別是在使用Windows Forms或WPF等GUI框架時,控件的屬性和狀態通常只能在創建它們的線程(即UI線程,即主線程或用戶界面線程)中直接修改。這是由于這些框架的設計基于單線程模型,其中所有與用戶界面&…

Android 當apk是系統應用時,無法使用webView的解決方案

最近在做項目時,遇到了一個無法使用webView的問題,apk是系統應用,點擊加載webView時應用就是崩潰,原因是系統應用時,Android會覺得webView不安全,不避讓加載。 解決的思路就是使用映射,把原生的…

ArcGIS Pro無插件加載(無偏移)天地圖!一次添加長久使用

以前我們介紹過:ArcGIS無插件加載(無偏移)天地圖。這次我們來介紹ArcGIS Pro中如何添加天地圖。 我們將通過從天地圖官網自己添加服務鏈接并添加至收藏的方式以及應急的方法來做本次的介紹。天地圖的數據主要包括影像、電子地圖、地形圖等。我…

Go堆內存管理

# Go堆內存管理 1. Go內存模型層級結構 Golang內存管理模型與TCMalloc的設計極其相似。基本輪廓和概念也幾乎相同,只是一些規則和流程存在差異。 2. Go內存管理的基本概念 Go內存管理的許多概念在TCMalloc中已經有了,含義是相同的,只是名字…

零售 EDI:Chewy EDI 項目注意事項

在此前的文章《供應商對接Chewy的EDI需求》中,介紹了Chewy的EDI需求,本文主要為大家分享Chewy對于各個業務單據的細節性需求,了解這些細節性注意事項將幫助企業快速基于知行軟件提供的EDI服務與Chewy建立EDI對接。 基于知行之橋EDI系統能夠通…