| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- #abc 프로젝트 멘토링 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업 #공부일지 #멘토링일지
- #abc부트캠프 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업
- Today
- Total
나른한 코딩 생활
[18일차] ABC 부트캠프 선형회귀 본문
어제 잠깐 언급했던 회귀 부분은 인공지능을 만들기 위한 과정 중 중요도가 높다고 볼 수 있다
오늘 포스트에서는 Pycharm 설치 및 선형회귀에 대한 간단한 설명 그리고 파이선에서 배우는 간단한 통계학을 알아볼 것이다.
새로운 툴 Pycharm
지난번 동적 크롤링을 위해서 사용했던 Anaconda 내의 Spyder도 사용할 수 있겠지만, 강사님 마다의 툴이 제각각이라 최대한 환경을 맞춰주기 위해 새로운 툴을 사용해보자
기존의 Java 언어를 공부하기 위해 Jetbrains 사의 Intellij 를 사용한 사람이라면 아마 알 수 있을 것이다
같은 회사의 Pycharm 은 이와 비슷하게 Python 을 사용하기 위한 편리한 툴이다.
https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows
PyCharm 다운로드: 데이터 과학 및 웹 개발을 위해 JetBrains가 만든 Python IDE
www.jetbrains.com
Professional 과 Community Edition 두가지가 있는데 전자는 유로버전 / 후자는 무료버전이다
각 버전별로 상세 기능에서 차이가 있지만 이번 실습 과정을 진행하는데 해당 기능은 불필요하다
다만, 현재 대학생인 경우 학생용 계정을 통해 Professional 버전을 무료로 사용할 수 있으니 사용가능한 사람이라면 이를 사용하는 편이 훨씬 좋다
Spyder 에서는 여러 라이브러리 패키지를 Anaconda를 통해 설치되어 있는 경우가 대부분이지만, Pycharm 같은 경우에는 처음 설치때 해당 패키지들을 인스톨 하지 않기 때문에 해당 과정을 해줄 필요가 있다
또한 Python 3.12 는 몇몇 패키지들이 간혹가다 충돌하는 경우가 있어 이번 실습기간 동안에는 3.11 버전의 Python 을 사용할 것이다.
Class
Python 은 함수(지향)프로그램
def say() :
( ) <- self (다른 언어에서는 this, 명시적으로 적어주는것)
class 는 껍데기이고, 그 안의 함수로 이루어져 있다.
class 도 마찬가지로 주소를 가르킨다
클래스를 사용하기 위해서는 어떻게 해야하나
hello = Hello()
hello : 변수? -> 객체
Hello() : 함수X , 클래스O
class 를 담는 애가 self
Hello.say()
say() : 함수X , 메소드O
생성자를 호출한다 -> 메모리에 올라가야 쓸 수 있다
선형회귀

회귀란 일반적으로 데이터들을 2차원 공간에 찍은 후에 이들 데이터 들을 가장 잘 설명하는 직선이나 곡선을 찾는 문제
LTI(Linear Time Invariant) : '선형성 + 시간 불변성' 을 가지는 시스템
y = f(x) 에서 등호는 mapping 의 의미를 가짐
-> 선형회귀일 경우 y = wx + b 형태의 함수이다
1차 증가함수와 같은 선형 함수를 '모델'이라고 한다
y = wx + b 일때 / w = 기울기, b = y 절편
x = 데이터, y = 정답 (target)
x 가 1일때 y 는 w+b
기울기 w는 웨이트(weight) 라고 하며 이는 가중치를 의미한다
b 는 위에서 언급했던 y 절편이며 이는 바이어스(bias) 즉, 편향을 의미한다
w =y/x -> 비율 = 미분
y = wx + b 의 미분(비율) 은 w , 웨이트는 양수
비선형 = 순간 미분
-> 이걸 위해서 반복 :
데이터와 정답을 통해 순간 미분을 반복해서 비선형 그래프를 따라 그린다
즉, 선형회귀라는 것은 그에게 모델을 찾아가는건데 LTI 의 과정이다
다중 선형 회귀
w = weight
[x1, x2, x3, x4]
[1.5,2,1,1]
[1.5.m1,1]
y - y^ = 0 일때까지 반복 ( 차이가 0 되는건 미분과 같다 )
w1,w2,w,3,w4 의 숫자를 계속 바꿔준다
어떤 데이터 중 우리가 알고싶은 이상적인 데이터와 결과가 있으면
그러한 결과나 데이터들이 맞아떨어지기 위해서는 미분을 줄여야함
미분 = ( n ) = (n-1)
기존 모델과 세팅된 모델은 오차가 0이 됨
정답률 과 오차율은 따로 놀아야 한다
머신러닝은 학습된 러닝이다
Ex04.py 경사 하강법 구현
import numpy as np
import matplotlib.pyplot as plt
X = np.array([0.0, 1.0, 2.0]) # x 값
y = np.array([3.0, 3.5, 5.5]) # 정답
W = 0 # 기울기
b = 0 # 절편
lrate = 0.01 # 학습률
epochs = 1_000 # 반복 횟수 1_000 == 1000 ',' 콤마와 동일한 역할
n = float(len(X)) # 입력 데이터의 개수
# 경사 하강법
for i in range(epochs):
y_pred = W*X + b # 예측값 , error 가 0 이 되게끔 반복
dW = (2/n) * sum(X * (y_pred-y))
db = (2/n) * sum(y_pred-y)
W = W -lrate * dW # 기울기 수정
b = b -lrate * db # 절편 수정
print (W, b)
# 기울기와 절편을 출력한다.
print (W, b) # 기울기와 바이어스 출력
# 즉, y = wx + b 그래프는 y = 1.2432...x + 2.7455... 이다
# 예측값을 만든다.
y_pred = W*X + b
# 입력 데이터를 그래프 상에 찍는다.
plt.scatter(X, y)
# 예측값은 선그래프로 그린다.
plt.plot([min(X), max(X)], [min(y_pred), max(y_pred)],color='red')
plt.show()
# 점 3개를 가지고 학습을 했더니 plot 과 같은 형태의 선형 그래프가 그려짐
# 이를 통해 x = n 값일 떄의 유사값을 도출하는 y=mx+b 를 사용할 수 있다

'ABC 부트캠프' 카테고리의 다른 글
| [20일차] ABC 부트캠프 ESG포럼&세미나 2번째 시간 (1) | 2024.07.21 |
|---|---|
| [19일차] ABC 부트캠프 머신러닝 - MachinLearning (0) | 2024.07.21 |
| [17일차] ABC 부트캠프 빅데이터 분석 및 기초 통계 & 딥러닝 (4) | 2024.07.20 |
| [16일차] ABC 부트캠프 데이터 수집 시각화 조별 발표 (2) | 2024.07.20 |
| [15일차] ABC 부트캠프 취업역량강화 (1) | 2024.07.14 |