数据分析之泰坦尼克号案例

泰坦尼克号—数据分析(单因素、多因素分析) 提出问题: 数据来源:经典的titanic数据分析,大多数人都会从这个案例教学或者做练习,数据可从kaggle(https://www.kaggle.com/c/titanic/data)上一个机器学习的数据集,可用作数据分析的数据源,kaggle有三个表格,我们现在用train这个表。 工具:jupyter notebook,可以更好的展示分析思维和过程。 导入python的数据分析库 impo... 阅读详情

泰坦尼克号数据处理

【1】 实验目录

  • 1 解释步骤
  • 2 处理数据
  • 3 数据可视化
  • 4 修改数据
  • 5 训练模型

【2】 实验步骤

1 解释步骤

*  识别和定义问题
 * 获取训练和测试数据
 * 质疑,准备,清理数据
 * 分析,识别模式并探索数据
 * 建模,预测并解决问题
 * 可视化,报告并提出问题解决步骤和最终解决方案
 * 提供并提交结果
首先了解一下问题的定义:在泰坦尼克号沉船事
件中,有人幸存了就有人牺牲,那有什么因素会影响到成员的幸存几率了?这就是问题所在。
 所以,实验中会提供两份数据列表,一份是带有分类结果的有多项特征(因素)的数据
然后用前一份数据(之后称为训练数据)来训练学习模型,后一份数据(之后称为测试数据)
 用在学习模型上得到测试结果(就是分类测试数据)
 这里有几条信息要注意一下: 
 * 1912 年 4 月 15 日,泰坦尼克号首次航行,然后撞上冰山后沉没,
 2224 名乘客和机组人 员中有 1502 人遇难,大概有 32%的存活率。 
 * 沉船导致生命损失的原因之一是乘客和船员没有足够的救生艇。
 *  虽然运气有一定因素,但一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。
 最后一条就分析数据方面可以带来一些方向
 上面七个流程是为了以下几个目标:
* 分类:对样本进行归类或分类。也可能要了解不同课程与解决方案目标的含义或相关性 
* 关联:哪些特征影响到哪些特征,哪些特征会更加影响到结果(权重)等,认识到
特征的关联性可以帮助另外一些目标的实践,如创建,完成,纠正特征等。 
* 转换:在建模阶段,可能有些算法模型需要全部特征都为数字类型,那就要将分类特
征转换为表示正确的数字类型。 
* 完成:数据准备时会要求将一些空值或缺失值填上一个值,一些算法模型会在没有缺失值
的情况下表现得更好。 
* 纠正:有时会对训练数据中一些错误或不自然的数据用其他值代替,或者排除掉。
要纠正就要能检测出‘离群值’(outlier),还有可以判断某个特征对结果没有多大影响或某个特征
完全扭曲了结果。
* 创建:有时为了关联性,转换和完成的目标,会将几个特征合并创建某个特征。 
* 制图:如何根据数据的性质和解决方案目标来选择正确的可视化图表
后面就按照这几个目标来处理数据 

(一) 数据处理

找出与存活率有关的变量
1 导入工具包:

%python
#数据分析包
import pandas as pd
import numpy as np
import random as rnd

#可视化包
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

#机器学习包
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC,LinearSVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.tree import DecisionTreeClassifier

#获取数据
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
#combine变量将两数据集合并,以备后面用
combine = [train_df,test_df]
#查看数据有哪些特征
train_df.columns.values
#输出
array(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype=object)

2 解释标签数据
PassengerId:乘客Id
Survived:0代表NO,1代表YES
Pclass:1,2,3代表成员的经济社会地位1最高,3最低
Name:乘客姓名
Sex:代表性别
Age:年龄
SibSp:由两部分组成,Sibling(兄弟姐妹,堂妹都合适),Spouse代表(丈夫或妻子)
Parch:父母和孩子组成,若只跟保姆写0
Ticket:票的数字
Fare:乘客票价
Cabin:船舱数字
Embarked:登船仓:C=Cherbourg,Q=Queenstown,S=Southampton
3 操作数据

train_df.head(5)#输出前五行
train_df.tail(5)#输出后五行

这里写图片描述

  • 补缺:比较前五行和后五行发现有的数据缺失,后面将会处理缺失数据
  • 转换:还发现Ticket特征的变量是字符和数字的混合,需要转换

**通过pandas的describe()函数来查看训练数据的大概情况

train_df.describe()

这里写图片描述
从中可以看出定义出的见解

  • 泰坦尼克号实际的成员数为 2224,而训练数据样本总数目是 891,只占 40%
  • survived 是一个只具有 0 或 1 值的分类特征
  • 大概 38%的生存率对比实际中 32%的生存率
  • 有 75%以上的成员没有带父母或孩子(从 75%那个数值可以看出
  • 近 3 成的成员有 siblings 和/或 spouse 在船上(从 75%那个数值可以看出)
  • 很少有成员(<1%)的票价是接近最高的$512
  • 很少有年纪大的成员(<1%)的年纪在 65 岁到 80 岁之间。

4 验证地位高的成员存活率会高于地位低的

先从训练数据中单独取出’Pclass’和’Survived’这两个特征数 据,然后根据’Pclass’特征来做分组,
并就每组计算平局值(mean),然后就平均值做一个倒序. 
最后可以看到地位高(Pclass=1)的成员真的存活率高很多(Survived>0.62)
%python
train_df[['Pclass','Survived']].groupby(['Pclass'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述
5 验证存活率和性别的关系

%python
#首先单独选出“Sex”和“Survive的”然后根据“Sex”来分组,并就每组计算平均值mean,
然后根据平均值排序(倒序)
train_df[['Sex','Survived']].groupby(['Sex'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述

6 验证SibSp和Parch两个特征值对存货的影响

%python
train_df[['SibSp','Survived']].groupby(['SibSp'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)
train_df[['Parch','Survived']].groupby(['Parch'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述

这里写图片描述
可以看出,这两个特质的值分组后的存货率都好相近,所以可以证明这两个值和存活率关 联性不大,可以放弃或者就这个特征创建新的特征.

(二) 数据可视化

2.1 用Age可视化直方图

%python
g = sns.FacetGrid(train_df,col='Survived')
g.map(plt.hist,'Age',bins=20)

Age的图
从上面可以看出,
* 婴儿(Age <= 4)生存率好高
* 大部分年龄在 15-25 的都牺牲了
* 总体来看,大部分成员的年龄在 15-35 岁之间 从而,可以校验之前的假设并可以作出一定的结论:
* 完善 Age 的空值
* 应该为 Age 特征做一个分组处理 上面是只对数字类型的图例分析,下面会作数字加分类类型数值的图例分析
2.2 地位Pclass可视化

%python
grid = sns.FacetGrid(train_df,col='Survived',row='Pclass',size=2.2,aspect=3.8)
grid.map(plt.hist,'Age',alpha=.5,bins=20)
grid.add_legend()

这里写图片描述
可以从上图看出:
* 地位低的(Pclass=3)成员最多,但存活率都不高
* Pclass=2 和 Pclass=3 的婴儿存活率很高.
* Pclass=1 的存活率最高 所以可以得出结论: 应该把 Pclass 特征放入训练模型中.

(三)分类特征的关联性可视化

3.1 Embarked和Sex用图表展示她们和Pclass与存活率的关联性

%python
grid = sns.FacetGrid(train_df,row='Embarked',size=2.2,aspect=1.6)
grid.map(sns.pointplot,'Pclass','Survived','Sex',palette='deep',\
        hue_order=["female","male"])
grid.add_legend()

这里写图片描述
解析:seaborn包的使用,当前遇到两种图标,pointplot为点图,而hist为柱状图,而pointplot中
的参数hue_order是需要设置的,不然legend里面显示的顺序就会改变。
由图可知:
* 女比男的存活率高
* Embarked=C的男有相对高的存活率,集合了Pclass看的
得出结论如下:
* Sex特征加入到训练模型里
* 完善Embarked特征后,也把它加入到训练模型中

3.2分类特征和数值特征的关联

%python
#用seanbon画图,行(row)是Embarked,列(col)是Survived
grid = sns.FacetGrid(train_df,row='Embarked',col='Survived',size=2.2,aspect=1.6)

grid.map(sns.barplot,'Sex','Fare',alpha=.6,ci=None,order=['female','male'])
grid.add_legend()

这里写图片描述
可以看出:
* 高票价(Fare)的成员的生存率高于低的
* 登船口(Embarked)和存活率有关。
* 可以考虑将Fare(票价)分成带状

(四) 修改数据

4.1 去掉Cabin和Ticket

%python
train_df = train_df.drop(['Ticket','Cabin'],axis=1)
test_df = test_df.drop(['Ticket','Cabin'],axis=1)
combine = [train_df,test_df]

4.2 处理Name
注:在去掉Name之前,还要创建一个Title头衔,看Title 是否和存活率有关

%python
#正则表达式”(\w+\.)”表示获取”.”前第一个词,用这个词来分类图示.expand=False 表示返回 DataFrame 类型. 
for dataset in combine:
    dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\.',expand=False)

test_crosstab = pd.crosstab(train_df['Title'],train_df['Sex'])
print(test_crosstab)

这里写图片描述
4.3 将上面得到的头衔缩小类别

%python
#用一个共同的名字代替一些头衔,其他的用Rare
for dataset in combine:
    dataset['Title'] = dataset['Title'].replace(['Lady','Countess','Capt','Col',\
                                                'Don','Dr','Major','Rev','Sir',\
                                                'Jonkheer','Dona'],'Rare')
    dataset['Title'] = dataset['Title'].replace('Mlle','Miss')
    dataset['Title'] = dataset['Title'].replace('Ms','Miss')
    dataset['Title'] = dataset['Title'].replace('Mme','Mrs')
print(train_df[['Title','Survived']].groupby(['Title'],as_index=False).mean())

这里写图片描述
将一些好普通的名称都统一成为”Rare”,然后合并一些统称,然后作一个分类统计,就会看 到这个头衔(Title)和存活率还是有一定关系…
然后再将这个 Title 特征由分类特征转变为数字特征,并且将 None 的值变为 0.
4.4 将Title变成数字特征

%python
title_mapping = {"Mr":1,"Miss":2,"Mrs":3,"Master":4,"Rare":5}
#将同一个key的map在一起,并将None填充为0
for dataset in combine:
    dataset['Title'] = dataset['Title'].map(title_mapping)
    dataset['Title'] = dataset['Title'].fillna(0)
train_df.head()

这里写图片描述
4.5 去掉Name和PassengerID

%python
train_df = train_df.drop(['Name','PassengerId'],axis=1)
test_df  = test_df.drop(['Name'],axis=1)
combine = [train_df,test_df]
print(train_df.shape,test_df.shape)

4.6 转换Sex为数字类型

%python
#将female的值换成1,male换成0。
if __name__ == '__main__':
    for dataset in combine:
        dataset['Sex'] = dataset['Sex'].map({'female':1,'male':0}).astype(int)
train_df.head()

这里写图片描述

4.7 处理缺失值或空值
基于Pclass和Sex关联,处理Age,将其转换为5个连续的等级

%python
# 处理缺失值和空值
grid = sns.FacetGrid(train_df,row='Pclass',col='Sex',size=2.2,aspect=1.6)
grid.map(plt.hist,'Age',alpha=.5,bins=20)
grid.add_legend()
plt.show()

这里写图片描述
4.8 填充数据用中位数

%python
#用中位数来填充Age的缺失值
guess_ages = np.zeros((2,3))
# print(guess_ages)
for dataset in combine:
    for i in range(0,2):
        for j in range(0,3):

            guess_df = dataset[(dataset['Sex']==i)& \
                               (dataset['Pclass']==j+1)]['Age'].dropna()
#             print(guess_ages)
#         age_mean = guess_df.mean()
#         age_std = guess_df.std()
#         age_guess = rnd.uniform(age_mean - age_std,age_mean+age_std)

            age_guess = guess_df.median()
            guess_ages[i,j] = int(age_guess/0.5 + 0.5) * 0.5

    for i in range(0,2):
        for j in range(0,3):
            dataset.loc[(dataset.Age.isnull())&\
                        (dataset.Sex == i)&(dataset.Pclass==j+1),'Age']\
            =guess_ages[i,j]

    dataset['Age'] = dataset['Age'].astype(int)
print(guess_ages)

这里写图片描述
4.9 将Age切成5段看看与存活率的关系

%python
train_df['AgeBand']=pd.cut(train_df['Age'],5) #切分
train_df[['AgeBand','Survived']].groupby(['AgeBand'],as_index=False).mean()\
.sort_values(by='AgeBand',ascending=True)
for dataset in combine:
    dataset.loc[dataset['Age']<=16,'Age'] = 0
    dataset.loc[(dataset['Age']>16) & (dataset['Age']<=32),'Age']=1
    dataset.loc[(dataset['Age']>32) & (dataset['Age']<=48),'Age']=2
    dataset.loc[(dataset['Age']>48) & (dataset['Age']<=64),'Age']=3
    dataset.loc[(dataset['Age']>64),'Age']=4
train_df.head(5)

这里写图片描述

这里写图片描述
4.10 删除AgeBand

%python
train_df = train_df.drop(['AgeBand'],axis=1)
combine = [train_df,test_df]
train_df.head()

这里写图片描述
4.11 将SibSp和Parch特征加起来和存活率做关联对比

%python
#将SibSp和Parch特征的数量加起来,然后和存活率做一个关联对比
for dataset in combine:
    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1
train_df[['FamilySize','Survived']].groupby(['FamilySize'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述
4.12 创建一个IsAlone特征值

%python
for dataset in combine:
    dataset['IsAlone'] = 0
    dataset.loc[dataset['FamilySize']==1,'IsAlone'] = 1
train_df[['IsAlone','Survived']].groupby(['IsAlone'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述
4.13 将Parch和SibSp和FamilySize三个特征去掉

%python
train_df = train_df.drop(['Parch','SibSp','FamilySize'],axis=1)
test_df = test_df.drop(['Parch','SibSp','FamilySize'],axis=1)
combine = [train_df,test_df]
train_df.head()

这里写图片描述
4.14 相乘Pclass和Age特征值

%python
for dataset in combine:
    dataset['Age*Class'] = dataset.Age * dataset.Pclass
train_df.loc[:,['Age*Class','Age','Pclass']].head(10)

这里写图片描述
4.15 处理Embarked特征
用最长出现的值填充缺失值,然后在看关联性

%python
freq_port = train_df.Embarked.dropna().mode()[0]
for dataset in combine:
    dataset['Embarked'] = dataset['Embarked'].fillna(freq_port)
train_df[['Embarked','Survived']].groupby(['Embarked'],as_index=False).mean()\
.sort_values(by='Survived',ascending=False)

这里写图片描述
4.16 将Embarked转换成数字类型

%python
for dataset in combine:
    dataset['Embarked'] = dataset['Embarked'].map({'S':0,'C':1,'Q':2}).astype(int)
train_df.head()
train_df.head()

这里写图片描述
4.17 处理Fare(票价)
首先处理Fare的缺失值,然后用一个中间创建的特征验证合理性,最后将其分段,并转换成数字

%python
test_df['Fare'].fillna(test_df['Fare'].dropna().median(), inplace=True)

train_df['FareBand'] = pd.qcut(train_df['Fare'], 4)
train_df[['FareBand', 'Survived']].groupby(['FareBand'], as_index=False).mean()\
      .sort_values(by='FareBand', ascending=True)

这里写图片描述
4.18 不能将FareBand特征用在训练模型中,它是中间特征而已,可以根据它来转换‘Fare’为数值类型

%python
for dataset in combine:
    dataset.loc[dataset['Fare'] <= 7.91, 'Fare'] = 0
    dataset.loc[(dataset['Fare'] > 7.91) & (dataset['Fare'] <= 14.454), 'Fare'] = 1
    dataset.loc[(dataset['Fare'] > 14.454) & (dataset['Fare'] <= 31), 'Fare'] = 2
    dataset.loc[dataset['Fare'] > 31, 'Fare'] = 3
    dataset['Fare'] = dataset['Fare'].astype(int)
train_df = train_df.drop(['FareBand'],axis=1)
combine = [train_df,test_df]
print(train_df.head(5))

这里写图片描述

%python
print(test_df.head(5))

这里写图片描述

(五)训练模型

  • 首先处理一下数据
%python
X_train = train_df.drop('Survived',axis=1)
Y_train = train_df['Survived']
X_test = test_df.drop('PassengerId',axis=1).copy()
print(X_train.shape,Y_train.shape,X_test.shape)

这里写图片描述

5.1 逻辑回归

%python
logreg = LogisticRegression()
Logreg.fit(X_train,Y_train)
Y_pred = logreg.predict(X_test)
acc_log = round(logreg.score(X_train,Y_train) * 100,2)
acc_log
#输出:81.26

5.2 支持向量机

%python
svc = SVC()
svc.fit(X_train,Y_train)
Y_pred = svc.predict(X_test)
acc_svc = round(svc.score(X_train,Y_train) * 100,2)
print(acc_svc)

#输出:83.5

5.3 K最邻近

%python
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train,Y_train)
Y_pred = knn.predict(X_test)
acc_knn = round(knn.score(X_train,Y_train)*100,2)
print(acc_knn)
#输出:84.06

5.4 朴素贝叶斯

%python
#朴素贝叶斯
gaussian = GaussianNB()
gaussian.fit(X_train,Y_train)
Y_pred = gaussian.predict(X_test)
acc_gaussian = round(gaussian.score(X_train,Y_train)*100,2)
print(acc_gaussian)
#输出:76.88

5.5 传导器

%python
# 传导器
perceptron = Perceptron()
perceptron.fit(X_train,Y_train)
Y_pred = perceptron.predict(X_test)
acc_perceptron = round(perceptron.score(X_train,Y_train)*100,2)
print(acc_perceptron)
#输出:78.79

5.6 线性核的向量机

%python
#线性核的向量机
linear_svc = LinearSVC()
linear_svc.fit(X_train,Y_train)
Y_pred = linear_svc.predict(X_test)
acc_linear_svc = round(linear_svc.score(X_train,Y_train)*100,2)
print(acc_linear_svc)
#输出:79.46

5.7 随机梯度下降

%python
#随机梯度下降
sgd = SGDClassifier()
sgd.fit(X_train,Y_train)
Y_pred = sgd.predict(X_test)
acc_sgd = round(sgd.score(X_train,Y_train)*100,2)
print(acc_sgd)
#输出:76.09

5.8 决策树

%python
decision_tree = DecisionTreeClassifier()
decision_tree.fit(X_train,Y_train)
Y_pred = decision_tree.predict(X_test)
acc_decision_tree = round(decision_tree.score(X_train,Y_train)*100,2)
acc_decision_tree
#输出:86.64

5.9 随机森林

%python
# 随机森林
random_forest = RandomForestClassifier(n_estimators=100)
random_forest.fit(X_train,Y_train)
Y_pred = random_forest.predict(X_test)
acc_random_forest = round(random_forest.score(X_train,Y_train)*100,2)
print(acc_random_forest)
#输出:86.64

(六)致谢

【1】感谢三盟科技提供案例笔记

泰坦尼克号数据分析 案例:泰坦尼号数据分析 背景: 泰坦尼克号的沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会,并导致了更好的船舶安全条例。 海难导致生命损失的原因之一是没有足够的救生艇给乘客和机组人员。虽然幸存下来的运气有一些因素,但一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。 数据... 阅读详情

相关推荐

泰坦尼克号数据的分析研究

作为大家都非常熟悉的沉船事故–泰坦尼克号事件,该事件数据集同样广受大家关注。 本文的目的是希望自己通过分析研究,去找出影响幸存率的因素。

MKY1514的博客 6479

泰坦尼克号数据分析案例实战

这是一个很经典的案例,很多博主都写过,对,就是它:泰坦尼克号生存率的分析,它是kaggle上的一道题,通过船上乘客的信息分析和建模,预测哪些乘客得以生还。 我们就非常粗暴地拿这个数据集做一个简单的分析好了。 使用工具:Excel (对,就是这么简单粗暴) 一、明确目的 1912年泰坦尼克号撞上冰山沉没,船上2224名乘客和机组人员中有1502人遇难,幸存下来的人是出于运气还是存在一定的规律?这是我们比较关心的,所以就要提出问题: 那些人士生还的可能性大? 其次了解数据,数据集总共有以下的字段

data_cola的博客 9018

数据分析案例:泰坦尼克号上的船员是否获救预测

整体流程 1.数据读取 2.特征理解分析 3.数据清洗与预处理 4.建立模型 准备工作 第一步:理解数据,分析每个字段的意思 PassengerID 乘客唯一编号(无关) Pclass 船舱等级 Survived 是否获救 Sex 二值属性(female、male) SibSp 一起上船的兄弟姐妹的个数 Parch 一起上船的老人和孩子的数量 Ticket 船票的编号(...

weixin_40857929的博客 1462

数据挖掘实战1:泰坦尼克号数据

对泰坦尼克号数据进行挖掘建模分析

bb8886的博客 4214

泰坦尼克号数据-泰坦尼克号数据分析报告.pdf

泰坦尼克号数据_泰坦尼克号数据分析报告 891名乘客中遇难乘客有549⼈,占61.6%,⽣还乘客342⼈,占38.4%.各等级船舱乘客⼈数 各等级船舱乘客⼈数 Pclass_count=titanic_data['Pclass'].value_counts().sort_index() #⽤Bar_pie()函数作条形图和饼状图 Bar_pie(Pclass_count) 三等船舱乘客最多,占55.1%;⼀等船舱次之占24.2%;⼆级船舱乘客最少,占20.7%.男⼥乘客分布情况 男⼥乘客分布情况 Sex_count=titanic_data['Sex'].value_counts() print(Sex_count) Bar_pie(Sex_count) male 577 female 314 Name: Sex, dtype: int64 男乘客有577⼈,占64.8%;⼥乘客有314⼈,占35.2%.乘客年龄分布情况 乘客年龄分布情况 In [84]: #乘客年龄分布直⽅图 #创建figure、subplot,并⽤hist作条形图 fig_Age=plt.figure(figsize=(10,5)) ax_Age=fig_Age.add_subplot(1,2,1) titanic_data['Age'].hist(bins=10,color='g',alpha=0.3,grid=False) #设置x轴刻度标签 ax_Age.set_xticks([0,10,20,30,40,50,60,70,80,90,100]) #添加标题,x轴标签,y轴标签 ax_Age.set_title('Hist plot of Age') ax_Age.set_xlabel('Age') ax_Age.set_ylabel('number of people') #乘客年龄分布箱线图 #作箱线图 plt.subplot(122) titanic_data.boxplot(column='Age',showfliers=False) #添加y轴标签 plt.ylabel('Age') plt.title('boxplot of Fare') titanic_data['Age'].describe() count 891.000000 mean 29.544332 std 13.013778 min 0.000000 25% 22.000000 50% 29.000000 75% 35.000000 max 80.000000 Name: Age, dtype: float64 乘客年龄⼤概成正态分布,平均年龄29岁多,最⼤的80岁,最⼩的不到1岁(利⽤int()取整,不到1岁的为0).兄弟姐妹、配偶在船上的 兄弟姐妹、配偶在船上的 乘客分布情况条形图 乘客分布情况条形图 #创建figure、subplot,⽤plot()作柱状图 fig_SibSp=plt.figure(figsize=(10,5)) ax_SibSp=fig_SibSp.add_subplot(1,2,1) SibSp_count=titanic_data['SibSp'].value_counts() SibSp_count.plot(kind='bar') #添加标题,x轴标签,y轴标签 ax_SibSp.set_title('Bar plot of SibSp') ax_SibSp.set_xlabel('number of SibSp') ax_SibSp.set_ylabel('number of people') #拥有各 数量的兄弟姐妹、配偶的乘客⽐例条形图 plt.subplot(122) SibSp_count.div(SibSp_count.sum()).plot(kind='bar') #添加标题,x、y轴 标签 plt.title('Ratio of people in SibSp') plt.xlabel('SibSp') plt.ylabel('ratio') 在船上没有兄弟姐妹配偶的乘客较多,占68.2%.⽗母、孩⼦在船上的乘客分布条形图 ⽗母、孩⼦在船上的乘客分布条形图 Parch_count=titanic_data['Parch'].value_counts() #创建figure、subplot,⽤plot()作柱状图 fig_Parch=plt.figure(figsize=(10,5)) ax_Parch=fig_Parch.add_subplot(1,2,1) Parch_count.plot(kind='bar') #添加标题,x、y轴标签 ax_Parch.set_title('Bar plot of Parch') ax

STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

薄膜压力传感器采集压力数据

XiaoCaiDaYong的博客 3万+

python数据分析案例——泰坦尼克号幸存者预测!

给大家分享的数据分析案例是泰坦尼克号幸存者预测的项目,没记错的话,这应该是很多朋友写在简历上的项目经历。如果你目前正在找工作,自身缺少项目经历并且想要充实项目经历的话,可以考虑一下这个项目!

Python_trys的博客 2088

JPA - @MappedSuperclass - 基类注解

目录前言代码示例 前言 @MappedSuperclass注解一般作为基类的注解,表眀该类是映射的超类,继承于它的子类实体在映射时会自动添加到子类实体的对应数据库表中,用于共同的属性代码复用和模型分离。 代码示例 BaseEntity.java import lombok.Getter; import lombok.Setter; import javax.persistence.MappedSuperclass; import java.util.Date; @Getter @Setter @Ma

Maggieq8324的博客 2066

数据分析系列--⑧RapidMiner多算法模型决策比较(基于泰坦尼克号案例含数据集)

该模型可以从上一小节中获取到,

灰灰老师 901

UE5新手必看:如何在UMG控件中嵌入浏览器实现Web页面展示(附完整步骤)

本文为UE5新手提供了在UMG控件中无缝集成Web浏览器的完整实战指南。详细介绍了从启用WebBrowser插件、创建并配置WebBrowser控件蓝图,到编写动态加载与交互逻辑,以及在游戏关卡中实例化UI的全过程。文章还分享了性能优化技巧与常见问题排查方法,帮助开发者高效实现游戏UI内的Web页面展示与交互。

weixin_29243063的博客 711

微信小程序一键登录和临时code用JWT进行微信用户授权

2、跨域进行调用接口时候,唯一标识UnionID和会话密钥 session_key如果还是用的我自己的,会出现无法调用微信服务器接口,就需要将唯一标识和会话密钥换成前端的,才可以,我自己认为这样很不合理,暂时还没有找到原因。2、能够获取到openId,但是也只能获取到openid,无法获取用户的相关信息,经过查阅官网发现,现在微信那边已经将用户信息加密,需要调用提供的接口进行解密然后获取用户数据,问题原因已经找到解决方法,还未即使更改。1、我这是一台电脑实现的前端调用后端接口,不用考虑跨域的问题。

qq_67653492的博客 5716

Python数据分析案例篇(一)泰坦尼克号数据分析

Python泰坦尼克生还预测 Kaggle Titanic 数据分析案例 背景介绍 20世纪初,由英国白星航运公司制造的一艘巨大豪华客轮。是当时世界上最大的豪华客轮,被称为是“永不沉没的”或是“梦幻客轮”。 泰坦尼克号是人类的美好梦想达到顶峰时的产物,反映了人类掌握世界的强大自信心。她的沉没,向人类展示了大自然的神秘力量,以及命运的不可预测。到泰坦尼克号沉没那天为止,西方世界的人们已经享受了10...

qq_42171569的博客 1万+

Yolov5s可视化网络结构图

Yolov5共有四种网络结构,每种网络深度和宽度上都不相同。 (1) Yolov5s可视化网络结构图:点击查看 (2) Yolov5m可视化网络结构图:点击查看 (3) Yolov5l可视化网络结构图:点击查看 (4) Yolov5x可视化网络结构图:点击查看 ...

江南研习社 15万+

泰坦尼克号数据_泰坦尼克号数据分析案例实战

这是一个很经典的案例,很多博主都写过,对,就是它:泰坦尼克号生存率的分析,它是kaggle上的一道题,通过船上乘客的信息分析和建模,预测哪些乘客得以生还。我们就非常粗暴地拿这个数据集做一个简单的分析好了。使用工具:Excel(对,就是这么简单粗暴)一、明确目的1912年泰坦尼克号撞上冰山沉没,船上2224名乘客和机组人员中有1502人遇难,幸存下来的人是出于运气还是存在一定的规律?这是我们比较关心...

weixin_39857876的博客 857

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 81

YOLOv11的QAT(训练感知量化)实战

本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。

as1225120794的博客 510

数据分析案例--泰坦尼克号分析

1.数据读取及查看 1.1查看excel中的数据 1.2用pandas查看这个数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline data=pd.read_csv(r'H:\阿里云\泰坦尼克号\test.csv') data1=pd.read_csv(r'H:\...

Michaelyu的博客 2761

二、NovAtel Connect 2.3.2 版本 操作说明

一、连接方式 有 串口连接、USB连接、蓝牙连接、无线网连接、网口连接,具体的连接方式看博客: https://blog.youkuaiyun.com/hltt3838/article/details/110622732 下面具体的介绍一下 串口的连接方式: 接收机有三个串口,COM1、COM2、COM3,看上面的连接就知道了! 并且有三个对应的线,1 2 3 ; 把线和串口对应连接,串口的另一端和电脑连接,当然如果电脑没有串口,可以用 串口转USB,如线图所示: (当然,一定要连接电源呀) ...

努力努力努力 4384

【数据分析师-数据分析项目案例二】泰坦尼克号生还者预测案例

泰坦尼克号生还者预测案例1 数据1.1 数据下载1.2 数据字段介绍2 数据加载和基本的ETL2.1 模块导入和数据加载2.2 数据清洗2.2.1 缺失值处理2.2.2 分类数据独热编码和数值数据分箱3 数据探索式分析3.1 生存概率3.2 性别与存活率之间的关系3.3 字段之间的关联分析3.4 性别与生存率之间的关系3.5 船舱与生存率之间的关系3.6 票价和生存率之间的关系3.7 年龄和生存率之间的关系4 机器学习模型 手动反爬虫,禁止转载:原博地址 https://blog.youkuaiyun.com/lys_

lys_828的博客 3938

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

泰坦尼克号数据_数据分析案例实战——泰坦尼克号生存率预测

在具体操作案例之前,一定要明确数据分析的思路。所以接下来要回顾一下数据分析的思路。思路:1.提出问题2.理解数据1)采集数据2)导入数据3)查看数据集信息3.数据清洗1)数据预处理2)特征工程4.构建模型5.模型评估6.方案实施一、提出问题什么样的人更容易在泰坦尼克号中存活?二、理解数据1.采集数据2.导入数据可以看出测试数据集少了一列。接下来就是对两个数据集进行合并,以便更好清洗数据。3.查看数...

weixin_39937524的博客 312

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kaggle竞赛:泰坦尼克号灾难数据分析简单案例

Kaggle竞赛:泰坦尼克号灾难数据分析https://www.kaggle.com/c/titanic 目标确定:根据已有数据预测未知旅客生死 数据准备: 数据获取,载入训练集csv、测试集csv 数据清洗,补齐或抛弃缺失值,数据类型变换(字符串转数字) 数据重构,根据需要重新构造数据(重组数据,构建新特征) 数据分析: 描述性分析,画图,直观分析 探索性分析,机器学习模型 成果输出:csv文

QianYanDai的博客 8653

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据分析_对数据的基础操作_加载、查看、简单数据分析---以kaggle经典案例——泰坦尼克号为例

本文利用kaggle经典案例---泰坦尼克号, 用python语言, 基于pandas库, 主要面向数据分析初学者和想要了解数据分析的人群, 简要介绍了数据分析时的基本操作命令和在实战中数据分析的思路及方法. 数据基本操作命令由加载数据、认识数据的不同类型、数据预处理、数据可视化等 构成, 并提到了多种在加载数据、数据查看、保存数据时初学者常遇到的问题及解决 方法. 在数据分析的实战中, 介绍了基本思路及方法, 展示了kaggle经典案例---泰坦尼克号 使用的主要代码及解题思路....

Annn_优快云的博客 2151

Python数据分析案例1——预测泰坦尼克号乘员的生存(机器学习全流程)

其背景就是当年泰坦尼克号上那么多人,灾难发生后,有人生存有人死亡,而且每个人都有很多不同的特征,比如性别,年龄,船仓等级,登船地点等等.....根据这些特征,我们可以预测乘客是否存活下来。这是机器学习预处理中的一个常见步骤,可以帮助改善很多模型的性能,特别是那些基于梯度下降的算法,如线性回归、逻辑回归、支持向量机和神经网络等。后面都是特征变量,乘客的特征:船舱等级、姓名,性别,年龄,子女个数,亲戚个数,船费、登船地点等等。存活是1,死亡是0,响应变量为两种取值,所以这是一个分类问题。

Chobani的博客 1391

Python数据分析案例08——预测泰坦尼克号乘员的生存(机器学习全流程)

Python进行泰坦尼克号数据集的预测机器学习流程。数据清洗、特征工程、模型选择优化评价等

weixin_46277779的博客 2万+

DataPrep实战案例:泰坦尼克号数据分析全流程

DataPrep是一款开源的低代码数据准备库,通过几行代码即可完成数据收集、清洗和可视化。本文将以经典的泰坦尼克号数据集为例,展示如何使用DataPrep快速实现数据分析全流程,帮助新手轻松掌握数据预处理与探索性分析技巧。 ## 一、环境准备与数据加载 ### 1.1 安装与导入DataPrep 首先通过Git克隆仓库并安装依赖: ```bash git clone https://gitco

gitblog_07635的博客 507

数据分析案例-泰坦尼克号乘客生存预测

本文构建了一套完整的数据分析流程。研究重点分析了性别、舱位、家庭规模等特征与生还率的关系,通过特征工程提取了称谓、甲板位置等衍生变量。比较了四种分类模型性能,最终逻辑回归在测试集取得81.17%准确率和0.8608的AUC值,兼顾性能与可解释性。研究揭示了女性、高舱位等关键生存优势因素,同时指出了小数据集划分偏差、家庭数据关联等局限性,建议采用重复交叉验证改进评估。该案例展示了从数据探索到模型优化的全流程分析方法。

m0_62638421的博客 290
上一篇: Matplotlib 基本操作及基本案例
下一篇: python解析xml超简单
snow5618
博客等级 码龄9年 141粉丝 51原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值