티스토리 뷰
반응형
회귀분석은 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
링크
TAG
- 여인권
- 뇌와행동의기초
- 데이터분석
- C
- 인프런
- K-MOOC
- c++
- 윤성우
- stl
- 심리학
- 티스토리챌린지
- 정보처리기사
- 오블완
- 회계
- jlpt
- 코딩테스트
- 일문따
- 열혈프로그래밍
- 인지부조화
- EBS
- Python
- 보세사
- 백준
- C/C++
- 일본어
- 통계학
- 사회심리학
- 일본어문법무작정따라하기
- 류근관
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형