Tôi muốn tính AUC, độ chính xác, chính xác cho trình phân loại của tôi. Tôi đang thực hiện nghiên cứu được giám sát:Tính sklearn.roc_auc_score cho nhiều lớp
Đây là mã làm việc của tôi. Mã này hoạt động tốt cho lớp nhị phân, nhưng không hoạt động đối với nhiều lớp. hãy giả sử rằng bạn có một dataframe với các lớp nhị phân:
sample_features_dataframe = self._get_sample_features_dataframe()
labeled_sample_features_dataframe = retrieve_labeled_sample_dataframe(sample_features_dataframe)
labeled_sample_features_dataframe, binary_class_series, multi_class_series = self._prepare_dataframe_for_learning(labeled_sample_features_dataframe)
k = 10
k_folds = StratifiedKFold(binary_class_series, k)
for train_indexes, test_indexes in k_folds:
train_set_dataframe = labeled_sample_features_dataframe.loc[train_indexes.tolist()]
test_set_dataframe = labeled_sample_features_dataframe.loc[test_indexes.tolist()]
train_class = binary_class_series[train_indexes]
test_class = binary_class_series[test_indexes]
selected_classifier = RandomForestClassifier(n_estimators=100)
selected_classifier.fit(train_set_dataframe, train_class)
predictions = selected_classifier.predict(test_set_dataframe)
predictions_proba = selected_classifier.predict_proba(test_set_dataframe)
roc += roc_auc_score(test_class, predictions_proba[:,1])
accuracy += accuracy_score(test_class, predictions)
recall += recall_score(test_class, predictions)
precision += precision_score(test_class, predictions)
Cuối cùng tôi chia các kết quả trong K dĩ nhiên để có được trung bình AUC, độ chính xác vv Mã này đang làm việc tốt. Tuy nhiên, tôi không thể tính toán tương tự cho nhiều lớp:
train_class = multi_class_series[train_indexes]
test_class = multi_class_series[test_indexes]
selected_classifier = RandomForestClassifier(n_estimators=100)
selected_classifier.fit(train_set_dataframe, train_class)
predictions = selected_classifier.predict(test_set_dataframe)
predictions_proba = selected_classifier.predict_proba(test_set_dataframe)
tôi thấy rằng đối với đa lớp tôi phải thêm tham số "trọng" đối với trung bình.
roc += roc_auc_score(test_class, predictions_proba[:,1], average="weighted")
tôi có một lỗi: nâng ValueError ("{0} định dạng không được hỗ trợ" .format (y_type))
ValueError: định dạng nhiều lớp không được hỗ trợ