gpt4 book ai didi

python - 机器学习中如何处理缺失数据?

转载 作者:行者123 更新时间:2023-11-30 08:49:33 25 4
gpt4 key购买 nike

我有一个数据框,在周五晚上 9 点到周一凌晨 0 点之间总是缺少信息。我使用这些数据通过线性回归算法进行预测,因此这个跳跃超出了我的预测:

                    date   timestamp   liters  next_liters
...
3442 2017-02-03 19:00:00 1486148400 0.86261 0.86354
3443 2017-02-03 20:00:00 1486152000 0.86354 0.86356
3444 2017-02-03 21:00:00 1486155600 0.86356 1.86330
3445 2017-02-06 00:00:00 1486339200 1.86330 1.86305
3446 2017-02-06 01:00:00 1486342800 1.86305 1.86321
3447 2017-02-06 02:00:00 1486346400 1.86321 1.86352
3448 2017-02-06 03:00:00 1486350000 1.86352 1.86311
3449 2017-02-06 04:00:00 1486353600 1.86311 1.86271
...

我想知道如何处理这个问题,以便在通过算法处理数据时不考虑周五到周一。

我虽然将这些值转换为 NaN,但是,如您所知,sklearn 不允许此类信息。

这是我当前的代码:

df = df[['date', 'epoch', 'liters']]
df['next_liters'] = df['liters'].shift(-1)

df.dropna(inplace=True)

X = np.array(df.drop(['next_liters'], 1))
X = preprocessing.scale(X)

y = np.array(df['next_liters'])

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

clf = LinearRegression(fit_intercept=True, n_jobs=-1)
clf.fit(X_train, y_train)

print ("LinearRegression (" + str(clf.score(X_test, y_test)) + ")")
print (clf.predict(X_test))

最佳答案

我们可以使用 pandas 内置函数获取工作日,从中创建一个新列,过滤 df 以排除“星期六”和“星期日”,然后再次过滤以丢弃任何大于 20:59:59 的日期星期五。

这当然与 ML 无关,而只是使用 pandas 进行一些索引。

df['weekday'] = df['date'].dt.dayofweek
df = df[(df['date'] <5)]

现在我们需要过滤周五(工作日 = 4)21:00:00 之后的所有内容。我们可以通过从时间戳中获取小时来做到这一点(不优雅,但我需要再次创建一个新列,但我确信有一种更干净的方法!)

def hr_func(ts):
return ts.hour

df['hour'] = df['date'].apply(hr_func)

df = df[(df['weekday'] !=4 ) | (df['hour'] <21)
df.head()

换句话说,如果不是星期五,则保留它,如果是星期五但晚上 9 点之前,则保留它。

我很确定这应该有效!

http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing

“一周中的哪一天,星期一=0,星期日=6”来自: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.weekday.html

Get weekday/day-of-week for Datetime column of DataFrame

关于python - 机器学习中如何处理缺失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com