sklearn逻辑回归中的特征

2024-04-26 20:57:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在向sklearn.linear_model.logisticsregression添加自己的特性时遇到了一些问题。但无论如何,让我们看看一些示例代码:

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),它们与一些类相关,比如“data”,“person”,“organization”等等。所以对于每个类,我都创建了返回true或false的自定义特性,在本例中是1和0。示例:如果标记等于“(S | S)unday”,则它是数据类。从数学上讲是清楚的。我为我测试的每个类特性都有标记。然后我看看哪个类的最大值是特征和(这就是为什么返回数字不是布尔值)并将其提取出来。换句话说,我使用argmax函数。当然,在总结中,每个特征都有α系数。在本例中,它是多类分类,因此我需要知道如何将多类特性添加到sklearn.logisticsregression。

我需要两件事,阿尔法系数和添加我自己的特点逻辑回归。对我来说最重要的是如何为每个类添加我自己的特性函数。

我知道我可以通过梯度下降来计算系数。但是我认为当我使用fit(x,y)时,logisticRegregation使用一些算法来计算我可以通过属性得到的系数 .coef_

最后,我的主要问题是如何为我的示例类1、2、3、4、5(resultNER)中的不同类添加自定义特性。


Tags: to示例np特性sklearnarraypredictclass
1条回答
网友
1楼 · 发布于 2024-04-26 20:57:55

对你的问题不太确定,但没什么能帮到你的:

  • 可以使用predict_proba函数估计每个类的概率:

    >>> logit.predict_proba(xPP)
    array([[ 0.1756304 ,  0.22633999,  0.25149571,  0.10134168,  0.24519222]])
    
  • 如果你想让特性有一些权重(这就是你所说的alpha?),不是在学习算法中,而是在preprocessing phase上。你可以使用一系列系数:

    >>> logit = LogisticRegression(C=1.0).fit(xNER,y)
    >>> logit.predict(xPP)
    array([3])
    >>> alpha = np.array([[0.2, 0.2, 1, 1, 0.3, 1]])
    >>> logit = LogisticRegression(C=1.0).fit(alpha*xNER,y)
    >>> logit.predict(alpha*xPP)
    array([2])
    

相关问题 更多 >