반응형
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()
'Tech' 카테고리의 다른 글
Ch8 로지스틱 회귀 (0) | 2024.06.27 |
---|---|
ch8. 사례기반 '''선형회귀모델''' (0) | 2024.06.26 |
Ch7. AI 모델링 (1) | 2024.06.24 |
Ch6. 데이터 전처리 - 레이블 인코딩, 스케일링, 변수선택 (0) | 2024.06.08 |
Ch6. 데이터 전처리 - Sec1. 결측치, 이상치, 구간화 (0) | 2024.06.07 |