Bismillahirrahmanirrahim
Alhamdulillah, washalatu wasalamu 'ala rasulillah, waba'du
Berikut ini saya berikan contoh program untuk menghitung regresi linear dengan bahasa c. program ini untuk mencari optimasi slope-nya.
======================================================================================================================
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int sum(float *bil1, int n)
{
float temp = 0;
for (int i = 0;i < n; i++)
{
temp = temp + bil1[i];
}
printf("SUM = %f\n",temp);
return temp;
}
int main()
{
FILE *dataread;
char x[100],y[100];
float X[100],Y[100];
int i,j,N;
float sumx2 = 0;
float sumy2 = 0;
float sumxy = 0;
float Ypred[100];
float Err,SSErr, dSSErr = 0;
dataread = fopen("ceklah.txt","r");
if (dataread==NULL)
{
printf("data was not existed\n");
}
else
{
i = 0;
while(!feof(dataread))
{
fscanf(dataread,"%s\t%s",x,y);
X[i] = atoi(x);
Y[i] = atoi(y);
//printf("%d\t%d\n",X[i],Y[i]);
i++;
}
}
fclose(dataread);
N = i;
//masuk program optimasi dengan gradient descent
float anew,aold=0.1;
float lr = 0.1;
float step = 1;
int iter = 0;
while (step > 0.001)
{
i=0;
while (i < N)
{
Err = Y[i] - (1 + anew*X[i]);
SSErr = SSErr + (Err*Err);
dSSErr = dSSErr + (-2*X[i]*Err);
i++;
}
iter++;
aold = anew;
anew = aold - lr*dSSErr;
step = fabs(lr*dSSErr);
printf("Iterasi ke --> %d, slope = %.4lf \t SumSquareError = %.4lf, StepSize = %.4lf\n",iter,anew, SSErr,step);
SSErr = 0;
dSSErr = 0;
}
return 0;
}
======================================================================================================================
Selamat mencoba!
Tidak ada komentar:
Posting Komentar