티스토리 뷰

반응형

회귀분석은 x와 y의 관계를 가장 잘 나타내는 직선을 찾는 것이다.

 

y=b0+b1 * x이다.

 

b0과 b1의 계수는 데이터로부터 추정되어야 한다.

 

 

회귀식을 구하기 위해 필요한 절차

1) 평균과 분산을 계산한다

2) 공분산을 계산한다

3) 계수를 추정한다

4) 예측을 한다

 

 

1. 평균 및 분산구현

평균

def mean(values):
    return sum(values)/float(len(values))

분산

def variance(values,mean):
    return sum([(x-mean)**2 for x in values])

평균은 모든 값의 합/ 값의 갯수

분산은 (값-평균)^2

 

2. 공분산 계산

def covariance(x, mean_x, mean_y):
    covar=0.0
    for i in range(len(x)):
        covar+=(x[i]-mean_x)*(y[i]-mean_y)
    return covar

xy의 공분산=(x값-x평균)* (y값-y의 평균)

 

3. 계수 구하기

def coefficients(dataset):
    x=[row[0] for row in dataset]
    y=[row[1] for row in dataset]
    x_mean, y_mean=mean(x),mean(y)
    b1=covariance(x,x_mean,y,y_mean)/variance(x,x_mean)
    b0=y_mean-b1*x_mean
    return [b0,b1]

 

공분산을 x의 분산으로 나눈 것을 x의 계수로 하고, 상수의 계수는 y의 평균에서 x의 계수와 x의 평균의 곱을 뺀다.

 

 

4. 평가방법 구현

from random import seed
from random import randrange
from csv import reader
from math import sqrt

def train_test_split(dataset,split):
    train=list()
    train_size=split*len(dataset)
    dataset_copy=list(dataset)
    while len(train)<train_size:
        index=randrange(len(dataset_copy))
        train.append(dataset_copy.pop(index))
    
def rmse_metric(actual, predicted):
    sum_error=0.0
    for i in range(len(actual)):
        prediction_error=predicted[i]-actual[i]
        sum_error+=(prediction_error**2)
    mean_error=sum_error/float(len(actual))
    return sqrt(mean_error)

 

5. 회귀함수

def simple_linear_regression(train,test):
    predictions=list()
    b0,b1=coefficients(train)
    for row in test:
        yhat=b0+b1*row[0]
        predictions.append(yhat)
    return predictions

 

회귀함수를 통해, prediction을 만든다.

각각의 값에 따라 계수를 구하고, 그에 따른 yhat의 값들을 넣는 것인데, 이를 실제와 평가한다.

evaluate_algorithms에서 평가방법은 rmse로 했으며 실제값과 예측값의 차이를 제곱해서 sumofsqure을 만들고 이를 분산으로 만든다.

 

 

반응형

'머신러닝 > 머신러닝 from scratch' 카테고리의 다른 글

KNN알고리즘  (0) 2022.11.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
반응형