반응형

sec1. 머신러닝

수치형 데이터 : 회귀(시험점수..)

범주형 데이터 : 분류(합/불, Y/S, 고양이/개)

 

1. 사이킷런 라이브러리 기반 학습 및 예측 패턴의 4단계 실행 명령어

   1) 불러오기 : from sklearn.ensemble import RandomForestClassifier

   2) 생성 : clf = RandomForestClassifier(random_state=0)

   3) 학습 : clf.fit(x,y)

   4) 예측 : clf.predict(x)

 

2. 선형회귀

   1) 선형회귀 이해

시계열 그래프 분석, 추세선으로 패턴을 예측하는데 활용하는 것을 회귀분석이라 함

주어진 데이터를 바탕으로 label(Y)과 feature(X)의 관계를 잘 설명하는 모델을 만드는 것이 학습목표

최적의 직선기반 예측 방법론이 선형회귀

   y=ax+b에서 기울기와 y절편 구하기

   2) 선형회귀 실습

sklearn의 LinearRegression 클래스 활용, fit_intercept(절편값 계산여부 지정)하는 하이퍼파라미터 입력

   (1) 데이터 구성하기

#라이브러리 불러오기
import numpy as np
import matplotlib.pyplot as plt

#랜덤시드 고정
np.random.seed(2023)

# x는 1~10, y= 4x+7인 데이터 생성하기
x=[]
y=[]
for i in range(1,11):
    x.append(i)
    y.append(4*i+7)

# 데이터 확인
print('x : ', x)
print('y : ', y)
x :  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y :  [11, 15, 19, 23, 27, 31, 35, 39, 43, 47]

 

(2) 선형회귀 학습하기

#라이브러리 불러오기
from sklearn.linear_model import LinearRegression

#선형회귀 생성하기
reg=LinearRegression()

#학습을 위해 1행 10열 데이터를 10행 1열 데이터로 변경
x=np.array(x).reshape(-1,1)

#데이터 확인
print('x : ', x)
print('x.shape : ', x.shape)
x :  [[ 1]
 [ 2]
 [ 3]
 [ 4]
 [ 5]
 [ 6]
 [ 7]
 [ 8]
 [ 9]
 [10]]
x.shape :  (10, 1)

 

 

#학습하기
reg.fit(x, y)

#기울기, 절편 확인
print('기울기 : ', reg.coef_)
print('y절편 : ', reg.intercept_)

#기울기, 절편 이용 수동계산으로 비교값 생성하기
coef_intercept = x*reg.coef_[0]+reg.intercept_
print(coef_intercept)
기울기 :  [4.]
y절편 :  6.9999999999999964
[[11.]
 [15.]
 [19.]
 [23.]
 [27.]
 [31.]
 [35.]
 [39.]
 [43.]
 [47.]]

 

 

(3) 결과 비교를 위한 그래프 그리기

# x, y 데이터로 scatter plot 그리기
plt.scatter(x, y, color='r', s=20)

# 학습으로 계산한 기울기와 절편을 이용해서 선 그래프 그리기
plt.plot(x, coef_intercept, color='orange')

# 그래프 내에 기울기와 y절편 표시하기
plt.text(7,20,'coef : %.0f'% reg.coef_[0])
plt.text(7,18,'intercetp : %.0f'% reg.intercept_)

plt.ylabel('y')
plt.xlabel('x')

plt.show()

+ Recent posts