计算 np.mean 预测值并应用百分比过滤器

我需要计算 clf.predict 的 np.mean,但仅限于预测值百分比超过 80% 的行。

我当前的代码:

clf = DecisionTreeClassifier(random_state=1)
clf.fit(X, Y)
dropIndexes = []
for i in range(len(X)):
    proba = clf.predict_proba ([X.values[i]])
    if (proba[0][0] < 80 and proba[0][1] < 80):
        dropIndexes.append(i)
# 删除预测值低于 80% 的所有行
X.drop(dropIndexes, inplace=True)
Y.drop(dropIndexes, inplace=True)
# 返回数组元素的平均值
print ("ERR:",  np.mean(Y != clf.predict(X)))

有没有可能让这个代码运行得更快?


回答:

您的循环是多余的,因为 predict_proba 可以处理矩阵。您可以用以下代码替换它:

 prd = clf.predict_proba(X)
 dropIndexes = (prd[:, 0] < 0.8) & (prd[:, 1] < 0.8)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注