{ "cells": [ { "cell_type": "code", "execution_count": 97, "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", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "9.0\n", "\n", "\n", "9.5\n", "\n", "\n", "10.0\n", "\n", "\n", "10.5\n", "\n", "\n", "11.0\n", "\n", "\n", "11.5\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "y1\n", "\n", "\n" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots\n", "\n", "x = 10 .* rand(30)\n", "y = -sin.(x) +10 + rand(30)\n", "\n", "scatter(x, y)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "30-element Array{Float64,1}:\n", " 10.4988 \n", " 9.86793\n", " 10.869 \n", " 9.18868\n", " 10.6086 \n", " 10.2933 \n", " 10.0399 \n", " 9.62243\n", " 9.02856\n", " 10.7301 \n", " 11.4326 \n", " 9.33687\n", " 10.6262 \n", " ⋮ \n", " 9.50157\n", " 10.9405 \n", " 10.3406 \n", " 10.6237 \n", " 11.159 \n", " 9.88601\n", " 9.46283\n", " 10.4988 \n", " 9.48999\n", " 10.9176 \n", " 9.80452\n", " 9.17375" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0194435208086672" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "exp(-β*sum(x[1]-x[2]))" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0-element Array{Any,1}" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "β = 1\n", "function kernel(xi, xj)\n", " exp(-β*sum(xi-xj))\n", "end\n", "N = length(x)\n", "K = zeros(N, N)\n", "\n", "for i in Base.product(1:N, 1:N)\n", " K[i[1],i[2]] = kernel(x[i[1]], x[i[2]])\n", " K[i[2],i[1]] = K[i[1],i[2]]\n", "end\n", "\n", "α = K^(-1)*y\n", "\n", "Y = []" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [], "source": [ "# カーネル回帰\n", "function kernel_predict(x,xj,α)\n", " for i in 1:length(x)\n", " push!(Y, α[i]*kernel(x[i],xj))\n", " end\n", " return Y\n", "end\n", "\n", "X_axis = collect(-3.14:0.01:3.14)\n", "\n", "Y_predict = []\n", "for i in 1:N\n", " push!(Y_predict,kernel_predict(x, X_axis[i], α))\n", "end" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "ename": "BoundsError", "evalue": "\u001b[91mBoundsError: attempt to access 629-element Array{Float64,1} at index [1:900]\u001b[39m", "output_type": "error", "traceback": [ "\u001b[91mBoundsError: attempt to access 629-element Array{Float64,1} at index [1:900]\u001b[39m", "", "Stacktrace:", " [1] \u001b[1mthrow_boundserror\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Float64,1}, ::Tuple{UnitRange{Int64}}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./abstractarray.jl:434\u001b[22m\u001b[22m", " [2] \u001b[1mcheckbounds\u001b[22m\u001b[22m at \u001b[1m./abstractarray.jl:362\u001b[22m\u001b[22m [inlined]", " [3] \u001b[1mgetindex\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Array{Float64,1}, ::UnitRange{Int64}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./array.jl:555\u001b[22m\u001b[22m", " [4] \u001b[1mgr_display\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Plots.Subplot{Plots.GRBackend}, ::Measures.Length{:mm,Float64}, ::Measures.Length{:mm,Float64}, ::Array{Float64,1}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/backends/gr.jl:1048\u001b[22m\u001b[22m", " [5] \u001b[1mgr_display\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Plots.Plot{Plots.GRBackend}, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/backends/gr.jl:598\u001b[22m\u001b[22m", " [6] \u001b[1m_show\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.AbstractIOBuffer{Array{UInt8,1}}, ::MIME{Symbol(\"image/svg+xml\")}, ::Plots.Plot{Plots.GRBackend}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/backends/gr.jl:1380\u001b[22m\u001b[22m", " [7] \u001b[1mshow\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.AbstractIOBuffer{Array{UInt8,1}}, ::MIME{Symbol(\"image/svg+xml\")}, ::Plots.Plot{Plots.GRBackend}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/output.jl:208\u001b[22m\u001b[22m", " [8] \u001b[1mshow\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.AbstractIOBuffer{Array{UInt8,1}}, ::MIME{Symbol(\"text/html\")}, ::Plots.Plot{Plots.GRBackend}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/output.jl:188\u001b[22m\u001b[22m", " [9] \u001b[1mshow\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Base.AbstractIOBuffer{Array{UInt8,1}}, ::String, ::Plots.Plot{Plots.GRBackend}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./multimedia.jl:39\u001b[22m\u001b[22m", " [10] \u001b[1m#sprint#230\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Void, ::Function, ::Int64, ::Function, ::String, ::Vararg{Any,N} where N\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./strings/io.jl:66\u001b[22m\u001b[22m", " [11] \u001b[1mdisplay_dict\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Plots.Plot{Plots.GRBackend}\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Plots/src/output.jl:272\u001b[22m\u001b[22m", " [12] \u001b[1m(::Compat.#inner#17{Array{Any,1},IJulia.#display_dict,Tuple{Plots.Plot{Plots.GRBackend}}})\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Compat/src/Compat.jl:385\u001b[22m\u001b[22m", " [13] \u001b[1mexecute_request\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket, ::IJulia.Msg\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/IJulia/src/execute_request.jl:186\u001b[22m\u001b[22m", " [14] \u001b[1m(::Compat.#inner#17{Array{Any,1},IJulia.#execute_request,Tuple{ZMQ.Socket,IJulia.Msg}})\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/Compat/src/Compat.jl:385\u001b[22m\u001b[22m", " [15] \u001b[1meventloop\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::ZMQ.Socket\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m/Users/noriakioshita/.julia/v0.6/IJulia/src/eventloop.jl:8\u001b[22m\u001b[22m", " [16] \u001b[1m(::IJulia.##14#17)\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./task.jl:335\u001b[22m\u001b[22m" ] } ], "source": [ "plot(X_axis, Y_predict)" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "629" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(X_axis)" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "30" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "length(Y_predict)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 0.6.3", "language": "julia", "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }