{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Empirical Cumulative Distribution Function Plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A function to conveniently plot an empirical cumulative distribution function. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> from mlxtend.ecdf import ecdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A function to conveniently plot an empirical cumulative distribution function (ECDF) and adding percentile thresholds for exploratory data analysis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### References\n", "\n", "- -" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 1 - ECDF" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nZmZW9f8B84n/TcoSUzUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from mlxtend.data import iris_data\n", "from mlxtend.plotting import ecdf\n", "import matplotlib.pyplot as plt\n", "\n", "X, y = iris_data()\n", "\n", "ax, _, _ = ecdf(x=X[:, 0], x_label='sepal length (cm)')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2 - Multiple ECDFs" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from mlxtend.data import iris_data\n", "from mlxtend.plotting import ecdf\n", "import matplotlib.pyplot as plt\n", "\n", "X, y = iris_data()\n", "\n", "# first ecdf\n", "x1 = X[:, 0]\n", "ax, _, _ = ecdf(x1, x_label='cm')\n", "\n", "# second ecdf\n", "x2 = X[:, 1]\n", "ax, _, _ = ecdf(x2, ax=ax)\n", "\n", "plt.legend(['sepal length', 'sepal width'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 3 - ECDF with Percentile Thresholds" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Feature threshold at the 80th percentile: 6.5\n", "Number of samples below the threshold: 120\n" ] } ], "source": [ "from mlxtend.data import iris_data\n", "from mlxtend.plotting import ecdf\n", "import matplotlib.pyplot as plt\n", "\n", "X, y = iris_data()\n", "\n", "ax, threshold, count = ecdf(x=X[:, 0], \n", " x_label='sepal length (cm)',\n", " percentile=0.8)\n", "\n", "plt.show()\n", "\n", "print('Feature threshold at the 80th percentile:', threshold)\n", "print('Number of samples below the threshold:', count)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## API" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "## ecdf\n", "\n", "*ecdf(x, y_label='ECDF', x_label=None, ax=None, percentile=None, ecdf_color=None, ecdf_marker='o', percentile_color='black', percentile_linestyle='--')*\n", "\n", "Plots an Empirical Cumulative Distribution Function\n", "\n", "**Parameters**\n", "\n", "- `x` : array or list, shape=[n_samples,]\n", "\n", " Array-like object containing the feature values\n", "\n", "- `y_label` : str (default='ECDF')\n", "\n", " Text label for the y-axis\n", "\n", "- `x_label` : str (default=None)\n", "\n", " Text label for the x-axis\n", "\n", "- `ax` : matplotlib.axes.Axes (default: None)\n", "\n", " An existing matplotlib Axes. Creates\n", " one if ax=None\n", "\n", "- `percentile` : float (default=None)\n", "\n", " Float between 0 and 1 for plotting a percentile\n", " threshold line\n", "\n", "- `ecdf_color` : matplotlib color (default=None)\n", "\n", " Color for the ECDF plot; uses matplotlib defaults\n", " if None\n", "\n", "- `ecdf_marker` : matplotlib marker (default='o')\n", "\n", " Marker style for the ECDF plot\n", "\n", "- `percentile_color` : matplotlib color (default='black')\n", "\n", " Color for the percentile threshold if percentile is not None\n", "\n", "- `percentile_linestyle` : matplotlib linestyle (default='--')\n", "\n", " Line style for the percentile threshold if percentile is not None\n", "\n", "**Returns**\n", "\n", "- `ax` : matplotlib.axes.Axes object\n", "\n", "\n", "- `percentile_threshold` : float\n", "\n", " Feature threshold at the percentile or None if `percentile=None`\n", "\n", "- `percentile_count` : Number of if percentile is not None\n", "\n", " Number of samples that have a feature less or equal than\n", " the feature threshold at a percentile threshold\n", " or None if `percentile=None`\n", "\n", "**Examples**\n", "\n", "For usage examples, please see\n", " [http://rasbt.github.io/mlxtend/user_guide/plotting/ecdf/](http://rasbt.github.io/mlxtend/user_guide/plotting/ecdf/)\n", "\n", "\n" ] } ], "source": [ "with open('../../api_modules/mlxtend.plotting/ecdf.md', 'r') as f:\n", " print(f.read())" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.4" }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }