日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python中以表示语块_scikitlearn:将数据拟合成块与将其全部拟合到on

發(fā)布時(shí)間:2025/3/8 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中以表示语块_scikitlearn:将数据拟合成块与将其全部拟合到on 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這取決于您使用的矢量器。在

CountVectorizer統(tǒng)計(jì)文檔中單詞的出現(xiàn)次數(shù)。

它為每個(gè)文檔輸出一個(gè)(n_words, 1)向量,其中包含每個(gè)單詞在文檔中出現(xiàn)的次數(shù)。n_words是文檔中的單詞總數(shù)(也就是詞匯表的大小)。

它也適合詞匯表,這樣您就可以反省模型(看看哪個(gè)詞是重要的,等等)。您可以使用vectorizer.get_feature_names()查看它。在

當(dāng)你把它放在前500個(gè)文檔中時(shí),詞匯表將只由500個(gè)文檔中的單詞組成。假設(shè)有30k個(gè)這樣的矩陣,fit_transform輸出一個(gè)500x30k稀疏矩陣。

現(xiàn)在您再次使用接下來的500個(gè)文檔fit_transform,但是它們只包含29k個(gè)單詞,所以您得到了一個(gè)500x29k矩陣…

現(xiàn)在,如何調(diào)整矩陣以確保所有文檔都具有一致的表示形式?

我現(xiàn)在想不出一個(gè)簡單的辦法來做這件事。在

對(duì)于TfidfVectorizer您還有另一個(gè)問題,那就是文檔頻率的倒數(shù):為了能夠計(jì)算文檔頻率,您需要一次查看所有文檔。

但是TfidfVectorizer只是一個(gè)CountVectorizer,后面跟著一個(gè)TfIdfTransformer,因此,如果您設(shè)法獲得CountVectorizer的輸出,那么您可以對(duì)數(shù)據(jù)應(yīng)用TfIdfTransformer。在

使用HashingVectorizer,情況有所不同:這里沒有詞匯表。在In [51]: hvect = HashingVectorizer()

In [52]: hvect.fit_transform(X[:1000])

<1000x1048576 sparse matrix of type ''

with 156733 stored elements in Compressed Sparse Row format>

在這里,前1000個(gè)文檔中沒有1M+個(gè)不同的單詞,但是我們得到的矩陣有1M+列。

HashingVectorizer不在內(nèi)存中存儲(chǔ)單詞。這樣可以提高內(nèi)存效率,并確保返回的矩陣始終具有相同的列數(shù)。

所以您不會(huì)遇到與CountVectorizer相同的問題。在

這可能是您所描述的批處理的最佳解決方案。有兩個(gè)缺點(diǎn),即你不能得到idf權(quán)重,你不知道單詞和你的特征之間的映射。在

希望這有幫助。在

編輯:

如果您有太多的數(shù)據(jù),HashingVectorizer是最好的選擇。

如果您仍然想使用CountVectorizer,一個(gè)可能的解決方法是自己調(diào)整詞匯表并將其傳遞給向量器,這樣您只需要調(diào)用tranform。在

下面是一個(gè)您可以修改的示例:

^{pr2}$

現(xiàn)在,不起作用的方法是:# Fitting directly:

vect = CountVectorizer()

vect.fit_transform(X[:1000])

<1000x27953 sparse matrix of type ''

with 156751 stored elements in Compressed Sparse Row format>

注意我們得到的矩陣的大小。

“手動(dòng)”匹配詞匯:def tokenizer(doc):

# Using default pattern from CountVectorizer

token_pattern = re.compile('(?u)\\b\\w\\w+\\b')

return [t for t in token_pattern.findall(doc)]

stop_words = set() # Whatever you want to have as stop words.

vocabulary = set([word for doc in X for word in tokenizer(doc) if word not in stop_words])

vectorizer = CountVectorizer(vocabulary=vocabulary)

X_counts = vectorizer.transform(X[:1000])

# Now X_counts is:

# <1000x155448 sparse matrix of type ''

# with 149624 stored elements in Compressed Sparse Row format>

#

X_tfidf = tfidf.transform(X_counts)

在您的示例中,您需要在應(yīng)用tfidf轉(zhuǎn)換之前首先構(gòu)建整個(gè)矩陣X_計(jì)數(shù)(對(duì)于所有文檔)。在

總結(jié)

以上是生活随笔為你收集整理的python中以表示语块_scikitlearn:将数据拟合成块与将其全部拟合到on的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。