随机森林底层代码(多颗决策树)
admin
2024-03-05 09:03:49
# 按照以下要求正确的完成随机森林做分类,底层的实现
# 
# 要求:
# 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)

相关内容

热门资讯

教师专享福利!北京这些景区免票... 新京报讯 据首都教育消息,教师节将至,北京多家景区为老师们准备了专属免票福利!这份优惠合集已整理好,...
黑茶,喝的是一种境界与健康 在专门用来喝黑茶的茶具“飘逸杯”里,黑茶茶汤看起来并不像“黑茶”这个名字那样黑黢黢的一团。 玻璃器皿...
上海旅游节大巡游花车阵容抢先看... 2026上海旅游节大巡游9月12日外滩启幕,21辆全新主题花车携手21支境内外表演方队联袂登场,邀你...
原创 8... 上周门诊来了位 62 岁的张阿姨,得糖尿病快五年了,平时管嘴特别严,糖果、点心、甜饮料一概不碰,连水...
原创 餐... 2026年9月8日晚,南京浦口区泰冯路29号,墨语江南·阿婆菜餐厅户外帐篷里,灯火温润,其间还天降喜...