簡單用python不經第三方包實現TF IDF演算法

2021-10-03 15:57:07 字數 1625 閱讀 6617

from collections import defaultdict

import math

def loaddataset():

dataset = [ ['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], # 切分的詞條

['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],

['my', 'dalmation', 'is', 'so', 'cute', 'i', 'love', 'him'],

['stop', 'posting', 'stupid', 'worthless', 'garbage'],

['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],

['quit', 'buying', 'worthless', 'dog', 'food', 'stupid'] ]

classvec = [0, 1, 0, 1, 0, 1] # 類別標籤向量,1代表好,0代表不好

return dataset, classvec

def feature_select(list_words):

doc_frequency=defaultdict(int)

#記錄每個詞的數量

for i in list_words:

for j in i:

doc_frequency[j]+=1

s1=sum(doc_frequency.values())

s2=len(list_words)

word_tf={}

#記錄tf中詞頻

for i in doc_frequency:

word_tf[i]=doc_frequency[i]/s1

#記錄每個詞的出現在文章中,文章的數量

word_idf={}

word_idf_doc=defaultdict(int)

for i in doc_frequency:

for j in list_words:

if i in j:

word_idf_doc[i]+=1

#tf與idf相乘

for i in doc_frequency:

word_idf[i]=math.log(s2/(word_idf_doc[i]+1))

word_tf_idf={}

for i in doc_frequency:

word_tf_idf[i]=word_tf[i]*word_idf[i]

#排序,從大到小

dict_feature_select=sorted(word_tf_idf.items(),key=lambda x:x[1],reverse=true)

return dict_feature_select

if __name__ =='__main__':

data_list,lable_list=loaddataset()

feature=feature_select(data_list)

print(feature)

python安裝第三方包

初開始進行機器學習,對python第三方包進行安裝,已經第二次安裝了,還是不太順利,為了記住過程,寫下這篇文章。1 whl檔案 cmd輸入命令pip install packagename 例如安裝numpy包,輸入命令pip install numpy 其餘類似。2 壓縮檔案 tar 例如auto...

python 安裝第三方包

python環境是anaconda3安裝的,由於專案需要用到git的第三方包,但是在conda自帶的環境中沒有。例如使用jieba分詞庫。最後通過 import jieba 來引用 第一種方法 自動安裝 第一種方法又可以分成三種方法 1.直接conda介面自動安裝 第二種方法 半自動 git 2.然...

Python第三方包的匯入

我們知道,定義在環境變數pythonpath裡是可以直接用import匯入的。下面我們來操作如何從非pythonpath目錄匯入第三方包或者自己定義的包。假定我們的包有如下的目錄結構 person 是最頂層的包,man woman child是子包 person init py person.py ...