scikit learn包進行tf idf計算

2021-07-25 09:05:05 字數 2880 閱讀 4379

採用scikit-learn包進行tf-idf分詞權重計算關鍵用到了兩個類:countvectorizer和tfidftransformer,具體參見這裡

乙個簡單的**如下:

[python]view plain

copy

# coding:utf-8

__author__ = "liuxuejiang"

import

jieba  

import

jieba.posseg as pseg  

import

os  

import

sys  

from

sklearn 

import

feature_extraction  

from

sklearn.feature_extraction.text 

import

tfidftransformer  

from

sklearn.feature_extraction.text 

import

countvectorizer  

if__name__ == 

"__main__"

:  corpus=["我 來到 北京 清華大學"

,#第一類文字切詞後的結果,詞之間以空格隔開

"他 來到 了 網易 杭研 大廈"

,#第二類文字的切詞結果

"小明 碩士 畢業 與 中國 科學院"

,#第三類文字的切詞結果

"我 愛 北京 天安門"

]#第四類文字的切詞結果

vectorizer=countvectorizer()#該類會將文字中的詞語轉換為詞頻矩陣,矩陣元素a[i][j] 表示j詞在i類文字下的詞頻

transformer=tfidftransformer()#該類會統計每個詞語的tf-idf權值

tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第乙個fit_transform是計算tf-idf,第二個fit_transform是將文字轉為詞頻矩陣

word=vectorizer.get_feature_names()#獲取詞袋模型中的所有詞語

weight=tfidf.toarray()#將tf-idf矩陣抽取出來,元素a[i][j]表示j詞在i類文字中的tf-idf權重

fori 

inrange(len(weight)):

#列印每類文字的tf-idf詞語權重,第乙個for遍歷所有文字,第二個for便利某一類文字下的詞語權重

print

u"-------這裡輸出第"

,i,u

"類文字的詞語tf-idf權重------"

forj 

inrange(len(word)):  

print

word[j],weight[i][j]  

程式輸出:每行格式為:詞語  tf-idf權重

[plain]view plain

copy

-------這裡輸出第 0 類文字的詞語tf-idf權重------           #該類對應的原文本是:"我來到北京清華大學"  

中國 0.0  

北京 0.52640543361  

大廈 0.0  

天安門 0.0  

小明 0.0  

來到 0.52640543361  

杭研 0.0  

畢業 0.0  

清華大學 0.66767854461  

碩士 0.0  

科學院 0.0  

網易 0.0  

-------這裡輸出第 1 類文字的詞語tf-idf權重------           #該類對應的原文本是: "他來到了網易杭研大廈"  

中國 0.0  

北京 0.0  

大廈 0.525472749264  

天安門 0.0  

小明 0.0  

來到 0.414288751166  

杭研 0.525472749264  

畢業 0.0  

清華大學 0.0  

碩士 0.0  

科學院 0.0  

網易 0.525472749264  

-------這裡輸出第 2 類文字的詞語tf-idf權重------           #該類對應的原文本是: "小明碩士畢業於中國科學院「  

中國 0.4472135955  

北京 0.0  

大廈 0.0  

天安門 0.0  

小明 0.4472135955  

來到 0.0  

杭研 0.0  

畢業 0.4472135955  

清華大學 0.0  

碩士 0.4472135955  

科學院 0.4472135955  

網易 0.0  

-------這裡輸出第 3 類文字的詞語tf-idf權重------            #該類對應的原文本是: "我愛北京天安門"  

中國 0.0  

北京 0.61913029649  

大廈 0.0  

天安門 0.78528827571  

小明 0.0  

來到 0.0  

杭研 0.0  

畢業 0.0  

清華大學 0.0  

碩士 0.0  

科學院 0.0  

網易 0.0  

注:這裡隨便舉了幾個文字,所以tf-idf也沒什麼實際價值,旨在說明scikit-learn包關於tf-idf計算api的呼叫

用scikit learn進行LDA降維

性判別分析lda原理總結中,我們對lda降維的原理做了總結,這裡我們就對scikit learn中lda的降維使用做乙個總結。在scikit learn中,lda類是sklearn.discriminant analysis.lineardiscriminantanalysis。那既可以用於分類又可...

通過scikit learn進行線性回歸嘗試

線性模型是在機器學習中最先接觸到的數學模型,通過對多組數值對進行擬合,從而最終得出自變數與因變數之間的線性關係。本片之中並不對線性模型進行闡述而是主要通過python的類庫scikit learn進行線性回歸的相關嘗試。1.資料來源匯入 我們在使用scikit learn的時候可以選擇類庫內部自帶的...

用scikit learn進行LDA降維

在scikit learn中,lda類是sklearn.discriminant analysis.lineardiscriminantanalysis。那既可以用於分類又可以用於降維。當然,應用場景最多的還是降維。和pca類似,lda降維基本也不用調參,只需要指定降維到的維數即可。我們這裡對lin...