簡體   English   中英

重新創建稀疏矩陣列以進行ML模型預測

[英]recreating sparse matrix columns for ML model predictions

我一直在使用sklearn建立模型,其中很大一部分利用CountVectorizer()函數從訓練集中的一組字符串創建稀疏矩陣。

例如:

vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus).toarray()

導出模型后,格式化數據的最佳方法是我想創建預測以匹配訓練創建的特征名稱的數據? 我是否還應該導出(通過泡菜?) vectorizer.get_feature_names() ,然后使用它? 或者,還有更好的方法?

換句話說,如果在我的訓練集中vectorizer.get_feature_names() = ['apple', 'dog', 'cat']並且我想對'hello cat'做出預測,那么我的特征提取方法應基於什么預測要求是? 如果Im錯誤,請糾正我,但是特征提取的結果需要為[0, 0, 1]才能匹配模型。

在這里我也可能完全不了解我的方法,因此不勝感激任何幫助或建議

謝謝!

當您鍵入

vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus).toarray()

vectorizer器用於適合您在corpus的單詞的VOCABULARY

因此,使用SAME vectorizertransform另一個數據集,您將看到新數據集的詞頻與corpus的詞匯相對應

記住,您執行fit_transform(X)時說“使用X的詞匯”,並且只執行一次。 然后,您只需進行tranform(Y)表示,“無論您將X用作什么,都將其用作列,並將Y的術語適合這些X

from sklearn.feature_extraction.text import CountVectorizer
corpus = ['love dogs, hate cows, and also pigs, actually dogs too']
vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus)
df = pd.DataFrame(sparse_matrix.toarray())
df.columns = vectorizer.get_feature_names()
print(df)

會給你這個:

   actually  also  and  cows  dogs  hate  love  pigs  too
0         1     1    1     1     2     1     1     1    1

接着:

test = vectorizer.transform(['hello cat']) #Notice how I use transform and not fit_transform
df = pd.DataFrame(test.toarray())
df.columns = vectorizer.get_feature_names()
print(df)

   actually  also  and  cat  cows  dogs  hate  love  pigs  too
0         0     0    0    1     0     0     0     0     0    0

請注意, hello cat如何適合被調用fit_transform的術語詞匯表。 因此,在特征提取中,您將“ hello cat” fit_transform到稱為fit_transform的詞匯表上!

現在,將所有這10列用作特征以預測標簽y 您正在做的事情稱為向量空間模型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM