基本信息
文件名称:供应链优化:需求预测_(8).数据预处理与特征工程.docx
文件大小:25.21 KB
总页数:22 页
更新时间:2025-03-18
总字数:约1.22万字
文档摘要

PAGE1

PAGE1

数据预处理与特征工程

在供应链优化中,需求预测是关键的一环。为了提高预测模型的准确性和可靠性,数据预处理和特征工程是必不可少的步骤。本节将详细探讨如何进行数据预处理和特征工程,以确保输入到模型的数据质量和特征的有效性。我们将重点介绍以下几个方面:

数据清洗

数据转换

特征选择

特征创建

特征缩放

1.数据清洗

数据清洗是数据预处理的第一步,主要目的是去除数据中的噪声、缺失值、异常值等,以提高数据质量。数据清洗的具体步骤包括:

1.1去除噪声

噪声数据是指在数据集中存在的错误或无关的数据点。这些数据点可能会对模型训练产生负面影响。常见的噪声处理方法包括:

过滤法:通过设置阈值或规则来过滤掉不符合条件的数据点。

平滑法:使用统计方法(如移动平均)平滑数据点。

聚类法:使用聚类算法识别并去除异常数据点。

代码示例:使用移动平均法平滑数据

假设我们有一个时间序列数据集,记录了每天的销售额。我们可以使用移动平均法来平滑这些数据。

importpandasaspd

importnumpyasnp

#创建一个示例数据集

data={

date:pd.date_range(start=2023-01-01,periods=100,freq=D),

sales:np.random.randint(100,500,size=100)

}

df=pd.DataFrame(data)

#添加一些噪声数据

df.loc[10,sales]=1000

df.loc[30,sales]=0

#使用移动平均法平滑数据

window_size=5

df[sales_smoothed]=df[sales].rolling(window=window_size).mean()

#填充平滑后的数据中的NaN值

df[sales_smoothed].fillna(df[sales],inplace=True)

#查看处理前后的数据

print(df[[date,sales,sales_smoothed]].head(20))

1.2处理缺失值

缺失值是数据集中常见的问题,处理缺失值的方法包括:

删除法:删除含有缺失值的行或列。

填充法:使用均值、中位数、众数或插值法填充缺失值。

预测法:使用其他特征或模型预测缺失值。

代码示例:使用均值填充缺失值

假设我们有一个包含销售额和库存量的数据集,其中某些库存量数据缺失。我们可以使用均值填充这些缺失值。

importpandasaspd

#创建一个示例数据集

data={

date:pd.date_range(start=2023-01-01,periods=100,freq=D),

sales:np.random.randint(100,500,size=100),

inventory:np.random.randint(500,1000,size=100)

}

df=pd.DataFrame(data)

#设置一些缺失值

df.loc[10:20,inventory]=np.nan

#使用均值填充缺失值

df[inventory].fillna(df[inventory].mean(),inplace=True)

#查看处理前后的数据

print(df[[date,sales,inventory]].head(25))

1.3处理异常值

异常值是指数据集中与正常值显著不同的数据点。处理异常值的方法包括:

删除法:删除含有异常值的行或列。

替换法:将异常值替换为正常值。

变换法:通过变换方法(如对数变换)将异常值转换为正常值。

代码示例:使用Z-Score方法识别并处理异常值

假设我们有一个包含销售额的数据集,我们可以使用Z-Score方法来识别并处理异常值。

importpandasaspd

importnumpyasnp

fromscipyimportstats

#创建一个示例数据集

data={

date:pd.date_range(start=2023-01-01,periods=100,freq=D),

sales:np.random.randint(100,500,size=100)

}

df=pd.DataFrame(data)

#添加一些异常值

df.loc[10,sales]=1000

df.loc[30,s