python - 输出百分比“可能性”的预测模型?
问题描述
假设我想预测一个三年级学生大学毕业的可能性百分比(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])
希望这可以帮助!
推荐阅读
- java - 如何在 Eclipse 中的较大项目中分析您正在使用的 Java 代码的运行时
- node.js - 安装特雷弗先生
- list - 谓词给出未绑定变量的列表而不是所有可能的列表
- r - 如果第一行的第一列包含“区域”字样,则将整行作为标题。我如何在 R 中编码?
- postgresql - 在使用 keycloak 保护的 springboot 应用程序中实现基于模式的多租户
- mysql - 使用 mysql-commande 行与 delphi
- safari - Safari 不发送 ice 候选人
- java - 没有 Build.Groovy 文件的 Grails 项目。如何添加插件
- sql - 游戏数据库双外键
- r - 数据不完整的水平图