随机森林底层代码(多颗决策树)
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)

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...