我训练了一个线性回归模型(使用sklearn和python3), 我的火车套装有94个功能,它们的等级是0或1 .. 比我去测试我的线性回归模型测试集,它给了我那些结果:
1. [ 0.04988957]
测试集上的实际值为0
2. [ 0.00740425]
测试集上的实际值为0
3. [ 0.01907946]
测试集上的实际值为0
4. [ 0.07518938]
测试集上的实际值为0
5. [ 0.15202335]
测试集上的实际值为0
6. [ 0.04531345]
测试集上的实际值为0
7. [ 0.13394644]
测试集上的实际值为0
8. [ 0.16460608]
测试集上的实际值为1
9. [ 0.14846777]
测试集上的实际值为0
10. [ 0.04979875]
测试集上的实际值为0
正如你可以看到在第8行它给出了最高值,但问题是我想使用my_model.predict(testData)并且它只给出0或1作为结果,我怎么能这样做呢?模型得到了我可以使用的任何阈值或自动截止?
答案 0 :(得分:1)
Logistic回归(请参阅sci-kit或statsmodels实施)是正确的工具;在大多数情况下,它的表现优于OLS,其预测自然位于区间(0,1)。
答案 1 :(得分:0)
LinearRegression
类上没有分类器。然而,有一个SGD Classifier(也是一个线性模型)可以创建你想要的预测
文档中的示例代码
>>> import numpy as np
>>> from sklearn import linear_model
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> Y = np.array([1, 1, 2, 2])
>>> clf = linear_model.SGDClassifier()
>>> clf.fit(X, Y)
...
SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1,
eta0=0.0, fit_intercept=True, l1_ratio=0.15,
learning_rate='optimal', loss='hinge', n_iter=5, n_jobs=1,
penalty='l2', power_t=0.5, random_state=None, shuffle=True,
verbose=0, warm_start=False)
>>> print(clf.predict([[-0.8, -1]]))
答案 2 :(得分:0)
您可以使用线性分类器sklearn.linear_model.RidgeClassifer(alpha=0.)
。将岭惩罚设置为0.使其完全按照您想要的线性回归进行操作,并设置阈值以在类之间进行划分。