众所周知,在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
答案 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)]