机器学习:随机森林预测泰坦尼克数据

随机森林

1、集成学习方法
集成学习通过建立几个模型组合来解决单一预测问题
工作原理:生成多个分类器/模型,各自独立地学习和做出预测
这些预测最后结合成单预测,因此优于任何一个单分类做出的预测

2、随机森林
包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定

3、随机森林算法
单个树建立
(1)随机在N个样本中选择一个样本,重复N次,样本有可能重复
(2)随机在M个特征中选出m个特征 m<<M

建立多棵树,样本,特征大多不一样

4、随机有放回抽样 bootstrap抽样
随机:避免每棵树都一样
有放回:每棵树和其他树有交集

5、参数调优
树木数量:120, 200, 300, 500, 800, 1200
最大深度:5, 8, 15, 25 ,30

6、随机森林的优点
在当前所有算法中,具有极好的准确率
能够有效地运行在大数据集上
能够处理具有高纬特征的输入样本,而且不需要降维
能够评估各个特征在分类问题上的重要性

代码示例

import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# 读取数据
train = pd.read_csv("source/train.csv")

# 选取数据集和目标集
data = train[["Pclass", "Sex", "Age"]]
target = train["Survived"]

# 缺失值处理
pd.set_option('mode.chained_assignment', None)
data["Age"].fillna(data["Age"].mean(), inplace=True)
data["Pclass"].replace(1, "low", inplace=True)
data["Pclass"].replace(2, "middle", inplace=True)
data["Pclass"].replace(3, "high", inplace=True)

# 拆分数据集成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    data, target, test_size=0.25)

# 特征工程,类别-> One-Hot编码
dct = DictVectorizer(sparse=False)
X_train = dct.fit_transform(X_train.to_dict(orient="records"))
X_test = dct.transform(X_test.to_dict(orient="records"))
print(dct.get_feature_names())

# 随机森林预测 超参数调优
rf = RandomForestClassifier()

# 网格搜索与交叉验证
params = {
    "n_estimators": [10, 60, 100, 120, 150, 200],
    "max_depth": [3, 5, 8, 15, 25, 30]
}

gs = GridSearchCV(rf, params, cv=2)
gs.fit(X_train, y_train)
print(gs.score(X_test, y_test))
print(gs.best_params_)
"""
0.8251121076233184
{'max_depth': 3, 'n_estimators': 60}
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值