Tính điểm F1, còn được gọi là điểm F hoặc F-SEALURE cân bằng.
Điểm F1 có thể được hiểu là trung bình hài hòa của độ chính xác và thu hồi, trong đó điểm F1 đạt giá trị tốt nhất của nó ở mức 1 và điểm tệ nhất ở mức 0. Đóng góp tương đối của độ chính xác và thu hồi điểm F1 bằng nhau. Công thức cho điểm F1 là:
F1 = 2 * [precision * recall] / [precision + recall]
Trong trường hợp đa lớp và đa nhãn, đây là mức trung bình của điểm F1 của mỗi lớp với trọng số tùy thuộc vào tham số average
.
Đọc thêm trong Hướng dẫn sử dụng.User Guide.
Các tham số: Y_TRUE1D giống như mảng hoặc mảng chỉ báo nhãn / ma trận thưa thớt:y_true1d array-like, or label indicator array / sparse matrixSự thật mặt đất [đúng] giá trị mục tiêu.
Các mục tiêu ước tính được trả lại bởi một phân loại.
LabelsArray-like, default = nonearray-like, default=NoneTập hợp các nhãn bao gồm khi average != 'binary'
và thứ tự của chúng nếu average is None
. Các nhãn có trong dữ liệu có thể được loại trừ, ví dụ để tính toán mức trung bình đa lớp bỏ qua một lớp âm tính đa số, trong khi các nhãn không có trong dữ liệu sẽ dẫn đến 0 thành phần ở mức trung bình vĩ mô. Đối với các mục tiêu đa nhãn, nhãn là các chỉ số cột. Theo mặc định, tất cả các nhãn trong y_true
và y_pred
được sử dụng theo thứ tự được sắp xếp.
Đã thay đổi trong phiên bản 0.17: Tham số labels
được cải thiện cho vấn đề đa lớp.Parameter labels
improved for multiclass problem.
Lớp để báo cáo nếu average='binary'
và dữ liệu là nhị phân. Nếu dữ liệu là đa nhãn hoặc đa nhãn, điều này sẽ bị bỏ qua; Cài đặt labels=[pos_label]
và average != 'binary'
sẽ chỉ báo cáo điểm cho nhãn đó.
Tham số này được yêu cầu cho các mục tiêu đa nhãn/đa nhãn. Nếu
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]1, điểm số cho mỗi lớp được trả về. Mặt khác, điều này xác định loại trung bình được thực hiện trên dữ liệu:
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]2:
Chỉ báo cáo kết quả cho lớp được chỉ định bởi
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]3. Điều này chỉ áp dụng nếu các mục tiêu [
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]4] là nhị phân.
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]5:
Tính toán số liệu trên toàn cầu bằng cách đếm tổng số tích cực thực sự, tiêu cực sai và dương tính sai.
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]6:
Tính toán số liệu cho mỗi nhãn và tìm ý nghĩa không trọng số của chúng. Điều này không tính đến sự mất cân bằng nhãn.
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]7:
Tính toán số liệu cho mỗi nhãn và tìm trọng số trung bình của chúng được hỗ trợ [số lượng phiên bản thực cho mỗi nhãn]. Điều này thay đổi ‘macro, để giải thích sự mất cân bằng nhãn; Nó có thể dẫn đến một điểm F không nằm giữa độ chính xác và thu hồi.
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]8:
Tính toán số liệu cho từng trường hợp và tìm mức trung bình của chúng [chỉ có ý nghĩa đối với phân loại đa nhãn trong đó điều này khác với
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]9].sample_weightarray giống như hình dạng [n_samples,], mặc định = không cóarray-like of shape [n_samples,], default=None
Trọng lượng mẫu.
zero_division ”cảnh báo, 0 hoặc 1, mặc định =" cảnh báo "“warn”, 0 or 1, default=”warn”Đặt giá trị để trả về khi có một phân chia bằng không, tức là khi tất cả các dự đoán và nhãn là âm. Nếu được đặt thành cảnh báo cảnh báo, thì điều này hoạt động như 0, nhưng cảnh báo cũng được nêu ra.
Điểm F1 của lớp dương tính trong phân loại nhị phân hoặc trung bình có trọng số của điểm F1 của mỗi lớp cho nhiệm vụ đa lớp.
Ghi chú
Khi average
0, độ chính xác là không xác định. Khi average
1, thu hồi là không xác định. Trong các trường hợp như vậy, theo mặc định, số liệu sẽ được đặt thành 0, cũng như điểm F và average
2 sẽ được nâng lên. Hành vi này có thể được sửa đổi với average
3.
Người giới thiệu
Ví dụ
>>> from sklearn.metrics import f1_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> f1_score[y_true, y_pred, average='macro'] 0.26... >>> f1_score[y_true, y_pred, average='micro'] 0.33... >>> f1_score[y_true, y_pred, average='weighted'] 0.26... >>> f1_score[y_true, y_pred, average=None] array[[0.8, 0. , 0. ]] >>> y_true = [0, 0, 0, 0, 0, 0] >>> y_pred = [0, 0, 0, 0, 0, 0] >>> f1_score[y_true, y_pred, zero_division=1] 1.0... >>> # multilabel classification >>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]] >>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]] >>> f1_score[y_true, y_pred, average=None] array[[0.66666667, 1. , 0.66666667]]