Learn Julia(11): 선형 회귀에 대한 나의 첫 경험
먼저 Julia에서 최적화 문제(LP, QP, SQP 등)를 해결하는 방법을 알아야 합니다. 구글 덕분에 간단한 검색으로 Optim 모듈에 대해 금방 알게 되었습니다. Julia에서 처음으로 차트 플롯을 수행한 것도 이 연습을 위한 것입니다. 아래는 이 선형 회귀 실험에서 제가 그린 차트입니다.
이제 이 연습의 코드를 공유하고 싶습니다.
using Random
using Optim
using Plots
## function for generating samples
# n: number of the sample
# b0 b1: linear params
# err: noise level
# seed: seed for random
function get_simple_regression_samples(n, b0=-0.3, b1=0.5, err=0.08, seed=nothing)
if seed!=nothing
Random.seed!(seed)
end
trueX = Random.rand(Float64, n)*2
trueX = trueX.- 1.0
trueT = (b1*trueX).+b0
return (trueX, trueT+randn(n)*err)
end
# now we obtain a batch of our sample points and print them
(x, y) = get_simple_regression_samples(20)
println("x: $x")
println("y: $y")
# plot the samples as scatter points
gr() # Set the backend to GR
# plot our samples using GR
display(plot(x,y ,seriestype=:scatter, title="Sample points"))
## now do the linear regression stuff
# a is the two coefficients that we want to get , ideal solution should be (0.5, -0.3)
# func(a): (Y_estim - y).T * (Y_estim - y) where Y_estim = (a1*x+a2)
func(a) = sum(((a[1]*x).+a[2] - y) .* ((a[1]*x).+a[2] - y))
# pass the function and the initial vector to optimization solver
res = optimize(func, [1.0,1.0])
# get the solution that minimizes the func
sol = Optim.minimizer(res)
println(sol)
# get the minimized value of the func
minval = Optim.minimum(res)
println(minval)
그런 다음 이 스크립트를 실행하고 솔루션을 얻었습니다.
샘플을 생성하기 위한 실제 계수는
[0.5, -0.3]
이고 내 스크립트는 이를 [0.52368, -0.29784]
로 해결했습니다. 아주 멋진!
Reference
이 문제에 관하여(Learn Julia(11): 선형 회귀에 대한 나의 첫 경험), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jemaloqiu/learn-julia-11-my-first-experience-of-linear-regression-1mjg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)