如何在sklearn中更改when-to-predict-one参数?

时间:2017-04-04 14:05:12

标签: python scikit-learn logistic-regression

众所周知,在logistic回归算法中,我们预测当θ时间X大于0.5时。我想提高精度值。所以我想改变预测函数,以便在θ倍X大于0.7或其他大于0.5的值时预测1。

如果我写算法,我可以很容易地做到。但是使用sklearn包,我不知道该怎么做。

任何人都可以帮我一把?

为了清楚地解释这个问题,这里是octave中的预测函数wroten:

p = sigmoid(X*theta);

for i=1:size(p)(1)
    if p(i) >= 0.6
        p(i) = 1;
    else
        p(i) = 0;
    endif;
endfor

2 个答案:

答案 0 :(得分:0)

来自sklearn的ini_set预测器对象具有LogisticRegression方法,该方法输出输入示例属于某个类的概率。您可以将此功能与您自己定义的θ时间X一起使用,以获得所需的功能。

一个例子:

predict_proba

以下是from sklearn import linear_model import numpy as np np.random.seed(1337) # Seed random for reproducibility X = np.random.random((10, 5)) # Create sample data Y = np.random.randint(2, size=10) lr = linear_model.LogisticRegression().fit(X, Y) prob_example_is_one = lr.predict_proba(X)[:, 1] my_theta_times_X = 0.7 # Our custom threshold predict_greater_than_theta = prob_example_is_one > my_theta_times_X 的文档字符串:

predict_proba

答案 1 :(得分:0)

这适用于二元和多类分类:

from sklearn.linear_model import LogisticRegression
import numpy as np

#X = some training data
#y = labels for training data
#X_test = some test data

clf = LogisticRegression()
clf.fit(X, y)

predictions = clf.predict_proba(X_test)

predictions = clf.classes_[np.argmax(predictions > threshold, axis=1)]