2

Вот связанный код и документ, задаваясь вопросом по умолчанию cross_val_score без явного указания score, выходной массив означает точность, AUC или некоторые другие показатели?scikit изучить модель дерева решений

Использование Python 2.7 с интерпретатором miniconda.

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html

>>> from sklearn.datasets import load_iris 
>>> from sklearn.cross_validation import cross_val_score 
>>> from sklearn.tree import DecisionTreeClassifier 
>>> clf = DecisionTreeClassifier(random_state=0) 
>>> iris = load_iris() 
>>> cross_val_score(clf, iris.data, iris.target, cv=10) 
...        
... 
array([ 1.  , 0.93..., 0.86..., 0.93..., 0.93..., 
     0.93..., 0.93..., 1.  , 0.93..., 1.  ]) 

С уважением, Лин

ответ

1

Из user guide:

По умолчанию оценки вычисляется на каждом CV итерации является методом оценки оценки , Можно изменить с помощью параметра скоринга:

От DecisionTreeClassifier documentation:

Возвращает точность означает на приведенных данных испытаний и этикеток. В классификации с несколькими метками это точность поднабора, которая является резкой метрикой , так как для каждого образца требуется, чтобы каждый набор меток был правильно предсказанным.

Не путайте «среднюю точность», это просто обычный способ вычисления точности. Последующие ссылки на source:

from .metrics import accuracy_score 
    return accuracy_score(y, self.predict(X), sample_weight=sample_weight) 

теперь source для metrics.accuracy_score

def accuracy_score(y_true, y_pred, normalize=True, sample_weight=None): 
    ... 
    # Compute accuracy for each possible representation 
    y_type, y_true, y_pred = _check_targets(y_true, y_pred) 
    if y_type.startswith('multilabel'): 
     differing_labels = count_nonzero(y_true - y_pred, axis=1) 
     score = differing_labels == 0 
    else: 
     score = y_true == y_pred 

    return _weighted_sum(score, sample_weight, normalize) 

И если вы still aren't convinced:

def _weighted_sum(sample_score, sample_weight, normalize=False): 
    if normalize: 
     return np.average(sample_score, weights=sample_weight) 
    elif sample_weight is not None: 
     return np.dot(sample_score, sample_weight) 
    else: 
     return sample_score.sum() 

Примечание: для accuracy_score параметров нормализуют по умолчанию True, таким образом, это просто возвращает np.average б oolean numpy, поэтому это просто среднее количество правильных прогнозов.

+0

Спасибо juanpa.arrivillaga, если это проблема классификации по двум классам, каждое предсказание является правильным или неправильным. Смутно, что означает средняя точность? –

+1

@LinMa См. Мое редактирование - это просто точность. –

+0

Спасибо juanpa за терпение ответить, отметьте свой ответ как ответ. –

1

Если скоринг аргумент не задан, cross_val_score будет по умолчанию использовать .score метод оценки, который вы используете. Для DecisionTreeClassifier, это означает, точность (как показано в приведенной ниже строке документации):

In [11]: DecisionTreeClassifier.score? 
Signature: DecisionTreeClassifier.score(self, X, y, sample_weight=None) 
Docstring: 
Returns the mean accuracy on the given test data and labels. 

In multi-label classification, this is the subset accuracy 
which is a harsh metric since you require for each sample that 
each label set be correctly predicted. 

Parameters 
---------- 
X : array-like, shape = (n_samples, n_features) 
    Test samples. 

y : array-like, shape = (n_samples) or (n_samples, n_outputs) 
    True labels for X. 

sample_weight : array-like, shape = [n_samples], optional 
    Sample weights. 

Returns 
------- 
score : float 
    Mean accuracy of self.predict(X) wrt. y. 
+0

Спасибо Рэнди, если это проблема классификации по двум классам, каждое предсказание является правильным или неправильным. Смутно, что означает средняя точность? –

+1

Это просто процент правильных классификаций, если это проблема классификации с двумя классами, если вы прогнозируете 0/1. Если вы прогнозируете вероятности, это будет среднее значение (ошибка 1-предсказания) для каждого прогноза. –

+0

Спасибо Рэнди. :) –

Смежные вопросы