我在向 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) 的类,它们与“数据”、“人”、“组织”等一些类有关。所以对于每个类,我都制作了返回的自定义功能真或假,在本例中为 1 和 0 数字。示例:如果 token 等于“(S|s)unday”,则为数据类。数学上很清楚。我测试的每个类功能都有令牌。然后我看看哪个类的特征总和的最大值(这就是为什么返回数字不是布尔值)并把它捡起来。换句话说,我使用 argmax 函数。当然,总而言之,每个特征都有 alpha 系数。在这种情况下是多类分类,所以我需要知道如何将多类特征添加到 sklearn.LogisticRegression。
我需要两件事,阿尔法系数并将我自己的特征添加到逻辑回归中。对我来说最重要的是如何sklearn.LogisticRegression
为每个类添加我自己的功能。
我知道我可以通过梯度下降来计算系数。但我认为当我使用 fit(x,y) 时,LogisticRegression 使用一些算法来计算我可以通过属性获得的系数
.coef_
。
所以最后我的主要问题是如何在我的示例类 1、2、3、4、5(resultNER)中为不同的类添加自定义功能。