`

[Kaggle实战] Titanic 逃生预测 (3) - Age离散化

阅读更多

昨天的文章大致构建了一个data matrix, 并进行了数据清理。有一个遗留问题就是,如何将连续的Age属性离散化?

 

对于连续属性离散化,可以参考《数据挖掘导论》 2.3.6小节。

首先,我们试着将数据图形化,看看是否有明显的间隔区间。 画图依然使用JFreeChart来进行。

从肉眼的角度来分析,虽然没有太明显的区间,但是从分布上看,基本上能如下图进行划分:



 

再来一张书上的原图进行对比:



这一张图里面的分布区间就太明显了。

 

除了使用图形化的方式来进行离散化,还可以有其他的方法:

(1) 等宽: 比如Age: [0~15] [15~30] [30~45] ...

(2) 等频率/等深 :比如前100个样本成一个区间,101~200个成1个区间 ...

(3) K均值(K-Means) : 这个方法现在有点早~ 后面可以进一步优化的时候再采用这种方法进行Age属性划分

 

所以,现在Age的划分就按照:

[0:15), [15:40) [40:+∞)

 

最后附上今天refine过的dataClean方法

public static double[][] dataClean(List<String[]> list) {
    double[][] dataMatrix = new double[list.size()][6];
    List<Double> ageList = new ArrayList<Double>();
    int startIndex = 0;
    int Survived_INDEX = startIndex++;
    int Pclass_INDEX = startIndex++;
    int Sex_INDEX = startIndex++;
    int Age_INDEX = startIndex++;
    int SibSp_INDEX = startIndex++;
    int Embarked_INDEX = startIndex++;
    
    for(int i = 0; i < list.size(); i++){
        String[] arr = list.get(i);
        // Survived
        dataMatrix[i][Survived_INDEX] = Integer.parseInt(arr[1]);
        
        // Pclass
        dataMatrix[i][Pclass_INDEX] = Integer.parseInt(arr[2]);
        
        // Sex
        if(arr[4].equals("male")) {
            dataMatrix[i][Sex_INDEX] = 1; 
        } else {
            dataMatrix[i][Sex_INDEX] = 2;
        }
        
        // Age
        if(arr[5].length() == 0) {
            dataMatrix[i][Age_INDEX] = -1;		// 首先将缺失值设置为-1
        } else {
            dataMatrix[i][Age_INDEX] = Double.parseDouble(arr[5]);
            ageList.add(Double.parseDouble(arr[5]));
        }
        
        // SibSp  将值大于2的归集为同一类
        if(Integer.parseInt(arr[6]) >= 2 ) {
            dataMatrix[i][SibSp_INDEX] = 2;
        } else {
            dataMatrix[i][SibSp_INDEX] = Integer.parseInt(arr[6]);
        }
        
        // Embarked C:1 Q:2 S:3 U:4	 
        // 原始数据之中已经手动的将缺失值补充为U,不是CQS的值,也用4来代替
        String embarked = arr[11];
        if(embarked.equals("C")) {
            dataMatrix[i][Embarked_INDEX] = 1;
        } else if(embarked.equals("Q")) {
            dataMatrix[i][Embarked_INDEX] = 2;
        } else if(embarked.equals("S")) {
            dataMatrix[i][Embarked_INDEX] = 3;
        } else  {
            dataMatrix[i][Embarked_INDEX] = 4;
        } 
        
    }
    
    // 将Age=-1的值变成中位数
    double[] ageArr = new double[ageList.size()];
    for(int i = 0; i < ageArr.length; i++) {
        ageArr[i] = ageList.get(i);
    }
    double median = StatUtils.percentile(ageArr, 50.0);	//中位数
    for(int i = 0; i < dataMatrix.length; i++) {
        if(dataMatrix[i][3] == -1) {
            dataMatrix[i][3] = median;
        }
        
        // 直接将Age离散化 [0:15), [15:40) [40:+∞)
        if(dataMatrix[i][3] < 15) dataMatrix[i][3] = 1;
        else if(dataMatrix[i][3] < 40) dataMatrix[i][3] = 2;
        else dataMatrix[i][3] = 3;
        
    }
    
    
    return dataMatrix;
}

 

至此,第一步 数据预处理基本上完成。接下来应该做的就是构建一个决策树进行分类与预测了!

提交了一部分代码,可以到https://gitcafe.com/rangerwolf/Kaggle-Titanic 下载

  • 大小: 40.1 KB
  • 大小: 26 KB
分享到:
评论

相关推荐

    [Kaggle实战] Titanic 逃生预测 (4) - 决策树建模

    在本篇【Kaggle实战】中,我们将深入探讨如何使用决策树模型对Titanic生存数据进行预测。Titanic是一个著名的机器学习问题,目标是预测乘客在船沉没时是否存活。这个实战教程将帮助你了解如何处理真实世界的数据集,...

    kaggle—Titanic_kaggle-titantic预测_

    【标题】:kaggle—Titanic_kaggle-titantic预测_ 【描述】:这个项目是关于在Kaggle平台上进行的泰坦尼克号(Titanic)生存预测挑战。它涉及了完整的数据分析流程,包括数据预处理、特征工程、模型训练以及结果...

    kaggle_titanic-master.zip

    "kaggle_titanic-master.zip"就是一个这样的例子,它源自著名的Kaggle竞赛,旨在挑战参赛者利用历史数据预测泰坦尼克号乘客的生存情况。这个数据集不仅提供了丰富的实操经验,还让我们有机会接触到真实世界中的预测...

    kaggle-titanic, 关于Kaggle的Titanic教程.zip

    kaggle-titanic, 关于Kaggle的Titanic教程 kaggle这是一个在Kaggle笔记本上进行竞赛的教程,来自灾难的泰坦尼克机器学习。 这个存储库的目标是为那些兴趣进入数据分析或者使用 python的kaggle科学比赛的数据提供竞争...

    Kaggle_Titanic_master

    【标题】"Kaggle_Titanic_master" 是一个数据科学项目,主要集中在Kaggle平台上,该平台是全球领先的数据科学和机器学习竞赛的发源地。这个项目的核心是利用泰坦尼克号乘客的数据来预测他们在船沉没时的生存情况。 ...

    Kaggle-Titanic---Machine-Learning-from-Disaster

    【标题】"Kaggle-Titanic---Machine-Learning-from-Disaster" 是一个非常知名的机器学习项目,源自数据科学竞赛平台Kaggle。这个项目的核心是利用历史数据预测泰坦尼克号沉船事件中乘客的生存情况。通过分析这些数据...

    kaggle elo-merchant-category-recommendation dataset

    《Kaggle Elo 商户类别推荐数据集解析》 在数据科学领域,Kaggle平台上的数据集常常被用于学习和实践。"elo-merchant-category-recommendation"是Kaggle举办的一场竞赛,旨在利用机器学习技术为用户提供最优的商户...

    kaggle数据集 gun-violence-data_01-2013_03-2018

    kaggle数据集 gun-violence-data_01-2013_03-2018kaggle数据集 gun-violence-data_01-2013_03-2018

    kaggle-dataset sentiment-analysis-on-movie-reviews

    The Rotten Tomatoes movie review dataset包含train.tsv &gt;8M和test.tsv &gt;3M两个文件 kaggle下载地址: https:// www.kaggle.com/c/sentiment analysis on movie reviews/data ...3 somewhat positive 4 positive

    kaggle泰坦尼克数据titanic

    `gender_submission.csv`是一个示例提交文件,展示了如何按照Kaggle比赛的要求格式化预测结果。 现在,我们深入探讨一下这些数据集中的知识点: 1. 数据预处理:在使用这些数据之前,通常需要进行数据清洗和预处理...

    Kaggle-M5-Forecasting-Accuracy-2020:Kaggle上的M5预测问题的解决方案

    Kaggle M5预测精度2020 背景 资料库包含我的团队对2020年3月2日至6月30日在Kaggle举行的(即M5)的解决方案。请查看我的! 入门 克隆仓库: ...cd {path-to-dir}/Kaggle-M5-Forecasting-Accuracy-2020

    kaggle竞赛Titanic数据集

    3. **gender_submission.csv**:这是一个示例提交文件,展示了如何格式化预测结果。它显示了所有乘客根据性别预测的生存状态,这是一种非常基础的预测策略,通常作为参赛者的起点。 在这个问题中,我们面临的是一个...

    kaggle-two-sigma-connect-rental-listing-inquiries.zip

    kaggle实战案例,赛事课题内容,解决方案汇总,机器学习、人工智能案例参考。 kaggle实战案例,赛事课题内容,解决方案汇总,机器学习、人工智能案例参考。kaggle实战案例,赛事课题内容,解决方案汇总,机器学习、...

    Dogs vs. Cats Kaggle猫狗大战数据集---训练03

    Dogs vs. Cats Kaggle猫狗大战数据集

    Python库 | kaggle_environments-0.1.2-py3-none-any.whl

    《Python库kaggle_environments详解》 在Python的生态系统中,库扮演着至关重要的角色,它们为开发者提供了丰富的功能,极大地提高了开发效率。本文将深入探讨名为`kaggle_environments`的Python库,该库是专为...

    kaggle_titanic_dataset-数据集.zip

    KAGGLE竞赛官方网站上下载下来的数据集,最全kaggle泰坦尼克数据集。欢迎下载。

    Kaggle入门-泰坦尼克号之灾(数据集+代码+结果).zip

    最后,将这份预测结果上传到Kaggle,系统会自动计算我们的模型在未知数据上的预测准确率,从而在排行榜上给出排名。 总的来说,Kaggle的泰坦尼克号挑战是一个理想的入门项目,它涵盖了数据预处理、特征工程、模型...

Global site tag (gtag.js) - Google Analytics