首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我试图得到一个决策树的准确性的估计,为什么我得到一个TypeError?

我试图得到一个决策树的准确性的估计,为什么我得到一个TypeError?
EN

Stack Overflow用户
提问于 2020-02-17 22:44:31
回答 1查看 736关注 0票数 0
代码语言:javascript
运行
复制
from sklearn.tree import DecisionTreeClassifier
import pandas as pd
from sklearn.metrics import accuracy_score

## training data (20%)
data = pd.read_csv("train.csv", usecols=[1,2,9])
X_train = pd.read_csv("train.csv", usecols=[2,9])
y_train = pd.read_csv("train.csv", usecols=[1])

dt = DecisionTreeClassifier(max_depth=6)
dt.fit(X_train, y_train)

y_predict = dt.predict(X_test)

accuracy = dt(y_test, y_predict)

我得到"TypeError:'DecisionTreeClassifier‘对象是不可调用的“,即使我(主要是遵循数据放大器教程)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-17 23:01:13

dt(...)正在尝试“调用”dt,因为dt不是一个函数,所以不能这样做。您需要一个从真标签和预测标签中计算准确性的函数。

试试像这样的东西

代码语言:javascript
运行
复制
def calculate_accuracy(y_true, y_predicted):
    num_correct = sum(map(lambda t, p: t==p, y_true, y_predicted))
    return num_correct / len(y_true)
代码语言:javascript
运行
复制
accuracy = calculate_accuracy(y_test, y_predict)

编辑:

我的calculate_accuracy()的初学者友好版本看起来就像

代码语言:javascript
运行
复制
def calculate_accuracy(y_true, y_predicted):
    num_correct = 0
    for i in range(len(y_true)):
        if (y_true[i] == y_predicted[i]):
            num_correct = num_correct + 1
    return num_correct / len(y_true)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60271397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档