python - 用Python检查决策树分类器的准确性

标签 python scikit-learn classification decision-tree

我写了一个函数,它接受数据集(excel/pandas)和一些值,然后用决策树分类器预测结果。我已经用 sklearn 做到了。 你能帮我解决这个问题吗,我浏览了网络和这个网站,但找不到有效的答案。 我试过这样做,但它不起作用:

from sklearn.metrics import accuracy_score
score = accuracy_score(variable_list, result_list)

这是我得到的错误:

ValueError: Classification metrics can't handle a mix of continuous-multioutput and multiclass targets

这是代码(为了准确性我删除了代码)

import pandas as pd
import math
import xlrd
from sklearn.model_selection import train_test_split
from sklearn import tree

def predict_concrete_class(input_data, cement, blast_fur_slug,fly_ash,
                            water, superpl, coarse_aggr, fine_aggr, days):

    data_for_tree = concrete_strenght_class(input_data)

    variable_list = []
    result_list = []

    for index, row in data_for_tree.iterrows():
        variable = row.tolist()
        variable = variable[0:8]

        variable_list.append(variable)

        result_list.append(row[-1])

    decision_tree = tree.DecisionTreeClassifier()
    decision_tree = decision_tree.fit(variable_list,result_list)

    input_values = [cement, blast_fur_slug, fly_ash, water, superpl, coarse_aggr, fine_aggr, days]

    prediction = decision_tree.predict([input_values])

    info = "Prediction of future concrete class after "+ str(days)+" days: "+ str(prediction[0])

    return info

print(predict_concrete_class(data, 500, 0, 0, 200, 0, 1125, 613, 3))

最佳答案

  1. 将您的数据拆分为训练和测试:

    var_train, var_test, res_train, res_test = train_test_split(variable_list, result_list, test_size = 0.3)
    
  2. 在训练集上训练您的决策树:

    decision_tree = tree.DecisionTreeClassifier()
    decision_tree = decision_tree.fit(var_train, res_train)
    
  3. 通过计算测试集的准确度来测试模型性能:

    res_pred = decision_tree.predict(var_test)
    score = accuracy_score(res_test, res_pred)
    

    或者你可以直接使用decision_tree.score:

    score = decision_tree.score(var_test, res_test)
    

您收到的错误是因为您试图将 variable_list(这是您的输入特征列表)作为 accuracy_score 中的参数传递。您应该传递真实标签和预测标签列表。

关于python - 用Python检查决策树分类器的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54884252/

相关文章:

Java 相当于 Matlab 的 `eps` 或 Numpy/Python 的 `spacing` 函数(浮点相对精度)

python - 找不到 openssl 库

python - 返回时间段之间的绝对差异

python - 在 Django 1.8 或更高版本中填充时出现 "Models aren' t 加载错误

python - ValueError : Number of labels is 1. 使用 silhouette_score 时有效值为 2 到 n_samples - 1(含)

machine-learning - LDA 文本分类的良好训练数据?

python - Python 中的 Scikit-learn(svm 函数)

python - Scikit 多类分类指标,分类报告

machine-learning - 添加特征一定会让模型变得更好吗?

classification - 自适应提升与 SVM