Python/Scikit-learn/regressions - 从pandas数据框到Scikit预测

5
我可以帮你翻译成中文。以下是您提供的名为main_frame的pandas DataFrame:
            target_var  input1  input2  input3  input4  input5    input6
Date
2013-09-01        13.0     NaN     NaN     NaN     NaN     NaN       NaN   
2013-10-01        13.0     NaN     NaN     NaN     NaN     NaN       NaN   
2013-11-01        12.2     NaN     NaN     NaN     NaN     NaN       NaN   
2013-12-01        10.9     NaN     NaN     NaN     NaN     NaN       NaN   
2014-01-01        11.7       0      13      42       0       0        16   
2014-02-01        12.0      13       8      58       0       0        14   
2014-03-01        12.8      13      15     100       0       0        24   
2014-04-01        13.1       0      11      50      34       0        18   
2014-05-01        12.2      12      14      56      30      71        18   
2014-06-01        11.7      13      16      43      44       0        22   
2014-07-01        11.2       0      19      45      35       0        18   
2014-08-01        11.4      12      16      37      31       0        24   
2014-09-01        10.9      14      14      47      30      56        20   
2014-10-01        10.5      15      17      54      24      56        22   
2014-11-01        10.7      12      18      60      41      63        21   
2014-12-01         9.6      12      14      42      29      53        16   
2015-01-01        10.2      10      16      37      31       0        20   
2015-02-01        10.7      11      20      39      28       0        19   
2015-03-01        10.9      10      17      75      27      87        22   
2015-04-01        10.8      14      17      73      30      43        25   
2015-05-01        10.2      10      17      55      31      52        24

我一直在尝试探索Scikit-learn上的数据集,但我不确定问题是pandas数据集、日期作为索引、NaN/Inf/0(我不知道如何解决)还是其他问题我无法追踪。
我想建立一个简单的回归模型,根据名为“Input”(1,2,3...)的变量来预测下一个目标变量。
请注意,时间序列中有很多零和NaN,可能会出现Inf。
1个回答

5

首先,您应该尝试删除任何具有Inf-Inf或NaN值的行(其他方法包括用特征的平均值填充NaN值)。

df = df.replace(to_replace=[np.Inf, -np.Inf], value=np.NaN)
df = df.dropna()

现在,创建一个numpy矩阵来表示你的特征,并且创建一个向量来表示你的目标变量。鉴于你的目标变量在第一列,你可以使用整数索引来实现:

X = df.iloc[:, 1:].values
y = df.iloc[:, 0].values

然后创建并拟合您的模型:
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X=X, y=y)

现在,您可以查看您的估算结果:
>>> model.intercept_
12.109583092421092

>>> model.coef_
array([-0.05269033, -0.17723251,  0.03627883,  0.02219596, -0.01377465,
        0.0111017 ])

在上面的例子中,X=main_frame.input1[:,1:].values,y=main_frame.target_var[:,0].values,对吗? - aabujamra
df只是一个数据框的通用术语。在您的情况下,您可以将其替换为main_frame。请使用iloc(索引位置)代替input1target_var - Alexander
您介意在您的答案中添加一个将其与X和y一起绘制的方法吗? - aabujamra
  1. 每篇帖子只能有一个问题。
  2. X是一个有6列的数组,你期望会发生什么?
- Alexander
1
@trench 是的,它将是 y = -.0.05input1 - 0.177input2 + 0.05input3 + 0.02input4 -0.01input5 + 0.01input6 + 12.11 - Alexander
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接