![](/img/trans.png)
[英]How can we calculate accuracy for the Random forest classifier if we are using 4 label classification?
[英]How do we use a Random Forest for sentence-classification using word-embedding
當我們有一個隨機森林時,我們有 n 個輸入和 m 個特征,例如我們有 3 個觀察和 2 個特征
X = [[1,23],[0,-12],[-0.5,29]]
y = [1,0,1]
我們可以訓練一個隨機森林
from sklearn.ensemble import RandomForestClassifier
model = RandomForest()
model.fit(X,y)
如果我使用 100 維向量進行詞嵌入,我們如何創建X
矩陣,其中每個輸入都是一個句子?
假設我們有以下單詞["I","like","dogs","cats"]
的 3 維嵌入:
I = [-0.5,0,1]
like = [5,2,3]
dogs = [1,2,3]
cats = [3,2,1]
那么數據集 [“我喜歡狗”,“我喜歡貓”] 將是
X = [
[[-0.5,0,1], [5,2,3], [1,2,3]],
[[-0.5,0,1], [5,2,3], [3,2,1]]
]
y = ["dog-lover","cat-lover"]
RF 自然無法訓練,因此給出錯誤ValueError: Found array with dim 3. Estimator expected <= 2.
除了 RF 可能不適合 NLP - 有沒有辦法這樣做?
我認為在 3 維輸入上執行隨機森林分類器是不可能的,但作為一種替代方法,您可以使用句子嵌入而不是詞嵌入。 因此,您的輸入數據將是此分類器預期的二維( (n_samples, n_features)
)。
獲取句子嵌入向量的方法有很多,包括Doc2Vec和SentenceBERT ,但最簡單和常用的方法是對所有詞嵌入向量進行元素平均。
在您提供的示例中,嵌入長度被認為是 3。假設句子是"I like dogs" 。 所以句子嵌入向量將計算如下:
I = [-0.5,0,1]
like = [5,2,3]
dogs = [1,2,3]
cats = [3,2,1]
# sentence: 'I like dogs'
sentence = [-0.5+5+1, 0+2+2, 1+3+3] / 3
= [5.5, 4, 7] / 3
= [1.8333, 1.3333, 2.3333]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.