Giter VIP home page Giter VIP logo

kaggle_'s Introduction

titanic优化过程及代码说明_张苓轩

titanic.ipynb #初次尝试

1、观察给的数据,样本数较小,因此需要对缺失值进行填补。 2、首先观察名字部分,提取其中的称呼(如Mr)为 Title 标签。 观察 Name 发现称呼主要为 Master、Mr、Miss、Mrs 四类,其他均较少,因此将较少的这些归为一类Rare。 3、然后观察 Age 部分,发现缺失值较多,而 Master、Mr 这类称呼与年龄有一定关系,因此依据称呼推断年龄, 将年龄缺失值以对应称呼的中位数进行填补。 4、观察 Cabin 标签并提取首字母(船舱种类)发现共有九种不同船舱,其中 T 型舱只有一个,疑似登记错误,观察此人信息,对比相同条件人员, 推测为 C 型舱,并修改数据为 C。 5、对登船地点 Embarked 以众数填补缺失值,对票价 Fare 以中位数填补缺失值 6、观察票价 Fare 发现,部分人群票价为 0 ,观察这些人数据,各标签数据接近,疑似船员。新建标签 Worker 记录这一信息 7、观察 SibSp 和 Parch 发现数据相似,归为一类 FamilySize = SibSp + Parch + 1,并删去 SibSp 和 Parch 这俩标签。 8、对符合条件的各标签进行 One-Hot 编码。 9、将年龄 Age 等分为32组,票价 Fare 等分为8组对应8种船舱。 10、删去已提取完信息的无用标签。 11、采用决策树、随机森林、支持向量机三种方式,调用 GridSearchCV 库进行训练,对比采用了 随机森林 和 SVM 方式并上传结果,成绩在0.76。

titanic_2.ipynb #多次尝试

1、数据样本较小,因此对缺失值进行填补。 2、提取 Name 标签中的 称谓 和 姓氏,并存储到新标签 Title 和 Surname中。 3、观察 Title 发现,Master代表小男孩,却无小女孩的对应称谓,进一步观察数据发现 大部分小于15岁的女性(即女孩)称谓为Miss。 因此对这部分数据进行处理,将女孩(15岁以下)的 Title 值更新为 Girl。 将占少数的称谓归为一类 Rare。 4、观察 SibSp 和 Parch 发现影响相似,因此归为一类 FamilySize = SibSp + Parch + 1。 5、依据 Title 标签,将年龄缺失的人员信息以各称谓的年龄中位数填补。 6、新增 NameLength (名字长度)标签,(听说欧美人名字长的往往尊贵)。 7、将 Cabin 缺失值填补为 U 。 8、将上船地点 Embarked 的缺失值以众数填补,将票价 Fare 的缺失值以中位数填补。 9、继续观察 Cabin 标签,发现共有9种,其中 T 只有一个,疑似登记错误,对比其他条件相似人员的信息,推测应为 C ,将 Cabin 更新为 C。 10、观察 Fare 标签发现部分存在0值,观察这部分人员信息,条件相似,推测为船员,新建标签 Worker,对应标记为1. 11、画图观察 FamilySize 与 Survived 的关系,发现 FamilySize 适中的存活率更高,因此依据 FamilySize 大小分为三组,存到新标签 FamilyLabel 中。 12、将姓氏相同的人员划为一组统计每组人数,得到新标签 FamilyGroup 。 13、将票价 Fare 等分为8组,对应8种船舱。 14、观察 Age 与 Survived 关系发现,15岁以下人员(儿童)更易存活,依据联合国对青年老年的划分,以15岁和60岁为界,按 Age 将数据分为3组,存储到新标签 AgeLabel 。 15、将各字符串类型标签转换为一一对应的 int64 值。 16、采用决策树、随机森林、支持向量机三种方式,调用 GridSearchCV 库进行训练,对比采用了 随机森林 和 SVM 方式并上传结果,成绩在0.78。

titanic优化过程及代码说明_孟春伟

文件:titanic_mcw.ipynb 和 titanic_last.ipynb

1、对初始文件titanic_mcw.ipynb出现的问题的思考: (1) 变量Age只是参考别人方法简单以16岁为分界线划分为成年人和小孩,根据数据分布进行更精确的划分可能减小误差,改进预测结果。 (2) 客舱号Cabin对应船上的不同位置,会对存活情况有影响。但由于缺失数据太多,此文件考虑这个变量。 (3) 本次预测只是单独对每个变量进行简单分析后当做建立模型的特征变量进行预测。通过对不同变量数据的深入分析整理,可以建立新的特征变量,应该会对预测结果有进一步的提升。

2、在组内成员已有工作的基础上,进行了进一步优化:

数据预处理部分: 查看Embarked数据分布情况,发现数值为S,即在南安普顿登船的可能性最大,将缺失值以S填充

