Python/Streamlit

[Python] Streamlit jupyter notebook에서 학습한 인공지능을 스트림릿에서 사용하는 방법

건휘맨 2024. 4. 25. 12:14

먼저 jupyter notebook 에서 인공지능을 만들어준다.

 

만든 후 저장

 

저장한 인공지능을 joblib 라이브러리로 불러와서 사용

아래에선 2-1에서 불러옴

import streamlit as st
import joblib
import numpy as np

def run_ml():
    st.subheader('자동차 가격 예측하기')

    # 1. 예측하기 위해서 유저한테 입력을 받는다.
    # ['Gender', 'Age', 'Annual Salary', 'Credit Card Debt', 'Net Worth']

    st.text('성별을 선택하세요.')
    gender = st.radio('성별 선택', ['남자', '여자'])
    if gender == '남자':
        gender = 1
    else:
        gender = 0

    st.text('나이를 입력하세요.')
    age = st.number_input('나이 입력', min_value=18, max_value=100, value=24)

    st.text('연봉을 입력하세요.')
    salary = st.number_input('연봉 입력', min_value=10000, value=50000, step=1000)

    st.text('카드빚을 입력하세요.')
    debt = st.number_input('카드빚 입력', min_value=0, step=1000)

    st.text('자산을 입력하세요.')
    worth = st.number_input('자산 입력', min_value=5000, value=20000, step=1000)

    st.subheader('버튼을 누르면 예측합니다!')

    if st.button('예측하기'):
        
        # 2. 예측한다.

        # 2-1. 모델이 있어야 한다.
        regressor = joblib.load('./model/regressor.pkl')
        print(regressor)

        # 2-2. 유저가 입력한 데이터를 모델에 예측할 수 있도록 가공해야 한다.
        # ['Gender', 'Age', 'Annual Salary', 'Credit Card Debt', 'Net Worth']
        new_data = [gender, age, salary, debt, worth]
        new_data = np.array(new_data).reshape(1, -1)
        print(new_data)


        # 2-3. 모델의 predict 함수로 예측한다.
        y_pred = regressor.predict(new_data)
        
        print(y_pred)

        # 위의 데이터로 예측한 자동차 구매 가능 금액은 34116 달러 입니다.
        y_pred = y_pred[0]
        st.info(f'위의 데이터로 예측한 자동차 구매 가능 금액은 {int(y_pred):,} 달러 입니다.')