Git Product home page Git Product logo

uprrwebapp's Introduction

UPRR Web App

QQ截图20220302234200

项目简介

  • 本项目基于协同过滤、聚类分析等算法,利用数据日志进行用户画像分析,并对个体用户进行个性化的资源推荐,以此构建一个具有可视化功能的分析平台。
  • 研究目标 为了充分利用在线学习平台的数据,本项目挖掘数据背后的资源特征、学习者特征,探究在线学习平台的资源利用情况,从而进行学习资源个性化推荐,以提高课程学习的质量。
  • 本项目基于 Python Flask 框架构建了一个 Web 应用平台,包括用户课程推荐、用户/课程搜索以及用户画像生成三个主要模块。本项目构建的 Web 平台已成功完成服务器部署工作。

如何在本地安装运行

  • 首先,您应该设置位于 configs.py 文件中的系统路径:

    • PROJECT_PATH 应设置为项目文件夹的绝对路径;

    • DATA_PATH 应设置为 data 文件夹中 features_sample.csv 文件的绝对路径;

  • 例如:

PROJECT_PATH = "E:\\RecommAlgorithm\\UprrWebApp"
DATA_PATH = "E:\\RecommAlgorithm\\UprrWebApp\\data\\features_sample.csv"
  • 然后,您应该检查 requirements.txt 文件中的Python依赖库是否全部安装,您可以通过命令 pip install -r requirements.txt 来安装依赖库。

  • 最后,使用命令 python server.py 启动程序。如果一切正常,您应该看到 Running on http://127.0.0.1:5000/ 的提示,这表明 Web 应用已成功部署在本地服务器的5000端口上,访问该网址即可进入平台。

    • 如果遇到依赖包缺失问题,您可以通过 pip install 命令来安装缺失的依赖包;

    • 如果遇到编码问题,您可以使用记事本等工具打开报错的文件(例如数据集),然后保存为 UTF-8 格式;

⚠ 注意:本项目仅支持Python3版本。

如何部署在远程服务器

  • 首先,您应该创建程序父目录,例如mkdir ~/myproject cd ~/myproject,然后您可通过 git clone [email protected]:CAPCOMIN/UprrWebApp.git 将项目下载到您的服务器上。
  • 与在本地运行一样,您需要设置位于 configs.py 文件中的系统路径;

⚠ 注意:在Windows系统中,由于转义字符的原因,右斜杠 \ 应写为 \\ ;而在 Linux 系统中不用这么做。

  • 然后,您应该运行命令 sudo apt update (Ubuntu) 以更新软件列表。随后您应该检查 requirements.txt 文件中的Python依赖库是否全部安装,您可以通过命令 pip install -r requirements.txt 来安装依赖库。

  • 在运行程序前,您应该检查服务器的防火墙安全策略,是否放行5000端口,包括服务器提供商的安全组策略和远程服务器上的防火墙策略。

  • 在服务器环境下,您应该首先使用命令 python server.py 测试程序。如果一切正常,您应该看到 Running on http://your-ip:5000/ 的提示,这表明 Web 应用已成功部署在服务器的5000端口上,此时您可以尝试访问服务器的5000端口。

  • 一切正常的话,我们建议您在运行界面按下 control+C 关闭服务器,然后执行以下步骤。因为在远程服务器上不使用生产环境的 WSGI 服务器是很不安全的。

    • 在本地创建wsgi.py文件,在文件中粘贴以下内容,其中第一行的myproject是之前flask测试程序的文件名:
    from UprrWebApp import server
    if __name__ == "__main__":
        server.run()
    • 运行以下命令来测试WSGI接入点:uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app ,访问ip:5000 即可进入Web应用。
  • 当然,如果您使用了类似宝塔面板等管理面板,您可以直接使用Python项目管理器插件来自动部署,本处不再赘述。

推荐系统模型说明

  • 该模型以日志文件的形式将学生的在线活动作为输入。首先,将csv文件转换为可用的特征矩阵;接下来,模型采用这些特征并将余弦相似度与其他用户进行比较,并找到相似的用户;最后,模型输出前 N 个推荐的有序列表。该模型使用 Flask 框架构建的简单 API 的形式呈现;
  • 在Home(推荐系统)页面,输入学生的ID号和推荐课程数,即可得到对于该学生的课程推荐和本次推荐的相关数据;
  • 要想查看本次推荐的原始数据,请访问 tmp 文件夹;
  • 推荐系统页面上还包含关于该模型的详细介绍。

用户画像模型说明

  • 该模型将csv数据文件中的课程特性(features)采集下来,与相关学生进行匹配。然后以每位学生为单位将所有相关特性集合起来,使用jieba.analyse.tfidf函数进行分词处理,并生成每个学生的WordCloud,展示在 User Portrait 前端页面上;
  • 另外,User Portrait 页面还包含课程特性集合,以及学生特征频率列表;
  • 需要了解更多信息可参考 WordCloud 官方文档

搜索模块说明

搜索模块的加入是为了辅助上面两个模块,如果你想得到某学生的详细选课信息,或了解某个课程的所有学生信息,您可以使用该模块。这样,您在观察学生画像或分析推荐列表时可以更有参考性。

使用的数据集

  • 部分原始数据来源于MoocData在线数据平台 ,该平台包含大量的在线课程用户数据。
  • 本项目使用的数据经过重新整理,主要包括用户ID、课程ID以及学生在平台上的交互信息。其中;
  • 数据集中的院校信息经过重新处理,使之包含了更多院校;
  • 数据集中的用户ID从1开始升序排列;
  • 本数据集为虚构,不代表院校或课程的真实情况。

文件夹和模块说明

  • cfaGenerator 基于协同过滤算法的推荐系统的核心代码,包含生成推荐列表的主要模型;
  • data 包含本项目所需要的数据集;
  • fonts 包括前端界面所用到的部分字体;
  • PreProcessing 包括数据处理所需要用到的函数,其中getCourses.py可将csv文件中的课程信息提取出来作为搜索模块的课程选项(存储于coursesOption.txt文件中);
  • static 包括前端界面所用到的css文件,用户画像文件以及背景图像;
  • tmp 包括两个用于存储推荐系统相关数据的文本文件;

主要作者

本项目由@youdi1012 担任前端工程负责人,@CAPCOMIN 担任后端工程负责人兼Web应用负责人,@konn-submarine-bu担任数据处理负责人兼项目负责人。

uprrwebapp's People

Contributors

capcomin avatar dependabot[bot] avatar youdi1012 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

youdi1012

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.