Skip to content

Instantly share code, notes, and snippets.

@yyoshiaki
Last active September 2, 2017 03:07
Show Gist options
  • Save yyoshiaki/fa0f0c9a9bd15e81d056b13fc45dcd12 to your computer and use it in GitHub Desktop.
Save yyoshiaki/fa0f0c9a9bd15e81d056b13fc45dcd12 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# kerasで多項式回帰!"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# modelの設計"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from keras.models import Sequential\n",
"from keras.layers import Dense"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"model = Sequential()\n",
"\n",
"# 初期値はzerosを採用。\n",
"model.add(Dense(units=1, input_dim=5, kernel_initializer='zeros'))\n",
"model.compile(loss='mean_squared_error', optimizer='adam')"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from keras.utils.vis_utils import plot_model\n",
"plot_model(model, to_file='Chapter1_model.png', show_shapes=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# データの整理"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 5.2],\n",
" [ 5.7],\n",
" [ 8.6],\n",
" [ 14.9],\n",
" [ 18.2],\n",
" [ 20.4],\n",
" [ 25.5],\n",
" [ 26.4],\n",
" [ 22.8],\n",
" [ 17.5],\n",
" [ 11.1],\n",
" [ 6.6]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_t = np.array([5.2, 5.7, 8.6, 14.9, 18.2, 20.4, \n",
" 25.5, 26.4, 22.8, 17.5, 11.1, 6.6])\n",
"train_t = train_t.reshape([12,1])\n",
"train_t"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x12e3fdcf8>"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12e18a4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(range(1,13), train_t)\n",
"plt.xlabel('Month')\n",
"plt.ylabel('Temperature')\n",
"plt.title('Data')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 1, 1, 1, 1],\n",
" [ 1, 2, 4, 8, 16],\n",
" [ 1, 3, 9, 27, 81],\n",
" [ 1, 4, 16, 64, 256],\n",
" [ 1, 5, 25, 125, 625],\n",
" [ 1, 6, 36, 216, 1296],\n",
" [ 1, 7, 49, 343, 2401],\n",
" [ 1, 8, 64, 512, 4096],\n",
" [ 1, 9, 81, 729, 6561],\n",
" [ 1, 10, 100, 1000, 10000],\n",
" [ 1, 11, 121, 1331, 14641],\n",
" [ 1, 12, 144, 1728, 20736]])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_x = np.arange(1,13).reshape([12,1])\n",
"train_x = np.concatenate([train_x**0, train_x**1, train_x**2, train_x**3, train_x**4], axis=1)\n",
"train_x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 学習"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"# verbose : epochの進捗。今回は可視化しない。\n",
"# fitの戻り値にLoss funcが含まれるため回収。\n",
"# あとで100,000epochsで再計算するのでここは飛ばしても良い。\n",
"history = model.fit(train_x, train_t, verbose=0, epochs=200000)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x125516da0>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nQIXk6QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12548e588>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.axvline(100000, color='r')\n",
"plt.title('Loss function')"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x1254f37f0>"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 最後の方は学習が進んでいないため、結局書籍の通り100,000回で切り上げる。\n",
"model.fit(train_x, train_t, verbose=0, epochs=100000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# predict"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 5)"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"linex = np.linspace(1,12,100)\n",
"# trainxのような行列に変換。\n",
"arr_linex = linex.reshape([100,1])\n",
"arr_linex = np.concatenate([arr_linex**0, arr_linex**1, arr_linex**2, arr_linex**3, arr_linex**4], axis=1)\n",
"arr_linex.shape"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"liney = model.predict(arr_linex)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x12e487f60>"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12e3793c8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(range(1,13), train_t)\n",
"plt.plot(linex,liney)\n",
"plt.xlabel('Month')\n",
"plt.ylabel('Temperature')\n",
"plt.title('Data')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment