使用随机森林的机器学习算法构建模型

import pandas as pd
import numpy as np
import pickle #使用pickle可以方便地保存和加载复杂的数据结构
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
import matplotlib.pyplot as plt 
from sklearn.metrics import r2_score #用于计算回归模型的R²(决定系数)分数
house=pd.read_excel('D:\\AGB-LAI-CHL\\chl-project\\form\\x_y.xlsx',header=None)
x = house.iloc[:, :-3] #使用了pandas库中的iloc函数来对数据进行切片操作,它选择了所有行,并且选择了除了最后三列之外的所有列,将结果赋值给变量x
y = house.iloc[:, -3]
validation_size = 0.2 #验证集的比例为总数据集的20%
seed = 8
x_train,x_validation,y_train,y_validation=train_test_split(x,y,test_size=validation_size, random_state=seed) #将原始数据集划分为训练集和验证集
regressor = RandomForestRegressor(n_estimators=20,random_state=0) #n_estimators表示随机森林中决策树的数量,random_state是一个随机数种子,用于控制随机性
regressor.fit(x_train,y_train) #x_train是一个包含训练样本的特征向量的矩阵,y_train是一个包含对应训练样本的目标值的向量
#保存模型
pickle.dump(regressor,open("D:\\AGB-LAI-CHL\\chl-project\\model-dat\\model_RF_CHL.dat", "wb")) #将regressor对象保存到指定路径的文件中
K_pred = regressor.predict(x_validation) #使用训练好的回归模型 regressor 进行预测,得到预测结果 K_pred
score = r2_score(y_validation, K_pred) #score为R²值
#方差
sum = 0
for i in range(len(K_pred)):
    sum = sum + (np.array(y_validation)[i]-K_pred[i])**2
sum /= len(K_pred)
print(sum) #打印预测值与验证集实际值之间的均方误差(MSE)
plt.plot(np.arange(len(K_pred)), y_validation, 'go-', label='true value')
plt.plot(np.arange(len(K_pred)), K_pred, 'ro-', label='predict value')
plt.legend() #用于显示图例
plt.show() #用于显示图形

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值