我有二进制分类问题,第二类的f1 score
低。{
我需要两个f1 scores
都很好,因为我试图预测一件商品的销售概率。
如果有帮助,我的数据集也是不平衡的。
我认为我的模型正在推广而不是做出正确的预测。
答案 0 :(得分:0)
尝试使用metrics.classification_report()
Eg) print metrics.classification_report(y_test, y_pred)
precision recall f1-score support
0 0.11 0.21 0.14 24
1 0.18 0.21 0.20 42
2 0.14 0.15 0.15 39
3 0.12 0.12 0.12 48
4 0.19 0.13 0.16 52
5 0.20 0.04 0.07 23
avg / total 0.16 0.15 0.15 228
答案 1 :(得分:0)
我参加聚会很晚,但是对于从“未来”中找到的人,请尝试以下方法:
from sklearn.metrics import f1_score
y_true = [1, 0, 1, 0, 0]
y_pred = [1, 1, 1, 0, 1]
f1_score(y_true, y_pred, average='binary')
它将返回肯定类的分数(True
/ 1
)。您可以通过如上所述打印出分类报告来确认这一点。
答案 2 :(得分:-1)
iris
的{{1}}数据集的完整示例。train-test spliting
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
# import data
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
#keep only 2 classes to make the problem binary
X = X[y!=2]
y = y[y!=2]
# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Fit the classifier using the training data
classifier = svm.SVC(kernel='linear', C=0.01)
classifier.fit(X_train, y_train)
# Predict using the trained classifier and the test data
y_pred = classifier.predict(X_test)
print(classification_report(y_test, y_pred, target_names=class_names))
precision recall f1-score support
setosa 1.00 1.00 1.00 13
versicolor 1.00 1.00 1.00 12
avg / total 1.00 1.00 1.00 25
的{{1}}数据集的完整示例。iris