在做项目时要用随机森林,查资料发现大多数都是用随机森林做分类,很少见到有回归的。虽然分类随机森林和回归随机森林代码实现相差不大,但是对于新手小白来说,如果有比较完整的代码直接学习可以节省很多时间,这是我写这篇文章的原因。
随机森林我就不介绍了,其他地方介绍一搜一大堆。
这篇文章关注的是如何用python实现回归随机森林。分为随机森林构建和随机森林预测两部分
随机森林构建——
- 随机森林主要的参数有树的棵树、特征的个数和树的最大深度,在mydata定义参数
-
#自定义参数 def mydata(): trees=10 #CART回归树的个数 n_features=6 #特征个数 max_depth=20 #树的最大深度 return trees,n_features,max_depth
- 读入数据,我用的股票数据是csv格式,将文件名和路径名分开写,方便有需要时将整个文件夹的文件逐个读出
#读入数据 这样路径和文件名分开写,方便以后将整个文件夹的数据导入进来。
def loadCsvDataSet(fileName='E:\\Anaconda3\\mydata\\data'):
csv_path=os.path.join(fileName,"AMCX.csv")
df=pd.read_csv(csv_path)
#print(df.values)
return df.values
- 把数据集划分为训练数据和测试数据。我这里以2018年10月1日为分界线,10月1日以前为训练数据,以后为测试数据。
#把dataset划分成训练数据和测试数据 def split_train_test_data(dataSet): #第五列是adj close #即DataSet中取出feature列的值大于value的行,赋值给mat0, X_train=dataSet[np.nonzero(dataSet[:,0]<'2018-10-01')[0],:] X_test=dataSet[np.nonzero(dataSet[:,0]>'2018-10-01')[0],:] y_train=X_train[:,5] y_test=X_test[:,5] return X_train,X_test,y_train,y_test
- 分裂数据集。把数据集分成两份
#把dataset划分成训练数据和测试数据
def split_tra