python语言写一个用读取exce数据表,把数据表第2,7,9列作为输入,29列作为输出,用随机森林算法经过多次迭代将输出进行预测,把读取数据的前百分之90作为训练集,后百分之10作为测试集,并画出实际与预测曲线。
时间: 2024-05-03 12:19:12 浏览: 68
python按条件读写Excel表中的数据 v2.0
好的,以下是实现该功能的代码:
```python
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
# 读取Excel数据表
df = pd.read_excel('data.xlsx')
# 取出需要的列作为输入和输出
X = df.iloc[:, [1, 6, 8]].values
y = df.iloc[:, 28].values
# 划分训练集和测试集
train_size = int(len(df) * 0.9)
X_train, y_train = X[:train_size], y[:train_size]
X_test, y_test = X[train_size:], y[train_size:]
# 定义随机森林模型
model = RandomForestRegressor(n_estimators=100, random_state=0)
# 训练模型
for i in range(10):
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print('Iteration', i+1, 'R2 score:', r2_score(y_test, y_pred))
# 画出实际与预测曲线
plt.plot(y_test, label='Actual')
plt.plot(y_pred, label='Predicted')
plt.legend()
plt.show()
```
需要注意的是,上述代码中使用了随机森林模型进行预测,其中 n_estimators 参数表示使用的决策树数量,random_state 参数用于设置随机种子,保证每次运行结果一致。另外,由于数据量较小,迭代次数只设置为了 10 次,实际使用时可以根据情况进行调整。
阅读全文