在Scikit Learn with Python中测试DecisionTreeClassifier时出错

在Scikit Learn with Python中测试DecisionTreeClassifier时出错,python,types,tree,crash,scikit-learn,Python,Types,Tree,Crash,Scikit Learn,我从csv文件中读取数据,第一行是字符串,其余都是小数。我必须将此文件中的数据从字符串转换为十进制,现在正试图对这些数据运行决策树分类器。我可以很好地训练数据,但是当我调用DecisionTreeClassifier.score()时,我得到错误消息:“unknown不受支持” 这是我的密码: cVal = KFold(len(file)-1, n_folds=10, shuffle=True); for train_index, test_index in cVal: obfA_tra

我从csv文件中读取数据,第一行是字符串,其余都是小数。我必须将此文件中的数据从字符串转换为十进制,现在正试图对这些数据运行决策树分类器。我可以很好地训练数据,但是当我调用DecisionTreeClassifier.score()时,我得到错误消息:“unknown不受支持”

这是我的密码:

cVal = KFold(len(file)-1, n_folds=10, shuffle=True);
for train_index, test_index in cVal:
    obfA_train, obfA_test = np.array(obfA)[train_index], np.array(obfA)[test_index]
    tTime_train, tTime_test = np.array(tTime)[train_index], np.array(tTime)[test_index]
    model = tree.DecisionTreeClassifier()
    model = model.fit(obfA_train.tolist(), tTime_train.tolist())
    print model.score(obfA_test.tolist(), tTime_test.tolist())
我在前面用这些行填写了obfA和tTime:

tTime.append(Decimal(file[i][11].strip('"')))
obfA[i-1][j-1] = Decimal(file[i][j].strip('"'))
所以obfA是2D数组,tTime是1D。之前,我尝试删除上述代码中的“tolist()”,但这并不影响错误。以下是它打印的错误报告:

in <module>()
---> print model.score(obfA_test.tolist(), tTime_test.tolist())

in score(self, X, y, sample_weight)
    """
    from .metrics import accuracy_score
 -->return accuracy_score(y, self.predict(X), sample_weight=sample_weight)

in accuracy_score(y_true, y_pred, normalize, sample_weight)
    # Compute accuracy for each possible representation
  ->y_type, y_true, y_pred = _check_clf_targets(y_true, y_pred)
    if y_type == 'multilabel-indicator':
        score = (y_pred != y_true).sum(axis=1) == 0

in _check_clf_targets(y_true, y_pred)
    if (y_type not in ["binary", "multiclass", "multilabel-indicator", "multilabel-sequences"]):
        -->raise ValueError("{0} is not supported".format(y_type))
    if y_type in ["binary", "multiclass"]:

ValueError: unknown is not supported

我不明白为什么错误报告显示了score()所需的3个参数,而文档中只有2个。什么是“自我”参数?有人能帮我解决这个错误吗?

这似乎让人想起了这个错误。问题似乎源于您用来拟合和评分模型的数据类型。填充输入数据数组时,请尝试
float
,而不是
Decimal
。这样我就不会有不准确的答案——你不能对DecisionTreeClassifier使用浮点/连续值。如果要使用浮动,请使用DecisionTreeGressor。否则,尝试使用整数或字符串(但这可能会偏离您试图完成的任务)


至于最后的自我提问,这是Python的语法特性。当您使用model.score(…)时,Python将其视为score(model…)。恐怕我现在对这件事知道的不多,但没有必要回答你原来的问题

这似乎让人想起了错误。问题似乎源于您用来拟合和评分模型的数据类型。填充输入数据数组时,请尝试
float
,而不是
Decimal
。这样我就不会有不准确的答案——你不能对DecisionTreeClassifier使用浮点/连续值。如果要使用浮动,请使用DecisionTreeGressor。否则,尝试使用整数或字符串(但这可能会偏离您试图完成的任务)


至于最后的自我提问,这是Python的语法特性。当您使用model.score(…)时,Python将其视为score(model…)。恐怕我现在对这件事知道的不多,但没有必要回答你原来的问题

这似乎让人想起了错误。问题似乎源于您用来拟合和评分模型的数据类型。填充输入数据数组时,请尝试
float
,而不是
Decimal
。这样我就不会有不准确的答案——你不能对DecisionTreeClassifier使用浮点/连续值。如果要使用浮动,请使用DecisionTreeGressor。否则,尝试使用整数或字符串(但这可能会偏离您试图完成的任务)


至于最后的自我提问,这是Python的语法特性。当您使用model.score(…)时,Python将其视为score(model…)。恐怕我现在对这件事知道的不多,但没有必要回答你原来的问题

这似乎让人想起了错误。问题似乎源于您用来拟合和评分模型的数据类型。填充输入数据数组时,请尝试
float
,而不是
Decimal
。这样我就不会有不准确的答案——你不能对DecisionTreeClassifier使用浮点/连续值。如果要使用浮动,请使用DecisionTreeGressor。否则,尝试使用整数或字符串(但这可能会偏离您试图完成的任务)


至于最后的自我提问,这是Python的语法特性。当您使用model.score(…)时,Python将其视为score(model…)。恐怕我现在对这件事知道的不多,但没有必要回答你原来的问题

我意识到我遇到的问题是因为我试图使用DecisionTreeClassifier预测连续值,而它们只能用于预测离散值。我将不得不转而使用回归模型

我意识到我遇到的问题是因为我试图使用DecisionTreeClassifier预测连续值,而它们只能用于预测离散值。我将不得不转而使用回归模型

我意识到我遇到的问题是因为我试图使用DecisionTreeClassifier预测连续值,而它们只能用于预测离散值。我将不得不转而使用回归模型

我意识到我遇到的问题是因为我试图使用DecisionTreeClassifier预测连续值,而它们只能用于预测离散值。我将不得不转而使用回归模型

我将所有内容从十进制更改为浮点,但它将错误从“不支持未知”更改为“不支持连续”。这将有助于更好地理解您想要做的事情。在你的主要问题中,你能简要描述一下obfA和tTime吗?我刚刚意识到您可能无法将浮点用于DecisionTreeClassifier,但您可能会发现使用DecisionTreeRegressor更有用,这取决于您的任务。我将所有内容从十进制更改为浮点,但它将错误从“未知不受支持”更改为“连续不受支持”更好地了解你想做什么会很有帮助。在你的主要问题中,你能简要描述一下obfA和tTime吗?我刚刚意识到,您可能无法对DecisionTreeClassifier使用浮动,但您可能会发现使用DecisionTreeReclassier、Dep
obfA_test.shape: (48L, 12L)
tTime_test.shape: (48L,)