# kaggle Titanic
# 导入需要的库
import pandas as pd
import numpy as np
import sys
import sklearn
import random
import time from sklearn import ensemble
from sklearn.preprocessing import LabelEncoder from sklearn import feature_selection
from sklearn import model_selection
from sklearn import metrics
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns # 开始数据分析
data_train = pd.read_csv('data/train.csv')
data_test = pd.read_csv('data/test.csv') data_all = [data_train, data_test] # 测试一下
# print(data_all) # 将数据集列名都换成小写字母
for data in data_all:
data.columns = data.columns.str.lower() # 测试一下
# print(data_all) # 进行数据清洗
# print(data_all[0].isnull().sum()) # 看出age有177空缺 cabin有687空缺 embarked有2空缺
# print(data_all[1].isnull().sum()) # 针对空缺进行补足或删除属性
for data in data_all:
data['age'].fillna(data['age'].median(), inplace=True)
data['fare'].fillna(data['fare'].median(), inplace=True)
data['embarked'].fillna(data['embarked'].mode()[0], inplace=True) # mode按出现频率顺序返回取值 drop_columns = ['cabin', 'passengerid', 'ticket']
for data in data_all:
data.drop(drop_columns, axis=1, inplace=True) # 测一下试
# print(data_train.isnull().sum()) for data in data_all:
data['family_size'] = data['sibsp'] + data['parch'] + 1
data['single'] = 1
data['single'].loc[data['family_size'] > 1] = 0
data['title'] = data['name'].apply(lambda x: x.split(', ')[1]).apply(lambda x:
x.split('.')[0])
data['fare_bin'] = pd.cut(data['fare'], 4)
data['age_bin'] = pd.cut(data['age'], 5) # 测试一下
# data_train.to_csv('data/my_train.csv')
# data_test.to_csv('data/my_test.csv') data_train['title'] = data_train['title'].apply(lambda x: 'other' if data_train['title'].value_counts()[x] < 10 else x)
data_test['title'] = data_test['title'].apply(lambda x: 'other' if data_test['title'].value_counts()[x] < 10 else x)
# 测试一下
# print(data_train['title'].value_counts()) label = LabelEncoder()
for data in data_all:
data['sex_code'] = label.fit_transform(data['sex'])
data['embarked_code'] = label.fit_transform(data['embarked'])
data['title_code'] = label.fit_transform(data['title'])
data['age_bin_code'] = label.fit_transform(data['age_bin'])
data['fare_bin_code'] = label.fit_transform(data['fare_bin']) target = ['survived']
features = ['pclass', 'family_size', 'single', 'sex_code', 'embarked_code',
'title_code', 'age_bin_code', 'fare_bin_code'] features_all = target + features
data_dummy = pd.get_dummies(data_train[features])
# data_dummy.to_csv('data/dummy.csv')
# print(data_dummy) # 获取训练集合测试集 x_train, x_test, y_train, y_test = model_selection.train_test_split(data_dummy[features],
data_train[target],
random_state=0)
from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(max_features='auto',
random_state=1,
n_jobs=-1) # 最大特征数:自动适应; 结果对照组 1; 是否多线程训练 -1 是 param_gird = {
'criterion': ['gini', 'entropy'], # 基尼系数 信息熵,自动对比两个参数的效果挑选最好的
'min_samples_leaf': [1, 5, 10], # 最小的叶子节点保留数
'min_samples_split': [2, 4, 10, 16], # 最小分几类
'n_estimators': [50, 100, 400, 700, 1000] } # 网格搜索,自动搜索参数中的各种可能挑选效果最好的
# 创建一个网格搜索对象
gs = GridSearchCV(estimator=rf, # 传入随机森林对象
param_grid=param_gird, # 各种参数
scoring='accuracy', # 评判标准:准确度
cv=3, # 交叉验证
n_jobs=-1 # 线程数
)
gs = gs.fit(x_train, np.ravel(y_train)) print(gs.best_score_)
print(gs.best_params_) rf2 = RandomForestClassifier(criterion='entropy',
min_samples_leaf=5,
min_samples_split=16,
n_estimators=50,
n_jobs=-1,
random_state=1)
rf2.fit(x_train, np.ravel(y_train)) pred = rf2.predict(x_test)
pred_df = pd.DataFrame(pred, columns=['survived']) pred_df.to_csv('data/pred_df.csv')

