# MLProject **Repository Path**: lfzds/mlproject ## Basic Information - **Project Name**: MLProject - **Description**: Course Design of Machine Learning at Tianjin University - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-05-11 - **Last Updated**: 2025-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: 机器学习, Python, TF-IDF ## README

基于新闻内容分类预测的机器学习算法分析

![](images/README/wrapper.jpg)
Lincense Datasets Version Version
### 环境搭建 确保您已经在自己的操作系统上下载并安装对应的[Anaconda](https://www.anaconda.com/download/success),在项目目录下创建并激活conda环境 ML: ```shell conda create -n ML python=3.11.7 conda activate ML ``` 进入项目根目录: ```shell cd MLProject ``` 安装运行项目文件所需的python包依赖: ```shell pip install -r requirements.txt ``` ### **快速开始** 工程主目录下提供了基于Windows和Linux的项目一键启动脚本: 对于Windows OS,运行: ```shell python src\data_processing.py python src\main.py ``` 对于Linux OS,运行: ```shell bash startup.sh ``` ### 配置文件 为方便对项目的调试和运行,项目目录下已给出**config.py**配置脚本,你只需要在目录下的**config.yaml**文件中更改符合你需求的配置项内容即可。 ### **数据预处理** 已在项目文件下给出数据预处理python脚本**data_processing.py**,数据预处理后完整的数据集目录树应如下所示: ``` ├── dataset │ ├── hit_stopwords.txt │ ├── News_processed │ │ ├── cleaned │ │ │ └── news_cleaned.txt │ │ ├── csv │ │ │ └── news.csv │ │ ├── labels │ │ │ └── news.labels.txt │ │ ├── tfidf │ │ ├── words_cut │ │ │ └── news.words_cut.txt │ │ └── word_cloud │ └── News_raw │ ├── news.txt │ └── news.vocab.txt ``` 若有文件缺失,请运行数据预处理脚本文件以获得完整的数据集预处理结果文件: ```shell python src/data_processing.py ``` 数据预处理后应该可在dataset/News_processed目录下看到已经经过处理的数据文件。 ### 词云图绘制(可选) 纵观数据集,每行新闻内容的分词数据都是非常的庞杂,为了人为的从主观上观察出每行新闻内容的主要内容,可通过对新闻内容分词进行词云绘制,项目文件下提供了词云绘制脚本wordCloud.py,运行该文件得到数据集的词云图: ```shell python src/wordCloud.py ``` 运行完该脚本后应当可在dataset/News_processed/word_cloud目录下看到已经绘制好的词云图(为节省内存、节约时间、降低项目运行成本,默认仅绘制数据集的前20行新闻内容分词词云图,可在config.yaml文件中进行更改) ### 特征提取 在训练SVC之前,首先应当抽取新闻内容分词的语义特征,这里我们采用 **TF-IDF(词频-逆文档频率,Term Frequency-Inverse Document Frequency)** 算法对新闻内容的分词结果进行特征抽取,在src/main.py文件中已内置特征抽取函数 `extract_features(texts, dataset_name)`,你只需运行该文件,便可在dataset/News_processed/tfidf目录下看到对应数据集的特征稀疏矩阵的 **joblib二进制文件**,在后续训练模型过程中我们将加载该文件以进行数据导入。 > **TF-IDF**是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。关于TF-IDF的算法细节及其原理,请参见:[生动理解TF-IDF算法](https://zhuanlan.zhihu.com/p/31197209) ### 模型训练 完成以上数据预处理等步骤之后,我们就可以正式开始训练模型了,通过运行项目主文件**main.py**选择并训练、预测、评估模型: ```shell python src/main.py ``` 请时刻留意模型训练过程中的日志信息,及时调整策略,以高效训练相应的模型。模型训练结束后可在models目录下看到已经过训练的模型joblib二进制文件,在results目录下看到各模型的性能评估报告。 ### 日志文件 项目完整的运行日志将保存在logs/main.log文件下,其中包含有运行该项目的所有代码文件过程中的关键步骤和BUG等相关信息,若在运行项目过程中遇到任何问题请**先参阅main.log中的日志记载**。