{ "cells": [ { "cell_type": "markdown", "id": "68ccfda8", "metadata": {}, "source": [ "# Zero-Concentrated Differential Privacy" ] }, { "cell_type": "markdown", "id": "a771110f", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 3, "id": "cb67fa6a", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "# Set parameters for dataset\n", "data_len = 1500 # Length of dataset\n", "data_low = 0 # Lowest value of dataset\n", "data_high = 50 # Highest value of dataset\n", "\n", "# Initialize Numpy RNG\n", "rng = np.random.default_rng()\n", "\n", "# Increment data_high so that it includes the value specified\n", "data_high += 1\n", "\n", "# Create dataset as defined by above parameters\n", "x = rng.integers(low=data_low, high=data_high, size=(data_len))" ] }, { "cell_type": "markdown", "id": "558888c5", "metadata": {}, "source": [ "## Implementation\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "a8babf68", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "def gaussian_mech_zCDP(vec, sensitivity, rho):\n", " sigma = np.sqrt((sensitivity**2) / (2 * rho))\n", " return [v + np.random.normal(loc=0, scale=sigma) for v in vec]\n", "\n", "sigma = 200\n", "sensitivity = 1\n", "\n", "rho = 1/(2*sigma**2)\n", "zCDP = gaussian_mech_zCDP(x, sensitivity, rho)\n", "\n", "plt.hist(zCDP)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }