2017년 11월 2일 목요일

[Neural Network] 선형회귀분석 (linear regression) 예제


______________________________________________________________________________
// linear regression
#include <stdio.h>
#include <conio.h>
//#include <float.h>

//
// y = ax + b
//
void main()
{
double a, b;
double X[] = { 0, 1, 2 };
double Y[] = { 1, 3, 2 };
double lr = 0.1;

a = 0.1;
b = 0.0;

double delta_a;
double delta_b;

int n = 0;

double previous_error = 999.0; // DBL_MAX;

while (1)
{
delta_a = 0;
delta_b = 0;
for (int i = 0; i < 3; i++)
{
double y;
y = a * X[i] + b;
delta_a += (Y[i] - y)*X[i];
delta_b += (Y[i] - y);
}
a = a + lr * delta_a;
b = b + lr * delta_b;

double error;
error = 0.0;
for (int i = 0; i < 3; i++)
{
double d;
d = (Y[i] - a*X[i] - b)*(Y[i] - a*X[i] - b);
error += d;
}
error = error / 2.0;

n++;
printf("%d \t %1.6f \t %1.2f \t %1.2f \n", n, error, a, b);

if ((previous_error - error) < 0.000001) break;

previous_error = error;
}
_getch();
}
//
// a=.5 b=1.5
//

댓글 없음:

댓글 쓰기