预测建模 - 具有分组id和移动平均值(python)的回归

时间:2016-10-24 15:04:58

标签: python pandas numpy machine-learning scikit-learn

我遇到预测建模问题。希望有人有时间可以帮助我。起始位置如下所示。 S1-S2是传感器测量值,RUL是我的目标值。

数据结构:

id period s1       s2       s3        RUL
1  1      510.23   643.43   1585.29   6
1  2      512.34   644.89   1586.12   5
1  3      514.65   645.11   1587.99   4
1  4      512.98   647.59   1588.45   3
1  5      516.34   649.04   1590.65   2
1  6      518.12   652.62   1593.09   1
2  1      509.77   640.61   1584.91   9
2  2      510.26   642.06   1586.00   8
2  3      511.95   643.62   1588.09   7 
2  4      513.51   646.51   1589.45   6
2  5      512.17   648.06   1589.54   5
2  6      515.56   646.11   1586.22   4
2  7      518.78   649.34   1586.96   3
2  8      519.90   650.30   1588.95   2
2  9      521.05   651.39   1591.34   1
3  1      501.11   653.99   1580.45   8
3  2      511.45   643.23   1584.09   7
3  3      505.45   643.78   1586.11   6
3  4      504.45   643.43   1588.34   5 
3  5      506.45   643.71   1589.89   4
3  6      511.45   643.33   1591.21   3
3  7      516.45   643.61   1592.42   2
3  8      518.45   643.05   1596.77   1

目标:

我的目标是预测未见数据的剩余有用实时(RUL)。在这种情况下,我只有一种类型的机器具有不同的ID(这意味着1种类型和3种不同的物理系统)。对于预测,id无关紧要,因为它是同一台机器。此外,我想添加新功能。 s1 s2和s3的移动平均值。所以我必须添加三个名为a1,a2和a3的新列。

例如,a1应该如下所示:

a1
NaN
NaN
512.41
513.32
514.66
515.81
NaN
NaN
510.66
511.91
512.54
513.75
515.50
518.08
519.91
NaN
NaN
506.00
507.12
505.45
507.45
511.45
515.45

接下来的问题是,我无法使用NaN,因为它是一个字符串。如何忽略/使用a1,a2和a3?

下一个问题是:我如何使用像RandomForest和Bagged Decision Trees这样的回归模型和train_test_split来预测看不见的新数据的RUL? (当然我需要更多数据,这个例子只给出结构。)[s1],[s2],[s3]是我的输入,RUL是输出。 此外,我想用平均绝对误差,均方误差和R 2来评估模型。

最后,我想使用gridsearch方法进行调整。

谢谢:

提前谢谢你。我知道我想做什么,但我无法用python实现它。完整的代码将是完美的。

1 个答案:

答案 0 :(得分:1)

解决这个问题的标准方法是通过估算。 SciKitLearn有一个用于插补的内置包。文档在这里:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Imputer.html

更换NaN有3种策略:
1)用柱子的平均值替换它 2)用列的模式替换它 3)用柱的中位数替换它

使用示例如下:

from sklearn.preprocessing import Imputer
imp = Imputer(strategy = 'mean', axis = 1)
a1 = Imputer.fit_transform(a1, strategy = 'mean')

此处还提供了一些使用示例:http://scikit-learn.org/stable/modules/preprocessing.html#imputation