给你一串股票数据1234nannannan2345nannannan3456nannannan1234nannannan其中nan是你需要预测的值7个数据为一组每组之间没有关系请写出python代码使用线性回归
来预测这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]
其中,预测结果中的小数表示线性回归模型预测的浮点数,需要根据实际情况进行取整
原文地址: https://www.cveoy.top/t/topic/fnyq 著作权归作者所有。请勿转载和采集!