首页 > 编程知识 正文

Python随机森林回归

时间:2023-11-19 22:22:11 阅读:289218 作者:TKXU

随机森林(Random Forest)是一种基于决策树构造的集成式学习算法,它的方法就是通过构建多个决策树来达到优化预测的目的。本文主要介绍Python中使用随机森林回归进行数据分析和预测的方法。

一、安装需要的库

在Python中使用随机森林回归需要导入的库:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error

其中:

  • numpy是Python专门用来做科学计算的库,它包含很多数学函数和常用的数组处理函数。
  • pandas是基于numpy库的一种数据处理库,可以处理结构化数据,并提供了数据分析的接口。
  • train_test_split是用来划分训练集和测试集的函数。
  • RandomForestRegressor是随机森林回归的类。
  • mean_squared_error是均方误差函数,用来评价预测效果。

二、加载数据集

在本文的随机森林回归的例子中,我们使用了红酒数据集(Wine Quality Data Set),该数据集包含红酒的各种化学成分,以及由人工品尝员进行的酒品质评价。我们可以通过以下代码来加载该数据集:

df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', delimiter=';')

该数据集包含11个属性和1个标签属性,可以通过以下代码查看数据集的前5行:

print(df.head())

输出结果如下:

   fixed acidity  volatile acidity  citric acid  residual sugar  chlorides  
0             7.4              0.70         0.00             1.9      0.076   
1             7.8              0.88         0.00             2.6      0.098   
2             7.8              0.76         0.04             2.3      0.092   
3            11.2              0.28         0.56             1.9      0.075   
4             7.4              0.70         0.00             1.9      0.076   

   free sulfur dioxide  total sulfur dioxide  density    pH  sulphates  
0                 11.0                  34.0   0.9978  3.51       0.56   
1                 25.0                  67.0   0.9968  3.20       0.68   
2                 15.0                  54.0   0.9970  3.26       0.65   
3                 17.0                  60.0   0.9980  3.16       0.58   
4                 11.0                  34.0   0.9978  3.51       0.56   

   alcohol  quality  
0      9.4        5  
1      9.8        5  
2      9.8        5  
3      9.8        6  
4      9.4        5  

其中标签属性"quality"表示红酒的评分,取值从3到8。接下来我们将该数据集划分为训练集和测试集:

X = df.iloc[:, :-1].values
y = df.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

其中,X表示将除最后一列外的数据作为样本特征,而y表示最后一列数据作为标签分类,train_test_split函数用于划分训练集和测试集,test_size表示测试集所占的比例,random_state表示随机数生成种子,以确保生成的随机数具有可重复性。

三、训练模型

接下来,我们使用RandomForestRegressor进行模型训练。

regressor = RandomForestRegressor(n_estimators=100, random_state=0)
regressor.fit(X_train, y_train)

其中,n_estimators表示组成随机森林的决策树的数量,这里我们设置为100,random_state表示随机数生成种子,以确保生成的随机数具有可重复性。

四、预测模型

使用训练好的模型对测试集进行预测,并使用mean_squared_error来评价预测效果。

y_pred = regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)

均方误差越小,则表示预测的效果越好。

五、结果分析

通过以上代码得到的均方误差为0.338303125,可以看出预测效果比较好。我们还可以通过以下代码对模型进行重要性分析:

importances = pd.DataFrame({'feature':df.iloc[:, :-1].columns,'importance':np.round(regressor.feature_importances_,3)})
importances = importances.sort_values('importance',ascending=False).set_index('feature')
print(importances.head(10))

输出结果如下:

         importance
feature            
alcohol        0.227
volatile acidity    0.118
density        0.117
total sulfur dioxide    0.083
chlorides      0.082
free sulfur dioxide    0.081
residual sugar    0.077
pH          0.064
sulphates      0.055
fixed acidity    0.050

通过以上结果可以看出,影响红酒评分的因素中,"alcohol"和"volatile acidity"的重要性较高。

六、总结

本文介绍了使用Python进行随机森林回归分析的方法,包括数据集的加载、训练模型、预测模型以及结果分析。相信读者通过以上的介绍,对于随机森林回归方法已经有了基本的了解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。