特征工程部分: 根据数据预处理时对数据分布的观察,对原有数据进行整合处理,得到一些新特征来反映数据的更多信息 (1)家庭成员规模 将Patch和SibSp字段数值相加,可以看作是一名乘客同行的家庭成员总人数,再根据家庭成员具体人数的多少得到家庭规模familysize,发现家庭成员人数在2——4人时,乘客的生存率较高,即家庭成员规模为(较小 中等 较大)中的中等规模。 (2)Age缺失值 方法一:查看Age与Parch、Pclass、Sex、SibSp、Title以及构建的一些新的特征量的相关系数大小,筛选出相关性较高的变量,拆分数据构建随机森林模型预测缺失的数据 方法二:由于缺失Age的数据量较大,考虑采用多重插值法MICE预测填补Age的缺失数据。绘制Age与测结果与Age原始数据的分布图,对比其年龄分布情况,发现分布大体相同,可以认为预测结果较为准确。 (3)考虑姓名 发现考虑姓名的一些特征,对模型有很好的优化效果。对同姓氏男性、女性及儿童进行同组效应分析,发现均存在“同生共死”特点。利用同组效应对生存率为1的姓氏的男性数据进行修正,提升其预测为“可以幸存”的概率。对生存率为0的姓氏里的女性及儿童数据进行修正,提升其预测为“并未幸存”的概率。 (4)数据降维 在数据特征工程处理过程中增加了数据特征维度,为了提高算法的可用性和删除冗余特征以解决多重共线性问题,需要对数据进行降维处理,找出与乘客生还率“Survived”相关性更高的特征。

模型算法部分: 考虑使用常用的机器学习算法进行比较 Decision Tree 决策树 Extra Trees 极端随机树 Gradient Boosting 梯度提升算法 Random Forest 随机森林算法 KNN 最近邻分类算法 Logistic Regression 逻辑回归 Linear Discriminant Analysis 线性判别分析 进行模型交叉验证,对模型调优后发现GradientBoosting算法准确度最高

titanic优化过程及代码说明_程治语

初始分析: 确定信息:包含11类数据,其中 ID与生还几率应该无关(此处是典型的错误思维) AGE和Cabiny有相当多的数值缺失,需要人为补齐或者丢弃(排除) 数值型的数据包含:Survived Pclass Age SibSp Parch Fare 其中连续数据类型包括 AGE Fare 离散数据类型包括 Survived Pclass SibSp Parch 字符串类型的包括:Name Ticket Sex Embarked Cabin

遇到的的问题有如下几个 1.缺失数据,对AGE和CABINT必须进行数据处理,补齐之后再进行计算 2.某些数据无法直接看出是否和生还率有关,直接忽略不进行处理是不合理的。典型数据比如Ticket(船票描述具体规则不明确,难以解读其中含义), Cabin(舱室命名规则未知)。 3.字符串类数据和连续数据无法直接进行处理,需要转化为离散数据,方便决策树建立。其中字符串类的处理方式应当注意,如果在解决问题2的途中能够 解读出来各项字符的含义,就应当对各项字符进行细化分类,如果实在看不出来,可以简单的按照有无进行考虑。

(1)初稿:
初稿使用了简单的数据处理方式,选取数值型变量利用随机森林对AGE进行预测,补齐所有缺失的数值,Cabin直接按照有无进行考虑,同时为了方便逻辑回归, 对AGE和FARE两个属性进行了归一化处理。 得到结果0.76

(2) 次稿以及改进 进行改进,主要有一下几个方面 1.补齐AGE的操作优化 2.对部分未进行使用的参数进行处理 3.尝试去掉某些不重要的字段 4.对影响较高的字段进行组合细分

对Pclass和Sex进行组合 class有3等级,sex两个 c1man c2man c3man c1woman c2woman c3woman

对父母/子女>1,且名字中带有Mrs的样本添加mother属性,猜测其是一名母亲,获救的概率会相应提高

添加了child属性,对年龄小于12岁的孩子进行了单独分类

假定住得起高等舱室的一般是有钱人,有钱人一般相对年长 作图分析证实了这一点,舱位和年龄之间确实有相关性质 分为9类,进行决策树拟合,确定年龄 Mr,Mrs,Miss和3类舱室

注意到有部分舱室数据包含了多条,对一人多舱进行分类,多舱室的人一般属于大家庭/有钱人,同生还率相关

仅选与年龄明显相关的数据进行拟合 SibSp Parch Fare Mr,Mrs,Miss和3类舱室

直接放弃了出发港口选项,最终得分为0.77511

(3) 3稿以及存在问题 将模型系数和特征值联合进行分析有以下结论

可以看出对class与姓名进行细分的策略是有效的,尤其是高级别舱室的女性乘客有着相当高的获救概率,符合预期结果 此次没有使用登船港口选项,使用之后得分变为 0.775

第三稿优化 之前对ticket一直没有进行合理的分析,查询ticket中重票者并记录 对年龄使用决策树进行预测补齐会导致引入噪声,此处采用取对应舱室等级者中位数的方法,并且对age和frame进行分段处理,不使用归一化。 最终结果退化为0.7703 相比之下,归一化比分段似乎更适合逻辑回归 归一化 Age_scaled [-0.4700757246404741] 分段 Age [-0.02438356241719467] age的有效性降低了。可能由于分段不合理或者其他原因,导致性能退化,现已将方法恢复为归一化。

kaggle_'s People

Contributors

yrusosad avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.