# 按照以下要求正确的完成随机森林做分类,底层的实现 # # 要求: # 1.首先导入众多需要使用到的工具包(4分) import pandas as pd from sklearn import datasets import numpy as np from sklearn.tree import DecisionTreeClassifier # 2.使用pandas读取出来鸢尾花数据,分别作为X,Y(8分) iris=datasets.load_iris() print(iris.keys()) X=pd.DataFrame(data=iris.data,columns=iris.feature_names) Y=pd.DataFrame(data=iris.target) print(X.shape) # 3.将数据集合X,Y进行按列拼接(8分) data=pd.concat([X,Y],axis=1) # 4.定义两个列表,一个用于储存决策树模型,一个用来储存决策树随机选取的特征组合(8分) M=[] R=[] n_tree=100 # 5.设置森林中的决策树个数为100颗(8分) # 6.循环训练多棵树,并且每棵树随机选取样本(8分) for i in range(n_tree): # 7.为了构建每颗都不相同的决策数据,对样本进行有放回采样(8分) # replace=True 有放回抽样 samples=data.sample(n=len(X), replace=True) k=np.random.randint(1,samples.shape[1]) #要取的特征个数 # 8.随机选取特征(8分) r=np.random.choice(range(samples.shape[1]-1),k,replace=True).tolist() # 随机取k个特征索引值 X=samples.iloc[:,r] Y=samples.iloc[:,-1:] # 9.接着将选好的随机数据传入决策树种训练模型(8分) model=DecisionTreeClassifier() model.fit(X,Y) M.append(model) R.append(r) # 10.然后打印出每个基础模型的效果(8分) print('第'+str(i)+'颗树的分数预测:',model.score(X,Y)) # 11.接着测试随机森林的结果(8分)(100,150) result=pd.concat([pd.DataFrame([M[i].predict(data.iloc[:,R[i]])]) for i in range(n_tree)],ignore_index=True) # 12.输出预测结果,以行为单位取众数作为最终对每个样本类别的预测值(8分) prey=result.mode(axis=0).values[0].astype(int) print(prey) # 13.计算准确率,并将其输出(8分) score=np.mean(data.iloc[:,-1] == prey) print(score)
随机森林底层代码(多颗决策树)
最新推荐文章于 2024-07-15 15:30:12 发布