机器学习-随机森林(集成学习方法)

集成学习:建立几个模型组合来解决某一预测问题,生成多个分类器。

随机森林:多个决策树的分类器,输出结果选择占比最大的结果

 

单个树建立过程:1.随机在N个样本种选择一个样本,重复N次,样本可能重复。

                             2.随机在M个特征中选出m个特征

假设10棵决策树,样本、特征大多不一样

 

二、决策树代码

import pandas as pd #数据分析
import numpy as np  #科学计算
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split, GridSearchCV #数据分隔和网格搜索
from sklearn.tree import DecisionTreeClassifier, export_graphviz #决策树的可视化
from sklearn.ensemble import RandomForestClassifier

def decison():
    """
    决策树对泰坦尼克号生存人数预测
    :return:None
    """
    #获取数据
    titan = pd.read_csv("train.csv")   #根据自己的路径定,我是把数据集从kaggle里下载到python的文件夹里面
    #将乘客的位置、年龄、性别做为特征列
    x = titan[['Pclass', 'Age', 'Sex']]
    #是否生存作为标签类
    y = titan['Survived']
    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_rows', None)
    #缺失值处理
    x['Age'].fillna(x['Age'].mean(), inplace=True)
    print(x)

    #分隔数据集
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

    #特征工程 特征中是类别的信息要进行one-hot编码,还要把特征转换成字典形式
    dict = DictVectorizer(sparse=False)
    x_train = dict.fit_transform(x_train.to_dict(orient="records"))
    x_test = dict.fit_transform(x_test.to_dict(orient="records"))

    print(dict.get_feature_names() )
   #用决策树进行预测
    # dec = DecisionTreeClassifier()
    # dec.fit(x_train, y_train)
    # print("预测准确率", print(dec.score(x_test, y_test)))
    #
    # #决策树的结构可视化
    # export_graphviz(dec, out_file="./tree.dot", feature_names= ['年龄', 'Pclass', '女性', '男性'])
    #
    # #将dot二进制文件,转化成可视化图片
    #随机森林预测
    rf = RandomForestClassifier()
    param = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}  #每两两参数进行组合

    #网格搜索与交叉验证,选择最佳参数
    gc = GridSearchCV(rf, param_grid=param, cv=2)
    gc.fit(x_train, y_train)
    print("准确率", gc.score(x_test, y_test) )
    print("选出的最优参数", gc.best_params_ )

    return None



if __name__ =="__main__":
    decison()

随机森林有点:

1.能够有效地运行在大数据集上

2.能够处理高维度的特征,而不需要降维

3.评估各个特征在分类问题上的重要性

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值