精华内容
下载资源
问答
  • 泰坦尼克号数据集

    2018-04-27 13:19:14
    Kaggle平台泰坦尼克号数据集+源代码+注释
  • 泰坦尼克号数据集,pyhton数据分析练手,练手专用,数据分析,Python
  • 泰坦尼克号数据集,包含train和test数据集以及gender标签,泰坦尼克号数据集,包含train和test数据集以及gender标签,泰坦尼克号数据集,包含train和test数据集以及gender标签
  • 题目提供的训练数据集包含11个特征,分别是: Survived:0代表死亡,1代表存活 Pclass:乘客所持票类,有三种值(1,2,3) Name:乘客姓名 Sex:乘客性别 Age:乘客年龄(有缺失) SibSp:乘客兄弟姐妹/配偶的个数(整数值) ...
  • 机器学习泰坦尼克号案例的完整数据集,包含训练集和测试集。
  • 泰坦尼克号数据集:准备的逻辑回归模型和完成的随机森林分析
  • 献给所有数据挖掘爱好者 ...数据集为1912年泰坦尼克号沉船事件中一些船员的个人信息以及存活状况。这些历史数据已经非分为训练集和测试集,你可以根据训练集训练出合适的模型并预测测试集中的存活状况。
  • 来自Kaggle的泰坦尼克号数据集,包括测试集和训练集。用于决策树算法。
  • 泰坦尼克号的测试文件和提交性别报告,并把它们放在一起,整合为一个csv。这是伟大的图表,以帮助您可视化。...至少 70% 的权利, 但它由你来使它 100% 感谢泰坦尼克号初学者竞争提供的数据。 tested.csv
  • 暂无描述
  • 泰坦尼克号数据集(机器学习基本数据集)。训练集应用于构建机器学习模型。对于训练集,我们为每位乘客提供结果。您的模型将基于“特征”,如乘客的性别和阶级。也可以使用特征工程来创建新特征。测试集应该用来查看...
  • RMS泰坦尼克号的沉没是历史上最臭名昭著的沉船之一。1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会,并导致了更好的船舶安全条例。...
  • 泰坦尼克号预测
  • 泰坦尼克号数据集处理
  • 泰坦尼克号旅客数据集titanic3.xls,原下载地址http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.xls无法获取到。网上的资源比较贵,不方便学习。现在将找到的titanic3.xls数据集以较低的分提供给...
  • 卡格格尔·泰坦尼克号 具有Kaggle泰坦尼克号数据集的受监督ML项目 零-R准确性:62.201%决策树准确性:77.511%
  • 泰坦尼克号数据集.csv

    2021-07-21 10:31:18
    泰坦尼克号数据集.csv
  • 泰坦尼克号船员数据集,包括train.csv和test.csv。文件列名为PassengerId Survived,Pclass,Name,Sex ,Age,SibSp, Parch, Ticket, Fare Cabin Embarked。
  • 泰坦尼克号生存预测数据集 泰坦尼克号生存预测数据集 Taitanic data.zip
  • 对于测试集中的每个乘客,使用你训练过的模型来预测他们是否在泰坦尼克号沉没后幸存下来。 我们还包括gender_submission.csv,一组假设所有且只有女性乘客幸存的预测,作为提交文件应该是什么样子的一个例子。 数据...

    原文:

    Overview

    The data has been split into two groups:

    • training set (train.csv)

    • test set (test.csv)

    The training set should be used to build your machine learning models. For the training set, we provide the outcome (also known as the “ground truth”) for each passenger. Your model will be based on “features” like passengers’ gender and class. You can also use feature engineering to create new features.

    The test set should be used to see how well your model performs on unseen data. For the test set, we do not provide the ground truth for each passenger. It is your job to predict these outcomes. For each passenger in the test set, use the model you trained to predict whether or not they survived the sinking of the Titanic.

    We also include gender_submission.csv, a set of predictions that assume all and only female passengers survive, as an example of what a submission file should look like.

    Data Dictionary

     

     

    Variable

     

    Definition

     

    Key

     

    survival

     

    Survival

     

    0 = No, 1 = Yes

     

    pclass

     

    Ticket class

     

    1 = 1st, 2 = 2nd, 3 = 3rd

     

    sex

     

    Sex

     

     

     

    Age

     

    Age in years

     

     

     

    sibsp

     

    # of siblings / spouses aboard the Titanic

     

     

     

    parch

     

    # of parents / children aboard the Titanic

     

     

     

    ticket

     

    Ticket number

     

     

     

    fare

     

    Passenger fare

     

     

     

    cabin

     

    Cabin number

     

     

     

    embarked

     

    Port of Embarkation

     

    C = Cherbourg, Q = Queenstown, S = Southampton

     

    Variable Notes

    pclass: A proxy for socio-economic status (SES)

    1st = Upper

    2nd = Middle

    3rd = Lower

     

    age: Age is fractional if less than 1. If the age is estimated, is it in the form of xx.5

     

    sibsp: The dataset defines family relations in this way...

    Sibling = brother, sister, stepbrother, stepsister

    Spouse = husband, wife (mistresses and fiancés were ignored)

     

    parch: The dataset defines family relations in this way...

    Parent = mother, father

    Child = daughter, son, stepdaughter, stepson

    Some children travelled only with a nanny, therefore parch=0 for them.

     

    译:

    概述

    数据分为两组:

    训练集(train.csv)

    试验装置(test.csv)

    训练集应该用来建立你的机器学习模型。对于训练集,我们为每个乘客提供结果(也称为“基本事实”)。你的模型将基于乘客的性别和等级等“特征”。也可以使用特征工程来创建新特征。

    应该使用测试集来查看模型对未查看数据的执行情况。对于测试集,我们不提供每个乘客的真实情况。你的工作就是预测这些结果。对于测试集中的每个乘客,使用你训练过的模型来预测他们是否在泰坦尼克号沉没后幸存下来。

    我们还包括gender_submission.csv,一组假设所有且只有女性乘客幸存的预测,作为提交文件应该是什么样子的一个例子。

    数据字典:

     

     

    Variable

     

    Definition

     

    Key

     

    survival

     

    Survival

     

    0 = No, 1 = Yes

     

    pclass

     

    Ticket class

     

    1 = 1st, 2 = 2nd, 3 = 3rd

     

    sex

     

    Sex

     

     

     

    Age

     

    Age in years

     

     

     

    sibsp

     

    # of siblings / spouses aboard the Titanic

     

     

     

    parch

     

    # of parents / children aboard the Titanic

     

     

     

    ticket

     

    Ticket number

     

     

     

    fare

     

    Passenger fare

     

     

     

    cabin

     

    Cabin number

     

     

     

    embarked

     

    Port of Embarkation

     

    C = Cherbourg, Q = Queenstown, S = Southampton

     

    Variable Notes:

    pclass: A proxy for socio-economic status (SES)

    1st = Upper

    2nd = Middle

    3rd = Lower

     

    age: Age is fractional if less than 1. If the age is estimated, is it in the form of xx.5

     

    sibsp: The dataset defines family relations in this way...

    Sibling = brother, sister, stepbrother, stepsister

    Spouse = husband, wife (mistresses and fiancés were ignored)

     

    parch: The dataset defines family relations in this way...

    Parent = mother, father

    Child = daughter, son, stepdaughter, stepson

    Some children travelled only with a nanny, therefore parch=0 for them.

    大家可以到官网地址下载数据集,我自己也在百度网盘分享了一份。可关注本人公众号,回复“2020103001”获取下载链接。

     

    展开全文
  • 利用python分析泰坦尼克号数据集

    千次阅读 2020-12-18 09:17:19
    1 引言刚接触python与大数据不久,这个是学长给出的练习题目。知识积累太少,学习用了不少的...2.2 泰坦尼克号请到Data页面下载数据集数据集的各属性在Data页面下有详细介绍。问题就是以大家熟悉的泰坦尼克号为背...

    1 引言

    刚接触python与大数据不久,这个是学长给出的练习题目。知识积累太少,学习用了不少的时间。尽量详细的写,希望对各位的学习有所帮助。

    2 背景

    2.1 Kaggle

    本次数据集来自于Kaggle。Kaggle是一个数据分析建模的应用竞赛平台。想要了解详细资料的小伙伴请自行百度。

    2.2 泰坦尼克号

    请到Data页面下载数据集

    数据集的各属性在Data页面下有详细介绍。

    问题就是以大家熟悉的泰坦尼克号为背景展开的,本次任务的目的就是构建一个可以根据乘客个人信息推测乘客是否生存的数据模型。

    3 工具介绍

    3.1 Python

    我所用的python版本为:Python 3.5.2 。

    3.2 Anaconda3

    Anaconda 是一个很好用的数据分析工具集,其中的Spyder 与 Jupyter Notebook今后会经常使用,而且使用非常方便。

    4 初探数据

    相信你已经将数据下载到你的电脑中了,下面我们来将数据经行导入及简单分析。

    请先打开Spyder。

    4.1 导入训练集数据

    import pandas as pd #数据分析

    import numpy as np #科学计算

    from pandas import Series,DataFrame

    data_train = pd.read_csv(r'E:\Data\train.csv') #根据数据位置自行修改

    运行后我们会在Spyder窗口右上部看到data_train数据。点击后即可显示数据表格,如下:

    4.2 数据简单分析

    观察图表我们可以知道,共有891行、12列。这代表本训练集共有891条数据,每条数据有12类信息。包括:

    • PassengerId => 乘客ID

    • Survived => 获救情况(1为获救,0为未获救)

    • Pclass => 乘客等级(1/2/3等舱位)

    • Name => 乘客姓名

    • Sex => 性别

    • Age => 年龄

    • SibSp => 堂兄弟/妹个数

    • Parch => 父母与小孩个数

    • Ticket => 船票信息

    • Fare => 票价

    • Cabin => 客舱

    • Embarked => 登船港口

    初步观察,我们会发现一些数据信息值为:nan,这就代表该条数据该类信息缺失。在数据分析中,处理缺失值是一个很重要的步骤。一开始,我们不如统计各类信息的缺失的总体情况,让自己对该数据集有所了解。

    我们可以在IPython console框中输入:

    data_train.info()

    回车运行后,即可出现以下内容:

    由此可知,Age(年龄)有714人有记录,Cabin(客舱)有204人有记录,Embarked(登陆港口)有少量缺失。

    我们还可以用下列语句进行数据的总体统计:

    data_train.describe()

    结果如下:

    由此我们可知,乘客的平均年龄为29.7,最大年龄为80.0,最小年龄为0.42。获救人数为总体的0.383838,等等。

    5 数据图形化分析

    进行完总体的初步分析,我们接下来进行数据相关性的分析,为了便于观察,我们利用图表展示。

    5.1 乘客各属性

    代码:

    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

    plt.rcParams['font.family']='sans-serif'

    plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

    fig = plt.figure()

    fig.set(alpha=0.2) # 设定图表颜色alpha参数

    plt.subplot2grid((2,3),(0,0)) # 在一张大图里分列几个小图

    data_train.Survived.value_counts().plot(kind='bar')# 柱状图

    plt.title(u"获救情况 (1为获救)") # 标题

    plt.ylabel(u"人数") # Y轴标签

    plt.subplot2grid((2,3),(0,1))

    data_train.Pclass.value_counts().plot(kind="bar") # 柱状图显示

    plt.ylabel(u"人数")

    plt.title(u"乘客等级分布")

    plt.subplot2grid((2,3),(0,2))

    plt.scatter(data_train.Survived, data_train.Age) #为散点图传入数据

    plt.ylabel(u"年龄") # 设定纵坐标名称

    plt.grid(b=True, which='major', axis='y')

    plt.title(u"按年龄看获救分布 (1为获救)")

    plt.subplot2grid((2,3),(1,0), colspan=2)

    data_train.Age[data_train.Pclass == 1].plot(kind='kde') # 密度图

    data_train.Age[data_train.Pclass == 2].plot(kind='kde')

    data_train.Age[data_train.Pclass == 3].plot(kind='kde')

    plt.xlabel(u"年龄")# plots an axis lable

    plt.ylabel(u"密度")

    plt.title(u"各等级的乘客年龄分布")

    plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') # sets our legend for our graph.

    plt.subplot2grid((2,3),(1,2))

    data_train.Embarked.value_counts().plot(kind='bar')

    plt.title(u"各登船口岸上船人数")

    plt.ylabel(u"人数")

    plt.show()

    结果如下:

    如果Spyder无法显示中文标签,可以将代码放入IPython Notebook中运行。

    我们可以从这五张图中形象的了解到乘客的信息,获救人数少于未获救人数(之前我们以得到此结论),三等乘客人数最多,获救人员各年龄段分布(第一列第三张图,左边竖列标签为0,右边竖列标签为1),S口岸上船的乘客最多。等等。

    这时,我们就要将乘客各属性与其是否获救联系起来:

    获救情况和乘客等级是否有关?

    获救情况和乘客性别、年龄是否有关?(毕竟,妇女、小孩和老人优先搭乘救生艇)

    登船口岸是否是获救因素呢?(虽然感觉关系不大,但是也要考虑全面)

    5.2 各属性与获救情况的关联

    各乘客等级的获救情况

    Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts() # 未获救

    Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts() # 获救

    df = pd.DataFrame({u'获救':Survived_1,u'未获救':Survived_0})

    df.plot(kind = 'bar', stacked = True)

    plt.title(u'各乘客等级的获救情况')

    plt.xlabel(u'乘客等级')

    plt.ylabel(u'人数')

    plt.show()

    根据图表可以清楚看到第一等级的乘客,获救人数多于未获救人数,而其它两个等级的乘客,获救人数则少于未获救人数。

    所以,乘客等级与获救情况有关联。

    各性别的获救情况

    Survived_m = data_train.Survived[data_train.Sex == 'male'].value_counts()

    Survived_f = data_train.Survived[data_train.Sex == 'female'].value_counts()

    df = pd.DataFrame({u'男性':Survived_m,u'女性':Survived_f})

    df.plot(kind = 'bar', stacked = True)

    plt.title(u'按性别看获救情况')

    plt.xlabel(u'性别')

    plt.ylabel(u'人数')

    plt.show()

    很明显看出,未获救人员中男性乘客比例较大,获救人员中女性乘客比例较大。

    那么,可以确定性别也是获救情况的一个重要因素。

    根据舱等级和性别的获救情况(第一、二等级为高级舱,第三等级为低级舱)

    fig = plt.figure()

    plt.title(u'根据舱等级和性别的获救情况')

    ax1 = fig.add_subplot(141) # 将图像分为1行4列,从左到右从上到下的第1块

    data_train.Survived[data_train.Sex == 'female'][data_train.Pclass != 3].value_counts().plot(kind = 'bar', label = 'female high class', color = '#FA2479')

    ax1.set_xticklabels([u'获救',u'未获救'], rotation = 0) # 根据实际填写标签

    ax1.legend([u'女性/高级舱'], loc = 'best')

    ax2 = fig.add_subplot(142, sharey = ax1) # 将图像分为1行4列,从左到右从上到下的第2块

    data_train.Survived[data_train.Sex == 'female'][data_train.Pclass == 3].value_counts().plot(kind = 'bar', label = 'female low class', color = 'pink')

    ax2.set_xticklabels([u"未获救", u"获救"], rotation=0)

    plt.legend([u"女性/低级舱"], loc='best')

    ax3 = fig.add_subplot(143, sharey = ax1)

    data_train.Survived[data_train.Sex == 'male'][data_train.Pclass != 3].value_counts().plot(kind = 'bar', label = 'male high class', color = 'lightblue')

    ax3.set_xticklabels([u'未获救',u'获救'], rotation = 0)

    plt.legend([u'男性/高级舱'], loc = 'best')

    ax4 = fig.add_subplot(144, sharey = ax1)

    data_train.Survived[data_train.Sex == 'male'][data_train.Pclass == 3].value_counts().plot(kind = 'bar', label = 'male low class', color = 'steelblue')

    ax4.set_xticklabels([u'未获救',u'获救'], rotation = 0)

    plt.legend([u'男性/低级舱'], loc = 'bast')

    plt.show()

    很明显高级舱女性的生还率高于低级舱,低级舱男性的死亡率高于高级舱。在四种情况中,高级舱女性的生还率最高,低级舱男性的死亡率最高。

    将与获救情况相关联的两种属性结合后,所得到的结果可以更明显知晓他们的相关性。

    各登陆港口乘客的获救情况

    fig = plt.figure()

    fig.set(alpha = 0.2)

    Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts()

    Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()

    df = pd.DataFrame({u'获救':Survived_1,u'未获救':Survived_0})

    df.plot(kind = 'bar', stacked = True)

    plt.title(u'各登陆港口乘客的获救情况')

    plt.xlabel(u'登陆港口')

    plt.ylabel(u'人数')

    plt.show()

    获救情况与上船口岸的联系,根据上图感觉相关性并不强。C港的获救率高一些。

    堂兄弟/妹,孩子/父母有几人,对是否获救的影响

    g = data_train.groupby(['SibSp','Survived']) # 数据分组

    df = pd.DataFrame(g.count()['PassengerId'])

    print (df)

    g = data_train.groupby(['Parch','Survived'])

    df = pd.DataFrame(g.count()['PassengerId'])

    print (df)

    堂兄弟/妹,孩子/父母有几人,对是否获救的影响并不明显。

    按Cabin有无看获救情况

    fig = plt.figure()

    fig.set(alpha = 0.2)

    Survived_cabin = data_train.Survived[pd.notnull(data_train.Cabin)].value_counts()

    Survived_nocabin = data_train.Survived[pd.isnull(data_train.Cabin)].value_counts()

    df = pd.DataFrame({u'有':Survived_cabin, u'无':Survived_nocabin}).transpose()

    df.plot(kind = 'bar', stacked = True)

    plt.title(u'按Cabin有无看获救情况')

    plt.xlabel(u'Cabin有无')

    plt.ylabel(u'人数')

    plt.show()

    有客舱信息的获救情况较高一点。但情况复杂,比如生还者上岸后进行信息统计的话,就会影响信息有无对获救情况的关系。

    6 简单数据预处理

    #我们将测试集导入,再将删除Survived数据的训练集与测验集进行合并,这样便于进行数据处理

    data_test = pd.read_csv(r'E:\Data\test.csv') # 导入测验集数据

    y = data_train['Survived'] # 将训练集Survived 数据存储在y中

    del data_train['Survived'] # 删除训练集Survived数据

    sum_id = data_test['PassengerId'] # 存储测试集乘客ID

    df = pd.merge(data_train, data_test,how='outer') # 合并无Survived数据的训练集与测验集,how = ‘outer’ 意为并集

    #删掉无关因素

    df = df.drop(['Name','PassengerId','Ticket','Cabin'],axis=1) # 删除姓名、ID、船票信息、客舱信息,axis=0 删除行,=1 删除列

    #缺失数据填充

    df['Age'] = df['Age'].fillna(df['Age'].mean()) # 用平均值填充空值

    df['Fare'] = df['Fare'].fillna(df['Fare'].mean())

    df['Embarked'] = df['Embarked'].fillna( df['Embarked'].value_counts().index[0]) # 用数量最多项填充

    #将性别与港口用哑变量表示

    dumm = pd.get_dummies(df[['Sex','Embarked']]) # '哑变量'矩阵

    df = df.join(dumm)

    del df['Sex'] // 删除

    del df['Embarked']

    #数据降维

    df['Age'] = (df['Age']-df['Age'].min()) /(df['Age'].max()-df['Age'].min())

    df['Fare'] = (df['Fare']-df['Fare'].min()) /(df['Fare'].max()-df['Fare'].min())

    #训练模型

    data_train = df[:len(data_train)] # 将合并后的数据分离

    data_test = df[len(data_train):]

    7 训练并预测

    from sklearn.cross_validation import train_test_split

    X_train, X_val, y_train,y_val = train_test_split(data_train,y,test_size=0.3, random_state=42) # 以7:3(0.3)将训练集与获救结果随机拆分,随机种子为42

    from sklearn.linear_model import LogisticRegression # 引入逻辑回归

    LR = LogisticRegression()

    LR.fit(X_train, y_train) # 训练数据

    print('训练集准确率:\n',LR.score(X_train, y_train)) # 分数

    print('验证集准确率:\n',LR.score(X_val, y_val))

    #预测测验集

    pred= LR.predict(data_test) # pred 为预测结果

    pred = pd.DataFrame({'PassengerId':sum_id.values, 'Survived':pred}) # 格式化预测结果

    pred.to_csv('pred_LR.csv',index=None) # 导出数据

    结果:

    最后,也可以将导出的csv文件在Kaggle中进行提交。

    8 结语

    这是个不太复杂的数据处理题目,预测结果只有两种,但是题目所给因素较多,需要经行无关因素排除,排除后要将数据经行预处理。预处理时,先将缺失值进行补全,再进行降维处理,本题在降维前要将分类变量Sex、Embarked变为哑变量。最后进行train_test_split方法拆分数据,利用逻辑回归训练模型。

    附:佳句

    来了,爱了,给了她一颗星星,走了。

    ——云天明《三体》

    以上

    展开全文
  • kaggle机器学习竞赛泰坦尼克号船员数据集,原网址https://www.kaggle.com/c/titanic
  • 泰坦尼克号_数据集
  • 泰坦尼克号数据集分析 分析结果:宿舍房等级较低的这个生还率较高,女性生还比男性高,儿童生的几率还差一些。但是这个结论有一定的概率,实际上泰坦尼克号上有224名乘客,而数据集只有 891 名还有乘客,另外也不...
  • 数据预处理 泰坦尼克号 什么是数据预处理? (What is Data Pre-Processing?) We know from my last blog that data preprocessing is a data mining technique that involves transforming raw data into an ...

    数据预处理 泰坦尼克号

    什么是数据预处理? (What is Data Pre-Processing?)

    We know from my last blog that data preprocessing is a data mining technique that involves transforming raw data into an understandable format. Real-world data is often incomplete, inconsistent, and/or lacking in certain behaviors or trends, and is likely to contain many errors. Data preprocessing is a proven method of resolving such issues. Data preprocessing prepares raw data for further processing.

    从我的上一篇博客中我们知道,数据预处理是一种数据挖掘技术,它涉及将原始数据转换为可理解的格式。 实际数据通常不完整,不一致和/或缺少某些行为或趋势,并且可能包含许多错误。 数据预处理是解决此类问题的一种行之有效的方法。 数据预处理将准备原始数据以进行进一步处理。

    So in this blog we will learn about the implementation of data pre-processing on a data set. I have decided to do my implementation using the Titanic data set, which I have downloaded from Kaggle. Here is the link to get this dataset- https://www.kaggle.com/c/titanic-gettingStarted/data

    因此,在本博客中,我们将学习在数据集上实施数据预处理的方法。 我决定使用我从Kaggle下载的Titanic数据集进行实施。 这是获取此数据集的链接-https : //www.kaggle.com/c/titanic-gettingStarted/data

    Note- Kaggle gives 2 datasets, the train and the test dataset, so we will use both of them in this process.

    注意 -Kaggle提供了2个数据集,即训练和测试数据集,因此在此过程中我们将同时使用它们。

    预期的结果是什么? (What is the expected outcome?)

    The Titanic shipwreck was a massive disaster, so we will implement data pre- processing on this data set to know the number of survivors and their details.

    泰坦尼克号沉船事故是一场巨大的灾难,因此我们将对该数据集进行数据预处理,以了解幸存者的人数及其详细信息。

    I will show you how to apply data preprocessing techniques on the Titanic dataset, with a tinge of my own ideas into this.

    我将向您展示如何在Titanic数据集上应用数据预处理技术,并结合我自己的想法。

    So let’s get started…

    因此,让我们开始吧...

    Image for post

    导入所有重要的库 (Importing all the important libraries)

    Firstly after loading the data sets in our system, we will import the libraries that are needed to perform the functions. In my case I imported NumPy, Pandas and Matplot libraries.

    首先,在将数据集加载到我们的系统中之后,我们将导入执行功能所需的库。 就我而言,我导入了NumPy,Pandas和Matplot库。

    #importing librariesimport numpy as npimport matplotlib.pyplot as pltimport pandas as pd

    #importing librarys将numpy导入为npimport matplotlib.pyplot作为pltimport熊猫作为pd

    使用Pandas导入数据集 (Importing dataset using Pandas)

    To work on the data, you can either load the CSV in excel software or in pandas. So I will load the CSV data in pandas. Then we will also use a function to view that data in the Jupyter notebook.

    要处理数据,可以在excel软件或熊猫中加载CSV。 因此,我将在熊猫中加载CSV数据。 然后,我们还将使用一个函数在Jupyter笔记本中查看该数据。

    #importing dataset using pandasdf = pd.read_csv(r’C:\Users\KIIT\Desktop\Internity Internship\Day 4 task\train.csv’)df.shapedf.head()

    #使用pandasdf = pd.read_csv(r'C:\ Users \ KIIT \ Desktop \ Internal Internship \ Day 4 task \ train.csv')df.shapedf.head()导入数据集

    Image for post

    #Taking a look at the data format belowdf.info()

    #看看下面的数据格式df.info()

    Let’s take a look at the data output that we get from the above code snippets :

    让我们看一下从以上代码片段获得的数据输出:

    Image for post

    If you carefully observe the above summary of pandas, there are total 891 rows, Age shows only 714 (means missing), Embarked (2 missing) and Cabin missing a lot as well. Object data types are non-numeric so we have to find a way to encode them to numerical values.

    如果您仔细观察以上熊猫的摘要,则总共有891行,“年龄”仅显示714行(均值缺失),上船(缺失2幅)以及机舱缺失很多。 对象数据类型是非数字的,因此我们必须找到一种将其编码为数值的方法。

    查看特定数据集中的列 (Viewing the columns in the particular dataset)

    We use a function to view all the columns that are being used in this dataset for a better reference of the kind of data that we are working on.

    我们使用一个函数来查看此数据集中正在使用的所有列,以更好地参考我们正在处理的数据类型。

    #Taking a look at all the columns in the data setprint(df.columns)

    #查看数据setprint(df.columns)中的所有列

    定义独立和相关数据的值 (Defining values for independent and dependent data)

    Here we will declare the values of X and y for our independent and dependent data.

    在这里,我们将为我们的独立数据和相关数据声明X和y的值。

    #independet dataX = df.iloc[:, 1:-1].values#dependent datay = df.iloc[:, -1].values

    #independet dataX = df.iloc [:, 1:-1] .values#dependent datay = df.iloc [:, -1] .values

    Image for post
    Image for post

    删除无用的列 (Dropping Columns which are not useful)

    Lets try to drop some of the columns which many not contribute much to our machine learning model such as Name, Ticket, Cabin etc.

    让我们尝试删除一些对我们的机器学习模型贡献不大的列,例如名称,票务,机舱等。

    So we will drop 3 columns and then we will take a look at the newly generated data.

    因此,我们将删除3列,然后看一下新生成的数据。

    #Dropping Columns which are not usefull, so we drop 3 of them here according to our conveniencecols = [‘Name’, ‘Ticket’, ‘Cabin’]df = df.drop(cols, axis=1)

    #删除没有用的列,因此我们根据我们的便便性将其中的3个放置在此处colcols = ['Name','Ticket','Cabin'] df = df.drop(cols,axis = 1)

    #Taking a look at the newly formed data format belowdf.info()

    #在下面的df.info()中查看新形成的数据格式

    Image for post

    删除缺少值的行 (Dropping rows having missing values)

    Next if we want we can drop all rows in the data that has missing values (NaN). You can do it like the code shows-

    接下来,如果需要,我们可以删除数据中所有缺少值(NaN)的行。 您可以像代码所示那样进行操作-

    #Dropping the rows that have missing valuesdf = df.dropna()df.info()

    #删除缺少值的行df = df.dropna()df.info()

    删除缺少值的行的问题 (Problem with dropping rows having missing values)

    After dropping rows with missing values we find that the dataset is reduced to 712 rows from 891, which means we are wasting data. Machine learning models need data for training to perform well. So we preserve the data and make use of it as much as we can. We will see it later.

    删除缺少值的行后,我们发现数据集从891减少到712行,这意味着我们在浪费数据 。 机器学习模型需要用于训练的数据才能表现良好。 因此,我们保留并尽可能多地利用数据。 我们稍后会看到。

    Image for post

    创建虚拟变量 (Creating Dummy Variables)

    Now we convert the Pclass, Sex, Embarked to columns in pandas and drop them after conversion.

    现在,我们将Pclass,Sex,Embeded转换为熊猫中的列,并在转换后将其删除。

    #Creating Dummy Variablesdummies = []cols = [‘Pclass’, ‘Sex’, ‘Embarked’]for col in cols:dummies.append(pd.get_dummies(df[col]))titanic_dummies = pd.concat(dummies, axis=1)

    #为col中的col创建虚拟变量dummies = [] cols = ['Pclass','Sex','Embarked'] cols:dummies.append(pd.get_dummies(df [col]))titanic_dummies = pd.concat(Dummies,axis = 1)

    So on seeing the information we know we have 8 columns transformed to columns where 1,2,3 represents passenger class.

    因此,在查看信息后,我们知道我们将8列转换为其中1,2,3代表乘客舱位的列。

    Image for post

    And finally we concatenate to the original data frame column wise.

    最后,我们将原始数据帧按列连接。

    #Combining the original datasetdf = pd.concat((df,titanic_dummies), axis=1)

    #合并原始数据集df = pd.concat((df,titanic_dummies),axis = 1)

    Now that we converted Pclass, Sex, Embarked values into columns, we drop the redundant same columns from the data frame and now take a look at the new data set.

    现在,我们将Pclass,Sex,Embarked值转换为列,然后从数据框中删除了冗余的相同列,现在来看一下新的数据集。

    df = df.drop([‘Pclass’, ‘Sex’, ‘Embarked’], axis=1)

    df = df.drop(['Pclass','Sex','Embarked'],axis = 1)

    df.info()

    df.info()

    Image for post

    照顾丢失的数据 (Taking Care of Missing Data)

    All is good, except age which has lots of missing values. Lets compute a median or interpolate() all the ages and fill those missing age values. Pandas has a interpolate() function that will replace all the missing NaNs to interpolated values.

    一切都很好,除了年龄,它有很多缺失的值。 让我们计算所有年龄的中位数或interpolate()并填充那些缺失的年龄值。 熊猫有一个interpolate()函数,它将所有缺少的NaN替换为插值。

    #Taking care of the missing data by interpolate functiondf[‘Age’] = df[‘Age’].interpolate()

    #通过插值函数df ['Age'] = df ['Age']。interpolate()处理丢失的数据

    df.info()

    df.info()

    Image for post

    Now lets observe the data columns. Notice age which is interpolated now with imputed new values.

    现在让我们观察数据列。 注意使用新的插值插入的年龄。

    Image for post

    将数据帧转换为NumPy (Converting the data frame to NumPy)

    Now that we have converted all the data to numeric, its time for preparing the data for machine learning models. This is where scikit and numpy come into play:

    现在,我们已将所有数据转换为数字,这是为机器学习模型准备数据的时间。 这是scikit和numpy发挥作用的地方:

    X = Input set with 14 attributesy = Small y Output, in this case ‘Survived’

    X =具有14个属性的输入集y =小y输出,在这种情况下为“生存”

    Now we convert our dataframe from pandas to numpy and we assign input and output.

    现在,我们将数据帧从熊猫转换为numpy,并分配输入和输出。

    #using the concept of survived vlues, we conver and view the dataframe to NumPyX = df.valuesy = df[‘Survived’].values

    #使用幸存的虚拟词的概念,我们将数据帧收敛并查看为NumPyX = df.valuesy = df ['Survived']。values

    X = np.delete(X, 1, axis=1)

    X = np.delete(X,1,轴= 1)

    Image for post

    将数据集分为训练集和测试集 (Dividing data set into training set and test set)

    Now that we are ready with X and y, lets split the dataset for 70% Training and 30% test set using scikit model_selection like in code and the 4 print functions after that-

    现在我们已经准备好使用X和y,让我们使用scikit model_selection像代码中那样拆分70%Training和30%Test Set的数据集,然后使用4个打印功能-

    #Dividing data set into training set and test set (Most important step)from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

    #从sklearn.model_selection导入数据集分为训练集和测试集(最重要的步骤)import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.3,random_state = 0)

    Image for post
    Image for post
    Image for post
    Image for post

    功能缩放 (Feature Scaling)

    Feature Scaling is an important step of data preprocessing. Feature Scaling makes all data in such way that they lie in same scale usually -3 to +3.

    特征缩放是数据预处理的重要步骤。 Feature Scaling使所有数据处于相同的比例,通常为-3至+3。

    In out data set some field have small value and some field have large value. If we apply out machine learning model without feature scaling then prediction our model have high cost(It does because small value are dominated by large value). So before apply model we have to perform feature scaling.

    在输出数据集中,某些字段的值较小,而某些字段的值较大。 如果我们在没有特征缩放的情况下应用机器学习模型,那么预测我们的模型将具有较高的成本(这是因为小值由大值主导)。 因此,在应用模型之前,我们必须执行特征缩放。

    We can perform feature scaling in two ways.

    我们可以通过两种方式执行特征缩放。

    I-:Standardizaion x=(x-mean(X))/standard deviation(X)

    I-:标准化x =(x均值(X))/标准差(X)

    II-:Normalization-: x=(x-min(X))/(max(X)-min(X))

    II-:归一化-:x =(x-min(X))/(max(X)-min(X))

    #Using the concept of feature scalingfrom sklearn.preprocessing import StandardScalersc = StandardScaler()X_train[:,3:] = sc.fit_transform(X_train[:,3:])X_test[:,3:] = sc.transform(X_test[:,3:])

    #使用sklearn.preprocessing import的特征缩放概念,StandardScalersc = StandardScaler()X_train [:,3:] = sc.fit_transform(X_train [:,3:])X_test [:,3:] = sc.transform(X_test [ :,3:])

    Image for post
    Image for post

    That’s all for today guys!

    今天就这些了!

    This is the final outcome of the whole process. For more of such blogs, stay tuned!

    这是整个过程的最终结果。 有关此类博客的更多信息,请继续关注!

    翻译自: https://medium.com/all-about-machine-learning/understanding-data-preprocessing-taking-the-titanic-dataset-ebb78de162e0

    数据预处理 泰坦尼克号

    展开全文
  • # 我们将数据划分为n份,依次使用其中一份作为测试,其他n-1份作为训练,多次计算模型的精确性来评估模型的平均准确度。 from sklearn.datasets import load_boston#波士顿房价数据——连续性数据 from sklearn....
    回归树
    
    #交叉验证:用来观察模型稳定性的一种方法
    # 我们将数据划分为n份,依次使用其中一份作为测试集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确度。
    from sklearn.datasets import load_boston#波士顿房价数据——连续性数据
    from sklearn.model_selection import cross_val_score
    from sklearn.tree import DecisionTreeRegressor
    # boston=load_boston
    # regressor=DecisionTreeRegressor(random_state=0)#实例化
    # print(cross_val_score(regressor, boston.data, boston.target, cv=10, scoring="neg_mean_squared_error"))
    #实例化好后的算法模型,不需要划分为训练集和测试集的数据集(完整数据),完整的数据标签,每次10份做测试集,剩下的做训练集
    #回归:不填scoring,默认返回R²——越大越好,范围:0-1,均方误差(负值因为看作损失)——越小越好
    
    
    #回归树案例——拟合正弦曲线
    import numpy as np
    from sklearn.tree import DecisionTreeRegressor
    import matplotlib.pyplot as plt
    
    #创建一条含有噪声的正弦曲线
    rng=np.random.RandomState(1)#np.random随机数种子
    x=np.sort(5*rng.rand(80,1),axis=0)#rng.rand(数组结构)——80行1列——0-1之间。np.sort排序
    y=np.sin(x).ravel()#np.sin(x):80行1列  ravel降维              生成y
    y[::5]+=3*(0.5-rng.rand(16))#步长:所有的行,列,每5个取一个;rng.rand(16):0-1        加上噪声
    # plt.figure()
    # plt.scatter(x,y,s=20,edgecolors="black",c="darkorange",label="data")
    # plt.show()
    
    #实例化
    regr_1=DecisionTreeRegressor(max_depth=2)
    regr_2=DecisionTreeRegressor(max_depth=5)
    regr_1.fit(x,y)
    regr_2.fit(x,y)
    
    #测试集导入模型,预测结果
    x_test=np.arange(0.0,5.0,0.01)[:,np.newaxis]#np.arange(开始点,结束点,步长)
    # np.newaxis 增维例子
    # l=np.array([1,2,3,4])
    # print(l.shape)
    # print(l[:, np.newaxis])——4行1列
    # print(l[np.newaxis,:])-1行4列
    y_1=regr_1.predict(x_test)
    y_2=regr_2.predict(x_test)
    
    #绘制图像
    plt.figure()
    plt.scatter(x,y,s=20,edgecolors="black",c="darkorange",label="data")
    plt.plot(x_test,y_1,color="cornflowerblue",label="max_depth=2",linewidth=2)
    plt.plot(x_test,y_2,color="yellowgreen",label="max_depth=5",linewidth=2)
    plt.xlabel("data")
    plt.ylabel("target")
    plt.title("Decision Tree Regression")
    plt.legend()
    plt.show()
    
    ```python
    决策树实例
    # Imports
    import pandas as pd
    from sklearn.tree import DecisionTreeClassifier
    import matplotlib.pyplot as plt
    from sklearn.model_selection import GridSearchCV
    from sklearn.model_selection import train_test_split
    from sklearn.model_selection import cross_val_score
    #导入数据集
    data=pd.read_csv(r"train.csv")
    # print(data)
    # data.head()
    # data.info()
    
    #筛选特征——将对于是否营救无关的特征删除
    data.drop(['Cabin','Name','Ticket'],inplace=True,axis=1)
    
    #处理缺失值——用平均值补充缺失的年龄
    data['Age']=data['Age'].fillna(data['Age'].mean())
    # print(data.info())
    
    #只要有缺失值的行,就删除
    data=data.dropna()
    
    #舱门
    print(data['Embarked'].unique().tolist())#----['S', 'C', 'Q']
    labels=data['Embarked'].unique().tolist()
    data['Embarked']=data['Embarked'].apply(lambda x:labels.index(x))#'s'--->0--->labels.index('s')
    #性别
    data['Sex']=(data['Sex']=='male').astype('int')
    # print(data.head())
    
    x=data.iloc[:,data.columns!='Survived']#取出数据,除标签外的所有列
    y=data.iloc[:,data.columns =='Survived']
    xtrain,xtest,Ytrain,Ytest=train_test_split(x,y,test_size=0.3)#随机操作使得索引发生变化
    
    #将错乱索引重新排序
    # xtrain.index=range(xtrain.shape[0])#索引变成0-621之间
    for i in xtrain,xtest,Ytrain,Ytest:
        i.index=range(i.shape[0])
    
    #模型
    clf=DecisionTreeClassifier(random_state=25)
    clf=clf.fit(xtrain,Ytrain)
    score=clf.score(xtest,Ytest)
    
    clf=DecisionTreeClassifier(random_state=25)
    score1=cross_val_score(clf,xtest,Ytest,cv=10).mean()#交叉验证
    # print(score1)
    
    train=[]
    test=[]
    for i in range(10):
        clf=DecisionTreeClassifier(random_state=25
                                   ,max_depth=i+1
                                   ,criterion="entropy"
                                   )
        clf=clf.fit(xtrain,Ytrain)
        score_train=clf.score(xtrain,Ytrain)
        score_test=cross_val_score(clf,xtest,Ytest,cv=10).mean()
        train.append(score_train)
        test.append(score_test)
    print(max(test))
    plt.plot(range(1,11),train,color="red",label="train")
    plt.plot(range(1,11),test,color="blue",label="test")
    plt.xticks(range(1,11))#调整刻度
    plt.legend()
    plt.show()
    
    #网格搜索 能够同时搜索多个参数的技术  枚举技术
    #一串参数和这些参数对应的,我们希望网格搜索来搜索的参数的取值范围
    #min_impurity_decrease信息增益
    import numpy as np
    gini_threholds=np.linspace(0,0.5,50)#基尼系数
    # entropy_threholds=np.linspace(0,1,50)
    parameters={"criterion":("gini","entropy")
                ,"splitter":("best","random")
                ,"max_depth":[*range(1,10)]
                ,"min_samples_leaf":[*range(1,50,5)]
                ,"min_impurity_decrease":[*np.linspace(0,0.5,50)]
    
    }
    clf=DecisionTreeClassifier(random_state=25)
    GS=GridSearchCV(clf,parameters,cv=10)
    GS=GS.fit(xtrain,Ytrain)
    print(GS.best_params_)#从我们输入的参数和参数取值的列表中,返回最佳组合
    print(GS.best_score_)#网格搜索后的模型的评价标准
    
    
    
    
    
    
    泰坦尼克号数据集:私聊发送
    
    展开全文
  • 泰坦尼克号-数据分析 对泰坦尼克号数据集进行统计分析,以预测哪些乘客能够幸存。 要使用python脚本,请创建一个csv文件夹,并在其中提供文件train.csv和test.csv 。 可以从下载这两个数据集。
  • http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,953
精华内容 1,581
关键字:

泰坦尼克号数据集