sklearn.linear_model.LogisticRegression に独自の機能を追加する際に問題があります。とにかく、いくつかのサンプルコードを見てみましょう:
from sklearn.linear_model import LogisticRegression, LinearRegression
import numpy as np
#Numbers are class of tag
resultsNER = np.array([1,2,3,4,5])
#Acording to resultNER every row is another class so is another features
#but in this way every row have the same features
xNER = np.array([[1.,0.,0.,0.,-1.,1.],
[1.,0.,1.,0.,0.,1.],
[1.,1.,1.,1.,1.,1.],
[0.,0.,0.,0.,0.,0.],
[1.,1.,1.,0.,0.,0.]])
#Assing resultsNER to y
y = resultsNER
#Create LogReg
logit = LogisticRegression(C=1.0)
#Learn LogReg
logit.fit(xNER,y)
#Some test vector to check wich class will be predict
xPP = np.array([1.,1.,1.,0.,0.,1.])
#linear = LinearRegression()
#linear.fit(x, y)
print "expected: ", y
print "predicted:", logit.predict(xPP)
print "decision: ",logit.decision_function(xNER)
print logit.coef_
#print linear.predict(x)
print "params: ",logit.get_params(deep=True)
上記のコードは明確で簡単です。したがって、1,2,3,4,5(resultsNER) と呼ばれるいくつかのクラスがあります。これらは、「データ」、「人」、「組織」などのクラスに関連しています。したがって、各クラスに対して、返すカスタム機能を作成します。 true または false。この場合は 1 と 0 の数値です。例: トークンが "(S|s)unday" の場合、それはデータ クラスです。数学的には明らかです。テストする各クラス機能のトークンがあります。次に、どのクラスが機能の合計の最大値を持っているかを調べ (そのため、ブール値ではなく数値を返します)、それを選択します。つまり、argmax 関数を使用します。もちろん、要約すると、各機能にはアルファ係数があります。この場合は多クラス分類なので、sklearn.LogisticRegression に多クラス機能を追加する方法を知る必要があります。
アルファ係数の 2 つが必要であり、ロジスティック回帰に独自の機能を追加します。私にとって最も重要なのはsklearn.LogisticRegression
、クラスごとに独自の機能を追加する方法です。
勾配降下法で係数を計算できることは知っています。しかし、fit(x,y) を使用すると、LogisticRegression は何らかのアルゴリズムを使用して、attribute で取得できる係数を計算すると思います
.coef_
。
結局のところ、私の主な質問は、サンプル クラス 1,2,3,4,5 (resultNER) のさまざまなクラスにカスタム機能を追加する方法です。