Kaggle实例-Titanic分析(二)-补全 拟合

前言

  本来是打算用一篇博客把完整的一次数据处理全部记录下来,但是无奈断(lan)电(ai)。同时也是为了写的更详(tuo)细(ta)一些,防止以后看不懂,所以我决定把三个大部分分开来写,同时,后面的内容我也打算这样处理希望各位大佬海涵。

———-我是逗逼的分割线———-

数据补充

  上回书说到,船帆了,人挂了,大家各安天命了。(摔)。我们简单的对我们当前得到的数据进行了简单的分析,以此来找出我们最后训练时能够用到的特征值。我们用图或表进行了相关内容的可视化处理。一眼就能看出的赶脚,大概找出了几个可能有用的特征值:年龄(age),性别(sex),乘客等级(Pclass),以及有可能有用的堂兄弟个数(SibSp), 亲子个数(Parch)。
  当然以上的内容都是我们结合图表大概分析得来,最终是否对训练有用当前我们是一概不知的。接下来可能有童鞋想说,我们是不是可以开始训练了?.当然不是。因为,我们在前文中说到过一个问题,那就是我们得到的数据是残缺的!(划重点)。残缺的啊有木有啊同志们。所以我们首先的当务之急是先要把我们所要使用的age选项来补齐。
  那么问题又来了,我们该如何来补上这部分残缺的值呢?根据情况有这么两种方法
  通常遇到缺值的情况,我们会有几种常见的处理方式

  1. 如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中。 如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
  2. 如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
      有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
    这里我们采用大佬推荐的一种scikit-learn中的RandomForest来拟合一下缺失的年龄数据
from sklearn.ensemble import RandomForestRegressor
def set_missing_ages(df):
    # 把已有的数值型特征取出来丢进Random Forest Regressor中
    age_df = df[['Age','Fare', 'Parch', 'SibSp', 'Pclass']
    # 乘客分成已知年龄和未知年龄两部分
    known_age = age_df[age_df.Age.notnull()].as_matrix()
    unknown_age = age_df[age_df.Age.isnull()].as_matrix()
    # y即目标年龄
    y = known_age[:, 0]
    # X即特征属性值
    X = known_age[:, 1:]
    # fit到RandomForestRegressor之中
    rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)
    rfr.fit(X, y)
    # 用得到的模型进行未知年龄结果预测
    predictedAges = rfr.predict(unknown_age[:, 1::])
    
### 如何复现 Kaggle 项目 要成功复现一个 Kaggle 项目,需要从多个方面着手准备,包括但不限于数据管理、代码版本控制以及依赖项配置。以下是详细的指南: #### 数据管理 为了确保实验的可复现性,需妥善保存原始数据集及其任何预处理后的中间产物。可以利用云存储服务或者 Git LFS 来追踪大文件的变化情况[^1]。 #### 代码版本控制 采用Git作为主要的版本控制系统来跟踪所有的更改历史是非常重要的。每次提交都应附带清晰的信息描述所做的修改内容。另外,也可以考虑使用Docker容器化技术封装运行环境,从而减少因不同开发环境中存在的差异而导致的结果不一致问题[^2]。 #### 环境配置与依赖管理 对于 Python 生态圈内的项目来说,Conda 和 Virtualenv 是两种常用的虚拟环境解决方案;它们可以帮助开发者精确指定所需的库版本号,避免由于第三方包升级而引发潜在冲突的风险。与此同时,借助 requirements.txt 文件记录当前安装的所有软件包列表也是一种简单有效的方法[^3]。 #### 实例演示 - Titanic生存预测分析 下面给出一段基于 Scikit-Learn 的逻辑回归模型训练过程的例子: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 加载数据集 data = pd.read_csv('titanic.csv') # 特征工程 (此处仅为简化示例) X = data[['Age', 'Fare']].fillna(0).values y = data['Survived'].values # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 构建并拟合模型 model = LogisticRegression() model.fit(X_train, y_train) # 预测及评估性能 predictions = model.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, predictions)}') ``` 此脚本展示了如何加载 CSV 格式的输入资料、执行基本的数据清理操作、分割样本集合用于验证目的最后计算分类准确性指标得分[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值