(13-5)服装推荐系统:系统主文件

祝福大家五一假期性福快乐:

12.7   系统主文件

本项目的系统主文件是main.py,功能是实现了一个基于推荐模型的推荐系统的用户解码,具体实现流程如下所示:

  1. 定义了一个名为Recommendation的推荐模型对象。
  2. 定义了一个装饰器函数load_customer_id(),用于加载客户数据并返回客户列表。根据配置文件中指定的路径读取客户数据,并进行一系列的数据处理操作,最终返回客户列表。
  3. 定义了一个函数recommend(customer_id),用于根据给定的客户ID进行推荐,并返回推荐的物品列表。在recommend(customer_id)函数中,调用推荐模型对象的predict()方法进行推荐,然后将推荐的物品与对应的图片路径进行关联。
  4. 定义了一个主函数main(),用于构建推荐系统的用户界面。使用库Streamlit中的函数和方法构建用户界面,包括显示标题和图像,创建下拉菜单,并根据用户选择的客户调用recommend()函数进行推荐并展示推荐结果。
  5. 在主函数中,使用Streamlit库创建了一个Web应用界面,包括标题、图像和下拉菜单等元素。
  6. 在下拉菜单中选择一个客户,点击“Recommend”按钮后,调用recommend()函数进行推荐,并将推荐的物品和对应的图片显示在界面上。

文件main.py的具体实现代码如下所示。

model_obj = Recommendation()
@st.cache
def load_customer_id():
    PATH = os.path.join(
                         read_yaml_key(CONFIGURATION_PATH, 'data_source','data_folders'),
                         'customer_lists.parquet'
                        )

    unique_customer_id = read_from_parquet(PATH)
    customer_lists = (unique_customer_id[['customer_id','article_id']]
                          .groupby('customer_id')['article_id']
                          .apply(list)
                          .reset_index()
                        )
    customer_lists = customer_lists.merge(unique_customer_id[['customer_id','org_customer_id']], on = ['customer_id'], how = 'inner')
    customer_lists = customer_lists.drop_duplicates(['customer_id','org_customer_id'], keep ='last')
    del [unique_customer_id]
    gc.collect()

    return customer_lists

def recommend(customer_id):
    recommend_items = model_obj.predict(customer_id)
    recommend_items['image_path'] = list(map(get_relative_image_path, recommend_items['article_id']))
    return recommend_items

def main():

    st.markdown("<h1 style='text-align: center; font-size: 65px; color: #4682B4;'>{}</h1>".format('Recommender System'), 
    unsafe_allow_html=True)
    st.image("./references/banner.png")
   
    customer_lists = load_customer_id()

    selected_customer = st.selectbox(
        "Type or select a customer from the dropdown",
        customer_lists.org_customer_id.values
    )
    if st.button('Recommend'):

        output = recommend(selected_customer)
        items = output.article_id.values
        image_path = output.image_path.values
        st.header("Recommendation")    
        cnt = 0 
        cols = st.columns(5)
        for i in range(5):
            #cols[i].header(items[cnt])
            cols[i].image(image_path[cnt])
            cnt += 1          
        cols = st.columns(5)
        for i in range(5):
            #[i].header(items[cnt])
            cols[i].image(image_path[cnt])
            cnt += 1
        cols = st.columns(5)
        for i in range(5):
            #cols[i].header(items[cnt])
            cols[i].image(image_path[cnt])
            cnt += 1
          
if __name__ == "__main__":
    main()

执行上述代码后将启动一个基于推荐模型的推荐系统的用户界面,如图12-10所示。整个用户界面包含以下主要元素和交互功能:

  1. 标题和横幅图像:界面顶部显示标题和横幅图像,用于呈现推荐系统的整体主题和品牌形象。
  2. 下拉菜单:界面中显示一个下拉菜单,用于选择或手动输入一个客户。
  3. 推荐按钮:界面上有一个"Recommend"按钮,用于触发推荐操作。
  4. 推荐结果:在点击"Recommend"按钮后,界面将显示推荐的物品列表。推荐结果以图像的形式呈现,每行显示5个物品的图像。

图12-10  执行效果

本专题已完结:

(13-1)服装推荐系统:背景介绍+系统分析+准备数据集_穿搭推荐数据集-CSDN博客

(13-2)服装推荐系统:工具类-CSDN博客

(13-3-01)服装推荐系统:数据集处理——初步分析-CSDN博客

(13-3-02)服装推荐系统:数据集处理——数据清洗-CSDN博客

(13-4-01)服装推荐系统:实现推荐模型(1)-CSDN博客

(13-4-02)服装推荐系统:实现推荐模型(2)基于ResNet的图像推荐模型-CSDN博客

(13-4-03)服装推荐系统:实现推荐模型(3)训练排名模型-CSDN博客

(13-4-04)服装推荐系统:实现推荐模型(4)数据处理和特征工程-CSDN博客

(13-4-05)服装推荐系统:实现推荐模型:损失处理+评估处理-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值