# coding: utf-8

 # In[1]:

 import urllib.request
import os # In[2]: url="http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.xls"
filepath="titanic3.xls"
if not os.path.isfile(filepath):
result=urllib.request.urlretrieve(url,filepath)
print('downloaded:',result) # In[3]: import numpy
import pandas as pd # In[4]: all_df = pd.read_excel(filepath) # In[5]: all_df[:5] # In[6]: cols=['survived','name','pclass' ,'sex', 'age', 'sibsp',
'parch', 'fare', 'embarked']
all_df=all_df[cols]
all_df[:5] # In[7]: all_df.isnull().sum() # In[8]: df=all_df.drop(['name'], axis=1)
df[:20] # In[9]: age_mean = df['age'].mean()
df['age'] = df['age'].fillna(age_mean)
df[:20] # In[10]: fare_mean = df['fare'].mean()
df['fare'] = df['fare'].fillna(fare_mean) # In[11]: df['sex']= df['sex'].map({'female':0, 'male': 1}).astype(int) # In[12]: df[:2] # In[13]: x_OneHot_df = pd.get_dummies(data=df,columns=["embarked" ]) # In[14]: x_OneHot_df[:2] # In[15]: ndarray = x_OneHot_df.values
ndarray.shape # In[16]: ndarray[:2] # In[17]: Label = ndarray[:,0]
Features = ndarray[:,1:] # In[18]: Features[:2] # In[19]: from sklearn import preprocessing
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1))
scaledFeatures=minmax_scale.fit_transform(Features)
scaledFeatures[:2] # In[20]: msk = numpy.random.rand(len(all_df)) < 0.8
train_df = all_df[msk]
test_df = all_df[~msk] # In[21]: msk # In[22]: print('total:',len(all_df),
'train:',len(train_df),
'test:',len(test_df)) # In[23]: def PreprocessData(raw_df):
df=raw_df.drop(['name'], axis=1)
age_mean = df['age'].mean()
df['age'] = df['age'].fillna(age_mean)
fare_mean = df['fare'].mean()
df['fare'] = df['fare'].fillna(fare_mean)
df['sex']= df['sex'].map({'female':0, 'male': 1}).astype(int)
x_OneHot_df = pd.get_dummies(data=df,columns=["embarked" ]) ndarray = x_OneHot_df.values
Features = ndarray[:,1:]
Label = ndarray[:,0] minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1))
scaledFeatures=minmax_scale.fit_transform(Features) return scaledFeatures,Label # In[24]: train_Features,train_Label=PreprocessData(train_df)
test_Features,test_Label=PreprocessData(test_df) # In[25]: train_Features[:2] # In[26]: train_Label[:2] # In[27]: from keras.models import Sequential
from keras.layers import Dense,Dropout # In[28]: model = Sequential()
model.add(Dense(units=40, input_dim=9,
kernel_initializer='uniform',
activation='relu'))
model.add(Dense(units=30,
kernel_initializer='uniform',
activation='relu'))
model.add(Dense(units=1,
kernel_initializer='uniform',
activation='sigmoid'))
model.summary() # In[29]: model.compile(loss='binary_crossentropy',
optimizer='adam', metrics=['accuracy'])
train_history =model.fit(x=train_Features,
y=train_Label,
validation_split=0.1,
epochs=30,
batch_size=30,verbose=2) # In[30]: import matplotlib.pyplot as plt
def show_train_history(train_history,train,validation):
plt.plot(train_history.history[train])
plt.plot(train_history.history[validation])
plt.title('Train History')
plt.ylabel(train)
plt.xlabel('Epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()
show_train_history(train_history,'acc','val_acc')
show_train_history(train_history,'loss','val_loss') # In[31]: scores = model.evaluate(x=test_Features,
y=test_Label)
scores # In[32]: Jack = pd.Series([0 ,'Jack',3, 'male' , 23, 1, 0, 5.0000,'S'])
Rose = pd.Series([1 ,'Rose',1, 'female', 20, 1, 0, 100.0000,'S'])
JR_df = pd.DataFrame([list(Jack),list(Rose)],
columns=['survived', 'name','pclass', 'sex',
'age', 'sibsp','parch', 'fare','embarked'])
all_df=pd.concat([all_df,JR_df])
all_df[-2:] # In[33]: all_Features,Label=PreprocessData(all_df)
all_probability=model.predict(all_Features)
all_probability[:10] # In[34]: pd=all_df
pd.insert(len(all_df.columns),
'probability',all_probability)
pd[-2:] # In[35]: pd[(pd['survived']==0) & (pd['probability']>0.9) ] # In[36]: pd[:5] # In[ ]: # In[ ]:

excel资源如下:

链接:https://pan.baidu.com/s/1PvonynplLKC6ZepSlL9DqQ
提取码:w7z3

采用多层感知器的方案的,主要是特点是针对数据的预处理过程。对excel表格的处理。

读取文件显示前五行:

筛选出表内的指定列:

去掉名字列生成新数据:

查找未知信息null,然后补充为平均值

修改性别样式从male和female到0和1:

将DF中的数据某列拆分:

提取目标输出数据和输入数据:

将输入数据转化为0-1之间的数据方式:

随机分割数据2:8作为测试数据和训练数据的方案!:

