Pandas 如何将model.predict()的结果合并回原始DataFrame
在本文中,我们将探讨如何将机器学习模型预测的结果与原始的Pandas DataFrame合并,以便进行数据分析、可视化或导出。
首先,我们需要使用Pandas和Scikit-learn建立一个简单的回归模型,并对样本数据进行预测。以下是一些模拟数据的样例:
import pandas as pd
from sklearn.linear_model import LinearRegression
# 创建一个DataFrame
df = pd.DataFrame({
'x': [1, 2, 3, 4, 5],
'y': [0, 1, 2, 3, 4]
})
# 将x列作为自变量,y作为因变量
X = df[['x']]
y = df['y']
# 建立一个线性回归模型
lm = LinearRegression()
lm.fit(X, y)
# 预测x=6时y的取值
pred = lm.predict([[6]])
print(pred)
# 输出[5.]
接下来,我们将在原始DataFrame中添加第6行,并将模型预测的结果合并到df中:
# 添加一行数据
new_data = {'x': 6, 'y': None}
df = df.append(new_data, ignore_index=True)
# 对新添加的数据进行预测,并将预测结果保存到DataFrame的最后一行
df.iloc[-1, 1] = lm.predict([[6]])[0]
print(df)
输出结果:
x y
0 1 0
1 2 1
2 3 2
3 4 3
4 5 4
5 6 5
在上面的示例中,我们使用iloc方法将最后一行的第二个元素(即y值)设为预测模型的输出结果。另一种会更直观的方法是使用Pandas的.at方法:
df.at[df.index[-1], 'y'] = lm.predict([[6]])[0]
print(df)
输出结果与上面的示例相同。
有时我们需要对整个DataFrame进行预测,对于这种情况,我们可以使用Pandas的.apply()方法一行代码解决:
df['y_pred'] = df['x'].apply(lambda x: lm.predict([[x]])[0])
print(df)
输出:
x y y_pred
0 1 0 0.0
1 2 1 1.0
2 3 2 2.0
3 4 3 3.0
4 5 4 4.0
5 6 5 5.0
阅读更多:Pandas 教程
总结
使用Pandas将模型预测的结果合并回原始的DataFrame是一项常见的任务,它可以帮助我们进一步分析和可视化数据,从而得出有意义的结论。在本文中,我们通过示例代码演示了如何将预测结果合并到DataFrame中,并给出了简化代码的技巧。希望这篇文章对你有所帮助!
极客教程