概率与机器学习

时间:2013-11-09 07:42:29

标签: python machine-learning

我正在使用python进行一些机器学习。

我有一个包含2000个条目的python nd数组。每个条目都有关于某些主题的信息,最后有一个布尔值告诉我他们是否是吸血鬼。

数组中的每个条目如下所示:

[height(cm), weight(kg), stake aversion, garlic aversion, reflectance, shiny, IS_VAMPIRE?]

我的目标是能够根据上面显示的主题数据给出一个新主题是吸血鬼的概率。

我用sklearn为我做了一些机器学习:

clf = tree.DecisionTreeRegressor()

clf=clf.fit(X,Y)


print clf.predict(W)

其中W是新主题的数据数组。我写的脚本返回布尔值,但我希望它返回概率。我该如何修改它?

4 个答案:

答案 0 :(得分:2)

使用DecisionTreeClassifier而不是regressor,并使用predict_proba方法。或者,您可以使用逻辑回归(也可以在scikit中学习。)

基本理念是:

clf = tree.DecisionTreeClassifier()

clf=clf.fit(X,Y)


print clf.predict_proba(W)

答案 1 :(得分:2)

如果您正在使用DecisionTreeRegressor(),那么您可以使用分数函数来确定预测的确定系数R ^ 2。

请找到文档的以下链接。

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor

您也可以列出交叉验证分数(10个样本),如下所示

from sklearn.model_selection import cross_val_score


clf = tree.DecisionTreeRegressor()

clf=clf.fit(X,Y)

cross_val_score(clf, X, Y, cv=10)

print clf.predict(W)

这给出了与此类似的输出,

array([ 0.61..., 0.57..., -0.34..., 0.41..., 0.75...,
        0.07..., 0.29..., 0.33..., -1.42..., -1.77...])

答案 2 :(得分:0)

您想使用能够提供概率的分类器。此外,您需要确保在测试阵列W中,数据点不是任何训练数据的复制品。如果它与你的任何训练数据完全匹配,它认为它绝对是吸血鬼或绝对不是吸血鬼,所以会给你0或1.

答案 3 :(得分:0)

您正在使用回归器,但您可能想使用分类器。

您还需要使用一个分类器,该分类器可以为您提供后验概率,例如决策树逻辑回归。其他分类器可能会给您一个分数(某种程度的置信度),这也可以满足您的需求。