{ "cells": [ { "cell_type": "code", "execution_count": 9, "id": "f868e2bc-5741-48c5-ba69-33f8ccc58f4c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "#演示目的:利用鸢尾花数据集画出P-R曲线\n", "\n", "\n" ] } ], "source": [ "#coding=utf-8\n", "\n", "\"\"\"\n", "\n", "#演示目的:利用鸢尾花数据集画出P-R曲线\n", "\n", "\"\"\"\n", "\n", "print(__doc__)\n", "\n", "%matplotlib inline\n", "\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "import numpy as np\n", "\n", "from sklearn import svm, datasets\n", "\n", "from sklearn.metrics import precision_recall_curve\n", "\n", "from sklearn.metrics import average_precision_score\n", "\n", "from sklearn.preprocessing import label_binarize\n", "\n", "from sklearn.multiclass import OneVsRestClassifier\n", "\n", "\n", "\n", "#from sklearn.cross_validation import train_test_split #适用于anaconda 3.6及以前版本\n", "\n", "from sklearn.model_selection import train_test_split#适用于anaconda 3.7\n", "\n", "\n", "\n", "#以iris数据为例,画出P-R曲线\n", "\n", "iris = datasets.load_iris()\n", "\n", "X = iris.data\n", "\n", "y = iris.target\n", "\n", "\n", "\n", "# 标签二值化,将三个类转为001, 010, 100的格式.因为这是个多类分类问题,后面将要采用\n", "\n", "#OneVsRestClassifier策略转为二类分类问题\n", "\n", "y = label_binarize(y, classes=[0, 1, 2])\n", "\n", "n_classes = y.shape[1]\n", "\n", "#print (y)\n", "\n", "\n", "\n", "# 增加了800维的噪声特征\n", "\n", "random_state = np.random.RandomState(0)\n", "\n", "n_samples, n_features = X.shape\n", "\n", "\n", "\n", "X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]\n", "\n", "\n", "\n", "# Split into training and test\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=random_state) #随机数,填0或不填,每次都会不一样\n", "\n", "\n", "\n", "# Run classifier probability : boolean, optional (default=False)Whether to enable probability estimates. This must be enabled prior to calling fit, and will slow down that method.\n", "\n", "classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True, random_state=random_state))\n", "\n", "y_score = classifier.fit(X_train, y_train).decision_function(X_test)\n", "\n", "\n", "\n", "# Compute Precision-Recall and plot curve \n", "\n", "#下面的下划线是返回的阈值。作为一个名称:此时“_”作为临时性的名称使用。\n", "\n", "#表示分配了一个特定的名称,但是并不会在后面再次用到该名称。\n", "\n", "precision = dict()\n", "\n", "recall = dict()\n", "\n", "average_precision = dict()\n", "\n", "for i in range(n_classes):\n", "\n", " precision[i], recall[i], _ = precision_recall_curve(y_test[:, i], y_score[:, i]) #The last precision and recall values are 1. and 0. respectively and do not have a corresponding threshold. This ensures that the graph starts on the x axis.\n", "\n", " average_precision[i] = average_precision_score(y_test[:, i], y_score[:, i])#切片,第i个类的分类结果性能\n", "\n", "\n", "\n", "# Compute micro-average curve and area. ravel()将多维数组降为一维\n", "\n", "precision[\"micro\"], recall[\"micro\"], _ = precision_recall_curve(y_test.ravel(), y_score.ravel())\n", "\n", "average_precision[\"micro\"] = average_precision_score(y_test, y_score, average=\"micro\") #This score corresponds to the area under the precision-recall curve.\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "7be86f04-83fa-4190-9f1a-2524ae38e682", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot Precision-Recall curve for each class\n", "\n", "plt.clf()#clf 函数用于清除当前图像窗口\n", "\n", "plt.plot(recall[\"micro\"], precision[\"micro\"],\n", "\n", " label='micro-average Precision-recall curve (area = {0:0.2f})'.format(average_precision[\"micro\"]))\n", "\n", "for i in range(n_classes):\n", "\n", " plt.plot(recall[i], precision[i],\n", "\n", " label='Precision-recall curve of class {0} (area = {1:0.2f})'.format(i, average_precision[i]))\n", "\n", "\n", "\n", "plt.xlim([0.0, 1.0])\n", "\n", "plt.ylim([0.0, 1.05]) #xlim、ylim:分别设置X、Y轴的显示范围。\n", "\n", "plt.xlabel('Recall', fontsize=16)\n", "\n", "plt.ylabel('Precision',fontsize=16)\n", "\n", "plt.title('Extension of Precision-Recall curve to multi-class',fontsize=16)\n", "\n", "plt.legend(loc=\"lower right\")#legend 是用于设置图例的函数\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "fbdcbe72-182a-453f-92ec-dabc6b456573", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "XGBoost-Sklearn", "language": "python", "name": "xgboost-sklearn" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" } }, "nbformat": 4, "nbformat_minor": 5 }