python - 预测模型输出百分比 'likelihood' ?

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

假设我想预测三年级学生大学毕业的可能性百分比 (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])

关于python - 预测模型输出百分比 'likelihood' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59997232/

相关文章:

python - 如何存储 TfidfVectorizer 以备将来在 scikit-learn 中使用?

python - 无法将 Scikit-Learn Imputer 应用于具有两个特征的数据集

能够在浏览器上显示图像的 Python 服务器

python - 在 Linux 上将 Python 编译为 .EXE 而不是 .ELF

c++ - 在预期下执行的随机森林

python - 如何使文本分类给出 None 类别

python-2.7 - Sklearn GradientBoostingRegressor 中的早期停止

python - 为什么 mr.developer 不安装我的包依赖项?

python - 在 Python 的 numpy/scipy 中计算数组中唯一元素的有效方法

machine-learning - 在 64 位 python 上训练的 Scikit-Learn 随机森林无法在 32 位 python 上打开