SKlearn指标因预期的y对象和预测的y对象而失败

时间:2014-10-25 04:48:19

标签: pandas scikit-learn

在Sci-kit中,学习了一些带有训练和测试数据的模型。

模型工作正常,但当我尝试计算任何准确度指标时,它会失败。我假设我的预测对象(pred y)或预期对象(true y)有问题。

对于这个测试,我看过了预测。它是一个对象,有119 0/1的值。

真y也是一个对象,有119 0/1的值。

我的代码和错误如下,以及对象比较。这是我不明白的错误。

"预期"是我的真实和" target_predicted"是预测的y。

我尝试了其他指标和其他模型 - 当我处于这个阶段时,它总是失败。

有任何帮助吗?

#Basic Decsion Tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(bank_train, bank_train_target)
print clf

DecisionTreeClassifier(compute_importances=None, criterion='gini',
            max_depth=None, max_features=None, max_leaf_nodes=None,
            min_density=None, min_samples_leaf=1, min_samples_split=2,
            random_state=None, splitter='best')

#test model using test data
target_predicted = clf.predict(bank_test)
accuracy_score(expected,target_predicted)


#error
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-23d1a990a192> in <module>()
      1 #test model using test data
      2 target_predicted = clf.predict(bank_test)
----> 3 accuracy_score(expected,target_predicted)


/Users/mpgartland1/anaconda/lib/python2.7/site-packages/sklearn/metrics/metrics.pyc in accuracy_score(y_true, y_pred, normalize, sample_weight)
   1295 
   1296     # Compute accuracy for each possible representation
-> 1297     y_type, y_true, y_pred = _check_clf_targets(y_true, y_pred)
   1298     if y_type == 'multilabel-indicator':
   1299         score = (y_pred != y_true).sum(axis=1) == 0

/Users/mpgartland1/anaconda/lib/python2.7/site-packages/sklearn/metrics/metrics.pyc in _check_clf_targets(y_true, y_pred)
    125     if (y_type not in ["binary", "multiclass", "multilabel-indicator",
    126                        "multilabel-sequences"]):
--> 127         raise ValueError("{0} is not supported".format(y_type))
    128 
    129     if y_type in ["binary", "multiclass"]:

ValueError: unknown is not supported

这是两个对象的比较。

print target_predicted.size
print expected.size
print target_predicted.dtype
print expected.dtype
print target_predicted
print expected

119
119
object
object
[1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1
 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0
 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1
 0 1 0 1 0 0 0 1]
[1 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1
 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0
 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1
 0 1 0 0 0 1 0 1]

如果我尝试混淆矩阵或其他指标时也会失败 - 使用非常曲奇的代码。所以,我猜是在对象中。

谢谢

0 个答案:

没有答案