#sdsc6012
English / 中文
时间序列基础理论
时间序列定义与性质
时间序列 是按时间顺序排列的随机变量序列,记为 { X t : t ∈ T } \{X_t: t \in T\} { X t : t ∈ T } ,其中 T T T 为时间索引集。在实际应用中,T T T 通常为离散集合(如 T = { 0 , 1 , 2 , … } T = \{0, 1, 2, \ldots\} T = { 0 , 1 , 2 , … } )。
核心概念 :时间序列分析旨在揭示序列内部的动态依赖关系,并基于历史数据建立预测模型。
示例数据表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import pandas as pddata = { 'Date' : ['2023-01-01' , '2023-01-02' , '2023-01-03' , '2023-01-04' , '2023-01-05' , '2023-01-06' , '2023-01-07' , '2023-01-08' , '2023-01-09' , '2023-01-10' ], 'Temperature' : [22.5 , 24.1 , 23.8 , 21.2 , 20.5 , 19.8 , 22.3 , 23.7 , 24.5 , 25.2 ], 'Humidity' : [65 , 62 , 68 , 72 , 75 , 78 , 70 , 66 , 63 , 60 ], 'Sales' : [150 , 168 , 142 , 135 , 158 , 172 , 165 , 148 , 156 , 162 ], 'Stock_Price' : [105.2 , 106.8 , 104.5 , 103.1 , 107.3 , 109.6 , 108.2 , 106.7 , 107.9 , 110.4 ] } df = pd.DataFrame(data) df['Date' ] = pd.to_datetime(df['Date' ]) df.set_index('Date' , inplace=True )
说明 :时间序列数据包含时间戳和多个观测变量,适合进行多变量时序分析。
平稳性:严格定义与分类
严平稳过程(Strictly Stationary Process)
一个时间序列 { X t } \{X_t\} { X t } 称为严平稳 的,如果对其任意有限维分布函数和任意时间偏移 k k k ,满足:
F X t 1 , X t 2 , … , X t n ( x 1 , x 2 , … , x n ) = F X t 1 + k , X t 2 + k , … , X t n + k ( x 1 , x 2 , … , x n ) F_{X_{t_1}, X_{t_2}, \ldots, X_{t_n}}(x_1, x_2, \ldots, x_n) = F_{X_{t_1+k}, X_{t_2+k}, \ldots, X_{t_n+k}}(x_1, x_2, \ldots, x_n)
F X t 1 , X t 2 , … , X t n ( x 1 , x 2 , … , x n ) = F X t 1 + k , X t 2 + k , … , X t n + k ( x 1 , x 2 , … , x n )
其中 F F F 为联合分布函数,n n n 为任意正整数。
弱平稳过程(Weakly Stationary Process)
实际应用中更多使用弱平稳性 概念,要求满足以下三个条件:
均值函数为常数 :
E [ X t ] = μ 对所有 t 成立 \mathbb{E}[X_t] = \mu \quad \text{对所有 } t \text{ 成立}
E [ X t ] = μ 对所有 t 成立
方差函数为常数 :
Var ( X t ) = σ 2 对所有 t 成立 \text{Var}(X_t) = \sigma^2 \quad \text{对所有 } t \text{ 成立}
Var ( X t ) = σ 2 对所有 t 成立
自协方差函数仅依赖于时间差 :
Cov ( X t , X s ) = γ ( ∣ t − s ∣ ) 对所有 t , s 成立 \text{Cov}(X_t, X_s) = \gamma(|t-s|) \quad \text{对所有 } t, s \text{ 成立}
Cov ( X t , X s ) = γ ( ∣ t − s ∣ ) 对所有 t , s 成立
重要说明 :严平稳性蕴含弱平稳性,但反之不成立,除非过程服从多元正态分布。
平稳性检验方法论
图形化检验方法
时序图分析
通过绘制时间序列图并添加均值线,直观判断是否存在:
趋势成分(Trend)
季节性(Seasonality)
异方差性(Heteroscedasticity)
1 2 3 4 5 6 7 8 9 10 11 12 13 import matplotlib.pyplot as pltfig, axes = plt.subplots(2 , 2 , figsize=(12 , 8 )) variables = ['Temperature' , 'Humidity' , 'Sales' , 'Stock_Price' ] for i, var in enumerate (variables): row, col = i // 2 , i % 2 axes[row, col].plot(df.index, df[var], marker='o' , linewidth=2 ) axes[row, col].axhline(y=df[var].mean(), color='r' , linestyle='--' , label=f'Mean ({df[var].mean():.1 f} )' ) axes[row, col].set_title(f'{var} - Stationarity Analysis' ) axes[row, col].legend() axes[row, col].grid(alpha=0.3 )
自相关函数图
绘制样本自相关函数(SACF)图,平稳序列的 SACF 应快速衰减至零附近。
统计检验:增强迪基-富勒检验
检验原理
ADF检验通过估计以下回归模型进行:
Δ X t = α + β t + γ X t − 1 + ∑ i = 1 p ϕ i Δ X t − i + ε t \Delta X_t = \alpha + \beta t + \gamma X_{t-1} + \sum_{i=1}^{p} \phi_i \Delta X_{t-i} + \varepsilon_t
Δ X t = α + βt + γ X t − 1 + i = 1 ∑ p ϕ i Δ X t − i + ε t
其中 Δ X t = X t − X t − 1 \Delta X_t = X_t - X_{t-1} Δ X t = X t − X t − 1 为一阶差分算子。
假设设定
判断准则
若检验统计量值小于临界值(或 p 值小于显著性水平如 0.05),则拒绝原假设,认为序列平稳。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from statsmodels.tsa.stattools import adfullerprint ("Augmented Dickey-Fuller Test Results:" )print ("=" * 50 )for var in variables: result = adfuller(df[var]) print (f"{var} :" ) print (f" ADF Statistic: {result[0 ]:.4 f} " ) print (f" p-value: {result[1 ]:.4 f} " ) if result[1 ] < 0.05 : print (" -> Series is likely STATIONARY (reject null hypothesis)" ) else : print (" -> Series is likely NON-STATIONARY (cannot reject null hypothesis)" ) print ("-" * 30 )
注意 :ADF检验对滞后阶数 p p p 的选择敏感,通常采用 AIC 或 BIC 准则确定最优滞后阶数。
高斯白噪声过程:理想平稳序列
高斯白噪声 { ε t } \{\varepsilon_t\} { ε t } 是时间分析中的基础过程,定义为满足:
E [ ε t ] = 0 \mathbb{E}[\varepsilon_t] = 0 E [ ε t ] = 0 (零均值)
Var ( ε t ) = σ 2 \text{Var}(\varepsilon_t) = \sigma^2 Var ( ε t ) = σ 2 (常数方差)
Cov ( ε t , ε s ) = 0 \text{Cov}(\varepsilon_t, \varepsilon_s) = 0 Cov ( ε t , ε s ) = 0 当 t ≠ s t \neq s t = s (无自相关)
数学表达 :ε t ∼ IID N ( 0 , σ 2 ) \varepsilon_t \sim \text{IID } \mathcal{N}(0, \sigma^2) ε t ∼ IID N ( 0 , σ 2 ) ,其中 IID 表示独立同分布。
数学定义
X t ∼ N ( 0 , 1 ) for all t X_t \sim \mathcal{N}(0, 1) \quad \text{for all } t
X t ∼ N ( 0 , 1 ) for all t
性质
均值 :E [ X t ] = 0 \mathbb{E}[X_t] = 0 E [ X t ] = 0
方差 :Var ( X t ) = 1 \text{Var}(X_t) = 1 Var ( X t ) = 1
自协方差函数 :
γ ( k ) = { 1 if k = 0 0 if k ≠ 0 \gamma(k) = \begin{cases}
1 & \text{if } k = 0 \\
0 & \text{if } k \neq 0
\end{cases} γ ( k ) = { 1 0 if k = 0 if k = 0
生成与验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import numpy as np 生成高斯白噪声 np.random.seed(42 ) n_points = 500 white_noise = np.random.normal(0 , 1 , n_points) 统计性质验证 print (f"Overall Mean: {white_noise.mean():.4 f} " )print (f"Overall Standard Deviation: {white_noise.std():.4 f} " )print (f"Variance: {white_noise.var():.4 f} " ) 自相关检验 from statsmodels.tsa.stattools import acfautocorr = acf(white_noise, nlags=10 ) print ("\nAutocorrelation (lags 1-5):" )for i in range (1 , 6 ): print (f" Lag {i} : {autocorr[i]:.4 f} " )
自协方差与自相关函数
自协方差函数(Autocovariance Function)
对于弱平稳过程,自协方差函数定义为:
γ ( k ) = Cov ( X t , X t + k ) = E [ ( X t − μ ) ( X t + k − μ ) ] \gamma(k) = \text{Cov}(X_t, X_{t+k}) = \mathbb{E}[(X_t - \mu)(X_{t+k} - \mu)]
γ ( k ) = Cov ( X t , X t + k ) = E [( X t − μ ) ( X t + k − μ )]
其中 k k k 为滞后阶数。
自相关函数(Autocorrelation Function)
标准化自协方差函数得到自相关函数:
ρ ( k ) = γ ( k ) γ ( 0 ) = γ ( k ) σ 2 \rho(k) = \frac{\gamma(k)}{\gamma(0)} = \frac{\gamma(k)}{\sigma^2}
ρ ( k ) = γ ( 0 ) γ ( k ) = σ 2 γ ( k )
自相关函数满足:ρ ( 0 ) = 1 \rho(0) = 1 ρ ( 0 ) = 1 ,ρ ( k ) = ρ ( − k ) \rho(k) = \rho(-k) ρ ( k ) = ρ ( − k ) ,且 ∣ ρ ( k ) ∣ ≤ 1 |\rho(k)| \leq 1 ∣ ρ ( k ) ∣ ≤ 1 。
白噪声的自协方差
对于白噪声过程:
γ ( k ) = { σ 2 = 1 if k = 0 0 if k ≠ 0 \gamma(k) = \begin{cases}
\sigma^2 = 1 & \text{if } k = 0 \\
0 & \text{if } k \neq 0
\end{cases} γ ( k ) = { σ 2 = 1 0 if k = 0 if k = 0
说明 :白噪声在任意非零滞后处无自相关,是典型的平稳过程。
非平稳序列的平稳化方法
差分运算(Differencing)
一阶差分
∇ X t = X t − X t − 1 \nabla X_t = X_t - X_{t-1}
∇ X t = X t − X t − 1
二阶差分
∇ 2 X t = ∇ ( ∇ X t ) = ( X t − X t − 1 ) − ( X t − 1 − X t − 2 ) = X t − 2 X t − 1 + X t − 2 \nabla^2 X_t = \nabla(\nabla X_t) = (X_t - X_{t-1}) - (X_{t-1} - X_{t-2}) = X_t - 2X_{t-1} + X_{t-2}
∇ 2 X t = ∇ ( ∇ X t ) = ( X t − X t − 1 ) − ( X t − 1 − X t − 2 ) = X t − 2 X t − 1 + X t − 2
季节性差分
对于周期为 s s s 的季节性序列:
∇ s X t = X t − X t − s \nabla_s X_t = X_t - X_{t-s}
∇ s X t = X t − X t − s
应用原则 :差分的阶数通常不超过 2,过度差分会导致方差增大和模型解释性降低。
差分法实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 一阶差分 df['Temperature_Diff' ] = df['Temperature' ].diff() 可视化差分结果 fig, (ax1, ax2) = plt.subplots(2 , 1 , figsize=(12 , 8 )) 原始序列 ax1.plot(df.index, df['Temperature' ], marker='o' , color='red' , linewidth=2 ) ax1.set_title('Original Temperature Series' ) ax1.set_ylabel('Temperature (°C)' ) ax1.grid(alpha=0.3 ) 差分序列 ax2.plot(df.index[1 :], df['Temperature_Diff' ][1 :], marker='s' , color='blue' , linewidth=2 ) ax2.axhline(y=0 , color='black' , linestyle='-' , alpha=0.3 ) ax2.set_title('First Difference Series (ΔTemperature = Temperature_t - Temperature_{t-1})' ) ax2.set_ylabel('Temperature Difference (°C)' ) ax2.grid(alpha=0.3 ) plt.tight_layout() plt.show() 差分统计信息 diff_stats = f"Mean: {df['Temperature_Diff' ].mean():.2 f} °C\n" diff_stats += f"Std Dev: {df['Temperature_Diff' ].std():.2 f} °C\n" diff_stats += f"Min: {df['Temperature_Diff' ].min ():.2 f} °C\n" diff_stats += f"Max: {df['Temperature_Diff' ].max ():.2 f} °C"
差分计算示例
1 2 3 4 5 6 print ("Temperature Difference Calculation:" )print ("=" * 40 )for i in range (1 , len (df)): date_str = df.index[i].strftime('%Y-%m-%d' ) temp_diff = df['Temperature' ].iloc[i] - df['Temperature' ].iloc[i-1 ] print (f"Δ({date_str} ) = {df['Temperature' ].iloc[i]:.1 f} - {df['Temperature' ].iloc[i-1 ]:.1 f} = {temp_diff:.1 f} °C" )
对数变换
Y t = log ( X t ) Y_t = \log(X_t)
Y t = log ( X t )
适用于处理指数增长趋势和方差随时间增长的情况。
Box-Cox 变换
Y t = { X t λ − 1 λ if λ ≠ 0 log ( X t ) if λ = 0 Y_t = \begin{cases}
\frac{X_t^\lambda - 1}{\lambda} & \text{if } \lambda \neq 0 \\
\log(X_t) & \text{if } \lambda = 0
\end{cases} Y t = { λ X t λ − 1 log ( X t ) if λ = 0 if λ = 0
通过参数 λ \lambda λ 的优化,同时处理非平稳性和方差非齐性。
数据预处理理论框架
数据质量维度体系
根据数据质量管理理论,数据质量可通过以下多维指标评估:
准确性(Accuracy) :数据与其描述的真实实体之间的一致性程度
完整性(Completeness) :所需数据是否被完整记录,可用缺失率衡量:
缺失率 = 缺失值数量 总数据量 × 100 % \text{缺失率} = \frac{\text{缺失值数量}}{\text{总数据量}} \times 100\%
缺失率 = 总数据量 缺失值数量 × 100%
一致性(Consistency) :数据在不同地方是否保持一致表示
时效性(Timeliness) :数据更新频率与当前时间的接近程度
可信性(Believability) :数据源和数据值的可信程度
可解释性(Interpretability) :数据是否易于理解和使用
缺失数据处理机制分类
缺失机制类型
处理方法选择准则
缺失机制
推荐处理方法
MCAR
直接删除、均值插补
MAR
回归插补、多重插补
MNAR
模型法、选择模型
缺失值处理实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 检测缺失值 print ("Missing Values Analysis:" )print ("=" * 30 )print (df.isnull().sum ()) 处理方法 1. 删除缺失值 df_drop = df.dropna() 2. 填充缺失值 df_fill_mean = df.fillna(df.mean()) 均值填充 df_fill_forward = df.fillna(method='ffill' ) 前向填充 3. 插值法 df_interpolate = df.interpolate()
噪声数据处理的理论基础
噪声统计模型
假设观测数据 Y t Y_t Y t 由真实信号 f ( t ) f(t) f ( t ) 和噪声 ε t \varepsilon_t ε t 组成:
Y t = f ( t ) + ε t Y_t = f(t) + \varepsilon_t
Y t = f ( t ) + ε t
其中 ε t ∼ N ( 0 , σ 2 ) \varepsilon_t \sim \mathcal{N}(0, \sigma^2) ε t ∼ N ( 0 , σ 2 ) 。
平滑技术数学原理
移动平均法 :
f ^ ( t ) = 1 2 k + 1 ∑ i = − k k Y t + i \hat{f}(t) = \frac{1}{2k+1} \sum_{i=-k}^{k} Y_{t+i}
f ^ ( t ) = 2 k + 1 1 i = − k ∑ k Y t + i
指数平滑法 :
f ^ ( t ) = α Y t + ( 1 − α ) f ^ ( t − 1 ) \hat{f}(t) = \alpha Y_t + (1-\alpha)\hat{f}(t-1)
f ^ ( t ) = α Y t + ( 1 − α ) f ^ ( t − 1 )
其中 α ∈ ( 0 , 1 ) \alpha \in (0,1) α ∈ ( 0 , 1 ) 为平滑参数。
噪声数据处理实现
1 2 3 4 5 6 7 8 9 10 11 12 13 分箱平滑 def binning_smooth (data, bin_size=3 , method='mean' ): smoothed = [] for i in range (0 , len (data), bin_size): bin_data = data[i:i+bin_size] if method == 'mean' : smoothed.extend([bin_data.mean()] * len (bin_data)) elif method == 'median' : smoothed.extend([bin_data.median()] * len (bin_data)) return smoothed 应用分箱平滑 df['Temperature_Smooth' ] = binning_smooth(df['Temperature' ].values)
数据集成与相关性分析
统计相关性理论
Pearson相关系数
总体相关系数:
ρ X , Y = Cov ( X , Y ) σ X σ Y = E [ ( X − μ X ) ( Y − μ Y ) ] σ X σ Y \rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} = \frac{\mathbb{E}[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X \sigma_Y}
ρ X , Y = σ X σ Y Cov ( X , Y ) = σ X σ Y E [( X − μ X ) ( Y − μ Y )]
样本相关系数:
r x y = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 r_{xy} = \frac{\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^n (x_i - \bar{x})^2} \sqrt{\sum_{i=1}^n (y_i - \bar{y})^2}}
r x y = ∑ i = 1 n ( x i − x ˉ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ )
相关性检验
检验统计量:
t = r n − 2 1 − r 2 ∼ t ( n − 2 ) t = \frac{r\sqrt{n-2}}{\sqrt{1-r^2}} \sim t(n-2)
t = 1 − r 2 r n − 2 ∼ t ( n − 2 )
其中 H 0 : ρ = 0 H_0: \rho = 0 H 0 : ρ = 0 ,H 1 : ρ ≠ 0 H_1: \rho \neq 0 H 1 : ρ = 0 。
相关系数计算实现
1 2 3 4 5 6 7 8 9 10 11 12 Pearson相关系数 corr_matrix = df.corr() print ("Correlation Matrix:" )print ("=" * 30 )print (corr_matrix) 可视化相关矩阵 import seaborn as snsplt.figure(figsize=(10 , 8 )) sns.heatmap(corr_matrix, annot=True , cmap='coolwarm' , center=0 ) plt.title('Feature Correlation Matrix' ) plt.show()
卡方检验与列联表分析
对于两个分类变量的独立性检验:
期望频数计算
E i j = ( r o w i total ) × ( c o l u m n j total ) grand total E_{ij} = \frac{(row_i \text{ total}) \times (column_j \text{ total})}{\text{grand total}}
E ij = grand total ( ro w i total ) × ( co l u m n j total )
卡方统计量
χ 2 = ∑ i = 1 r ∑ j = 1 c ( O i j − E i j ) 2 E i j ∼ χ 2 ( ( r − 1 ) ( c − 1 ) ) \chi^2 = \sum_{i=1}^r \sum_{j=1}^c \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \sim \chi^2((r-1)(c-1))
χ 2 = i = 1 ∑ r j = 1 ∑ c E ij ( O ij − E ij ) 2 ∼ χ 2 (( r − 1 ) ( c − 1 ))
应用注意 :当期望频数小于5的单元格比例超过20%时,需使用Fisher精确检验。
特征工程与维度约简
主成分分析(PCA)数学基础
给定中心化数据矩阵 X X X (n × p n \times p n × p ),寻找投影方向 w w w 使得投影后方差最大:
max w w T Σ w s.t. w T w = 1 \max_{w} w^T \Sigma w \quad \text{s.t.} \quad w^T w = 1
w max w T Σ w s.t. w T w = 1
其中 Σ = 1 n X T X \Sigma = \frac{1}{n} X^T X Σ = n 1 X T X 为样本协方差矩阵。
特征分解解法
Σ v i = λ i v i , i = 1 , 2 , … , p \Sigma v_i = \lambda_i v_i, \quad i=1,2,\ldots,p
Σ v i = λ i v i , i = 1 , 2 , … , p
其中 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p ≥ 0 \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_p \geq 0 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p ≥ 0 为特征值,v i v_i v i 为对应特征向量。
方差解释比例
第 k k k 个主成分的方差解释比例为:
λ k ∑ i = 1 p λ i \frac{\lambda_k}{\sum_{i=1}^p \lambda_i}
∑ i = 1 p λ i λ k
特征选择理论
过滤法(Filter Methods)
基于统计量(如相关系数、卡方统计量、互信息)评估特征重要性。
包裹法(Wrapper Methods)
通过子集搜索和交叉验证选择最优特征子集,常用算法:
嵌入法(Embedded Methods)
在模型训练过程中自动进行特征选择,如:
特征工程实现
多项式特征
1 2 3 4 5 6 7 8 9 10 from sklearn.preprocessing import PolynomialFeatures 创建多项式特征 poly = PolynomialFeatures(degree=2 , include_bias=False ) data_poly = poly.fit_transform(df[['Temperature' , 'Humidity' ]]) feature_names = poly.get_feature_names_out(['Temperature' , 'Humidity' ]) 合并特征 df_poly = pd.DataFrame(data_poly, columns=feature_names) df_extended = pd.concat([df, df_poly], axis=1 )
统计特征创建
1 2 3 4 5 6 7 8 基于统计的新特征 df['RM_LSTAT' ] = df['RM' ] * df['LSTAT' ] 房间数 × 低收入人群比例 df['RM_PTRATIO' ] = df['RM' ] / df['PTRATIO' ] 房间数 ÷ 师生比 df['RM_TAX' ] = df['RM' ] / df['TAX' ] 房间数 ÷ 房产税 计算新特征与目标变量的相关性 target_corrs = df.corr()['target' ].abs ().sort_values(ascending=False ) selected_features = target_corrs[target_corrs >= 0.5 ].index.tolist()
数据变换与规范化
规范化方法
最小-最大规范化
v ′ = v − min A max A − min A × ( new_max A − new_min A ) + new_min A v' = \frac{v - \min_A}{\max_A - \min_A} \times (\text{new\_max}_A - \text{new\_min}_A) + \text{new\_min}_A
v ′ = max A − min A v − min A × ( new_max A − new_min A ) + new_min A
Z-score规范化
v ′ = v − μ A σ A v' = \frac{v - \mu_A}{\sigma_A}
v ′ = σ A v − μ A
小数定标规范化
v ′ = v 10 j v' = \frac{v}{10^j}
v ′ = 1 0 j v
其中 j j j 是使 max ( ∣ v ′ ∣ ) < 1 \max(|v'|) < 1 max ( ∣ v ′ ∣ ) < 1 的最小整数
规范化实现
1 2 3 4 5 6 7 8 9 from sklearn.preprocessing import MinMaxScaler, StandardScaler 最小-最大规范化 minmax_scaler = MinMaxScaler() df_minmax = minmax_scaler.fit_transform(df[['Temperature' , 'Humidity' ]]) Z-score规范化 std_scaler = StandardScaler() df_std = std_scaler.fit_transform(df[['Temperature' , 'Humidity' ]])
数据离散化与概念分层
离散化算法分类
无监督离散化
有监督离散化
概念层次生成方法
基于统计的方法
根据属性值的 distinct 数量自动生成层次结构,distinct 值越多的属性位于越低层次。
基于域知识的方法
由领域专家明确定义层次关系,如:
地理层次:街道 < 城市 < 州 < 国家
时间层次:日 < 月 < 季度 < 年
离散化实现
1 2 3 4 5 6 7 8 9 10 11 等宽离散化 df['Temp_Binned' ] = pd.cut(df['Temperature' ], bins=5 , labels=['Low' , 'Medium-Low' , 'Medium' , 'Medium-High' , 'High' ]) 等深离散化 df['Humidity_Binned' ] = pd.qcut(df['Humidity' ], q=4 , labels=['Q1' , 'Q2' , 'Q3' , 'Q4' ]) 基于聚类的离散化 from sklearn.cluster import KMeanskmeans = KMeans(n_clusters=3 ) df['Sales_Cluster' ] = kmeans.fit_predict(df[['Sales' ]])
总结
时间序列分析要点
平稳性检验 是时间序列分析的前提
非平稳序列 可通过差分等方法转换为平稳序列
自相关分析 有助于理解序列内部结构
数据预处理关键步骤
数据清洗 :处理缺失值、噪声和异常值
数据集成 :解决多源数据的一致性问题
数据归约 :通过特征选择和数据压缩提高效率
数据变换 :规范化和离散化提升模型性能
最佳实践建议
始终从数据探索和可视化开始分析
根据数据特性选择合适的预处理方法
多次迭代优化特征工程策略
验证预处理效果对最终模型的影响