我可以将线性回归预测为分类吗?

时间:2016-02-16 15:32:19

标签: python scikit-learn linear-regression

我训练了一个线性回归模型(使用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作为结果,我怎么能这样做呢?模型得到了我可以使用的任何阈值或自动截止?

3 个答案:

答案 0 :(得分:1)

Logistic回归(请参阅sci-kitstatsmodels实施)是正确的工具;在大多数情况下,它的表现优于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.使其完全按照您想要的线性回归进行操作,并设置阈值以在类之间进行划分。