# 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
基于新闻内容分类预测的机器学习算法分析

### 环境搭建
确保您已经在自己的操作系统上下载并安装对应的[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中的日志记载**。