{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Mô tả dữ liệu\n", "- Dataset: [Dresses_Attribute_Sales](https://archive.ics.uci.edu/ml/datasets/Dresses_Attribute_Sales)\n", "- Associated Tasks: Classification, Clustering" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# import all necessary library\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from collections import Counter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dress_IDStylePriceRatingSizeSeasonNeckLineSleeveLengthwaiselineMaterialFabricTypeDecorationPattern TypeRecommendation
01006032852SexyLow4.6MSummero-necksleevlessempirenullchiffonrufflesanimal1
11212192089CasualLow0.0LSummero-neckPetalnaturalmicrofibernullrufflesanimal0
21190380701vintageHigh0.0LAutomno-neckfullnaturalpolysternullnullprint0
3966005983BriefAverage4.6LSpringo-neckfullnaturalsilkchiffonembroidaryprint1
4876339541cuteLow4.5MSummero-neckbutterflynaturalchiffonfabricchiffonbowdot0
51068332458bohemianLow0.0MSummerv-necksleevlessempirenullnullnullprint0
61220707172CasualAverage0.0XLSummero-neckfullnullcottonnullnullsolid0
71219677488NoveltyAverage0.0freeAutomno-neckshortnaturalpolysterbroadclothlacenull0
81113094204FlareAverage0.0freeSpringv-neckshortempirecottonbroadclothbeadingsolid1
9985292672bohemianLow0.0freeSummerv-necksleevlessnaturalnylonchiffonnullnull1
\n", "
" ], "text/plain": [ " Dress_ID Style Price Rating Size Season NeckLine SleeveLength \\\n", "0 1006032852 Sexy Low 4.6 M Summer o-neck sleevless \n", "1 1212192089 Casual Low 0.0 L Summer o-neck Petal \n", "2 1190380701 vintage High 0.0 L Automn o-neck full \n", "3 966005983 Brief Average 4.6 L Spring o-neck full \n", "4 876339541 cute Low 4.5 M Summer o-neck butterfly \n", "5 1068332458 bohemian Low 0.0 M Summer v-neck sleevless \n", "6 1220707172 Casual Average 0.0 XL Summer o-neck full \n", "7 1219677488 Novelty Average 0.0 free Automn o-neck short \n", "8 1113094204 Flare Average 0.0 free Spring v-neck short \n", "9 985292672 bohemian Low 0.0 free Summer v-neck sleevless \n", "\n", " waiseline Material FabricType Decoration Pattern Type \\\n", "0 empire null chiffon ruffles animal \n", "1 natural microfiber null ruffles animal \n", "2 natural polyster null null print \n", "3 natural silk chiffon embroidary print \n", "4 natural chiffonfabric chiffon bow dot \n", "5 empire null null null print \n", "6 null cotton null null solid \n", "7 natural polyster broadcloth lace null \n", "8 empire cotton broadcloth beading solid \n", "9 natural nylon chiffon null null \n", "\n", " Recommendation \n", "0 1 \n", "1 0 \n", "2 0 \n", "3 1 \n", "4 0 \n", "5 0 \n", "6 0 \n", "7 0 \n", "8 1 \n", "9 1 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reading dataset to dataframe\n", "df = pd.read_csv(\"Dresses_Attribute_Sales.csv\")\n", "df.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Các loại dữ liệu\n", "- Nomial\n", "- Numbers\n", "- Odinal\n", "- Ratio" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StyleNeckLineMaterialPattern Type
0Sexyo-necknullanimal
1Casualo-neckmicrofiberanimal
2vintageo-neckpolysterprint
3Briefo-necksilkprint
4cuteo-neckchiffonfabricdot
\n", "
" ], "text/plain": [ " Style NeckLine Material Pattern Type\n", "0 Sexy o-neck null animal\n", "1 Casual o-neck microfiber animal\n", "2 vintage o-neck polyster print\n", "3 Brief o-neck silk print\n", "4 cute o-neck chiffonfabric dot" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Nomial\n", "df_nomial = df[[\"Style\", \"NeckLine\", \"Material\", \"Pattern Type\"]]\n", "df_nomial.head(5)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dress_ID
01006032852
11212192089
21190380701
3966005983
4876339541
\n", "
" ], "text/plain": [ " Dress_ID\n", "0 1006032852\n", "1 1212192089\n", "2 1190380701\n", "3 966005983\n", "4 876339541" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Numbers\n", "df_numbers = df[[\"Dress_ID\"]]\n", "df_numbers.head(5)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size
0M
1L
2L
3L
4M
\n", "
" ], "text/plain": [ " Size\n", "0 M\n", "1 L\n", "2 L\n", "3 L\n", "4 M" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Ordinal\n", "df_ordinal = df[[\"Size\"]]\n", "df_ordinal.head(5)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Rating
04.6
10.0
20.0
34.6
44.5
\n", "
" ], "text/plain": [ " Rating\n", "0 4.6\n", "1 0.0\n", "2 0.0\n", "3 4.6\n", "4 4.5" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ratio\n", "df_ratio = df[[\"Rating\"]]\n", "df_ratio.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Trung tâm dữ liệu\n", "- Trung bình (mean)\n", "$$\\mu = \\bar{x} = \\frac{1}{n} \\sum_{i=1}^n x_i = \\frac{1}{n} (x_1 + ... + x_n)$$\n", "- Trung vị (median)\n", "- Mode" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StyleNeckLineMaterialPattern Type
count500497499499
unique13162415
topCasualo-neckcottonsolid
freq232271152203
\n", "
" ], "text/plain": [ " Style NeckLine Material Pattern Type\n", "count 500 497 499 499\n", "unique 13 16 24 15\n", "top Casual o-neck cotton solid\n", "freq 232 271 152 203" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_nomial.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Dress_ID
count5.000000e+02
mean9.055417e+08
std1.736190e+08
min4.442820e+08
25%7.673164e+08
50%9.083296e+08
75%1.039534e+09
max1.253973e+09
\n", "
" ], "text/plain": [ " Dress_ID\n", "count 5.000000e+02\n", "mean 9.055417e+08\n", "std 1.736190e+08\n", "min 4.442820e+08\n", "25% 7.673164e+08\n", "50% 9.083296e+08\n", "75% 1.039534e+09\n", "max 1.253973e+09" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_numbers.describe()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size
count500
unique7
topM
freq177
\n", "
" ], "text/plain": [ " Size\n", "count 500\n", "unique 7\n", "top M\n", "freq 177" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_ordinal.describe()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Rating
count500.000000
mean3.528600
std2.005364
min0.000000
25%3.700000
50%4.600000
75%4.800000
max5.000000
\n", "
" ], "text/plain": [ " Rating\n", "count 500.000000\n", "mean 3.528600\n", "std 2.005364\n", "min 0.000000\n", "25% 3.700000\n", "50% 4.600000\n", "75% 4.800000\n", "max 5.000000" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_ratio.describe()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean rating: 3.5286\n", "Median rating: 4.6\n", "Mode rating: 0.0\n" ] } ], "source": [ "mean_rating = df_ratio[\"Rating\"].mean()\n", "median_rating = df_ratio[\"Rating\"].median()\n", "mode_rating = df_ratio[\"Rating\"].mode().get(0)\n", "print \"Mean rating:\", mean_rating\n", "print \"Median rating:\", median_rating\n", "print \"Mode rating:\", mode_rating" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n4futOQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualize price column\n", "fig, ax = plt.subplots(figsize=(15, 5))\n", "ax.axvline(mean_rating, color='red', linewidth=5)\n", "ax.axvline(median_rating, color='green', linewidth=5)\n", "ax.axvline(mode_rating, color='blue', linewidth=5)\n", "\n", "# Add arrows annotating the means:\n", "def add_arrow(label, val, align=\"left\"):\n", " ax.annotate(label + ': {:0.2f}'.format(val), xy=(val, 1), xytext=(15, 15),\n", " xycoords=('data', 'axes fraction'), textcoords='offset points',\n", " horizontalalignment=align, verticalalignment='center',\n", " arrowprops=dict(arrowstyle='-|>', fc='black', shrinkA=0, shrinkB=0,\n", " connectionstyle='angle,angleA=0,angleB=90,rad=10'),\n", " )\n", "\n", "add_arrow(\"Mean\", mean_rating)\n", "add_arrow(\"Median\", median_rating)\n", "add_arrow(\"Mode\", mode_rating)\n", "ax.legend(loc='upper left')\n", "ax.margins(0.05)\n", "\n", "plt.hist(df_ratio[\"Rating\"], bins=70)\n", "plt.title(\"Rating Histogram\")\n", "plt.xlabel(\"Rating\")\n", "plt.ylabel(\"Frequency\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Biến đổi của dữ liệu \n", "- Khoảng đoạn (range)\n", "$$range = maxValue - minValue$$\n", "\n", "- Phương sai (variance)\n", "$$\\sigma^2 = \\frac{\\sum_{i=1}^n (x_i - \\mu)}{n}$$\n", "\n", "- Độ lệch chuẩn (standard deviation)\n", "$$\\sigma = \\sqrt{\\frac{\\sum_{i=1}^n (x_i - \\mu)}{n}}$$\n", "\n", "- Z-score: biến đổi từ sample mean để thực hiện Z-test\n", " * Shift trung bình mẫu về 0 bằng $X - \\mu$\n", " * Nén độ lệch chuẩn của mẫu ban đầu lại bằng cách chia cho $\\sigma$\n", "$$Z = \\frac{X - \\mu}{\\sigma}$$\n", "\n", "- Phân vị (percentile)\n", "$$percentile \\ of \\ x = \\frac{No. value \\ below \\ x}{n} * 100\\\\$$\n", "$$quartiles = \\frac{percentile * n}{100}$$" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Min rating: 0.0\n", "Max rating: 5.0\n", "Rating range: 5.0\n" ] } ], "source": [ "# range of rating\n", "min_rating = df_ratio[\"Rating\"].min()\n", "max_rating = df_ratio[\"Rating\"].max()\n", "range_rating = max_rating - min_rating\n", "print \"Min rating:\", min_rating\n", "print \"Max rating:\", max_rating\n", "print \"Rating range:\", range_rating" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rating variance: 4.02148501002\n" ] } ], "source": [ "# variance of rating\n", "var_rating = df_ratio[\"Rating\"].var()\n", "print \"Rating variance:\", var_rating" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rating standard deviation: 2.00536405922\n" ] } ], "source": [ "# standard deviation of rating\n", "std_rating = df_ratio[\"Rating\"].std()\n", "print \"Rating standard deviation:\", std_rating" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rating:\n", "0 4.6\n", "1 0.0\n", "2 0.0\n", "3 4.6\n", "4 4.5\n", "Name: Rating, dtype: float64\n", "\n", "Z-score of rating:\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+AAAAFuCAYAAAABAnL8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAMTQAADE0B0s6tTgAAIABJREFUeJzt3XuU13WBP/7nB0ZABRwFBHUYkbhUgqAcOni/XyITQ9nK\nS2K5gOUxG7egtvWY23opd7xsxzU9Chkdk8LNXTETXa9lBK6geRlBHQbQcZS8QIoKzO+Pvs4vFGEU\n5v2B4fE453PO531/fj6+j/qc1/v9/pSam5ubAwAAALSpDuUOAAAAANsCBRwAAAAKoIADAABAARRw\nAAAAKIACDgAAAAVQwAEAAKAACjgAAAAUQAEHgG1MVVVVpk2bliRpaGhI165d89xzz23WY1x88cU5\n5phjWqYPO+ywfP/739+sx0iSX/ziFxk8ePBm3y8AtAUFHIBt3oMPPpiuXbt+4LX99tunVCrl5z//\nebkjtpnq6uqsXLky/fv33+i6F154YQ466KBW7fd73/te7rrrrk2Nt471lfhTTz01dXV1m/U4ANBW\nKsodAADK7eCDD87KlSvXmbdmzZocf/zx+ctf/pKTTz65TMn+f++88046depU7hgb1dzcnDVr1qSi\nwv9iAMD7GQEHgPX45je/maeeeir//d//ne2333696zQ0NGT06NHZZZddstNOO2XIkCF58MEHW5bP\nmjUro0aNys4775wePXqsU+SfeuqpfPazn03Pnj1TVVWViRMn5vXXX29Zfthhh+Wcc87Jl770pey8\n884599xzkyRPP/10jj/++PTu3Tt77LFHvv71r+evf/3rh36OlStX5mtf+1p69OiRPfbYI1ddddU6\ny+vr61MqlbJo0aIkyYIFC3LooYemsrIyO++8c0aMGJG6urr84he/yMUXX5yHH3645QqBBx98sGX7\nG264IcOGDcsOO+yQefPmrXe0/LXXXsvYsWPTrVu3DBgwIDfddFPLsmnTpqWqqmqd9f9+H5MmTcqD\nDz6YH/3oRy3HX992q1atyuTJk7PXXntl5513zsEHH5w5c+Z84Dg//elP069fv+y0004ZN25c3njj\njQ/9DgFgc1HAAeB9rr766vz85z/P7bffnt69e3/oet/97nezxx575IUXXsirr76amTNntpTB2bNn\n5+STT87555+fl156KcuWLcvZZ5+dJFmxYkWOOuqofPrTn05DQ0Pmzp2bp59+OmecccY6+586dWq+\n8pWvZPny5amtrc0rr7ySgw8+OEceeWQaGhqyYMGCPPPMMznvvPM+NGNNTU0effTRlnXnz5+fxsbG\nD13/61//eo488si88sorefnll3PDDTeksrIyp556ar73ve9l//33z8qVK7Ny5cocfPDBLdvdeOON\nuf3227Ny5crsu+++6933DTfckDPPPDOvvvpqrr766px11ln5/e9//6FZ/t61116bgw8+ON/5znda\njr8+3/72t3PHHXdk9uzZeemll3LiiSfmqKOOytKlS1vWaWxszNNPP52nnnoqTz/9dObPn59///d/\nb1UOANgUCjgA/J077rgj3/nOdzJjxowMGTJkg+t26tQpjY2NefbZZ1MqlTJ48ODstddeSZKrrroq\nX/va1zJu3Lh06tQpXbp0yZFHHpkkuf322/POO+/ksssuyw477JDddtstV155ZW677bZ1yvEJJ5yQ\n0aNHp0OHDtlhhx1y0003ZcCAAfnWt76Vzp07p2fPnvnBD36Qm266KWvWrPlAvrVr1+amm27KD37w\ng1RVVWXHHXfMlVdembVr127wMzU0NGTx4sWpqKjI8OHDN/hHiPdccMEF6du3bzp27JjOnTuvd53R\no0fn85//fCoqKjJ69Oh84QtfyI033rjRfbfW2rVrc8MNN+SHP/xhBgwYkE6dOuX8889P//79M336\n9Jb1Kioq8qMf/Sjbb799dtttt5x44on505/+tNlyAMCHUcAB4P957LHH8qUvfSlXXnlljj322I2u\nf/nll2fAgAEZO3ZsevfunTPPPDMvvfRSkuT555//0KdzL1myJHvuuec690kPGDAgyd8ua3/Pe2X+\nPQsXLswjjzySysrKltfo0aNTKpXWO6r98ssv5+23315nPzvttFN22WWXD/1M06ZNS6lUyhFHHJGq\nqqqcd955Hzra/Pfen7U16+y1115ZsmTJRrdrrVdeeSVvvfVWPvGJT6wzf8CAAet8rz179sx2223X\nMr3jjjtmxYoVmy0HAHwYBRwA8rfLko8//vj84z/+YyZNmtSqbXr06JErrrgidXV1efTRR1NfX5+a\nmpokSb9+/fLMM8+sd7u+ffumoaEhq1evbpn37LPPJvnbU8nf06HDuv+Z7tOnTw466KC89tprLa/X\nX389q1atyh577PGB4/Tq1SudO3dOfX19y7zXX389r7766od+pj333DPXX399Fi9enPvuuy+zZ8/O\nJZdcst48f29Dy97z9znem37vkv1u3bp94F72F1544SMdo2fPnunSpUvLd/meZ599dp3vFQDKRQEH\nYJv31ltv5YQTTsh+++2XH//4x63e7pe//GWeffbZrF27Nt26dUvnzp1bRrW/+c1v5oYbbsjMmTPz\nzjvvZNWqVbnnnnuSJJ/73OdSUVGR733ve3nrrbfS2NiYb33rW/n85z+fPn36fOjxzjzzzDz66KO5\n5ppr8uabb6a5uTlLlizJb37zm/Wu36FDh5x22mm58MILs2zZsvz1r3/N+eefn1Kp9KHHmDZtWpYu\nXZrm5uZ07949FRUVLZ+pT58+aWhoyKpVq1r9Hf29O+64I7NmzcqaNWty55135r/+679y5plnJkn2\n3XffrFixIrfcckvWrl2b++67L7/61a/W2b5Pnz4f+keN9z7vV7/61VxwwQV57rnn8s477+SKK67I\nokWLcuqpp36szACwOSngAGzzfv3rX2fu3Ln53e9+l+7du3/g98A/bER8wYIFOeKII9KtW7d84hOf\nSGVlZS6//PIkyTHHHJObb745l156aXr16tXy5O0k6d69e2bPnp0FCxakqqoqI0aMyIABA/Kzn/1s\ngzmrq6vz8MMPZ/bs2S3HO/bYY/P4449/6DZXXHFFhg4dmqFDh2bQoEEZOnToBkv+vffem8985jPp\n2rVrhg0blv333z+TJ09Oknzxi1/M4MGDs/vuu6eysjIPPfTQBvO+31e/+tWWh7p94xvfaHmwWpL0\n798/P/nJT/JP//RPqayszE9/+tOWcv6e888/P3V1ddl5551TWVm53mNcfvnlOeaYY3L44Ydn1113\nzcyZMzN79uz07dv3I2UFgLZQam5ubi53CAAAAGjvjIADAABAARRwAAAAKIACDgAAAAVQwAEAAKAA\nCjgAAAAUoKLcATanzp07p1evXuWOAQAAwDbi5Zdfzttvv92qddtVAe/Vq1eWLl1a7hgAAABsI6qq\nqlq9rkvQAQAAoAAKOAAAABRAAQcAAIACKOAAAABQAAUcAAAACqCAAwAAQAEUcAAAACiAAg4AAAAF\nUMABAACgAG1ewM8999z069cvpVIp8+fPT5KsWrUqJ554YgYNGpRhw4bl6KOPzqJFi1q2aWpqynHH\nHZeBAwdmyJAheeCBB9o6JgAAALSpNi/gJ598ch566KHsueee68yfMGFC6urqsmDBgowZMyZnnXVW\ny7IpU6Zk1KhRWbhwYaZOnZpTTjkl7777bltHBQAAgDbT5gX8kEMOSVVV1TrzunTpktGjR6dUKiVJ\nRo0alfr6+pblM2bMyKRJk5IkI0eOzO67757777+/raMCAABAm6kod4AkueqqqzJmzJgkyfLly/Pu\nu++mT58+Lcv79euXhoaGD2xXW1ub2tralumVK1e2fdjNpN+UWRtcXn/p5wpKAgAAQBHKXsAvvvji\nLFq0KPfcc89H3rampiY1NTUt0+8faQcAAIAtRVmfgn755Zfn1ltvzW9/+9vssMMOSZIePXqkoqIi\njY2NLevV19enurq6XDEBAABgk5WtgNfW1ubmm2/O7NmzU1lZuc6ycePG5dprr02SzJ07N8uWLcuh\nhx5ajpgAAACwWbT5JegTJ07MrFmz0tjYmGOPPTbdunXLfffdl/PPPz/9+/fP4YcfniTp3Llz5syZ\nkyS57LLLcvrpp2fgwIHp1KlTpk+fnu22266towIAAECbafMC/tOf/nS985ubmz90m969e+euu+5q\nq0gAAABQuLLeAw4AAADbCgUcAAAACqCAAwAAQAEUcAAAACiAAg4AAAAFUMABAACgAAo4AAAAFEAB\nBwAAgAIo4AAAAFAABRwAAAAKoIADAABAARRwAAAAKIACDgAAAAVQwAEAAKAACjgAAAAUQAEHAACA\nAijgAAAAUAAFHAAAAAqggAMAAEABFHAAAAAogAIOAAAABVDAAQAAoAAKOAAAABRAAQcAAIACKOAA\nAABQAAUcAAAACqCAAwAAQAEUcAAAACiAAg4AAAAFUMABAACgAAo4AAAAFEABBwAAgAIo4AAAAFAA\nBRwAAAAKoIADAABAARRwAAAAKIACDgAAAAVQwAEAAKAACjgAAAAUoM0L+Lnnnpt+/fqlVCpl/vz5\nLfMXLlyYAw44IIMGDcrIkSPzxBNPtGoZAAAAbI3avICffPLJeeihh7LnnnuuM3/ixImZMGFCnnnm\nmUyePDnjx49v1TIAAADYGrV5AT/kkENSVVW1zrympqbMmzcvp512WpLkpJNOypIlS7Jo0aINLgMA\nAICtVVnuAV+yZEl22223VFRUJElKpVKqq6vT0NCwwWXvV1tbm6qqqpbXypUrC/0cAAAA0Fpb9UPY\nampqsnTp0pZX165dyx0JAAAA1quiHAft27dvXnzxxaxevToVFRVpbm5OQ0NDqqur07179w9dBgAA\n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\nmgULFmz2QAAAANAetfop6O83duzYzJo1a5MO/vbbb+ecc87JwIEDM3To0Jx22mlJkoULF+aAAw7I\noEGDMnLkyDzxxBObdBwAAAAot1aPgL/xxhst79esWZM5c+asM+/jmDJlSkqlUsvPmzU2NiZJJk6c\nmAkTJmT8+PH59a9/nfHjx2fu3LmbdCwAAAAop1YX8MrKypZ7wDt27JiBAwfm6quv/tgH/utf/5ob\nbrghS5cubflt8T59+qSpqSnz5s3LXXfdlSQ56aSTcs4552TRokUZMGDAxz4eAAAAlFOrC/jatWs3\n64GfffbZ7LLLLrn44otz9913Z/vtt8+FF16YysrK7Lbbbqmo+Fu0UqmU6urqNDQ0fKCA19bWpra2\ntmV65cqVmzUjAAAAbC4f+x7wTbV69eosXrw4n/70pzNv3rxcffXV+eIXv5jVq1e3eh81NTVZunRp\ny6tr165tmBgAAAA+vlaPgHfo0KHlUvG/19zcnFKplDVr1nykA1dXV6dDhw459dRTkyT77rtv9tpr\nryxevDgvvvhiVq9enYqKijQ3N6ehocHvjQMAALBVa/UI+EUXXZQpU6Zk8eLFWbx4cb773e/moosu\nyooVKz7Ww9h69uyZI488Mr/73e+SJM8//3yef/75HHjggdlvv/0yffr0JMnMmTNTVVXl/m8AAAC2\naqXm5ubm1qw4YsSIPPLIIxud91E899xz+drXvpZXXnklHTp0yAUXXJCTTjopdXV1GT9+fJYvX57u\n3btn6tSpGTp06Eb3V1VVlaVLl37sPEXqN2XDP+FWf+nnCkoCAABsbTbWJxKdoigfpYe2+hL0FStW\npKmpKbvuumuSpKmpKStWrPh4Cf+f/v3759577/3A/MGDB+fhhx/epH0DAADAlqTVBfz888/PsGHD\nMnr06CTJnXfemQsvvLCtcgEAAEC70uoCPnHixBx44IEtI9Y1NTXZe++92ywYAAAA5eES97bR6gKe\nJD169MjQoUNz2GGHZfXq1XnnnXfSqVOntsoGAAAA7Uarn4L+61//OqNGjcqZZ56ZJHniiSdy4okn\ntlkwAAAAaE9aXcAvueSS/N///V8qKyuTJMOGDcvixYvbLBgAAAC0J60u4B07dkyPHj3WmefycwAA\nAGidVt8D3q1bt7z00ksplUpJknvuuSe77LJLmwUDAACg/drYg97a40PeWl3AL7300nz2s5/Nc889\n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\nfzYvcwDmPlEGAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# z-score of rating\n", "z_score_rating = df_ratio[\"Rating\"] - mean_rating / std_rating\n", "print \"Rating:\"\n", "print df_ratio[\"Rating\"].head(5)\n", "\n", "print \"\\nZ-score of rating:\"\n", "z_score_rating.head(5)\n", "\n", "hist, bins = np.histogram(z_score_rating, bins=70)\n", "width = 0.7 * (bins[1] - bins[0])\n", "center = (bins[:-1] + bins[1:]) / 2\n", "\n", "# plotting\n", "fig = plt.figure(figsize=(15, 5), dpi= 80, facecolor='w', edgecolor='k')\n", "plt.bar(center, hist, align='center', width=width)\n", "plt.title(\"Z score distribution\")\n", "plt.xlabel(\"Rating\")\n", "plt.ylabel(\"Frequency\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25%: 3.7\n", "50%: 4.6\n", "75%: 4.8\n" ] } ], "source": [ "num_items = df_ratio[\"Rating\"].count()\n", "percentile_rating = pd.Series(list(df_ratio[\"Rating\"].sort_values()), index = range(0, num_items))\n", "_25_percent = percentile_rating.get(0.25 * num_items)\n", "_50_percent = percentile_rating.get(0.5 * num_items)\n", "_75_percent = percentile_rating.get(0.75 * num_items)\n", "\n", "print \"25%:\", _25_percent\n", "print \"50%:\", _50_percent\n", "print \"75%:\", _75_percent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Xác suất\n", "- Xác suất (probability)\n", "$$probability = \\frac{event(s)}{outcome(s)}$$\n", "\n", "- Phép đếm hoán vị (permutation)\n", "$$P(n, r) = \\frac{n!}{(n - r)!}\\\\$$\n", "$$n: distinct\\ object\\ to\\ choose\\ from$$\n", "$$r: spaces\\ to\\ fill.$$\n", "\n", "- Phép đếm tổ hợp (combination)\n", "$$C(n, r) = \\frac{n!}{r!(n - r)!}$$\n", "\n", "- Xác suất có điều kiện (conditional probability)\n", "$$P(B|A) = \\frac{P(A \\cap B)}{P(A)}$$\n", "\n", "- Biến độc lập và biến phụ thuộc (independent/dependent variable)\n", " - Independent variable: \n", " * Dress_ID\n", " * Style\n", " * Price\n", " * Rating\n", " * Size\n", " * Season\n", " * NeckLine\n", " * SleeveLength\n", " * waiseline\n", " * Material\n", " * FabricType\n", " * Decoration\n", " * Pattern Type\n", " - Dependent variable: Recommendation\n", "\n", "- Bayes\n", "$$P(A|B) = \\frac{P(B|A) P(A)}{P(B)}\\\\$$\n", "$$Posterior = \\frac{Likelihood * Prior}{Evidence}$$" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P(Season:summer) 31.8\n", "P(Style:sexy and Season:summer) 4.8\n", "P(Style:sexy and Season:summer) 15.0943396226\n" ] } ], "source": [ "# Conditional probability\n", "# P(Style:sexy|Season:summer) = P(Style:sexy and Season:summer) / P(Season:summer)\n", "df_summer = df[df[\"Season\"] == \"Summer\"][\"Season\"]\n", "p_summer = df_summer.count() * 100.0 / num_items\n", "\n", "df_sexy_summer = df[(df[\"Style\"] == \"Sexy\") & (df[\"Season\"] == \"Summer\")][\"Style\"]\n", "p_sexy_summer = df_sexy_summer.count() * 100.0 / num_items\n", "\n", "p_sexy_given_summer = p_sexy_summer * 100 / p_summer\n", "\n", "print \"P(Season:summer)\", p_summer\n", "print \"P(Style:sexy and Season:summer)\", p_sexy_summer\n", "print \"P(Style:sexy|Season:summer)\", p_sexy_given_summer" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P(Style:sexy) 13.8\n", "P(Season:summer) 31.8\n", "P(Season:summer|Style:sexy) 34.7826086957\n", "P(Style:sexy|Season:summer) Bayes: 15.0943396226\n" ] } ], "source": [ "# Bayes\n", "# P(Style:sexy|Season:summer) = P(Season:summer|Style:sexy) * P(Style:sexy) / P(Season:summer)\n", "df_style = df[df[\"Style\"] == \"Sexy\"][\"Style\"]\n", "p_sexy = df_style.count() * 100.0 / num_items\n", "\n", "p_summer_given_sexy = p_sexy_summer * 100 / p_sexy\n", "\n", "p_sexy_given_summer_bayes = p_summer_given_sexy * p_sexy / p_summer\n", "\n", "print \"P(Style:sexy)\", p_sexy\n", "print \"P(Season:summer)\", p_summer\n", "print \"P(Season:summer|Style:sexy)\", p_summer_given_sexy\n", "print \"P(Style:sexy|Season:summer) Bayes:\", p_sexy_given_summer_bayes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Central limit theorem\n", "- Dịch thành: Định lý giới hạn trung tâm.\n", "- Cho quần thể có phân bố bất kỳ.\n", "- Ta thực hiện lấy mẫu nhiều lần trên quần thể cho trước với số lượng xác định.\n", "- Mỗi lần lấy mẫu ta đi tính trung bình mẫu\n", "- Tổng hợp các trung bình mẫu này lại thành histogram.\n", "- Quan sát phân phối của trung bình mẫu của các mẫu ngẫu nhiên, ta thấy đây gần giống với phân phối chuẩn dù cho quần thể ban đầu có phân bố bất kỳ." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nb9xut0lMTLSG6dChg1mwYIExxpg//elPZsiQIebYsWPm9OnTJjs72+zevbvCdfDT8Vu3bm0++ugj\nc/r0aXP8+PEK11dtr3N/rcNNmzaZ5s2bm/3791e6Xn+6zkpKSsysWbOMJPPZZ59Zw9TGZyI9Pd00\nbNjQTJ482fzwww/m4MGDpnPnzubxxx83xvz4+Y+NjTX33nuvOX78uMnLyzMJCQlGktm3b1+l9QPA\nheratau5/PLLzeuvv2527dplysrKyvXPzc01K1asMN9//705deqUefXVV43b7Taff/65NYwkEx8f\nb/bu3WtOnjxpRo4caTp16mSSkpLMsWPHTEFBgenUqZNJTU21xunQoYOJiIgwmzdvNqWlpebVV181\njRs3Nnv37jXG/Li/bNeunTV8YmKiufPOO8uN3759e7N9+3ZTVlZm5syZY0JCQsx3331njDHmjTfe\nMC1atDAff/yxNf2z28uz3XvvvaZHjx4mNzfXFBcXm6SkJNOwYUOTnp5ujDl3n96nTx/z5JNPmtLS\nUlNaWmp27NhhCgoKjDFVtwl9+vQxOTk5xuv1mpKSknOG7d+/v2nSpIl55513TGlpqVm9erVp1KiR\n2bx5c4XrpqL5/fS71Rlnjzdx4kTTpUsXk5mZaU6ePGlmz55tgoODTW5urjV8VW1WRc43zYq+H5zt\nzPeFMWPGmGPHjplDhw6ZmJgYExsba1588UVTWlpqtmzZYho2bGg++ugjY4wxhw8fNhERESYtLc2U\nlJSYw4cPm2uvvdaMGzfOmu6iRYvM/v37zenTp83nn39uLrnkEjNt2jSrf2JiomncuLFZsmSJ8Xq9\n5qOPPjJut9v861//soa58cYbzX333Vdp7Wev46+++srExsaaW2+91erm6za1du3actO2YxuA/xHA\nUSf079/fBAUFmebNm5vw8HDTs2dPs3DhQmOMMQcPHjSSzM6dO63hT506ZcLDw82SJUuMMT82Oq1a\ntTJer9ca5uWXXzadOnUyxlx4GPyplStXmhYtWljvfQlb1113nZk8eXK5YSZNmmSuv/76csOf+aHB\nGGP+8Y9/mKZNm1Zax69//WuTkpJSrlvPnj0rDeDTp083V155pfnPf/5zzpeqqgL4Txukiob11zq3\nYx1WpEOHDqZp06amefPmxuVymWbNmplFixZVOc6FfCbS09NNUFCQOXXqlDXMH//4RzN48GBjzI8/\nFjRo0MAcO3bM6v/3v/+dAA7Ab44cOWIee+wx07t3bxMUFGQuvvhiM2XKFFNSUlLpON26dTMvvPCC\n9V5SuX3m22+/bSSZgwcPWt0mTpxohg0bZr3v0KHDOe3ZFVdcYWbMmGGM8S2AP/nkk9b74uJiI8l8\n/PHHxhhjrr32WvPggw+Wm36vXr0qDR9lZWUmKCjIvPPOO1a3oqIi43K5Kg3gAwYMMPfcc4/Jyso6\nZ3pVtQnvv/9+lcP279/fDB8+vNwwv/3tb83dd99d4bqpbBpVBfCysjLTtGlT8/bbb5cbplu3bmbm\nzJnW8FW1WWfzZZrVCeA5OTlWt8mTJ5vY2Nhyw3Xp0sU8//zzxhhj5syZYxISEsr137x5s2ncuHG5\n7yo/lZaWZnr27Gm9T0xMNAMHDiw3zOWXX25mzZpVaa1nS09PNy6XyzRv3tw0bdrUOkhw6NChKser\naJvyJYDX5jYAe3AKOuqMP/7xjyoqKtKRI0e0fft26yZiubm5kqRLLrnEGrZRo0bq0KFDudOW2rdv\nX+4GYR07drTGvRArV65Unz591KpVK4WGhmrMmDH65ptvrLuA+yI3N7dc3ZLUuXPnc063atu2rfX3\nRRddpBMnTlR6anxeXp46duxYrtvZ73/qwQcf1HXXXadx48YpPDxcI0eO9Om65qqmeUZtr/OK+GMd\nVuaFF15QUVGRCgsLNWDAgHNuflIbnwlJioiIUKNGjcrV+/3330uSDhw4oBYtWigkJMTqHx0dXa3p\nA0B1hIeHa8aMGfrPf/6j7777Tq+//roWLFigmTNnSpK+/fZb3XvvverYsaNCQ0MVFham3bt3q7Cw\nsNx02rRpY/190UUXVdjtzL7ujIras+q0I2fv+yWV25926NCh3PBV7U8PHz6skydPlqupefPm1qn5\nFVm4cKFcLpd+9atfyePxaPLkyeVOs6+ML21sTdfN+Rw5ckQnTpw4bxtbVZt1odP01dmfn5++P7uW\nzMxMbd++XWFhYdZryJAhcrlcKigokCTNnz9fPXv2VHh4uJo3b65HHnnknM/xTz9T51veyrRt21ZF\nRUUqLi7WqlWr9Omnn5a7qaGv25Sv8/pprdKFbwOwBwEcdV779u0lSV9//bXVzev1KicnR1FRUVa3\n3NzcckEoOzvbus7pTJj56XVABw8erHSeeXl5GjlypB544AHl5OTo2LFjevPNNyX9eD2NJDVocP7N\np3379uXqPrMcP627ujwezznXAld1bXCzZs00Y8YM7dq1S19//bXcbrf140ZVy+DL8tV0nTu1Ds8n\nIiJCCxcu1KpVq7Rq1SpJtfeZOJ927drpm2++KdfY79+/v8bTBQBfBAUFadiwYfr1r3+tTz75RJI0\nbdo0ffnll9qwYYO+++47FRUV6bLLLrP2fTVRUXt29rXNF6pdu3bn7D+r2p+2bNlSQUFB5Wr67rvv\n9O2331Y6TocOHbRgwQLt379f69ev19q1a60fLmraxla1bkJCQsq1r1L129iIiAg1adKkVttYf0zT\nV5GRkbr66qtVVFRkvb777juVlJSoXbt22rJliyZOnKg5c+aooKBA3333nZ5++ula+RxXpkGDBrr5\n5pt177336u6777bm5cs2VRs3QazuNgB7EMBR57Vp00ZDhgzRlClTdOjQIZ04cUJTp05V48aNdeON\nN1rDffPNN5oxY4ZOnjypPXv26Nlnn9XYsWMl/fjrfseOHfXqq6/K6/Vq7969mj17dqXzLC4u1unT\np62GJDMz02pQz4iMjFROTo5KSkoqnc64ceP0+uuva/369SorK9O//vUvvfbaa0pOTr7g9ZGYmKjX\nX39dH3/8sbxer1599VXt2rWr0uHfeecd7d69W16vV82aNVPTpk3ldrutZZB0wY8kqek6d2od+qJl\ny5aaPHmypk2bprKyslr7TJxPQkKCLrnkEj300EP64YcfdPDgQevmeABQ2848eeTTTz/VyZMnVVZW\npg8++EAffvih+vXrJ+nHENqsWTOFh4ertLRUL774onbv3l0r81+0aJG2bNkir9erhQsXaseOHbrz\nzjtrZdpjxozR66+/royMDHm9XqWnp5e7sebZGjRooNGjR2v69Ok6cOCAjh8/rilTplQZhBYuXKi8\nvDwZYxQaGiq3212uja1Jm/Duu+9q9erVKisr0/vvv6+33nrLamN79Oih77//XkuXLtXp06e1fv36\nc26MFxkZqa+++qrK5b377rv1+OOPa+/evTp16pSee+45ZWVlXfD/wB/T9NXYsWO1Y8cOvfzyy/rh\nhx9kjFFubq7efvttST9+jhs2bKiWLVuqUaNG+uSTT/TSSy/5taYzHnzwQe3du1f/+7//a9Vyvm0q\nMjKyxo+Mq+42AHsQwFEvvPnmm4qOjlbPnj3l8Xi0e/durVu3rtxpuldeeaVOnTolj8ejfv36adiw\nYZo2bZrVf9GiRVq/fr3CwsI0evRojRs3rtL5XXrppZo5c6buuusuhYSEKDExsdxdJyXptttuU1xc\nnNq2bauwsDBt3rz5nOmMHDlSc+bM0f3336+wsDA98MADmjt3roYPH37B6+LOO+/UQw89pJEjRyoi\nIkIff/yxbrnllkqH37dvn4YNG6awsDC1a9dOhw4dsp6xHhsbqwceeEADBw5UWFiYZs2aVa1aarrO\n7VqHmzZtqvROq1X5wx/+YK2v2vpMnI/b7dbf//53/fe//1Xr1q117bXXatSoUZKkJk2aVHt6AFCV\nxo0b68iRI1abEh4ert///veaOnWq9dikp556SidOnFDr1q0VHR2tQ4cOqW/fvrUy/wkTJuiRRx5R\nWFiYnn32Wb311lvnnL58oe666y794Q9/0PDhwxUREaHNmzfrpptuqnJf+txzz6lr167q2rWrYmNj\n1bVrV+vH6op8+OGHuuKKKxQcHKzu3bvrqquu0tSpUyXVvE24++679dprryksLEy/+93vNG/ePF1z\nzTWSpE6dOumll17SH//4R4WFhWn+/PlWOD9jypQp2rNnjy6++GKFhYVVOI/Zs2fruuuu08CBA9Wq\nVSutWLFCa9eutc4+vBD+mKYvoqKitGXLFq1du1aXXHKJwsLCdP311+uzzz6TJF133XWaMGGCBgwY\noObNm+tPf/qTdUZgddxwww2aMGFCtcYJCwtTSkqKHn30UZ06dcqnbWrmzJl65plnFBYWpptuuqna\ndUoXtg3A/1zGn+ddADaZPn261q1bd0GBB6jr3n77bd1+++06ceIEz+UFEDCio6P16KOPVvmDeG2L\nj4/Xbbfdpocffti2eQJ1CduA8zgCDgB1zJYtW/TVV1/JGKM9e/bo8ccf16hRowjfAFBNS5cu1YkT\nJ1RSUqLnnntOX3zxhUaOHOl0WYBt2AbqHgI4ANQx+fn5uu6663TRRRfp2muvVUJCgp577jmnywKA\nemfBggWKjIxUy5YttXjxYq1atUqdO3d2uizANmwDdQ+noAMAAAAAYAOOgAMAAAAAYAMCOAAAAAAA\nNnA7XUBtCgoKUsuWLZ0uAwAAy+HDh3Xy5EmnywgotPcAgLqkOm19QAXwli1bKi8vz+kyAACweDwe\np0sIOLT3AIC6pDptPaegAwAAAABgAwI4AAAAAAA2IIADAAAAAGADAjgAAAAAADYggAMAAAAAYAMC\n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\n3bo5WE39sW/fPnPVVVeZhIQE89ZbbzldTp3Hfqz+qqgtCpR9bVXtbH3exitbrsmTJ5uJEyda/7f8\n/HynSrwgFS3X6dOnzcUXX2x27dpljPnx/xYUFGSOHTvmZKnVUtX2NHbsWPPEE08YY4z5z3/+Y9q1\na2dOnTrlUKXVU9VyrVq1ypSWlhpjjPn73/9uOnTo4FCV1Xe+/V9RUZHp3bu3uemmm8xzzz3nUJXV\nV9VyPf/88+aWW24xJ0+eNMbU3X0HR8DPUlhYqG3btlm/to4YMUK5ubn18hdzu/Tr108ej8fpMuqV\nJk2aaMiQIXK5XJKkhIQEZWdnO1tUHRcWFmb9/d1331nrDpU7ffq0xo0bpxdffFFBQUFOlwP4VUVt\nUaDsaytrZ+v7Nl7Rch0/flyvvfaann76aev/FhkZ6UR5F6yy/5fL5VJRUZEk6dixYwoPD69X/7eq\ntqdly5ZpwoQJkqTevXurbdu22rBhg1OlVktVy3XzzTfL7XZb3Q8cOCCv1+tUqdVyvv3fxIkT9eij\njyo8PNyhCi9MVcv17LPPatasWWrcuLGkurvvIICfJTc3V23atLE2NpfLpaioKOXk5DhcGQLZ3Llz\nNXToUKfLqPPuuusutW/fXo899pjefPNNp8up89LS0tS3b1/16tXL6VLqlbvuuktdu3bVPffco8OH\nDztdDmpRoO1rA3Eb//rrr9WiRQulpqbq8ssv1zXXXKMPPvjA6bJqzOVyaenSpRo+fLg6dOigq6++\nWm+88YYVFOqjM9vT0aNHVVpaWi7sREdH19vvzpXtJ+bOnashQ4ZYGaG++elyLV++XA0aNNDNN9/s\ncFU1d2a5jh07pkOHDmnVqlW68sordeWVV9bZy8jq5ycICCCpqanKysoKiC8Y/rZo0SJJ0htvvKGp\nU6fq3Xffdbiiuuvzzz/XihUr6tV1eHXBxo0bFRUVpdLSUj366KNKTEzkcxYgAm1fG6jbuNfr1f79\n+/XLX/5Ss2bN0o4dOzRo0CDt3r271p8Pbyev16unnnpKK1euVL9+/ZSRkaGbb75Zn332mSIiIpwu\nr9p+uj2dOHHC6XJqTWX7icWLF2vZsmX1dnv76XIVFBToqaee0vr1650uq8Z+ulwlJSXyer06ceKE\ntm7dquzsbPXp00eXXnqpunfv7nSp5RDAz9K+fXvl5+fL6/XK7XbLGKOcnBxFRUU5XRoC0OzZs7Vy\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Simulating Central limit theorem\n", "num_sample = 30\n", "num_loop = 1000\n", "samp_mean_ls = []\n", "\n", "for i in range(0, num_loop):\n", " sum_of_sample = 0\n", " samp_idx = np.random.choice(num_items, num_sample, replace=False)\n", " for idx in samp_idx:\n", " sum_of_sample = sum_of_sample + df[\"Rating\"].get(idx)\n", " x_bar = sum_of_sample * 100 / num_sample\n", " samp_mean_ls.append(x_bar)\n", " \n", "# ploting population\n", "fig = plt.figure(figsize=(15, 5), dpi= 80, facecolor='w', edgecolor='k')\n", "plt.subplot(1, 2, 1)\n", "plt.hist(df_ratio[\"Rating\"], bins=70)\n", "plt.title(\"Population distribution: Rating\")\n", "plt.xlabel(\"Rating\")\n", "plt.ylabel(\"Frequency\")\n", "\n", "# ploting sampling\n", "plt.subplot(1, 2, 2)\n", "hist, bins = np.histogram(samp_mean_ls)\n", "width = 0.7 * (bins[1] - bins[0])\n", "center = (bins[:-1] + bins[1:]) / 2\n", "plt.bar(center, hist, align='center', width=width)\n", "plt.title(\"Sampling distribution of mean: Rating\")\n", "plt.xlabel(\"Sample mean\")\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }