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


    # 按照以下要求正确的完成随机森林做分类,底层的实现
    # 
    # 要求:
    # 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)
  • 相关阅读:
    Python(win+r--mspaint——打开画图)
    Java 数字金额,字符串格式化
    MySQL数据同步&归档使用工具总结
    卡莱特在创业板IPO注册获准:业绩实现稳定增长,中金等为股东
    C++哈希(无序容器,哈希表)
    小厂一面
    TS 函数 配合接口
    112、工作繁忙,随口胡说;接近胡说,敷衍而已
    Android Studio Flamingo 稳定版正式发布
    移相全桥DCDC通过Simulink扫频得到其传递函数方法及(非m脚本)
  • 原文地址:https://blog.csdn.net/m0_67084346/article/details/128112419