kaggle入门 随机森林求解Titanic的更多相关文章

  1. 机器学习入门-随机森林预测温度-不同参数对结果的影响调参 1.RandomedSearchCV(随机参数组的选择) 2.GridSearchCV(网格参数搜索) 3.pprint(顺序打印) 4.rf.get_params(获得当前的输入参数)

    使用了RamdomedSearchCV迭代100次,从参数组里面选择出当前最佳的参数组合 在RamdomedSearchCV的基础上,使用GridSearchCV在上面最佳参数的周围选择一些合适的参数 ...

  2. 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)

    在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...

  3. 机器学习入门-随机森林温度预测的案例 1.datetime.datetime.datetime(将字符串转为为日期格式) 2.pd.get_dummies(将文本标签转换为one-hot编码) 3.rf.feature_importances_(研究样本特征的重要性) 4.fig.autofmt_xdate(rotation=60) 对标签进行翻转

    在这个案例中: 1. datetime.datetime.strptime(data, '%Y-%m-%d') # 由字符串格式转换为日期格式 2. pd.get_dummies(features)  ...

  4. kaggle数据挖掘竞赛初步--Titanic<随机森林&特征重要性>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...

  5. kaggle入门项目:Titanic存亡预测(四)模型拟合

    原kaggle比赛地址:https://www.kaggle.com/c/titanic 原kernel地址:A Data Science Framework: To Achieve 99% Accu ...

  6. kaggle入门项目:Titanic存亡预测 (一)比赛简介

    自从入了数据挖掘的坑,就在不停的看视频刷书,但是总觉得实在太过抽象,在结束了coursera上Andrew Ng 教授的机器学习课程还有刷完一整本集体智慧编程后更加迷茫了,所以需要一个实践项目来扎实之 ...

  7. kaggle 欺诈信用卡预测——不平衡训练样本的处理方法 综合结论就是:随机森林+过采样(直接复制或者smote后,黑白比例1:3 or 1:1)效果比较好!记得在smote前一定要先做标准化!!!其实随机森林对特征是否标准化无感,但是svm和LR就非常非常关键了

    先看数据: 特征如下: Time Number of seconds elapsed between each transaction (over two days) numeric V1 No de ...

  8. web安全之机器学习入门——3.2 决策树与随机森林

    目录 简介 决策树简单用法 决策树检测P0P3爆破 决策树检测FTP爆破 随机森林检测FTP爆破 简介 决策树和随机森林算法是最常见的分类算法: 决策树,判断的逻辑很多时候和人的思维非常接近. 随机森 ...

  9. kaggle入门——泰坦尼克之灾

    目录 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后记 引言 一直久闻kagg ...

  10. kaggle入门2——改进特征

    1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...

随机推荐

  1. char字符_C

    字符的表示  字符类型由单引号' '包围,字符串由双引号" "包围. //正确的写法 char a = '1'; char b = '$'; char c = 'X'; char ...

  2. vue小知识~eventBus

    eventBus是指在向全区暴露这个vue对象,此时在任意一个地方都可以使用vue相关的实例 在main.js配置 Vue.prototype.$bus=new Vue() 此时整个应用都可以使用vu ...

  3. DuiLib的编译

    Duilib编译需要注意两点: 加入预处理器:WIN32;_DEBUG;_WINDOWS;UILIB_STATIC; 到这一步还是报错,报错的是DuiString  +=  这一行报错,还有Util这 ...

  4. ComfyUI插件:IPAdapter_plus(新版)节点

    ComfyUI插件:IPAdapter_plus(新版)节点 前言: 学习ComfyUI是一场持久战,而IPAdapter_plus是常用且便捷有效的风格迁移模型,可以通过提供参考图像去进行图像的生成 ...

  5. 断点续传:使用java对大文件进行分块与合并

    通常我们下载上传的视频文件比较大.虽然https协议没有规定上传文件大小的限制,但是网络的质量,电脑硬件的参差不齐可能会导致大文件快要上传完成的时候突然断网了要重新上传,非常影响用户体验.以此我们引入 ...

  6. 2023/4/18 SCRUM个人博客

    1.我昨天的任务 初步学习dlib的安装,了解dlib的基础组件 2.遇到了什么困难 对pandas库了解不到位,需要学习其中的基础 3.我今天的任务 初步了解了pandas库,对series和dat ...

  7. Windows cifs共享给linux

    Windows 搜索启用或关闭Windows功能 启用cifs 共享文件并添加普通用户 解禁guest用户和设置本地策略 右键计算机 win+r输入secpol.msc 将guest删除 修改网络访问 ...

  8. ambari2.8+ambari-metrics3.0+bigtop3.2编译、打包、安装

    bigtop编译 资源说明: 软件及代码镜像 开发包镜像 github访问 编译相关知识 技术知识 bigtop编译流程及经验总结 各模块编译难度及大概耗时(纯编译耗时,不包含下载文件和排错时间) c ...

  9. 【Zookeeper】02 文件系统 & 监听机制

    官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题, 如:统一命名服务.状态同步服务.集 ...

  10. 甄嬛霸气照 —— Chinese Queen