之后建立模型,两个隐层,计算方式为上一层神经元乘下一层神经元,加偏差下一层神经元。

之后计算,绘图,预测。

插入两行数据到总数据:

之后计算预测,找到生存概率。

筛选出实际数据为0而预测数据为存活的数据:

可以找到他们之所以没有存活的背后感人故事。。。。。。

Keras的泰坦尼克号的生存率的数据分析的更多相关文章

  1. 数据分析-kaggle泰坦尼克号生存率分析

    概述 1912年4月15日,泰坦尼克号在首次航行期间撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难.沉船导致大量伤亡的原因之一是没有足够的救生艇给乘客和船员.虽然幸存下来有一些运气因素,但 ...

  2. 基于深度学习方法的dota2游戏数据分析与胜率预测(python3.6+keras框架实现)

    很久以前就有想过使用深度学习模型来对dota2的对局数据进行建模分析,以便在英雄选择,出装方面有所指导,帮助自己提升天梯等级,但苦于找不到数据源,该计划搁置了很长时间.直到前些日子,看到社区有老哥提到 ...

  3. 吴裕雄--天生自然 PYTHON数据分析:基于Keras的CNN分析太空深处寻找系外行星数据

    #We import libraries for linear algebra, graphs, and evaluation of results import numpy as np import ...

  4. 吴裕雄--天生自然 python数据分析:基于Keras使用CNN神经网络处理手写数据集

    import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mp ...

  5. TensorFlow从1到2(十四)评估器的使用和泰坦尼克号乘客分析

    三种开发模式 使用TensorFlow 2.0完成机器学习一般有三种方式: 使用底层逻辑 这种方式使用Python函数自定义学习模型,把数学公式转化为可执行的程序逻辑.接着在训练循环中,通过tf.Gr ...

  6. 泰坦尼克号沉没之谜,用数据还原真相——Titanic获救率分析(用pyecharts)

    泰坦尼克号获救率数据分析报告,用数据揭露真相. 一,船上乘客生存率分析报告 泰坦尼克号生存率仅有38%的,可见此次事件救援不力,救生艇严重不足,且泰坦尼克号号撞得是冰山,海水冷,没有救生艇,在水里冻死 ...

  7. Kaggle入门——泰坦尼克号生还者预测

    前言 这个是Kaggle比赛中泰坦尼克号生存率的分析.强烈建议在做这个比赛的时候,再看一遍电源<泰坦尼克号>,可能会给你一些启发,比如妇女儿童先上船等.所以是否获救其实并非随机,而是基于一 ...

  8. kaggle数据挖掘竞赛初步--Titanic<原始数据分析&缺失值处理>

    Titanic是kaggle上的一道just for fun的题,没有奖金,但是数据整洁,拿来练手最好不过啦. 这道题给的数据是泰坦尼克号上的乘客的信息,预测乘客是否幸存.这是个二元分类的机器学习问题 ...

  9. 到底该如何入门Keras、Theano呢?(浅谈)

    目前刚刚开始学习Theano,可以说是一头雾水,后来发现Keras是对Theano进行了包装,直接使用Keras可以减少很多细节程序的书写,它是模块儿化的,使用比较方便,但更为细节的内容,还没有理解, ...

随机推荐

  1. 相对熵(KL散度)

    https://blog.csdn.net/weixinhum/article/details/85064685 上一篇文章我们简单介绍了信息熵的概念,知道了信息熵可以表达数据的信息量大小,是信息处理 ...

  2. POJ-2386.Lakecounting(DFS求连通块)

    本题是一道连通块的入门题,用来练手,后续还会更新连通块的题目. 本题大意:一个n * m 的陆地上面有很多水洼,让你统计水洼的个数并输出. 本题思路:按照顺序遍历陆地,如果发现水洼就将它的八连块都进行 ...

  3. 2018年全国多校算法寒假训练营练习比赛(第四场)B:道路建设

    传送门:https://www.nowcoder.net/acm/contest/76/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 65536K,其他语言131072K 64b ...

  4. Bitmap byte[] InputStream Drawable 互转

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStrea ...

  5. javascript简单的选项卡

    实现一个简单的选项卡功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. 多线程通信(wait和notify)

    线程通信概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时 ...

  7. [Java笔记]面向对象-单例模式

    单例模式 目标 使JVM中最多只有一个该类的实例,以节省内存.缺点:只能建一个该类的实例. 实现 具体实现思路: 1构造方法私有化//故在外面不能new很多次 2对外提供一个公开的静态的类方法,获取类 ...

  8. Linux编译命令-pthread & -lpthread

    编译makefile的时候到make编译连接阶段总是提示,无法打开某某库或者某某库的格式不对(1 先看看32位,64位是否对应:BITS,cflags lflags....,2 是否将.OS .a等依 ...

  9. Springboot学习02-webjars和静态资源映射规则

    Springboot学习01-webjars和静态资源映射规则 前言 1-以前我们在IDEA中创建一个项目,添加web依赖包,我们现在是一个web应用,应该在man目录下面有一个webapp文件夹,将 ...

  10. iOS 开发实用工具

    史蒂芬的博客 (各种软件) http://www.sdifen.com/ 产品原型设计工具 -- 1.墨刀 2.Axure RP 检测接口工具 ---- 1.Charles 2. postman607 ...