簡體   English   中英

多個 Output 機器學習 Model - Python

[英]Multiple Output Machine Learning Model - Python

大家好,我已經嘗試搜索這個主題並且無法找到一個好的答案,所以我希望有人可以幫助我。 假設我正在嘗試使用 scikit-learn 和 python 創建一個 ML model。 我有一個這樣的數據集:

| Features | Topic   | Sub-Topic        |
|----------|---------|------------------|
| ...      | Science | Space            |
| ...      | Science | Engineering      |
| ...      | History | American History |
| ...      | History | European History |

我的功能列表僅由文本組成,例如一些文章中的一小段。 現在我希望能夠使用 ML 來預測該文本的主題和子主題。

我知道我需要使用某種 NLP 來分析諸如 spaCy 之類的文本。 我感到困惑的部分是有兩個 output 變量:主題和子主題。 我讀過 scikit-learn 有一個叫做 MultiOutputClassifier 的東西,但是還有一個叫做 MultiClass Classification 的東西,所以我對采取什么路線有點困惑。

有人可以為我指出使用什么回歸器或如何實現這一點的正確方向嗎?

所以 MultiClass 只是說一個目標變量中有多個類。 MultiOutput 意味着我們有多個目標變量。 這里我們有一個MultiClass-MultiOutput問題。

scikit-learn 原生支持以下分類器的MultiClass-MultiOutput

sklearn.tree.DecisionTreeClassifier
sklearn.tree.ExtraTreeClassifier
sklearn.ensemble.ExtraTreesClassifier
sklearn.neighbors.KNeighborsClassifier
sklearn.neighbors.RadiusNeighborsClassifier
sklearn.ensemble.RandomForestClassifier

我建議選擇 RandomForest,因為大多數情況下它開箱即用,效果很好。

所以舉一個虛擬的例子來演示 RandomForestClassifier 的RandomForestClassifier用於多個目標。

### Dummy Example only to test functionality
np.random.seed(0)
X = np.random.randn(10,2)
y1 = (X[:,[0]]>.5).astype(int) # make dummy y1
y2 = (X[:,[1]]<.5).astype(int) # make dummy y2
y = np.hstack([y1,y2]) # y has 2 columns
print("X = ",X,sep="\n",end="\n\n")
print("y = ",y,sep="\n",end="\n\n")
rfc = RandomForestClassifier().fit(X, y) # use the same api for multi column y!
out = rfc.predict(X)
print("Output = ",out,sep="\n")

Output

X = 
[[ 1.76405235  0.40015721]
 [ 0.97873798  2.2408932 ]
 [ 1.86755799 -0.97727788]
 [ 0.95008842 -0.15135721]
 [-0.10321885  0.4105985 ]
 [ 0.14404357  1.45427351]
 [ 0.76103773  0.12167502]
 [ 0.44386323  0.33367433]
 [ 1.49407907 -0.20515826]
 [ 0.3130677  -0.85409574]]

y = 
[[1 1]
 [1 0]
 [1 1]
 [1 1]
 [0 1]
 [0 0]
 [1 1]
 [0 1]
 [1 1]
 [0 1]]

Output = 
[[1 1]
 [1 0]
 [1 1]
 [1 1]
 [0 1]
 [0 0]
 [1 1]
 [0 1]
 [1 1]
 [0 1]]

在旁注中,當您正在執行與 NLP 相關的 model 時,我建議使用Keras 的多輸出 NN api來訓練神經網絡以獲得更好的輸出!

暫無
暫無

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

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