zoukankan      html  css  js  c++  java
  • 时序问题预测思路

    1、先仔细观察数据,看看我们的数据是否有空值、异常值(方差过大),然后看看我们要预测的东西是否肉眼可以看出规律。

    2、看一下我们训练样本是否足够多,如何正确的分成训练集、测试集和验证集。因为有时候特征是时序的,那么我们如果使用

    train_test_split去区分验证集和测试集,会导致我们测试集的样本,在训练集中已经出现了非常相似样本,会导致验证集结果很好,可是到测试集里结果却很差。

    3、明确我们能预测的时间范围,看我们是能预测未来一天的,还是预测未来一周的。

    4、特征工程:

    ①对于时序特征,我们可以取x2-x1,x3-x2,x4-x3作为特征。

    ②如果是回归问题,对结果取log,可以将不符合正态分布的数据,转化为正态分布

    ③可以使用滑动窗口取时序特征,np.mean(np.array([1,2,3,4]).reshape(-1,2),axis=1),这样窗口长度为2,步长stride=2

    5、回归问题一般使用rmsle和mape进行评判

    def calculate_rmsle(pred,y_test):
    arr = np.log(pred+1)-np.log(y_test+1)
    RMSLE = np.sqrt(np.linalg.norm(arr)/len(arr))
    return RMSLE

    标签y必须是大于0的,如果有等于0的情况,需要+1

    def calculate_mape(pred,y_test):
    arr = np.fabs((y_test-pred)/y_test)
    mape = np.sum(arr)/len(y_test)
    return mape

    6、xgboost里面对于one-hot的类别特征构造时,会将不同类别的样本直接独立开来。所以如果我们是类别特征的,不同的类别之间的样本要学习他们的共性的时候,

    如果这个特征之间有顺序的话,比如1,2,3,4,5,6,7代表星期的,他们是有顺序的,我们就还是用这个构造。或者0代表0-1之间的区间,1代表1-2之间的区间,这两个类别之间

    有大小关系的,我们就直接取数字。

    但是如果两个类别之间完全没有先后顺序,比如天气“阴天”和“晴天”,我们就还是取one-hot特征

  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第09组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    课程设计第十四天
  • 原文地址:https://www.cnblogs.com/yjybupt/p/11951684.html
Copyright © 2011-2022 走看看