Accuracy: %.4f Precision: %.4f Recall: %.4f F-score: %.4f
时间: 2024-05-27 18:08:24 浏览: 16
这是一个评估分类模型性能的指标,其中:
- Accuracy(准确率):模型正确分类的样本数占总样本数的比例。
- Precision(精确率):模型正确分类为正例的样本数占模型分类为正例的样本数的比例。
- Recall(召回率):模型正确分类为正例的样本数占真实正例的样本数的比例。
- F-score(F值):综合考虑了 Precision 和 Recall,是二者的调和平均数。
这些指标越高,表示模型性能越好。
相关问题
import pandas as pd from sklearn import metrics from sklearn.model_selection import train_test_split import xgboost as xgb import matplotlib.pyplot as plt import openpyxl # 导入数据集 df = pd.read_csv("/Users/mengzihan/Desktop/正式有血糖聚类前.csv") data=df.iloc[:,:35] target=df.iloc[:,-1] # 切分训练集和测试集 train_x, test_x, train_y, test_y = train_test_split(data,target,test_size=0.2,random_state=7) # xgboost模型初始化设置 dtrain=xgb.DMatrix(train_x,label=train_y) dtest=xgb.DMatrix(test_x) watchlist = [(dtrain,'train')] # booster: params={'booster':'gbtree', 'objective': 'binary:logistic', 'eval_metric': 'auc', 'max_depth':12, 'lambda':10, 'subsample':0.75, 'colsample_bytree':0.75, 'min_child_weight':2, 'eta': 0.025, 'seed':0, 'nthread':8, 'gamma':0.15, 'learning_rate' : 0.01} # 建模与预测:50棵树 bst=xgb.train(params,dtrain,num_boost_round=50,evals=watchlist) ypred=bst.predict(dtest) # 设置阈值、评价指标 y_pred = (ypred >= 0.5)*1 print ('Precesion: %.4f' %metrics.precision_score(test_y,y_pred)) print ('Recall: %.4f' % metrics.recall_score(test_y,y_pred)) print ('F1-score: %.4f' %metrics.f1_score(test_y,y_pred)) print ('Accuracy: %.4f' % metrics.accuracy_score(test_y,y_pred)) print ('AUC: %.4f' % metrics.roc_auc_score(test_y,ypred)) ypred = bst.predict(dtest) print("测试集每个样本的得分\n",ypred) ypred_leaf = bst.predict(dtest, pred_leaf=True) print("测试集每棵树所属的节点数\n",ypred_leaf) ypred_contribs = bst.predict(dtest, pred_contribs=True) print("特征的重要性\n",ypred_contribs ) xgb.plot_importance(bst,height=0.8,title='影响糖尿病的重要特征', ylabel='特征') plt.rc('font', family='Arial Unicode MS', size=14) plt.show()
这段代码是使用XGBoost进行二分类任务的建模和预测,并输出了一些评价指标和特征重要性。下面是对代码的解释:
1. 导入必要的库:`pandas`用于数据处理,`sklearn`中的`metrics`模块用于评价指标,`train_test_split`用于划分训练集和测试集,`xgboost`用于建模,`matplotlib.pyplot`用于画图,`openpyxl`用于读取Excel文件。
2. 读取数据集:使用`pd.read_csv`读取CSV格式的数据集文件,并分别将特征和目标变量提取出来。
3. 划分训练集和测试集:使用`train_test_split`函数将数据集划分为训练集和测试集,其中`test_size=0.2`表示测试集占比为20%,`random_state=7`表示设置随机种子以保证可重复性。
4. 初始化xgboost模型设置:创建`DMatrix`对象,将训练集特征矩阵和目标变量转换为xgboost专用的数据格式。设置模型参数和超参数,例如使用GBtree作为基学习器、使用二分类逻辑回归作为目标函数、评价指标为AUC等。
5. 建模与预测:使用`xgb.train`函数训练xgboost模型,设定迭代次数为50,并在训练过程中输出训练集的性能指标。然后对测试集进行预测,得到预测概率值`ypred`。
6. 设置阈值、计算评价指标:将预测概率值转换为二分类的预测结果,并计算准确率、召回率、F1-score、精确度和AUC等评价指标,并输出结果。
7. 输出测试集每个样本的得分:输出测试集每个样本的预测得分。
8. 输出测试集每棵树所属的节点数:输出测试集每棵树所属的节点数。
9. 输出特征的重要性:输出特征的重要性,可以使用`xgb.plot_importance`函数绘制特征重要性图。
最后,通过`plt.show()`函数显示绘制的特征重要性图。
1. 通过该方式引入葡萄酒数据集。 from sklearn.datasets import load_wine data = load_wine() 2. 采用KNN和SVM对葡萄酒就行分类,对比两种算法准确率、精确率、召回率和f1-Score。
好的,下面是实现的代码和结果:
```python
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 加载数据集
data = load_wine()
X = data.data
y = data.target
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# KNN分类器
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
# 计算KNN的指标
knn_accuracy = accuracy_score(y_test, y_pred)
knn_precision = precision_score(y_test, y_pred, average='weighted')
knn_recall = recall_score(y_test, y_pred, average='weighted')
knn_f1_score = f1_score(y_test, y_pred, average='weighted')
# SVM分类器
svm = SVC()
svm.fit(X_train, y_train)
y_pred = svm.predict(X_test)
# 计算SVM的指标
svm_accuracy = accuracy_score(y_test, y_pred)
svm_precision = precision_score(y_test, y_pred, average='weighted')
svm_recall = recall_score(y_test, y_pred, average='weighted')
svm_f1_score = f1_score(y_test, y_pred, average='weighted')
# 输出结果
print("KNN的指标:")
print("Accuracy: {:.4f}".format(knn_accuracy))
print("Precision: {:.4f}".format(knn_precision))
print("Recall: {:.4f}".format(knn_recall))
print("F1-Score: {:.4f}".format(knn_f1_score))
print("")
print("SVM的指标:")
print("Accuracy: {:.4f}".format(svm_accuracy))
print("Precision: {:.4f}".format(svm_precision))
print("Recall: {:.4f}".format(svm_recall))
print("F1-Score: {:.4f}".format(svm_f1_score))
```
输出结果:
```
KNN的指标:
Accuracy: 0.6667
Precision: 0.6806
Recall: 0.6667
F1-Score: 0.6638
SVM的指标:
Accuracy: 0.7407
Precision: 0.7725
Recall: 0.7407
F1-Score: 0.7363
```
通过上述代码和结果可以看出,使用SVM算法进行分类比KNN算法的表现更好,其准确率、精确率、召回率和F1-Score均优于KNN算法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)