안녕하세요. 보랏입니다.
오늘 새로운 한 주가 시작되어 복습 내용 작성하겠습니다.
오늘 배운 내용은 머신러닝 선형회귀 내용과 docker 설정 내용을 배웠습니다.
바로 복습시작하겠습니다.
1. Statsmodels 패키지
- statsmodel 패키지 : 추정 및 검정, 회귀분석, 시계열 분석 등의 기능을 제공하는 파이썬 패키지
- 예제 데이터셋
- 검정 및 모수추정
- 회귀분석, 선형회귀, 강건회귀
- 일반화 선형모형
- 혼합효과모형
- 이산종속변수, 시계열분석 등
2. 선형회귀
- 선형회귀 : 특성이 하나인 어떤 직선을 학습하는 알고리즘
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
# 선형 회귀 모델 훈련
lr.fit(train_input, train_target)
# 50cm 농어에 대한 예측
print(lr.predict([[50]])) # 예측값 : [1241.83860323]
print(lr.coef_, lr.intercept_) # 정확성 : y = 39.017 * 농어길이 - 709 -> 데이터를 보고서 학습
3. 통계 패키지의 선형회귀
import statsmodels.api as sm
import statsmodels.formula.api as smf
y = perch_weight
X = perch_length
X = sm.add_constant(X)
linear_regression = sm.OLS(y, X) # 선형회귀 계산 세팅
fitted_model = linear_regression.fit() # 회귀계수 추정
fitted_model.summary()
- summary()
- Dep. Variable : 목표변수
- model : 적합모델 표시, OLS(ordinary least squares)
- method : 파라미터 적합 방법 표시 (least squares : 최소제곱 방법)
- No.Observations : 사용된 관찰 개수 표시
- DF Residuals :잔차의 자유도 표시, 관찰 개수에서 파라미터의 수를 뺀 값
- DF model : 모델에서 추정하는 파라미터의 개수(상수항은 제외)
- R-squared : 결정계수, 회귀가 단순편균과 관련하여 얼마나 잘 수행되었는지 확인
- Adj R-squeared : 모델의 파라미터 개수와 모델 구축에 도움이 된 관찰 개수에 따라 조정된 결정계수
- F-statistic : 통계적 관점에서 볼 때 편향을 제외한 모든 계수가 0과 다른지 나타내는 척도(회귀가 단순평균보다 나은지 확인)
- Prob(F-statistic) : 실제로 사용된 관찰로 인해 운 좋게 F-statistic에 도달할 확률을 나타내며,p-value값으로 부름
- → 그 값이 충분히 낮다면 회귀가 단순평균보다 훨씬 더 좋다는 것을 나타냄
- AIC : 관찰 개수와 모델 자체의 복잡성을 기반으로 모델을 평가하는 점수, AIC점수가 낮을수록 좋음
- coef : 추정계수
- std err : 계수 추정치의 표준오차로, 값이 크면 클수록 계수 추정치의 불확실성이 높아짐
- t : t-value으로 계수의 참값이 0과 다른지를 나타내는 척도
- Conf.Interval : 다른 관찰값과 추정계수가 다를 수 있는 모든 가능서에 대해 계수의 상한값과 하한값 모두 95%로 고려
4. 비용함수 최소화
- 선현회귀의 핵심은 직선의 y값과 원래 값 사이의 차이에 대한 제곱 오차의 한계를 최소화할 수 있는 선의 방정식을 찾는 것
- scipy패키지가 제공하는 fmin최소화 프로시저를 사용하면 하나의 벡터에 대해 최소 제곱 한계를 만드는 값을 계산
- 제곱오차 사용 이유
- 음수값을 제거, 따라서 정반대의 오차를 합산할 때 서로 상쇄하지 않음
- 차이를 더 크게 강조
import numpy as np
x = np.array([9.5, 8.5, 8.0, 7.0, 6.0])
y = np.array([85, 95, 70, 65, 70])
def squared_cost(v,e):
return np.sum((v-e)**2)
from scipy.optimize import fmin
xopt = fmin(squared_cost, x0=0, xtol=1e-8, args=(x,))
-> Optimizaion terminated successfully.
Current function value: 7.300000
Iterations: 44
Function evaluations: 88
print ('The result of optimization is %0.1f' % (xopt[0]))
print ('The mean is %0.1f' % (np.mean(x)))
->
The result of optimization is 7.8
The mean is 7.8
5. docker 설정
- docker 컨테이너를 생성할 때마다 python설정, db설정 등을 진행해야 되는데, 이를 한 번에 편하게 진행할 수 있도록 설정하는 방법을 배웠습니다.
- cmd -> wsl
- sudo service docker start (docker접속)
- sudo service docker status (docker 상태 확인)
- 설정 방법
- sudo docker run -it --name mycom ubuntu:22.04 (우분투 22.04 os에 mycom이름에 docker 생성)
- apt update (주요 프로그램 다운 받기전 업데이트)
- docker file 및 requirement.txt파일 설정
# ./Dockerfile
FROM python:3
WORKDIR /usr/src/app
## Install packages
COPY requirements.txt ./
RUN pip install -r requirements.txt
## Copy all src files
COPY . .
## Run the application on the port 8080
EXPOSE 8000
# gunicorn 배포 명령어
# CMD ["gunicorn", "--bind", "허용하는 IP:열어줄 포트", "project.wsgi:application"]
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "model_service.wsgi:application"]
## requirements.txt
absl-py==1.4.0
asgiref==3.6.0
astunparse==1.6.3
beautifulsoup4==4.12.0
bs4==0.0.1
cachetools==5.3.0
certifi==2022.12.7
charset-normalizer==3.1.0
Django==4.1.7
djangorestframework==3.14.0
flatbuffers==1.12
gast==0.4.0
google-auth==2.16.3
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.51.3
h5py==3.8.0
idna==3.4
importlib-metadata==6.1.0
jax==0.4.6
keras==2.9.0
Keras-Preprocessing==1.1.2
libclang==16.0.0
lxml==4.9.2
Markdown==3.4.3
MarkupSafe==2.1.2
mysqlclient==2.1.1
numpy==1.23.5
oauthlib==3.2.2
opt-einsum==3.3.0
packaging==23.0
pandas==1.5.3
Pillow==9.4.0
pip-chill==1.0.1
protobuf==3.19.6
pyasn1==0.4.8
pyasn1-modules==0.2.8
python-dateutil==2.8.2
pytz==2022.7.1
requests==2.28.2
requests-oauthlib==1.3.1
rsa==4.9
scipy==1.10.1
six==1.16.0
sklearn==0.0.post1
soupsieve==2.4
sqlparse==0.4.3
tensorboard==2.9.1
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==2.9.0
tensorflow-estimator==2.9.0
tensorflow-io-gcs-filesystem==0.31.0
termcolor==2.2.0
typing_extensions==4.5.0
urllib3==1.26.15
Werkzeug==2.2.3
wrapt==1.14.1
zipp==3.15.0
- 해당 파일을 폴더에 설치
- docker build -t serving:0.1 ./ : 현재 폴더에 있는 docker file과 requirements.txt파일을 활용하여 serving:0.1이라는 docker 컨테이너 생성
- docker run -d --name test7 -p 8000:8000 serving:0.1 : 현재까지 설정한 이미지 파일을 port 8000번, test7으로 저장
- docker save -o serving.tar serving:0.1 : 현재까지 설정한 이미지 파일을 serving.tar로 압축하여 저장
오늘은 오전에 머신러닝 분석, docker를 배웠습니다.
docker는 아직 사용할 때마다 어렵네요...
복습은 이렇게 마치겠습니다.
감사합니다.
'DB 공부하기' 카테고리의 다른 글
230403_DB복습 (0) | 2023.04.03 |
---|---|
230329_DB복습 (0) | 2023.03.29 |
230323_DB복습 (0) | 2023.03.23 |
230322_DB복습 (0) | 2023.03.22 |
230314_DB복습 (0) | 2023.03.14 |