4

我正在使用 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

4 回答 4

2

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

基本思想是这样的:

clf = tree.DecisionTreeClassifier()

clf=clf.fit(X,Y)


print clf.predict_proba(W)
于 2013-11-09T07:59:16.390 回答
2

如果您使用的是 DecisionTreeRegressor() 那么您可以使用 score 函数来确定预测的决定系数 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...])
于 2017-11-15T10:57:58.133 回答
0

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

于 2014-03-06T01:58:10.363 回答
0

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

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

于 2019-10-22T14:39:21.310 回答