[Streamlit] 로컬에서 만든 앱을 AWS로 배포, 가상환경 구성: joblib
로컬에서 만든 앱을 AWS로 배포하는 순서:
- 공공데이터나 캐글에서 데이터를 가져와서 코랩을 이용해서 분석한다. (EDA + ML) [이것을 파일로 저장한다.]
- 로컬에서 스트림릿을 이용해서 웹 대시보드를 만든다.
- AWS를 이용해서 배포한다.
사용할 데이터:
https://startcod.tistory.com/40
[머신러닝] Scaler의 inverse_transform, RandomForest
자동차 소비자들의 데이터를 토대로 자동차 구매 가격을 예측하는 인공지능을 만들어보자 df= # 이 중에서 성별부터 자본까지만 데이터로 활용하자. 전처리과정: df.isna().sum() # NaN없음 X = df.iloc[:,
startcod.tistory.com
joblib.dump로 인공지능에 쓰인 파일들을 저장한다. (코랩을 사용함)
import joblib
joblib.dump(regressor,'regressor.pkl')
joblib.dump(scaler_X ,'scaler_X.pkl')
joblib.dump(scaler_y ,'scaler_y.pkl')
import streamlit as st
from app_home import run_home
from app_eda import run_eda
from app_ml import run_ml
def main():
st.title('자동차 가격 예측 App')
menu = ['Home','EDA','ML']
choice = st.sidebar.selectbox('메뉴선택',menu)
if choice == menu[0]:
run_home()
elif choice == menu[1]:
run_eda()
elif choice == menu[2]:
run_ml()
if __name__ == '__main__':
main()
비주얼 스튜디오코드에서 머신러닝 작업을 위한 파일을 따로 만들어 작업한다.
먼저 저장한 joblib으로 저장한 파일들을 joblib.load로 불러와 변수로 저장한다.
import streamlit as st
import joblib
def run_ml():
st.subheader('자동차 구매 가능 가격 예측')
regressor = joblib.load('data/regressor.pkl')
scaler_X = joblib.load('data/scaler_X.pkl')
scaler_y = joblib.load('data/scaler_y.pkl')
# 예측하기위해서 필요한 인공지능파일과 스케일러 파일들을 불러와야 한다.
예측할 데이터를 받을 사용자용 입력도구를 만들자.
gender = st.radio('성별을 고르세요', ['남자','여자'])
if gender == '여자':
gender = 0
else:
gender = 1
age = st.number_input('나이를 입력하세요',0,120)
salary = st.number_input('연봉을 입력하세요',0)
debt = st.number_input('카드 빛을 입력하세요',0)
asset = st.number_input('자산을 입력하세요',0)
if st.button('자동차 구매 금액 예측'):
# 1. 신규고객의 정보를 넘파이 어레이로 만들어준다.
new_data = np.array([gender, age, salary, debt, asset])
# 2. 학습할때 사용한 X의 피텨스케일링을 이용해서 피처스케일링 한다.
# 먼저 데이터를 2차원으로 만든다.
new_data = new_data.reshape(1,5)
new_data = scaler_X.transform(new_data)
# 3. 인공지능에게 예측해달라고 한다.
y_pred = regressor.predict(new_data)
# 4. 예측한값을 원상복구한다.
y_pred = scaler_y.inverse_transform(y_pred)
st.write('이 사람의 구매 가능 금액은 '+ str(round(y_pred[0,0])) +'달러 입니다.')
결과:
실행을 했지만 버전이 달라 충돌나는 경우가 있다.
코랩에서 파이썬의 버전을 확인해보자
in:
import sys
sys.version
out:
'3.7.13 (default, Apr 24 2022, 01:04:09) \n[GCC 7.5.0]'
그후, 비주얼 스튜디오 코드 cmd에서 파이썬 코드를 확인한다.
# 코랩과 코드의 파이썬 버전이 서로 다른것을 확인할수 있다.
sklearn의 버전도 이와 같은 방법으로 확인해야 한다.
import sklearn
sklearn.__version__
비주얼 스튜디오 코드의 프롬프트에 conda create -n streamlit3.7(가상환경 이름) python=3.7(파이썬 버전) 입력
가상환경 활성화: conda activate streamlit3.7
가상환경 비활성화: conda deactivate
가상환경을 활성화한 상태에서 터미널에 conda install joblib으로 joblib을 설치하자.
설치를 다 했으면 pip install streamlit으로 가상환경에 스트림릿을 설치한다.
이제 EC2 서버를 만들어 배포에 필요한것들을 설정해준다.
※ 참고:
https://startcod.tistory.com/68
[Linux] EC2를 활용한 AWS 배포, 리눅스에 파이썬 다운로드
AWS에 Streamlit을 배포하려면: 소스코드를 깃허브에 올린다. 깃허브에서 AWS에 클론해서 가져온다. 비어있는 리눅스 서버를 만들어서 필요한 프로그램들을 설치한다. 먼저 AWS에서 EC2를 free tier로 만
startcod.tistory.com
base 를 눌러 streamlit3.7로 설정한다.
이제 가상환경 streamlit3.7에서 streamlit이 잘 실행되는지 확인한다.
# 만약 라이브러리가 없으면 설치코드 (보통은 conda install (라이브러리명))을 입력하여 설치한다.