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

相关内容

热门资讯

摸鱼、钓虾、吃瓜、赏荷…初夏时... 这个周末,一场场充满野趣的“田园嘉年华”在沪郊金山多个农场上演,吸引众多市民带着孩子下乡来,赛跑、吃...
原创 戚... 5月28日,北京环球影城迎来了一对温暖的家庭画面:戚薇和李承铉携三岁半的儿子Seven现身游玩。现场...
滹沱河畔 遇见“诗和远方” 图为市民在滹沱河畔休闲娱乐。 初夏五月,惠风和畅。徜徉在石家庄滹沱河生态区(城区段),澄澈河水蜿蜒...
在迪士尼排队两小时,我才看清V... 文丨沈理 在网上看到一则新闻: 上海迪士尼,创极速光轮排队区。一个父亲牵着七八岁的儿子,已经在烈日...
重庆文旅喊你去吃火锅、观山水、... 本网讯(草原云·正北方网记者 马丽侠)火锅、机车、文创、演艺……5月28日下午,重庆市文化和旅游发展...