预测模型输出百分比“可能性”?

时间:2020-01-31 02:45:05

标签: python machine-learning scikit-learn data-science sklearn-pandas

假设我要预测三年级学生大学毕业的百分比可能性(1-100%)。 我有一个包含100个观察值的训练数据集,所有这些数据都包含被分类为“极有可能毕业”的学生的示例。 我还有另一个数据集,其中包含500个观察值(我们不知道是否有任何结果)。

我的问题是:我将如何获取所有500名学生的概率值,以描述他们基于多种特征(例如1-5,例如成绩,居住在校园或校园中的任何特征之间毕业的可能性)从第一个数据集训练的模型上?您会建议什么方法?

1 个答案:

答案 0 :(得分:0)

我建议您使用OneClassSVM,这是一种无监督的异常检测。由于您的训练数据仅包含一个类别的样本,即“极有可能毕业”的训练,因此Logistic回归或神经网络可能无法在此处使用。最好考虑一下,无论您拥有什么数据都不是离群值,而另一类数据不太可能成为离群值。拟合OneClassSVM模型后,您可以使用decision_function来获取到分离的超平面的有符号距离,这对于一个内在点是正的,对于一个外在点是负的。然后在它上面您可以只是一个S形函数来找出概率。我在下面显示了一个示例:

from sklearn.svm import OneClassSVM
X = [[0], [0.44], [0.45], [0.46], [1]]
clf = OneClassSVM(gamma='auto').fit(X)

def sigmoid(x):
    return 1/(1+np.exp(-x))

prob = clf.decision_function([[0.455]]) # Not an outlier 
sigmoid(prob)
#array([0.50027839])

prob = clf.decision_function([[5]])     # An outlier 
sigmoid(prob)
#array([0.11356841])

希望这会有所帮助!