sklearn.metrics.classification_report 函数可以用于计算分类模型的准确率,召回率和F1值。这些指标对于评估分类模型的性能非常重要。
neighbors.KNeighborsClassifier() 是 Scikit-learn 中的一个类,用于实现基于最近邻算法的分类器。K最近邻 (KNN) 是一种简单而有效的监督学习算法,用于分类和回归任务。KNN分类器基于一个简单的思想:如果一个样本在特征空间中的K个最近邻居中的大多数属于某个类别,那么该样本也属于这个类别。KNN算法中的K是一个用户指定的参数,代表了邻居的数量。neighbors.KNeighborsClassifier() 类实现了K最近邻分类算法。使用这个类可以构建一个KNN分类器,并对数据进行分类预测。以下是一些常用的参数和方法:
- 参数
- n_neighbors: 指定要考虑的邻居数量k
- weights: 指定邻居的权重计算方式,可选值包括’uniform’ (所有邻居权重相等) 和 distance (权重与距离的倒数成比例)
- algorithm: 指定用于计算最近邻居的算法,可选值包括 ‘auto’ (根据数据自动选择算法), ‘ball_tree’, ‘kd_tree’和’brute’
- 方法
- fit(X, y): 用于训练模型,其中X是特征数据,y是对应的标签数据。
- predict(X): 用于对新数据进行分类预测,其中X是待预测的特征数据。
- score(X, y): 用于计算模型在给定数据上的准确率,其中X是特征数据,y是对应的真实标签数据。
下面是 classification_report 函数的用法示例:
from sklearn.metrics import classification_report
# 假设 y_true 是真实标签,y_pred 是模型预测的标签
# classification_report 接受两个参数:y_true 和 y_pred
# y_true 是真实的标签,y_pred 是模型预测的标签
# target_names 参数是一个可选参数,用于指定每个类别的名称
report = classification_report(y_true, y_pred, target_names = target_names)
print(report)
介绍什么是召回率和F1值。
- 召回率 (Recall)
- 召回率是指在所有实际为正例的样本中,模型成功预测为正例的样本数量占比。换句话说,召回率衡量了模型对于正例样本的识别能力,即模型有多少能力找出所有的正例。召回率的计算公式为:
Recall = (TP) / (TP + FN)
其中,TP表示真正例 (True Positives), 即模型正确预测为正例的样本数量;FN表示假负例 (False Negatives), 即模型将正例错误预测为负例的样本数量。
- 召回率是指在所有实际为正例的样本中,模型成功预测为正例的样本数量占比。换句话说,召回率衡量了模型对于正例样本的识别能力,即模型有多少能力找出所有的正例。召回率的计算公式为:
- F1值
- F1值是综合考虑了模型的精确率 (Precision) 和 召回率 (Recall) 的指标。F1值是精确率和召回率的调和平均数,它将两者都考虑在内,因此可以更全面地评估模型地性能。F1值地计算公式为:
F1 = 2 x (Precision x Recall) / (Precision + Recall)
其中,Precision表示精确率,即模型预测为正例地样本中,真正为正例地样本数量占比。F1值越高,表示模型地性能越好。
- F1值是综合考虑了模型的精确率 (Precision) 和 召回率 (Recall) 的指标。F1值是精确率和召回率的调和平均数,它将两者都考虑在内,因此可以更全面地评估模型地性能。F1值地计算公式为:
下面是代码例子
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import neighbors
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
iris = load_iris()
x = iris.data
y = iris.target
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1, shuffle=True, stratify=y)
print("len_x_test: ", len(x_test))
print("len_x_train: ", len(x_train))
model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(x_train, y_train)
prediction = model.predict(x_test)
print(classification_report(y_true = y_test, y_pred = prediction))
结果如下
len_x_test: 45
len_x_train: 105
precision recall f1-score support
0 1.00 1.00 1.00 15
1 0.94 1.00 0.97 15
2 1.00 0.93 0.97 15
accuracy 0.98 45
macro avg 0.98 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
都看到这了,点个赞支持一下咯~