# kaggle_weather19 **Repository Path**: wangp06/kaggle_weather19 ## Basic Information - **Project Name**: kaggle_weather19 - **Description**: 大数据应用创新技能赛19年题目,预测天气 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-22 - **Last Updated**: 2024-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2019全国高校大数据应用创新大赛 作品 * 战队编号:{战队编号} * 战队名称: {战队名称} * 战队成员:{战队成员} ## 概述 本次比赛采用 训练数据 -> 特征 -> 模型训练 -> 模型保存。 测试数据 ->特征->读取模型->预测的 流程。 本次实验预估温度和湿度,经过一些初步探索,采用两个指标独立训练预测的方法。 ## 系统要求 ### 硬件环境要求 * CPU: 单核即可 * GPU: 无需 * 内存: 2G * 硬盘: 1G空间 * 其他: ### 软件环境要求 * 操作系统: Linux / windows * pandas 0.23.4 * scikit-learn 0.21.0 * Python 3.5 如有特殊编译/安装步骤,请列明。 ### 数据集 请将原始数据 bd2019-weather-prediction-training-20190608.csv 放在训练集目录 请将测试数据 test0.csv 放在测试集目录, **目录里面只能放一个文件** ## 数据预处理 ### 方法概述 以预测温度为例, 以每个站点每天观测数据作为一条样本x,以温度值作为要预测值y。 onehot特征有:城市、站点年、月、 数值特征有:一年中第几天、前1天的气温、前2天的气温 **缺失值处理: 数据集中缺失以及999990以上的值通过同一城市同一天的平均值来补全。 数据处理在train.py中已经集成,数据结果保存在pandas的dataframe中。 预处理过程是先进行缺失值补全,再进行前K天的数据移动。调用`fill_and_shift`函数, 会将中间临时数据保存在模型目录中,`train1.fil`以及`train1.csv` 预处理完成以后,将调用`convert_traindf_to_matrix`数据集dataframe转成numpy的标准数据array形式。 ### 操作步骤 没有单独的预处理步骤,请看训练步骤 ### 模型 模型使用随机森林 训练后的模型存储地址:模型目录 模型文件大小: 每个模型约250M,合计500M左右 ## 训练 ### 训练方法概述 使用sklearn中的随机森林进行训练 初始化模型:model = ensemble.RandomForestRegressor() 训练:model.fit(X,y) 其中X,y分别是样本特征和预估值 ### 训练操作步骤 命令行如下: `python3 train.py --training-dataset=../train19 --model=../mod` 预处理产生临时文件也会放入`--model`目录里 ### 训练结果保存与获取 保存模型使用pickle.dump()方法,参数指定保存目录以及模型名(例如温度模型保存成temperature.model)。 ## 测试 ### 方法概述 1. 先将测试集最后一天起生成7天空数据。将该数据使用相同预处理方法处理。 2. 分别读取温度和湿度的模型,对7天数据进行预测,生成预测结果 3. 合并预测结果成submit.csv 已经集成在test.py中。以预测温度为例, 首先将模型目录中的temperature.model 由pickle.load方法读入。 预测采用:`y_pred = model.predict(x)` 得到y的预测值 ### 操作步骤 命令行如下: `python3 test.py --test-dataset=../test19 --model=../mod --prediction-file=submit.csv` ## 其他 **请确保相应的库版本达到要求** **请将原始数据 bd2019-weather-prediction-training-20190608.csv 放在训练集目录** **请将测试数据 test0.csv 放在测试集目录** **第二次调用训练程序train.py, 会先检查模型目录中的`train1.csv`文件,如果存在将不再进行预处理,直接开始训练。因此如果想重新进行预处理,需要将模型目录中的`train1.fil`以及`train1.csv`删除**