作者:大树沧海凝神的天空 | 来源:互联网 | 2023-09-25 19:32
介绍“未来销售FutureSales”竞赛是HSE莫斯科大学“高级机器学习”专业“如何赢得数据科学”课程的最终评估。目标是根据历史数据预测特定商店中商品的每月销售额。销售数量在
介绍
“未来销售 "Future Sales"”竞赛是HSE莫斯科大学“高级机器学习”专业“如何赢得数据科学”课程的最终评估。目标是根据历史数据预测特定商店中商品的每月销售额。销售数量在 0 到 20 之间。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.base import clone
from sklearn.model_selection import GridSearchCV
sns.set(style="darkgrid")import os
for dirname, _, filenames in os.walk('/kaggle/input'):for filename in filenames:print(os.path.join(dirname, filename))
# load data
items=pd.read_csv("/kaggle/input/competitive-data-science-predict-future-sales/items.csv")
shops=pd.read_csv("/kaggle/input/competitive-data-science-predict-future-sales/shops.csv")
cats=pd.read_csv("/kaggle/input/competitive-data-science-predict-future-sales/item_categories.csv")
train=pd.read_csv("/kaggle/input/competitive-data-science-predict-future-sales/sales_train.csv")
test=pd.read_csv("/kaggle/input/competitive-data-science-predict-future-sales/test.csv")
数据清洗¶
去除原始数据清理异常值并添加变量
print(f'items.csv : {items.shape}')
items.info()
Remove Nan
train.isnull().sum()
去除异常值
plt.figure(figsize=(10, 4))
plt.xlim(-100, 3000)
flierprops = dict(marker='o', markerfacecolor='purple', markersize=6,linestyle='none', markeredgecolor='black')
sns.boxplot(x=train.item_cnt_day, flierprops=flierprops)plt.figure(figsize=(10, 4))
plt.xlim(train.item_price.min(), train.item_price.max()*1.1)
sns.boxplot(x=train.item_price, flierprops=flierprops)
我们将从数据集中删除明显的异常值 - 一天销售超过 1,000 件的商品和价格超过 300,000 件的商品。
train &#61; train[(train.item_price <300000) & (train.item_cnt_day <1000)]
从train中删除项目价格为负的所有行。 对于可以退款的售出商品数量&#xff0c;我们会将小于 1 的值设为零以消除负值。
train &#61; train[train.item_price > 0].reset_index(drop&#61;True)
train.loc[train.item_cnt_day <1, "item_cnt_day"] &#61; 0