나는'm 이상 오차:
classification.py:1113: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
'precision', 'predicted', average, warn_for)`
하지만 그것 또한 인쇄 f-점수가 첫 번째 시간을 실행:
metrics.f1_score(y_test, y_pred, average='weighted')
두 번째 시간을 실행,그것이 제공하는 점수는 오류가 발생하지 않습니다. 그 이유는 무엇입니까?
>>> y_pred = test.predict(X_test)
>>> y_test
array([ 1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28,
30, 32, 18, 5, 34, 4, 25, 12, 24, 13, 21, 38, 19, 33, 33, 16, 20,
18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 12, 36,
25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 34, 25, 26, 29, 14, 37, 23,
12, 19, 19, 3, 2, 31, 30, 11, 2, 24, 19, 27, 22, 13, 6, 18, 20,
6, 34, 33, 2, 37, 17, 30, 24, 2, 36, 9, 36, 19, 33, 35, 0, 4,
1])
>>> y_pred
array([ 1, 10, 35, 7, 7, 29, 26, 3, 8, 23, 39, 11, 20, 4, 5, 23, 28,
30, 32, 18, 5, 39, 4, 25, 0, 24, 13, 21, 38, 19, 33, 33, 16, 20,
18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22,
11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 30, 36,
25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 4, 22, 26, 29, 14, 37, 23,
12, 19, 19, 3, 25, 31, 30, 11, 25, 24, 19, 27, 22, 13, 6, 18, 20,
6, 39, 33, 9, 37, 17, 30, 24, 9, 36, 39, 36, 19, 33, 35, 0, 4,
1])
>>> metrics.f1_score(y_test, y_pred, average='weighted')
C:\Users\Michael\Miniconda3\envs\snowflakes\lib\site-packages\sklearn\metrics\classification.py:1113: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.
'precision', 'predicted', average, warn_for)
0.87282051282051276
>>> metrics.f1_score(y_test, y_pred, average='weighted')
0.87282051282051276
>>> metrics.f1_score(y_test, y_pred, average='weighted')
0.87282051282051276
또한,이행'정밀','예상',평균,warn_for)
오류 메시지가? 이 없 열기는 괄호 왜 그것으로 끝나 괄호? 실행하고 sklearn0.18.1 사용하는 파이썬 3.6.0 에 conda 환경에서 윈도우 10.
서에 언급된 대로 주석,일부 레이블에 y_true don't 에 나타나 y_pred. 특히 이 경우에,라벨'2'지 않는 예측:
>>> set(y_test) - set(y_pred)
{2}
이것이 의미 없다는 것을 F 점수를 계산에 대한 이 레이블,따라서 F-에 대한 점수를 이 경우로 간주됩 0.0. 이후 요청하신의 평균 점수해야 합니다 계정으로 가지고의 점수는 0 이었 계산에 포함되어 있고,이것은 왜 은 배우는 것은 당신을 보여주는 것을 경고합니다.
이 날을 제공하지 않고 오류가 있습니다. 제가 언급했듯이,이경고는 다르게 처리에 오류가 있습니다. 기본 동작을 가장 환경을 표시하는 특정한 경고 있습니다. 이 동작을 변경할 수 있습니다:
import warnings
warnings.filterwarnings('always') # "error", "ignore", "always", "default", "module" or "once"
당신이 설정이 가져오기 전에 다른 모듈이 표시됩 경고 실행할 때마다 코드입니다.
방법은 없을 방지하고 이 경고를 첫번째로,따로 설정하기 위한경고입니다.filterwarnings('무')
. 당신할 수 있습니다do,결정고 있는지에 관심이 점수의 레이블이 있는지 예측한 다음을 명시적으로 지정 라벨는에 관심이 있는(레이블들에서 예측되는 한 번 이상):
>>> metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred))
0.91076923076923078
경고가 표시되지 않은 경우에.
허용된 응답을 설명이 이미 잘 이유에는 경고가 발생합니다. 는 경우에 당신은 단순히 당신을 제어하려는 경고,하나를 사용할 수 있precision_recall_fscore_support
. 제공(반기)에 인수warn_for
하는 데 사용할 수 있는 음소거의 경고입니다.
(_, _, f1, _) = metrics.precision_recall_fscore_support(y_test, y_pred,
average='weighted',
warn_for=tuple())
으로 언급은 이미 일부 의견에 사용합니다.
는 오류 메시지국,하는 데 사용되는 방법을 얻을 F 점수에서"Classification"의 일부 sklearn-따라서 이야기에 대한"라벨".
당신은 회귀 문제입니까? Sklearn 제공합 a"F 점수를"는 방법에 대한 회귀분석에서"feature selection"그룹:http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.f_regression.html
이 있는 경우에 분류 문제@Shovalt's 응답 올바른 것 같다.