{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## オープンデータの活用(自転車盗難推測)\n", "長野県自転車盗難データを推測する。" ] }, { "cell_type": "code", "execution_count": 1, "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", "
Unnamed: 0occurTimeageoccupationisRockoccurMonth
001310117
11610219
2212102110
3313102112
44710216
.....................
147614911010106
14771492650406
147814931710207
147914941610208
148014958102011
\n", "

1481 rows × 6 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 occurTime age occupation isRock occurMonth\n", "0 0 13 10 1 1 7\n", "1 1 6 10 2 1 9\n", "2 2 12 10 2 1 10\n", "3 3 13 10 2 1 12\n", "4 4 7 10 2 1 6\n", "... ... ... ... ... ... ...\n", "1476 1491 10 10 1 0 6\n", "1477 1492 6 50 4 0 6\n", "1478 1493 17 10 2 0 7\n", "1479 1494 16 10 2 0 8\n", "1480 1495 8 10 2 0 11\n", "\n", "[1481 rows x 6 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import scipy as sc\n", "from scipy import linalg\n", "from scipy import spatial\n", "import scipy.spatial.distance\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.font_manager\n", "import pylab\n", "trans_data = pd.read_csv(\"./CSV/output/transform_bohan_data.csv\")\n", "trans_data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 任意の情報を末尾に追加\n", "userInfo = pd.Series([1496, 15, 60, 5, 1, 1], index=trans_data.columns)\n", "trans_data = trans_data.append( userInfo, ignore_index=True )" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
occurTimeageoccupationisRockoccurMonth
01310117
1610219
212102110
313102112
4710216
..................
1477650406
14781710207
14791610208
14808102011
14811560511
\n", "

1482 rows × 5 columns

\n", "
" ], "text/plain": [ " occurTime age occupation isRock occurMonth\n", "0 13 10 1 1 7\n", "1 6 10 2 1 9\n", "2 12 10 2 1 10\n", "3 13 10 2 1 12\n", "4 7 10 2 1 6\n", "... ... ... ... ... ...\n", "1477 6 50 4 0 6\n", "1478 17 10 2 0 7\n", "1479 16 10 2 0 8\n", "1480 8 10 2 0 11\n", "1481 15 60 5 1 1\n", "\n", "[1482 rows x 5 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 不要な列 Unnamed: 0の削除\n", "trans_data = trans_data.drop(columns='Unnamed: 0')\n", "trans_data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 任意情報追加の場合は1482\n", "ROW = 1482\n", "COLUMN = 5" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# row:行,column:列,ave:平均,vcm:分散共分散行列\n", "row = []\n", "column = []\n", "ave = [0.0 for i in range(COLUMN)]\n", "vcm = np.zeros((ROW, COLUMN, COLUMN))\n", "diff = np.zeros((1, COLUMN))\n", "mahal = np.zeros(ROW)\n", "tmp = np.zeros(COLUMN)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1482\n" ] } ], "source": [ "# rowにtrans_dataの行要素(1481件分)を代入\n", "for i in range(ROW):\n", " row.append(list(trans_data.iloc[i]))\n", "print(len(row))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n" ] } ], "source": [ "# rowにtrans_dataの列要素(5件分)を代入\n", "for i in range(COLUMN):\n", " column.append(list(trans_data.iloc[:, i]))\n", "print(len(column))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[12.950742240215924, 19.898785425101213, 2.8157894736842106, 0.27800269905533065, 6.922402159244265]\n" ] } ], "source": [ "# 平均ベクトルの計算\n", "# 平均値の計算 (各特徴量の平均値を算出) \n", "for i in range(COLUMN):\n", " ave[i] = np.average(column[i])\n", "print(ave)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[15 60 5 1 1]\n", "[12.95074224 19.89878543 2.81578947 0.2780027 6.92240216]\n", "[[ 2.83364195e-03 5.54505568e-02 3.02024991e-03 9.98352612e-04\n", " -8.18929054e-03]\n", " [ 5.54505568e-02 1.08509272e+00 5.91022233e-02 1.95364161e-02\n", " -1.60253387e-01]\n", " [ 3.02024991e-03 5.91022233e-02 3.21914684e-03 1.06409859e-03\n", " -8.72859186e-03]\n", " [ 9.98352612e-04 1.95364161e-02 1.06409859e-03 3.51740960e-04\n", " -2.88526206e-03]\n", " [-8.18929054e-03 -1.60253387e-01 -8.72859186e-03 -2.88526206e-03\n", " 2.36672384e-02]]\n" ] } ], "source": [ "# 分散共分散行列の計算\n", "\n", "# Numpyのメソッドを使うので,array()でリストを変換した.\n", "row = np.array([row])\n", "ave = np.array(ave)\n", "\n", "# 分散共分散行列を求める\n", "# np.swapaxes()で軸を変換することができる.\n", "for i in range(ROW):\n", " diff = (row[0][i] - ave)\n", " diff = np.array([diff])\n", " vcm[i] = (diff * np.swapaxes(diff, 0, 1)) / ROW\n", "\n", "print(row[0][1481])\n", "print(ave)\n", "print(vcm[1481])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# マハラノビス距離\n", "# mahalnobis distanceを求める\n", "for i in range(ROW):\n", " # 一般逆行列を生成し,計算の都合上転値をかける\n", " vcm[i] = sc.linalg.pinv(vcm[i])\n", " vcm[i] = vcm[i].transpose()\n", " vcm[i] = np.identity(COLUMN)\n", " # 差分ベクトルの生成\n", " diff = (row[0][i] - ave)\n", " for j in range(COLUMN):\n", " tmp[j] = np.dot(diff, vcm[i][j])\n", " mahal[i] = np.dot(tmp, diff)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mahal [10.09023152 12.32079445 10.46653069 ... 10.44930337 11.82647047\n", " 40.65309054]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot = pylab.arange(0.0, ROW, 1.0)\n", "mahal = np.sqrt(mahal)\n", "\n", "print(\"mahal\", mahal)\n", "plt.bar(range(ROW),mahal)\n", "plt.xlabel(\"target data\")\n", "plt.ylabel(\"mahal\")\n", "plt.savefig(\"mahal.png\")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# 最後これにマハラノビス距離の列を追加したい\n", "trans_data[\"mahal\"] = mahal\n", "# マハラノビス距離を追加したデータをcsv出力\n", "trans_data.to_csv('./CSV/output/mahl_bohan_data.csv')" ] }, { "cell_type": "code", "execution_count": 13, "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", "
occurTimeageoccupationisRockoccurMonthmahal
10186041840.455992
491060411040.351078
602170411150.926149
64156041340.368499
68126041140.571046
.....................
145696040540.359522
1458176040740.323561
1467187040150.716676
1474197040650.488174
1481156051140.653091
\n", "

79 rows × 6 columns

\n", "
" ], "text/plain": [ " occurTime age occupation isRock occurMonth mahal\n", "10 18 60 4 1 8 40.455992\n", "49 10 60 4 1 10 40.351078\n", "60 21 70 4 1 11 50.926149\n", "64 15 60 4 1 3 40.368499\n", "68 12 60 4 1 1 40.571046\n", "... ... ... ... ... ... ...\n", "1456 9 60 4 0 5 40.359522\n", "1458 17 60 4 0 7 40.323561\n", "1467 18 70 4 0 1 50.716676\n", "1474 19 70 4 0 6 50.488174\n", "1481 15 60 5 1 1 40.653091\n", "\n", "[79 rows x 6 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 高齢者が多い\n", "trans_data[trans_data[\"mahal\"] >= 35] " ] }, { "cell_type": "code", "execution_count": 14, "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", "
occurTimeageoccupationisRockoccurMonthmahal
0131011710.090232
161021912.320794
21210211010.466531
31310211211.178424
471021611.637650
.....................
1475181010611.300715
1476101010610.531763
1478171020710.729924
1479161020810.449303
1480810201111.826470
\n", "

1230 rows × 6 columns

\n", "
" ], "text/plain": [ " occurTime age occupation isRock occurMonth mahal\n", "0 13 10 1 1 7 10.090232\n", "1 6 10 2 1 9 12.320794\n", "2 12 10 2 1 10 10.466531\n", "3 13 10 2 1 12 11.178424\n", "4 7 10 2 1 6 11.637650\n", "... ... ... ... ... ... ...\n", "1475 18 10 1 0 6 11.300715\n", "1476 10 10 1 0 6 10.531763\n", "1478 17 10 2 0 7 10.729924\n", "1479 16 10 2 0 8 10.449303\n", "1480 8 10 2 0 11 11.826470\n", "\n", "[1230 rows x 6 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 若者が多い\n", "trans_data[trans_data[\"mahal\"] <= 16.0] " ] } ], "metadata": { "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.8" } }, "nbformat": 4, "nbformat_minor": 2 }