输出百分比"可能性"的预测模型?



假设我想预测三年级学生大学毕业的可能性百分比(1-100%(。 我有一个包含 100 个观察值的训练数据集,所有这些观察结果都包含被归类为"极有可能毕业"的学生示例。 我有另一个数据集,包括500个观察结果(我们不知道是否有人已经毕业(。

我的问题是:我将如何获得所有 500 名学生的概率值,该值描述了他们根据从第一个数据集训练的模型上的许多特征(1-5 个特征之间的任何特征,如成绩、住在校内或校外等(毕业的可能性?您有什么建议?

我建议您使用OneClassSVM,这是一种无监督的异常值检测。由于您的训练数据仅包含一个类的样本,即"极有可能毕业",因此训练逻辑回归或神经网络可能在这里不起作用。最好考虑您拥有的任何数据都不是异常值,而另一个类别不太可能作为异常值毕业。拟合 OneClassSVM 模型后,您可以使用decision_function获取到分离超平面的有符号距离,这对于内在为正,对于异常值为负。然后,在它之上,你可以只用一个sigmoid函数来获取概率。我在下面展示了一个例子:

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])

最新更新