В заключительной части этой серии мы развертываем регрессионную модель, созданную в части 3, в веб-приложении Streamlit. Для этого вам понадобится аккаунт Streamlit. Ознакомьтесь с исходным кодом здесь.
Создайте файл st_app.py и поместите его в основную папку со следующим кодом:
import numpy as np import pandas as pd import pickle import streamlit as st #from sklearn.linear_model import lasso st.set_page_config( page_icon='📖', initial_sidebar_state='expanded' ) st.title('Home Buyers Toolbox!') st.write('Use the sidebar to select a page to view.') page = st.sidebar.selectbox( 'Page', ('Home', 'Form') ) # @st.cache # def load_data(): # df = pd.read_csv('data/austen_poe.csv') # return df if page == 'Home': st.subheader('Home Page') st.write('Hello, welcome to the Home Buyers Toolbox!') if page == 'Form': # header st.subheader('Home Qualities') st.write('''Input the qualities of your desired home.''') # get user input neigh_qual = st.number_input('Neighboorhood Quality Index', format='%d', min_value=int(0), value=int(0)) overall_qual = st.number_input('Overall Building Quality', format='%d', min_value=int(0), step=1, value=int(0)) local_feature = st.number_input('Local Positive Features', format='%d', min_value=int(0), value=int(0)) outside = st.number_input('Outside Grill Space', format='%d', min_value=int(0), step=100, value=int(0)) shop = st.number_input('Shop Space', format='%d', min_value=int(0), step=100, value=int(0)) cars_garage = st.number_input('Additional Car Garag', format='%d', min_value=int(0), step=1, value=int(0)) age = st.number_input('Building Age', format='%d', min_value=int(0), step=1, value=int(0)) room_size = st.number_input('Size of Rooms', format='%d', min_value=int(0), step=1, value=int(0)) basement_qual = st.number_input('Basement Quality', format='%d', min_value=int(0), step=1, value=int(0)) basement_ceiling = st.number_input('Basement Ceiling Height', format='%d', min_value=int(0), step=1, value=int(0)) bsmt = st.number_input('Finished Basement Sqft', format='%d', min_value=int(0), step=100, value=int(0)) kitchen = st.number_input('Kitchen Quality', format='%d', min_value=int(0), step=1, value=int(0)) fire = st.number_input('Fireplace Quality', format='%d', min_value=int(0), step=1, value=int(0)) upstairs = st.number_input('Finished Upstairs Sqft', format='%d', min_value=int(0), step=1, value=int(0)) rooms = st.number_input('Rooms Upstairs', format='%d', min_value=int(0), step=1, value=int(0)) remodel = st.number_input('Remodeled Building', format='%d', min_value=int(0), step=1, value=int(0)) single_story = st.number_input('Single Story Building', format='%d', min_value=int(0), step=1, value=int(0)) multi_story = st.number_input('Multiple Story Building', format='%d', min_value=int(0), step=1, value=int(0)) middle_townhouse = st.number_input('Middle-unit Townhouse', format='%d', min_value=int(0), step=1, value=int(0)) end_townhouse = st.number_input('End-unit Townhouse', format='%d', min_value=int(0), step=1, value=int(0)) fam_house = st.number_input('Family House', format='%d', min_value=int(0), step=1, value=int(0)) exter_qual = st.number_input('External Quality', format='%d', min_value=int(0), step=1, value=int(0)) type_exter = st.number_input('Type of External Building Feature', format='%d', min_value=int(0), step=1, value=int(0)) roof_qual = st.number_input('High Roof Quality', format='%d', min_value=int(0), step=1, value=int(0)) vaneer_sqft = st.number_input('Masonry Vaneer Sqft', format='%d', min_value=int(0), step=100, value=int(0)) bldg_func = st.number_input('Building Functionality', format='%d', min_value=int(0), step=1, value=int(0)) lot_front = st.number_input('Lot Frontage', format='%d', min_value=int(0), step=10, value=int(0)) lot_size = st.number_input('Lot Size', format='%d', min_value=int(0), step=100, value=int(0)) paved = st.number_input('Paved Driveway', format='%d', min_value=int(0), step=1, value=int(0)) heater_qual = st.number_input('Heater Quality', format='%d', min_value=int(0), step=1, value=int(0)) data = np.array([neigh_qual, overall_qual, local_feature, outside, shop,cars_garage, age,room_size, basement_qual, basement_ceiling, bsmt, kitchen,fire, upstairs, rooms, remodel, single_story, multi_story, middle_townhouse, end_townhouse, fam_house, exter_qual, type_exter, roof_qual, vaneer_sqft, bldg_func, lot_front, lot_size, paved, heater_qual]).reshape(1, -1) st.subheader('Make a prediction') with open('./model/model_ames.p', 'rb') as pickle_in: model = pickle.load(pickle_in) predicted_price = model.predict(data)[0] st.subheader('Results:') st.write(f'Your home is worth {round(predicted_price, 2)}. Go you!')
Убедитесь, что файл model_ames.m сохранен в папке «./models/». Это файл Python, который будет развернут для создания веб-приложения.
Вот ссылки на другие части этой серии:
"Часть 2"
Репозиторий Github: https://github.com/jesservillines/Housing-Prices
Linkedin автора: https://www.linkedin.com/in/jesse-villines/
Если вам нравится эта работа, обращайтесь напрямую в LinkedIn с вопросами или идеями для дальнейшего сотрудничества!