循环获取最小RMSE值并在每列中使用"apply"进行预测的步骤如下:
以下是一个示例代码:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 导入数据集
data = pd.read_csv("data.csv")
# 分割特征变量和目标变量
X = data.drop("target", axis=1)
y = data["target"]
# 创建空列表来存储RMSE值
rmse_values = []
# 循环遍历每一列
for col in X.columns:
# 将当前列作为目标变量,其他列作为特征变量
X_train, X_test, y_train, y_test = train_test_split(X.drop(col, axis=1), y, test_size=0.3, random_state=42)
# 使用线性回归模型拟合训练集数据
model = LinearRegression()
model.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = model.predict(X_test)
# 计算均方根误差(RMSE)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
# 将RMSE值添加到列表中
rmse_values.append(rmse)
# 找到最小RMSE值的列索引
min_rmse_index = np.argmin(rmse_values)
# 使用完整数据集拟合模型
X_train, X_test, y_train, y_test = train_test_split(X.drop(X.columns[min_rmse_index], axis=1), y, test_size=0.3, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
# 使用apply函数在每列中进行预测
predicted_values = X.apply(lambda x: model.predict(np.array(x).reshape(1, -1))[0], axis=0)
上述代码仅为示例,实际应用中可能需要根据数据集和具体需求进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云