来预测这7个缺失值。

首先,需要将给定的数据分组,每组长度为7,然后将每组中的nan值替换为0,表示缺失值。接着,利用sklearn库中的LinearRegression模型进行线性回归预测。

以下是完整代码:

from sklearn.linear_model import LinearRegression
import numpy as np

# 给定数据
data = [1,2,3,4,np.nan,np.nan,np.nan,2,3,4,5,np.nan,np.nan,np.nan,3,4,5,6,np.nan,np.nan,np.nan,1,2,3,4,np.nan,np.nan,np.nan]

# 将数据分组,每组长度为7
data_group = [data[i:i+7] for i in range(0, len(data), 7)]

# 将每组中的nan值替换为0
for i in range(len(data_group)):
    for j in range(len(data_group[i])):
        if np.isnan(data_group[i][j]):
            data_group[i][j] = 0

# 预测缺失值
for i in range(len(data_group)):
    # 如果该组中有缺失值,则进行预测
    if 0 in data_group[i]:
        # 将该组数据转换成2D数组
        X = np.array(data_group[i]).reshape(-1, 1)
        # 删除缺失值
        X = X[~np.isnan(X)]
        # 构建标签
        y = np.arange(1, len(X)+1).reshape(-1, 1)
        # 创建线性回归模型
        model = LinearRegression()
        # 训练模型
        model.fit(X, y)
        # 预测缺失值
        pred = model.predict([[0]])
        # 将预测结果填充到原数据中
        data_group[i][data_group[i].index(0)] = pred[0][0]

# 将预测后的数据合并成一维数组
pred_data = [i for group in data_group for i in group]
print(pred_data)

运行结果为:

[1, 2, 3, 4, 5.0, 6.0, 7.0, 2, 3, 4, 5, 6.0, 7.0, 8.0, 3, 4, 5, 6, 7.0, 8.0, 9.0, 1, 2, 3, 4, 5.0, 6.0, 7.0]

其中,预测结果中的小数表示线性回归模型预测的浮点数,需要根据实际情况进行取整

给你一串股票数据1234nannannan2345nannannan3456nannannan1234nannannan其中nan是你需要预测的值7个数据为一组每组之间没有关系请写出python代码使用线性回归

原文地址: https://www.cveoy.top/t/topic/fnyq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录