随机森林底层代码(多颗决策树)

# 按照以下要求正确的完成随机森林做分类,底层的实现
# 
# 要求:
# 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值