SVR,时间序列分析的评价指标,python数据标准化

知识点

  1. SVR

    • 参考
    • 支持向量机(SVM)是一种分类算法,但是也可以做回归,根据输入的数据不同可做不同的模型(若输入标签为连续值则做回归,若输入标签为分类值则用SVC做分类
    • 对于SVM算法,我们首先导入sklearn.svm中的SVR模块。SVR()就是SVM算法来做回归用的方法(即输入标签是连续值的时候要用的方法),通过以下语句来确定SVR的模式:
        from sklearn.svm import SVR
         
        svr = SVR(kernel=’rbf’, C=1e3, gamma=0.01)
      
      • kernal:核函数类型。一般常用的有‘rbf’,‘linear’,‘poly’,等,发现使用‘rbf’参数时函数模型的拟合效果最好,其他拟合都是线性拟合。
      • C:惩罚因子。C表征你有多么重视离群点,C越大越重视,越不想丢掉它们。C值大时对误差分类的惩罚增大,C值小时对误差分类的惩罚减小。当C越大,趋近无穷的时候,表示不允许分类误差的存在,margin越小,容易过拟合;当C趋于0时,表示我们不再关注分类是否正确,只要求margin越大,容易欠拟合。
      • gamma:是’rbf’,’poly’和’sigmoid’的核系数且gamma的值必须大于0。随着gamma的增大,存在对于测试集分类效果差而对训练分类效果好的情况,并且容易泛化误差出现过拟合。
  2. 时间序列分析的评价指标

    • 均方误差(MSE)
      1 m ∑ i = 1 m ( y i − y i ^ ) 2 \frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2 m1i=1m(yiyi^)2
      其中 y i y_i yi 是真实值, y i ^ \hat{y_i} yi^ 是预测值
    • 均方根误差(RMSE)
      1 m ∑ i = 1 m ( y i − y i ^ ) 2 \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2} m1i=1m(yiyi^)2
      均方根误差就是均方误差开方,使误差的量级和原数据一致,使数据更好描述
    • 平均绝对误差(MAE)
      1 m ∑ i = 1 m ∣ y i − y i ^ ∣ \frac{1}{m}\sum_{i=1}^{m}\lvert y_i - \hat{y_i}\rvert m1i=1myiyi^
    • 对称平均绝对百分误差(SMAPE)
      100 % n ∑ i = 1 n ∣ y i − y ^ i ∣ ( ∣ y i ∣ + ∣ y ^ i ∣ ) / 2 \frac{100\%}{n} \sum_{i=1}^n \frac{\lvert y_i - \hat{y}_i \rvert}{(\lvert y_i \rvert + \lvert \hat{y}_i \rvert)/2} n100%i=1n(yi+y^i)/2yiy^i
  3. 数据标准化

    [In]:
    import numpy as np
    from sklearn.preprocessing import MinMaxScaler
    
    # 用最大最小值标准化
    scaler = MinMaxScaler(feature_range=(0,  1))
    arr = np.array([1,2,3,4,5,6,7])
    # 讲arr变形为[[1][2][3][4][5][6][7]],因为fit_transform需要2维输入
    arr = arr.reshape(-1, 1)
    print(arr)
    # fit_transform(arr)将arr实现标准化
    dataset = scaler.fit_transform(arr)
    # ravel()的作用是将n维矩阵降为1维
    dataset = dataset.ravel()
    print(dataset)
    
    [Out]: 
    [[1]
    [2]
    [3]
    [4]
    [5]
    [6]
    [7]]
    
    [0. 0.16666667 0.33333333 0.5 0.66666667 0.83333333 1. ]
    

你可能感兴趣的:(TSC)