精华内容
下载资源
问答
  • 软件工程项目开发全套文档实例,包括需求分析,概要设计,详细设计,项目开发计划,用户操作手册,总结性报告,可行性报告,测试计划
  • 建筑工程施工方案 和施工技术交底实例 应用手册 第一篇 施工组织设计篇 第一章建筑施工组织总设计 第一节施工组织设计概论 一施工组织...施工组织设计就是对工程建设项目在整个施工全过程构思设想和具体安排目标是要使
  • MATLAB工程应用实例.rar

    2010-08-30 22:17:52
    以实际应用中的一些具体工程实例为基础,详细介绍MATLAB的具体使用方法
  • 一个软件工程项目开发文档的实例,包括需求分析,概要设计,详细设计,项目开发计划,用户操作手册,总结性报告,可行性报告,测试计划,很具有参考价值。
  • 项目开发文档.rar包括内容: 项目开发总结报告--实例 4份 需求规格说明书--实例 14份 概要设计说明书--实例 6份 用户操作手册--实例 3份 国家标准软件工程模板.rar 希望对大家有用
  • 大公司的软件工程文档实例 需求分析 概要设计 详细设计 项目开发计划 用户操作手册 总结性报告 可行性报告 测试计划 测试分析报告.rar
  • web service axis项目实例

    2012-07-09 15:36:20
    里面包含服务端 可客户端两个工程,有具体的帮助文档。下载之后就可以发布运行。
  • 本文实例讲述了创建Django项目的方法。分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liangdongchang/HelloDjango.git 1、在linux命令窗口终端下 创建...
  • 完整的python项目实例-python完整项目

    千次阅读 2020-10-29 14:27:50
    一个完整的python项目需要具备什么? 1. 需求功能的实现: 实现思路+现有框架+基础编程 2. 项目日志: logging模块(调试性的日志和记录性的日志) 参考:python官方文档中的howto-logging.pdf和library.pdf中的...

    flbm1hkjk6.jpg广告关闭

    2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。

    一个完整的python项目需要具备什么? 1. 需求功能的实现: 实现思路+现有框架+基础编程 2. 项目日志: logging模块(调试性的日志和记录性的日志) 参考:python官方文档中的howto-logging.pdf和library.pdf中的logging部分 3. 测试驱动开发 单元测试unittest模块 参考:python官方文档中的library.pdf中的unittest...

    python项目的代码要求:高性能,封装性(可复用)、抽象自己写程序的要求:不单追求简单业务逻辑。 更要考虑封装性项目结构:顶级结构: 包 文件夹,类似jar,dll等二级结构:模块 .py文件,单文件可包含多个类,也可以不定义类,但最好用类组织起来三级结构:类 函数、变量(类的特性)包和模块的命名:与文件夹和...

    6lzwtnox9a.png

    mirror.xmission.comjenkinsupdatescurrentupdate-center.json因为我们只需要构建python项目 所以我们这边只需要2个插件git pluginpythonpluginpipeline? 七、创建项目? 总结第一步 创建项目 创建任务 名字 master-build 自由代码风格 1. 丢弃旧的构建 (保留7天,最大构建的最大数100)2. 源码管理 选择git 如果我们...

    说明:源主机(可联网):安装了python3和pip3目标主机(无法联网):需安装和源主机相同的python版本和pip3,部署执行项目文件主机系统为centos,python版本为3. 5.2, 通过虚拟环境+pip进行迁移目标主机离线安装python及pip3源主机中下载所需包python3首先,下载python3,可以在官网或者通过源主机(可联网的其它...

    python爬虫scrapy项目(二) 爬取目标:房天下全国租房信息网站(起始url:http:zu.fang.comcities.aspx) 爬取内容:城市; 名字;出租方式;价格;户型;面积;地址; 交通 反反爬措施:设置随机user-agent、设置请求延时操作、1、开始创建项目1 scrapy startprojectfang2、进入fang文件夹,执行启动spider爬虫文件...

    t884wq1ja2.png

    django2.1 + python3.6 + nginx + uwsgi部署到ubuntu18.04材料准备准备一个django项目准备一台ubuntu18.04的主机ssh连接到主机(腾讯云)mac直接在bash中输入ssh root@你的主机ipwindows请下载ssh远程连接工具例如putty 腾讯云默认不能以root身份登录,请使用以下方式登录$ ssh -q -l ubuntu -p 22你的主机ip配置...

    f6f0p8ebfk.png

    pyinstaller: 把项目打包成可执行文件(.exe),可在 windows 环境下运行程序,无需 python 环境。 pysimplegui: 绘制游戏整体交互窗口(开始、设置、历史最高窗口)。 游戏素材素材文件路径游戏音乐resourcemusic... 游戏字体resourcefonthui.ttf游戏背景图、图标resourceimage... 英语四级单词文本resourceen_word...

    概览 这里主要收集python项目的打包、发布和部署的常用方法,只是入门级别,深入的流程还是以官方文档为准(链接每节都已经给出)。 distutils,setuptools,pip,virtualenv官网资料(python packaging user guide):https:packaging.python.orgkey_projects#setuptools简介 distutils -python自带的基本安装工具, 适用于...

    概览 这里主要收集python项目的打包、发布和部署的常用方法,只是入门级别,深入的流程还是以官方文档为准(链接每节都已经给出)。 distutils,setuptools,pip,virtualenv官网资料(python packaging user guide):https:packaging.python.orgkey_projects#setuptools简介distutils -python自带的基本安装工具, 适用于...

    作为java程序猿,习惯于java项目一个包就可以在任何平台上运行,因此在研究该项目伊始,本着也能够将python项目打包部署的期望,研究了下python项目部署方法。 一般情况,安装python模块都会用到setuptools模块。 它提供了python模块的构建、编译、打包、安装等功能。 在联网环境时,调用模块的setup.py脚本执行安装...

    目前最流行的 linux 容器解决方案之一就是docker,它最大优点就是轻量、资源占用少、启动快。 本文从什么是docker? docker解决什么问题? 有哪些好处? 如何去部署实现去全面介绍。 docker部署项目优势 设想这样一个真实案例,假如我们要部署一个python应用程序,要做哪些工作? 首先需要python运行环境,比如部署的...

    slhztp32qv.jpeg

    本文共 690 字,预计阅读 3分钟最近我写了一个 python 练手小项目,它是一个 pc 桌面版的便签程序,很简陋。 写这个小项目是为了熟悉一下用 python 进行一个完整的项目开发,进一步熟练 python 的使用。 界面是这样的:? 这个小项目所用到的技术有:1. 前端图形化界面(gui):wxpython + wxfrombuilder2. 后端mysql...

    业界常用的有redis、memcached等,今天要讲的就是在python项目中如何使用memcached缓存服务。 memcachedmemcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对database的访问来加速web应用程序。 memcached本身其实不提供分布式解决方案。 在服务端,memcached...

    项目实操 1、批量修改文件名 2、发送邮件 --- 打卡领取 可配置。 3、批量合成头像图片 4、股票查询程序开发 --- 打卡领取 5、抽奖程序(源码奉献) -页面顺时针抽奖 - 滚动抽奖0、价值2亿的人工智能对话代码 # ! usrbinenv python # -*- coding:utf-8 -*- while true: print(input().strip(吗??)+! 1、python批量修改...

    9pitir2wgf.png

    css文件等)(1)找到以项目名称命名的文件夹(2)打开settings.py文件(3)在文件最后面static_url = static下面添加如下代码staticfiles_dirs =2、数据库连接配置(默认数据库为sqlite,下面以mysql为例进行配置)(1)安装pymysql模块(django默认使用mysqldb模块操作数据库,该模块不支持python3) 点击 file-->...

    视图的实现:视图是一个简单的 python 方法,它接受一个请求对象,负责实现:任何业务逻辑(直接或间接)上下文字典,它包含模板数据使用一个上下文来表示模板响应对象,它将所表示的结果返回到这个框架中在 django 中,当一个 url 被请求时,所调用的 python 方法称为一个视图(view),这个视图所加载并呈现的页面...

    项目简介:说明: 主要用于redis实例集中化实时主动监控,后端采用python+flask实现,具体实现代码请阅读代码 项目思路:? 项目结构:xmzoomeye-redis├──app│├──conf││├──config.py││├──config.pyc││├──__init__.py││├──__init__.pyc││└──rdsdata.db│├──__init__.py│├──__init...

    在开发或者在github上clone python项目时,我们经常能看到他们工程的根目录下有一个requirements.txt文件,并且在readme中介绍使用前需要运行一些命令这个时什么意思呢? 开发者希望我们能快速配置项目所需要的环境,所以我们需要这个很重要的文件python依赖文件生成文件自己在工程根目录下创建一个任意文件名.txt,在...

    keras是一个极简的、高度模块化的神经网络库,采用python(python 2.7-3.5.)开发,能够运行在tensorflow和theano任一平台,好项目旨在完成深度学习的快速开发。 特性: 可以快速简单的设计出原型(通过总模块化、极简性、和可扩展性)同时支持卷积网络和循环网络,以及两者的组合支持任意的连接方案(包括多输入和...

    展开全文
  • Cordova构建Android,IOS工程实例

    千次阅读 2017-05-05 18:32:31
    重要提示采用混合开发的方式可以有很多种,具体要根据项目的不同类型采用不同的方式,cordova是一款不错的混合框架,但是仍然无法和原生比性能,来自cordova官方的建议是如果你要做的是大型应用或者数据量较大,...

    cordova是用web编写的移动端程序,通过调用原生SDK的方式在js内部编写交互程序,然后加壳包装。

    重要提示

    采用混合开发的方式可以有很多种,具体要根据项目的不同类型采用不同的方式,cordova是一款不错的混合框架,但是仍然无法和原生比性能,来自cordova官方的建议是如果你要做的是大型应用或者数据量较大,cordova并不是最佳选择。

    环境配置

    • Node 6.9.2
    • Android
      • Git 2.11
      • AndroidSDK(v19及以上)
      • JDK(7及以上)
    • IOS
      • Xcode
      • 终端
    • 以下演示都用Android为例,不同的地方会标注

    安装Cordova

    这几天一直用GitShell,直到今天突然发现windows居然也可以用,所以就直接演示windows下的吧

    • 打开git
    • 安装npm install -g cordova
    • 检查cordova -version or cordova -v

    创建一个Cordova项目

    • 创建一个workspace
      • C:\Users\Administrator>cd E:\Cordova
      • C:\Users\Administrator>e:
    • 创建项目
      • E:\Cordova>cordova create CordovaWindows com.jty.mycordova MyCordova
      • 得到提示Creating a new cordova project.
      • down!
    • 创建释义
      • CordovaWindows 项目名
      • com.jty.mycordova包名
      • MyCordovaAppName

    添加平台支持

    • 进入刚创建的工程目录
    • windows
      • cordova platform add android
    • Mac
      • $ cordova platform add IOS
      • $ cordova platform add android
    • 运行结果如下

      E:\Cordova\CordovaWindows>cordova platform add android
      Adding android project...
      Creating Cordova project for the Android platform:
          Path: platforms\android
          Package: com.jty.mycordova
          Name: MyCordova
          Activity: MainActivity
          Android target: android-25
      Subproject Path: CordovaLib
      Android project created with cordova-android@6.1.2
      Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project
      Fetching plugin "cordova-plugin-whitelist@1" via npm
      Installing "cordova-plugin-whitelist" for android
      
                 This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this
      plugin since the whitelist will be built in.

    构建项目

    第一次构建可能有点慢,因为需要配置Gradle

    • 先看看项目结构

      E:\Cordova\CordovaWindows>ls
      config.xml  hooks  platforms  plugins  www
      • 配置文件 config.xml
      • 关联文件 hooks
      • android项目 platforms
      • 插件库 plugins
      • web项目 www
    • 构建项目

      • cordova build android
    • 构建效果

    E:\Cordova\CordovaWindows>cordova build android
    ANDROID_HOME=E:\64androidstudio\Android\Sdk
    JAVA_HOME=E:\JDK
    Subproject Path: CordovaLib
    Starting a new Gradle Daemon for this build (subsequent builds will be faster).
    Incremental java compilation is an incubating feature.
    :preBuild UP-TO-DATE
    :preDebugBuild UP-TO-DATE
    :checkDebugManifest
    :CordovaLib:preBuild UP-TO-DATE
    :CordovaLib:preDebugBuild UP-TO-DATE
    :CordovaLib:checkDebugManifest
    :CordovaLib:prepareDebugDependencies
    :CordovaLib:compileDebugAidl
    :CordovaLib:compileDebugNdk UP-TO-DATE
    :CordovaLib:compileLint
    :CordovaLib:copyDebugLint UP-TO-DATE
    :CordovaLib:mergeDebugShaders
    :CordovaLib:compileDebugShaders
    :CordovaLib:generateDebugAssets
    :CordovaLib:mergeDebugAssets
    :CordovaLib:mergeDebugProguardFiles
    :CordovaLib:packageDebugRenderscript UP-TO-DATE
    :CordovaLib:compileDebugRenderscript
    :CordovaLib:generateDebugResValues
    :CordovaLib:generateDebugResources
    :CordovaLib:packageDebugResources
    :CordovaLib:processDebugManifest
    :CordovaLib:generateDebugBuildConfig
    :CordovaLib:processDebugResources
    :CordovaLib:generateDebugSources
    :CordovaLib:incrementalDebugJavaCompilationSafeguard
    :CordovaLib:compileDebugJavaWithJavac
    :CordovaLib:compileDebugJavaWithJavac - is not incremental (e.g. outputs have ch
    anged, no previous execution, etc.).
    ע: ijЩ�����ļ�ʹ�û�����ѹ�ʱ�� API��
    ע: �й���ϸ��Ϣ, ��ʹ�� -Xlint:deprecation ���±��롣
    :CordovaLib:processDebugJavaRes UP-TO-DATE
    :CordovaLib:transformResourcesWithMergeJavaResForDebug
    :CordovaLib:transformClassesAndResourcesWithSyncLibJarsForDebug
    :CordovaLib:mergeDebugJniLibFolders
    :CordovaLib:transformNative_libsWithMergeJniLibsForDebug
    :CordovaLib:transformNative_libsWithSyncJniLibsForDebug
    :CordovaLib:bundleDebug
    :prepareAndroidCordovaLibUnspecifiedDebugLibrary
    :prepareDebugDependencies
    :compileDebugAidl
    :compileDebugRenderscript
    :generateDebugBuildConfig
    :generateDebugResValues
    :generateDebugResources
    :mergeDebugResources
    :processDebugManifest
    :processDebugResources
    :generateDebugSources
    :incrementalDebugJavaCompilationSafeguard
    :compileDebugJavaWithJavac
    :compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no p
    revious execution, etc.).
    :compileDebugNdk UP-TO-DATE
    :compileDebugSources
    :mergeDebugShaders
    :compileDebugShaders
    :generateDebugAssets
    :mergeDebugAssets
    :transformClassesWithDexForDebug
    :mergeDebugJniLibFolders
    :transformNative_libsWithMergeJniLibsForDebug
    :processDebugJavaRes UP-TO-DATE
    :transformResourcesWithMergeJavaResForDebug
    :validateSigningDebug
    :packageDebug
    :assembleDebug
    :cdvBuildDebug
    
    BUILD SUCCESSFUL
    
    Total time: 45.301 secs
    Built the following apk(s):
            E:/Cordova/CordovaWindows/platforms/android/build/outputs/apk/android-de
    bug.apk


    • 运行项目
      • cordova run android
      • 运行之后提示 No target specified, deploying to device '192.168.237.101:5555'.

    这里我开了一个Genymotion模拟器,上面是分配的设备,当然用真机效果当然是最好的。
    这时候已经可以将platforms下的android导入Android Studio运行了,因为它已经是一个独立项目了

    配置项目

    前面在命令行操作有诸多不便,那么接下里既然项目都可以运行了,那就可以直接去项目配置

    元素描述
    widget这是我们在创建应用程序时指定的应用程序反向域值。
    name我们在创建应用程序时指定的应用程序名称。
    description应用程式说明。
    author应用程式的作者。
    content应用程序的起始页。 它位于 www 目录内。
    plugin当前安装的插件。
    access用于控制对外部域的访问。 默认的 origin 值设置为 * ,这意味着允许访问任何域。 此值不允许打开某些特定的网址来保护信息。
    allow-intent用于控制对外部域的访问。 默认的 origin 值设置为 * ,这意味着允许访问任何域。 此值不允许打开某些特定的网址来保护信息。…
    platform构建应用程序的平台。
    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.jty.mycordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
        <name>MyCordova</name>
        <description>
            A sample Apache Cordova application that responds to the deviceready event.
        </description>
        <author email="521taoyuan@gmail.com" href="http://cordova.io">
           TaoYuan
        </author>
        <content src="index.html" />
        <plugin name="cordova-plugin-whitelist" spec="1" />
        <access origin="*" />
        <allow-intent href="http://*/*" />
        <allow-intent href="https://*/*" />
        <allow-intent href="tel:*" />
        <allow-intent href="sms:*" />
        <allow-intent href="mailto:*" />
        <allow-intent href="geo:*" />
        <platform name="android">
            <allow-intent href="market:*" />
        </platform>
        <platform name="ios">
            <allow-intent href="itms:*" />
            <allow-intent href="itms-apps:*" />
        </platform>
    </widget>
    
    展开全文
  • 在前两篇文章介绍了决策树和随机森林的原理、流程和算法之后,这里将以随机森林为例,探索数据挖掘算法在项目中的应用,尤其是在kaggle项目中进行数据挖掘的一般流程。1、分析项目背景项目背景的熟悉对于我们理解...

    在前两篇文章介绍了决策树和随机森林的原理、流程和算法之后,这里将以随机森林为例,探索数据挖掘算法在项目中的应用,尤其是在kaggle项目中进行数据挖掘的一般流程。


    1、分析项目背景

    项目背景的熟悉对于我们理解影响分析目标的因素十分重要,甚至可以发觉一些常规资料中没有提出来的因素。
    该项目的页面
    泰坦尼克的沉没发生在1912年4月15日,包括海员在内,船上共2224个人,遇难1502年,幸存722人。这么多人遇难的原因之一是事故发生后船上没有足够的救生艇。事后的调查数据显示,似乎有一些类型的人幸存的可能性更大,比如妇女、孩子、上层阶级的乘客。

    这个项目的目标就是通过这些调查数据,利用数据挖掘算法来建立船上人员生存概率的模型,并利用训练的模型对测试数据中乘客的生存情况进行预测(调查数据已经过处理,并分成训练集-这部分带标签,及测试集-这部分标签被抹去),提交预测结果后系统会给出预测精度。

    插入点题外话:泰坦尼克上有8个中国人,其中6人生还,对比其他人这是一个极高的生还率;当时的英美媒体出于转移人们注意力的需要,强行污蔑他们是卑鄙窃取上救生艇机会的人,他们一生都被扣上“自私的种族”的帽子,这6个中国人成了英美两国家喻户晓的“丑陋人物”。中国在当时是积分积弱的国家,船上的8个人都是劳工,共用一张船票,挤在三等舱里。他们的主要工作是烧锅炉。他们怎么可能有优先上救生艇的机会?被污蔑后他们根本没有发声的机会,他们更可能连自己被污蔑都不知道,因为回国后他们就要回到当时那种水深火热的生活中去。后来的调查还原了真相,这6个中国人里,有5个是乘坐一艘已经破了的小船逃命的。当时因为这条船已经破了,人们都认为没法救命,只有这5个人在万般无奈之下想努力试一试。他们将这条破船扔下海,然后跳上去,紧紧抱住这条船,把它当成大海中的一块浮木,漂浮在大海上。幸运的是,他们终于遇上了一艘救生艇,被救了上来。而另外一个中国人,则是紧紧抱住了一块门板,直到遇上救生艇获救。

    本文中的主要流程及程序参考该文

    2、训练数据基本特点的统计分析

    2.1样本数据初探

    数据在这里,我们用到的两个文件分别是train.csv和test.csv,分别存放着训练数据集(有标签)和测试数据集(无标签)。下载数据后可以看到数据如下的样子:

    PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
    103Braund, Mr. Owen Harrismale2210A/5 211717.25S
    211Cumings, Mrs. John Bradley (Florence Briggs Thayer)female3810PC 1759971.2833C85C
    313Heikkinen, Miss. Lainafemale2600STON/O2. 31012827.925S

    训练集数据共有891个样本,测试集数据418个样本,这里测试集数据占总样本约1/3。这个比例是不固定的,建议在1/5~1/3之间;同时可以看到总共有1309个样本,而事故发生时船上共有2224人,因而不是所有人的数据都被包含进本项目中。
    下面看看各特征代表的意思:

    变量名称PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
    中文翻译乘客ID是否幸存舱位等级姓名性别年龄兄弟姐妹个数父母子女个数船票票价船舱名称登船港口
    变量类型intintintchrchrnumintintchrnumchrchr
    变量描述按顺序编号,如1,2,3……可能是数据据录入数据库时产生的主键,无意义样本标签,取0,1,0代表遇难,1代表幸存舱位等级包括1,2,3级,舱位等级高舱内设施可能会更好一点,便利性可能也会更好,因而可能和幸存概率很有关系姓名可能能一定程度反映出一定人的身份,身份与他的经济能力即与舱位好坏等挂钩,在发生事故后可能与受保护的程序有关,比如为社会做出特殊贡献的人先走,比如特殊人才先走性别可能也与幸存率有关,社会的普遍做法是女士优先年龄也可能与幸存率有关,社会普遍做法是老人小孩优先,更可能是小孩优先船上兄弟姐妹的个数也可能与幸存率有关,家里独子的可能更容易获得上救生艇的机会船上父母子女的个数也可能与幸存率有关,也是人多获得上救生艇机会更大,而父母一般会将机会给子女船票反映出来的也是位置舱位等情况,道理是一样的票价同船票和舱位等级的效果船舱名称反映出的也是设施等条件,比如好的船舶可能有更便利的逃生门或者配备了更多的救生艇登船港口可能也能与一个人的身份国籍等有关联进而可能与逃生率关联

    以上便是对数据的最初步的认识,如果有兴趣可以更深入了解当时船上人员的背景信息及特征变量各类型的具体意思,比如哪个字母代表哪个港口,从这个港口一般登船的会是什么人,等等,为上表中的特征变量可能对分析目标(幸存率)的影响做支撑。


    2.2各特征的基本统计分析

    2.2.1 加载数据

    # 加载数据
    ##### 加载训练和测试数据
    #####--------------------------------------------------------------------------------------------------
    #这里读入数据的时候我们没有做任何的处理(像去除空值这些)
    train=pd.read_csv("./train.csv")
    test=pd.read_csv("./test.csv")
    #查看样本数和特征数
    #train_num,train_var_num=np.shape(train)
    #test_num,test_var_num=np.shape(test)
    #print("训练集:有",train_num,"个样本","每个样本有",train_var_num,"个变量.")
    #print("测试集:有",test_num,"个样本","每个样本有",test_var_num,"个变量.")
    print(train.info())
    print(test.info())

    我们可以对数据进行进一步的查看,如下:

    #训练集
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
    PassengerId    891 non-null int64
    Survived       891 non-null int64
    Pclass         891 non-null int64
    Name           891 non-null object
    Sex            891 non-null object
    Age            714 non-null float64
    SibSp          891 non-null int64
    Parch          891 non-null int64
    Ticket         891 non-null object
    Fare           891 non-null float64
    Cabin          204 non-null object
    Embarked       889 non-null object
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.6+ KB
    None
    #测试集
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 418 entries, 0 to 417
    Data columns (total 11 columns):
    PassengerId    418 non-null int64
    Pclass         418 non-null int64
    Name           418 non-null object
    Sex            418 non-null object
    Age            332 non-null float64
    SibSp          418 non-null int64
    Parch          418 non-null int64
    Ticket         418 non-null object
    Fare           417 non-null float64
    Cabin          91 non-null object
    Embarked       418 non-null object
    dtypes: float64(2), int64(4), object(5)
    memory usage: 36.0+ KB
    None

    可以看到训练训练集有 891 个样本 每个样本有 12 个变量;测试集有 418 个样本 每个样本有 11 个变量。
    从变量类型来有浮点型有2个,这类特征为连续型变量,后续在统计分布和缺失值的处理上与整型和符号型是不一样的;整型特征有4个、符号型有5个,这两类在统计分布和缺失值处理上大体相似。
    从缺失值来看,Age和Cabin在训练集和测试集中都有较多的缺失值,而Embarked在训练集中有两个缺失值,Fare在测试集中有一个缺少值;对于缺少值的处理也有不同的方法,比如如果某一特征缺失值很多,通过初步分析又分析跟分析目标关联性不大,可以考虑剔除该特征,或者用其他与他相关的特征来代替;对于少量的连续型特征可以考虑用均值、中值代替,也可以找与它相关性很强的特征中对应样本的值来替代等方法;对于少量的离散形或符号型特征缺失值,可考虑使用出现频率最高的符号值来替代。后面在特征工程中有专门的内容来处理缺失值。

    2.2.2 去除离群点

    离群点对后面的数据建模有比较大的影响,尤其是在回归建模中。因而应当尽量去除数据中的离群点。
    在这个项目中由于测试数据用来考核的,不能删除任何一个数据,因而我们只需要在训练集中去除离群点。
    离群点的去除本身就是一个学问,有很多方法,这里只采用一种比较简单的方法,四分位极差法(比上分位小于1.5倍四分位极差或比下分位大1.5倍四分位极差则为离散点)。

    去除离群点
    这里选取了”Age”,”SibSp”,”ParCh”,”Fare”四个数值型变量;另一个数值型变量舱位等级没选是因为该变量只有1、2、3级不可能有离群点,其他符号型变量诸如性别、登录港口,也只有有限的类型,一般不可能离群,也没有必要分析是否离群。

    #去除离群点
    #####--------------------------------------------------------------------------------------------------
    #离群点检测
    def detect_outliers(df,n,features):
        '''
        输入:
        df:数据框,为需要检测的样本集
        n:正整数,样本特征超出四分位极差个数的上限,有这么多个特征超出则样本为离群点
        features:列表,用于检测是否离群的特征
        输出:
    
        '''
        outlier_indices=[]
        outlier_list_col_index=pd.DataFrame()
    
        #对每一个变量进行检测
        for col in features:
            #计算四分位数相关信息
            Q1=np.percentile(df[col],25)
            Q3=np.percentile(df[col],75)
            IQR=Q3-Q1
            #计算离群范围
            outlier_step=1.5*IQR
            #计算四分位数时如果数据上有空值,这些空值也是参与统计的,所以统计出来的Q1、Q3、IQR这些数据有可能是NAN,但是这并不要紧,在判断是否大于或小于的时候跟NAN比较一定是false,因而样本并不会因为空值而被删除掉
            #空值会在后面特征工程时再做处理
    
            #找出特征col中显示的离群样本的索引
            outlier_list_col=df[(df[col]<Q1-outlier_step)|(df[col]>Q3+outlier_step)].index
            #额外存储每一个特征在各样本中的离群判断
            temp=pd.DataFrame((df[col]<Q1-outlier_step)|(df[col]>Q3+outlier_step),columns=[col])
            #将索引添加到一个综合列表中,如果某个样本有多个特征出现离群点,则该样本的索引会多次出现在outlier_indices里
            outlier_indices.extend(outlier_list_col)
            #额外存储每一个特征在各样本中的离群判断,方便查看数据
            outlier_list_col_index=pd.concat(objs=[outlier_list_col_index,temp],axis=1)
        #选出有n个以上特征存在离群现象的样本
        outlier_indices=Counter(outlier_indices)
        multiple_outliers=list(k for k,v in outlier_indices.items() if v>n)
        return multiple_outliers,outlier_list_col_index
    
    #获取离群点        
    outliers_to_drop,outlier_col_index=detect_outliers(train,2,["Age","SibSp","Parch","Fare"])
    #这里选取了"Age","SibSp","ParCh","Fare"四个数值型变量;另一个数值型变量舱位等级没选是因为该变量只有1、2、3级不可能有离群点,其他符号型变量诸如性别、登录港口,也只有有限的类型,一般不可能离群,也没有必要分析是否离群。

    离群点详细信息:

    print(train.loc[outliers_to_drop]) 
    print(outlier_col_index.loc[outliers_to_drop])#查看哪个特征对样本成为离群点有决定作用.
    PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
    272801Fortune, Mr. Charles Alexandermale19.03219950263.00C23 C25 C27S
    888911Fortune, Miss. Mabel Helenfemale23.03219950263.00C23 C25 C27S
    15916003Sage, Master. Thomas HenrymaleNaN82CA. 234369.55NaNS
    18018103Sage, Miss. Constance GladysfemaleNaN82CA. 234369.55NaNS
    20120203Sage, Mr. FrederickmaleNaN82CA. 234369.55NaNS
    32432503Sage, Mr. George John JrmaleNaN82CA. 234369.55NaNS
    34134211Fortune, Miss. Alice Elizabethfemale24.03219950263.00C23 C25 C27S
    79279303Sage, Miss. Stella AnnafemaleNaN82CA. 234369.55NaNS
    84684703Sage, Mr. Douglas BullenmaleNaN82CA. 234369.55NaNS
    86386403Sage, Miss. Dorothy Edith “Dolly”femaleNaN82CA. 234369.55NaNS

    下面对样本成为离群点的原因进行分析

    PassengerIdAgeSibSpParchFare
    2728FalseTrueTrueTrue
    8889FalseTrueTrueTrue
    159160FalseTrueTrueTrue
    180181FalseTrueTrueTrue
    201202FalseTrueTrueTrue
    324325FalseTrueTrueTrue
    341342FalseTrueTrueTrue
    792793FalseTrueTrueTrue
    846847FalseTrueTrueTrue
    863864FalseTrueTrueTrue

    从上表中可以看到,在10个离群样本中,Age并不是原因,而SibSp,Parch,Fare三个特征在每一个样本中都表现出离群。详情可利用简单的统计信息查看。

    print(train.describe())
    PassengerIdSurvivedPclassAgeSibSpParchFare
    count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
    mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
    std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
    min 1.0000000.0000001.0000000.4200000.0000000.0000000.000000
    25%0.0000000.000000 2.00000020.1250000.0000000.0000007.910400
    50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
    75% 668.5000001.0000003.00000038.0000001.0000000.00000031.000000
    max891.0000001.0000003.00000080.0000008.0000006.000000512.329200

    从上表中可以看到,在训练数据中:
    Survived上看,Survived只能取0、1,到中位数的时候仍然还是0,下分位数才到1,说明训练数据样本中,幸存率在1/4~1/2之间,结合均值0.383838,幸存率大概在1/3左右;
    Pclass上看,Pclass只能取1、2、3级,但均值为2.308642,说明绝大数乘客为三等票,结合四位数,可知这一比例在大于5/8;
    Age上看,891个样本只有714个统计数字,说明有183个缺失值;最小值是0.420000周岁,最大值是80.000000周岁,说明船上有刚出生没多久的小孩,也有年纪很大的老人;20.125000-38.000000周岁占了一半,且平均年龄是29.699118周岁,说明青壮年为主;
    SibSp上看,超过一半的人没有兄弟姐妹或配偶在船上,但也有比较多的,最多的是8个;1个以下的占了3/4,但均值是0.523008,说明有不少人有1个兄弟姐妹在船上,可能也有一些大于1个的。
    Parch上看,超3/4的人没有父母或子女在船上,也有个别比较多的,最大值是6个,但均值是0.381594,说明这种情况很少,更可能是1个;
    Fare上看,最小值是0,说明有没花钱上船的;3/4的人的票价低于31,但均值却是32.204208,主要原因是高票价的人虽然少,但它们的数值较大,最大的是512.329200,这些票价拉高了整体票价;

    离群分析:
    Age上看,没有样本表现出离群;尽管有183个缺失值,这此缺失值并不影响离群分析,或者说离群分析的时候不会把缺失值排除掉;
    SibSp上看,10个样本在SibSp上均表现出离群,对比SibSp值及SibSp在训练集中的统计信息,SibSp大于等3个就离群了,在这一特征上有很多样本表现出离群,而最终离群点的确定是几个特征综合选出来的;所以并不代表删除离群点后SibSp只会小于等于2个;
    Parch上看,10个样本在Parch上均表现出离群,对比Parch的具体值及Parch在训练集中的统计信息,Parch大于等于2个就离群了,同样,在这一特征上有很多样本表现出离群,而最终离群点的确定是几个特征综合选出来的;所以并不代表说明删除离群点后Parch只会小于等于1个,尤其是Parch的四分位数都为0,四分位极差也为0,这种情况下,只要大于0的值就会被视为离群样本;
    Fare上看,10个样本在Fare上均表现出离群,对比Fare的具体值及Fare在训练集中的统计信息,Fare大于等于69.55时就离群了;

    可以看到这种定义离群的方法还需要改进。

    删除离群点:

    #train = train.drop(outliers_to_drop, axis = 0).reset_index(drop=True)

    2.2.3 整合训练集和测试集

    这一步没有特别意义,只是为了后面在有的内容统计和值的处理上更方便,也可以不整合而对每个数据集单独处理。
    但是整合需要在训练集剔除离群点后再做,因为测试集是不需要剔除离群点。

    train_len,train_var_num=np.shape(train)
    dataset=pd.concat(objs=[train,test],axis=1).reset_index(drop=True)
    #数据集缺失值用NAN填充
    dataset=dataset.fillna(np.nan)

    2.2.4 删除离群点后整体查看数据

    查看整个数据集缺失值

    #整个数据集缺失值
    
    Age             256 0.197075
    Cabin          1007 0.775212
    Embarked          2 0.001540
    Fare              1 0.000770
    Name              0 0.000000
    Parch             0 0.000000
    PassengerId       0 0.000000
    Pclass            0 0.000000
    Sex               0 0.000000
    SibSp             0 0.000000
    Survived        418 0.321786
    Ticket            0 0.000000
    dtype: int64
    
    #训练样本缺失值
    
    PassengerId      0  0.000000
    Survived         0  0.000000
    Pclass           0  0.000000
    Name             0  0.000000
    Sex              0  0.000000
    Age            170  0.192963
    SibSp            0  0.000000
    Parch            0  0.000000
    Ticket           0  0.000000
    Fare             0  0.000000
    Cabin          680  0.771850
    Embarked         2  0.002270
    dtype: int64

    从整个数据集和训练集的缺失值来看,仍然是Age和Cabin缺失值较多,并且在训练样本中的比例与整个数据集中的比例基本一致;训练中2个样本的Embarked缺失,测试集中一个Fare值缺失;整体数据集中Survived有418个缺失值是因为测试集样本类别标签已被抹除。

    再重点看看训练集

    print(train.info())

    特征详情如下:

    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 881 entries, 0 to 890
    Data columns (total 12 columns):
    PassengerId    881 non-null int64
    Survived       881 non-null int64
    Pclass         881 non-null int64
    Name           881 non-null object
    Sex            881 non-null object
    Age            711 non-null float64
    SibSp          881 non-null int64
    Parch          881 non-null int64
    Ticket         881 non-null object
    Fare           881 non-null float64
    Cabin          201 non-null object
    Embarked       879 non-null object
    dtypes: float64(2), int64(5), object(5)
    memory usage: 89.5+ KB
    None

    去除离群点后训练集基本统计信息:

    print(train.describe())
    PassengerIdSurvivedPclassAgeSibSpParchFare
    count881.000000881.000000881.000000711.000000881.000000881.000000881.000000
    mean446.7139610.3859252.30760529.7316030.4551650.36322431.121566
    std256.6170210.4870900.83505514.5478350.8715710.79183947.996249
    min 1.0000000.0000001.0000000.4200000.0000000.0000000.000000
    25%226.0000000.000000 2.00000020.2500007.8958000.0000007.910400
    50%448.0000000.0000003.00000028.0000000.0000000.00000014.454200
    75% 668.0000001.0000003.00000038.0000001.0000000.00000030.500000
    max891.0000001.0000003.00000080.0000005.0000006.000000512.329200

    从以上的基本统计信息可以看到,去除离群点后对Age和Fare这类连续变量的分布几乎没有影响,但对SibSp和Parch的分布产生一定改变,这其实也是我们删除离群点的原因。

    2.2.5 特征之间的相关性初探

    目前只能对数值型特征计息相关系数,初步探寻特征之间的关联,尤其是与是否幸存的关联性。

    g=sns.heatmap(train[["Survived","Age","SibSp","Parch","Pclass","Fare"]].corr(),annot=True,fmt = ".2f",cmap = "coolwarm")
    plt.show()

    结果如下
    这里写图片描述
    从上图可以看到,Pclass和Survived成负相关,即3等票的幸存率要小于1等票;Fare和 Survived成正相关,即票价越高,可能越能幸存;Age,SibSp,Parch与Survived几乎不相关,但是并不意味着这些特征就没有用处,整体上的不相关可能是因为数据的“正”“负”抵消产生而看起来不相关;比如年龄,虽然整体上与Survived相关性不大,但可能局部会产生相关性,比如小孩就很容易幸存。
    Age和SibSp、Parch、Pclass、Fare都有一定的相关性,因为生育有年龄特点,年龄在一定程序上也能跟经济能力相关,经济能力又跟船票等级和票价这些相关,因为这些数据展现出来的特点跟我们的生活经验是吻合的。
    SibSp和Age、Parch、Fare有一定相关性。
    Parch和Age、SibSp、Fare相关
    Pclass和Age、Fare相关
    Fare和Age、SibSp、Parch、Pclass相关,这其他成其以Fare和Pclass的相关性最大。
    虽然特征之前的相关性分析对于确定特征和最终的幸存率没有直接关系,但这对于特征工程很有指导意义。


    2.3 各特征与分析目标的关联分析

    2.3.1 年龄Age与生存率的关系

    # 特征之间的相关性初探
    #####--------------------------------------------------------------------------------------------------
    #年龄Age与生存率的关系
    g=sns.kdeplot(train["Age"][(train["Age"].notnull())&(train["Survived"]==0)],color="Red",shade=True)
    g=sns.kdeplot(train["Age"][(train["Age"].notnull())&(train["Survived"]==1)],color="Blue",shade=True,ax=g)
    g.set_xlabel("Age")
    g.set_ylabel("Frequency")
    g=g.legend(["Not Survived","Survived"])
    plt.show()

    结果如下图
    这里写图片描述
    从上图中可以看到,在幸存都中年龄较小的乘客所占比重明显要高于遇难者年龄较小的乘客所占比重,而遇难者中20几岁乘客所占比重明显要高于幸存者中20几岁乘客所占比重,另一段在另外遇难者中60-80岁乘客所占比重也要高于幸存者中60-80乘客所占比重。
    所有说,尽管从Age与Survived的相关系数看,两者几乎不相关,但不代表,幸存率在年龄中没有区别。

    2.3.2 性别Sex与生存率的关系

    #性别Sex与生存率的关系
    g=sns.barplot(data=train,x="Sex",y="Survived")
    g.set_ylabel("Survival Probability")
    plt.show()

    结果如下
    这里写图片描述
    从图上可以看到女性幸存率远远高于男姓幸存率,性别将是对结果的预测产生比较大的权重。

    #进一步查看
    print(train[["Sex","Survived"]].groupby("Sex").mean())
            Survived
    Sex             
    female  0.747573
    male    0.190559

    2.3.3 船上兄弟姐妹或配偶数量SibSp与生存率的关系

    # 船上兄弟姐妹或配偶数量SibSp与生存率的关系
    g=sns.barplot(data=train,x="SibSp",y="Survived")
    g.set_ylabel("Survival Probability")
    plt.show()

    结果如下
    这里写图片描述
    从图上可以看到,似乎船上兄弟姐妹人数比较少的时候幸存概率更大。

    2.3.4 船上父母或子女数量Parch与生存率的关系

    #船上父母或子女数量Parch与生存率的关系
    g=sns.barplot(data=train,x="Parch",y="Survived")
    g.set_ylabel("Survival Probability")
    plt.show()

    结果如下
    这里写图片描述
    从图上看,船上父母或子女数量为1到3个的时候幸存率会更高一些,没有或有很多个时幸存率会低一点。

    2.3.5 船票等级Pclass与生存率的关系

    #船票等级Pclass与生存率的关系
    g=sns.barplot(data=train,x="Pclass",y="Survived")
    g.set_ylabel("Survival Probability")
    plt.show()

    结果如下
    这里写图片描述
    从图上可以明显看到不同的船票等级中幸存率是不同的,而且大致成反比例关系。

    2.3.6 票价Fare与生存率的关系

    #票价Fare与生存率的关系
    g=sns.kdeplot(train["Fare"],color="Green",shade=True)
    g=sns.kdeplot(train["Fare"][train["Survived"]==0],color="red",shade=True,ax=g)
    g=sns.kdeplot(train["Fare"][train["Survived"]==1],color="blue",shade=True,ax=g)
    g.set_xlabel("Fare")
    g.set_ylabel("Frequency")
    g=g.legend(["All","Not Survived","Survived"])
    plt.show()

    结果如下
    这里写图片描述
    从图上可以明显看到不同票价在幸存率上的区别,主要分为两段,遇难者在低票价区的概率相对幸存者在低票价区的概率明显要高,而幸存者在高票价区的概率明显要比遇难者在高票价区的概率要高。
    同时从图上可以看到票价的分布存在长尾,相对正态分布严重偏斜,这种分布在很多算法中会导致该特征产生过高的权重(高于它应该享有的待遇),对该特征进行log变换可以纠正偏斜。
    我们同时在训练集和测试集进行变换,由于测试集中存在一个缺失值,可以先将该缺失值补上,这里采用中值填充。

    #Fare特征的缺失值进行填充
    dataset["Fare"]=dataset["Fare"].fillna(dataset["Fare"].median())#这里用到了整个数据集
    test["Fare"]=test["Fare"].fillna(dataset["Fare"].median())
    #利用柱形图来查看log变换前Fare在整个数据集中的分布
    g=sns.distplot(dataset["Fare"],color="M",label="Skewness:%.2f"%(dataset["Fare"].skew()))
    g.legend(loc="best")
    plt.show()

    结果如下:
    这里写图片描述
    可以看到很明显的长尾,偏斜度达4.51

    #下面利用log函数进行数据变换
    dataset["Fare"]=dataset["Fare"].map(lambda i:np.log(i) if i>0 else 0)#map()函数具体将元素进行映射的功能
    #查看变换后的数据分布
    g=sns.distplot(dataset["Fare"],color="M",label="Skewness:%.2f"%(dataset["Fare"].skew()))
    g.legend(loc="best")
    plt.show()

    结果如下:
    这里写图片描述
    可以看到数据的偏斜得到很大程度的改善。

    2.3.7 登录港口Embarked与生存率的关系

    #训练集中数据存在两个缺失值,我们可以采用出现频率最大的港口来填充缺失值。因而需要先查看数据整体情况
    print(dataset["Embarked"].describe())

    结果如下:

    count     1297
    unique       3
    top          S
    freq       904
    Name: Embarked, dtype: object

    可以看到出现频率最大的港口“S”

    #缺失值填充
    dataset["Embarked"]=dataset["Embarked"].fillna(dataset["Embarked"].describe().top)
    train["Embarked"]=train["Embarked"].fillna(dataset["Embarked"].describe().top)
    print(dataset["Embarked"].isnull().sum())
    print(train["Embarked"].isnull().sum())

    可以看到填充后缺失值为0。
    下面来查看Embarked与生存率的关系。

    #查看Embarked与生存率的关系
    g=sns.barplot(data=train,x="Embarked",y="Survived")
    g.set_ylabel("Survival Probability")
    plt.show()

    结果如下:
    这里写图片描述
    可以看到从港口“C”登船的乘客生存率最高。可能是从Cherbourg(C)港口登船的乘客比Queenstown (Q)和Southampton (S)登船的乘客买一等票的比例更高。可以进一步核查。

    # 进一步查看 Pclasst和Embarked的关系
    g=sns.factorplot(data=train,x="Pclass",col="Embarked",size=6,kind="count",palette="muted")
    g.despine(left=True)
    g = g.set_ylabels("Count")
    plt.show()

    结果如下:
    这里写图片描述
    可以看到“C”港口登船的乘客中一等票的比例确实要比其他两个港口高很多。

    2.3.8 船舱Cabin与生存率的关系

    船舱是符号型变量,可以试着查看其变量(最好之前先查看该变量值有多少类,如果类别太多就不适合直接统计,需要进一步处理)。

    print(train["Cabin"].describe())

    结果如下:

    count         201
    unique        147
    top       B96 B98
    freq            4
    Name: Cabin, dtype: object

    唯一值有147个,因而不能直接统计,将在后面特征工程中做处理。

    2.3.8 姓名和船票信息由于是比较散乱的符号型变量不便于统计,需要做进一步处理.


    3、 缺失值填充

    这里包括缺失值的填充和一些符号值的数值化(符号值不需要急着数值化,后面的特征工程会进行哑变量处理,但有时为了分析的需要会提前处理)。
    前面在分析相关性的时候,我们已经对Fare、Embarked缺失值进行了填充,现在对其他特征的缺失值填充。

    3.1 对年龄Age进行填充

    Age在整个数据集中有1007个缺失值,但通过前面的分析知道,年龄可能与生存率存在一定程度的相关性。所有直接把这一特征丢弃可能对于后面模型的预测不利。
    这里可以通过找到与年龄相近的特征,然后查看相近特征对应位置的值,再找到相近特征中其他位置中与该位置值相等的位置,我们要填充的特征可能在这些位置上有值,利用这些值来对缺失值进行填充是一个可行的办法。
    下面我们需要找到与Age相近的特征。
    为了度量Age与性别Sex的相关性,将Age数值化(即将符号变量转换为哑变量)

    #性别Sex的数值化
    dataset["Sex"]=dataset["Sex"].map({"male":0,"female":1})
    train["Sex"]=train["Sex"].map({"male":0,"female":1})

    考虑到Embarked与年龄关联不大,暂时不进行处理。这里需要考察与Age相关联的变量有Sex、SibSp、Parch、Plcass,从之前的相关性分析可以看到,票价Fare与年龄Age也存在一定相关性,但比较SibSp、Parch、Plcass与Age的相关性会小很多,而且Fare是连续型变量,要找到该特征上的两个相等值会更困难一点,当然可以做一定的近似来匹配位置。但这里没有将其放入Age的关联分析里面。

    #Age与Sex的相关性分析
    g=sns.factorplot(data=dataset,x="Sex",y="Age",kind="box")
    plt.show()

    结果如下:
    这里写图片描述
    从上可以看到年龄的分布与性别几乎没有关系。

    #Age与SibSp的相关性分析
    g=sns.factorplot(data=dataset,x="SibSp",y="Age",kind="box")
    plt.show()

    结果如下:

    这里写图片描述
    从图上可以看到,兄弟姐妹不同的个数下年龄的分布是不一样的,可以将SibSp的值与Age做对应来匹配Age中的缺失值。这种匹配是有误差和一定浮动范围的,但如果通过多个特征一起来

    #Age与Parch的相关性分析
    g=sns.factorplot(data=dataset,x="Parch",y="Age",kind="box")
    plt.show()

    这里写图片描述
    从图上可以看到,父母子女在船上的个数不同,年龄的分布也有区分,这个也可以用来和Age做对应。

    #Age与Pclass的相关性分析
    g=sns.factorplot(data=dataset,x="Pclass",y="Age",kind="box")
    plt.show()

    结果如下:
    这里写图片描述
    从图上可以看到,不同船票等级中年龄分布是不一样的,虽然有重叠,还是可以用来和Age做对应。

    #填充Age缺失值
    #获取Age缺失值索引
    index_NaN_age=list(dataset["Age"][dataset["Age"].isnull()].index)
    for i in index_NaN_age:
        age_med=dataset["Age"].median()#如果通过关联特征找不到匹配的值,则用整个数据的中值填充
        age_pred=dataset["Age"][((dataset["SibSp"]==dataset.iloc[i]["SibSp"])&(dataset["Parch"]==dataset.iloc[i]["Parch"])&(dataset["Pclass"]==dataset.iloc[i]["Pclass"]))].median()
        if not np.isnan(age_pred):
            dataset["Age"].iloc[i]=age_pred
        else:
            dataset["Age"].iloc[i]=age_med
    
    #填充值后再看一次Age在不同Survived下的分布情况
    g=sns.factorplot(data=dataset,x="Survived",y="Age",kind="violin")
    plt.show()

    结果如下:
    这里写图片描述
    从图上还是可以看到在年经较小的人群中幸存概率会更大一点(更宽),年轻人中遇难可能性更大(中部更宽),遇难和幸存的人年龄中值其实也是有轻微差别。
    利用密度图会更清楚一点。
    这里写图片描述
    从图上可以看到,Age填充值后,与未填充前比较,整体分布未有较大改变,在一定程度上放大了30几到40几岁在遇难和幸存之间的差异。

    3.2 对Carbine进行填充

    Carbine缺失值将结合特征工程一并进行。

    展开全文
  • 在IDEA启动多个Spring Boot工程实例

    万次阅读 2018-09-06 12:56:05
    spring boot允通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定...

    对于配置比较多方便保存的则使用下面的方式:

    方式一

    spring boot允通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

    也可用于application-{profile}.yml

    step 1

    在resources 下面创建用于不同启动实例的application-peer1.yml、application-peer2.yml,{profile}名称自定义。

    内容根据实例不同而定

    step 2

    在IDEA上点击Application右边的下三角 ,弹出选项后,点击Edit Configuration

    step 3

    打开配置后

    1:添加 。2:名称随便起。 3:选择启动类。 4:输入启动参数。5:选择项目module。6:ok。

    当前例子启动参数为:   --spring.profiles.active=peer2  

    指定启动是所用的配置文件 application-peer2.yml   然后就可以run 。。

    step 4

    同理配置 peer1 。。。。。

    ================================================================================================

    方式二

    step 1

    在IDEA上点击Application右边的下三角 ,弹出选项后,点击Edit Configuration

    step 2

    打开配置后,选中需要多实例启动的应用,将默认的Single instance only(单实例)的钩去掉--右上角。

    step 3

    通过修改application.yml文件的server.port的端口,启动。多个实例,需要多个端口,分别启动。

    例如第一次启动时端口为8080, 修改yml文件server.port的端口为8081再次启动 就会产生 两个不同端口的实例。

    以上方式适合对application.yml配置简单 产生多实例。

     

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接  https://blog.csdn.net/u010194036/article/details/82458531

    展开全文
  • 给大家带来的一篇关于Python案例相关的电子书资源,介绍了关于Python、项目开发、Python案例方面的内容,本书是由吉林大学出版社出版,格式为PDF,资源大小99.1 MB,明日科技编写,目前豆瓣、亚马逊、当当、京东等...
  • Android 小项目开发示例大全--20个通用具体应用程序实例源码.rar Android 文件下载功能Java多线程下载功能的例子实例源码.rar Android应用开发详解教材源码(上册)--10个单元40多个实例源码.rar Android应用开发...
  • 一、 启动IDEA 进入/home/iespark/hadoop_program_files/...二、 新建工程 点击File->new->project,弹出对话框,选择Java->Kotlin(Java)(如图1.1),点击next,输入项目名,项目保存路径,点击Finish,NewWind
  • 学习Python爬虫的小伙伴想成为爬虫行业的大牛么?你想在网页上爬取你想要的数据不费吹灰之力么?那么亲爱的小伙伴们肯定需要项目实战去磨练自己的技术,毕竟...1”即可获取这些项目的源码爬虫项目名称及简介一些项目...
  • 1. 该java工程师基于Maven的Spring + Spring MVC + Mybatis的工程实例 通过一个简单的登录功能了解搭建spring + mybatis的各个部分。 2. 数据库使用的是mysql5.6, 实例涉及一张表 t_user,请查看sqlScript中的脚本...
  • Qt数据库项目实例程序(各数据库通用)

    千次阅读 多人点赞 2019-03-22 14:03:31
    【Qt数据库程序实例】 首先放几张程序运行的截图: 数据库登陆界面 数据库显示界面 程序运行效果 【备注】源码下载地址(可以直接运行): https://download.csdn.net/download/zqxdsy/11049683 程序...
  • 100+个安卓应用程序开发实例工程代码)

    千次下载 热门讨论 2012-04-06 15:25:15
    Android 小项目开发示例大全--20个通用具体应用程序实例源码: 2012-01-02 16:26 <DIR> 备忘录 2012-01-02 16:30 <DIR> 定时器 2012-01-02 16:29 <DIR> 客户端 2012-01-02 16:30 <DIR> 广播 2012-01-02 16:30 <DIR> ...
  • 软件工程:软件过程模型实例

    千次阅读 2017-12-16 22:12:53
    针对下列软件项目场景,探讨它们最合适采用哪种过程模型:
  • SSM 分页实例,MAVEN工程,清晰完整,包含mysql文件,有具体搭建MAVEN工程说明,实例简介。详见:https://blog.csdn.net/jerrytong/article/details/88203037
  • 动态规划的具体应用实例

    千次阅读 2019-04-30 07:16:54
    上一节我们讲了动态规划动态规划的基本思想和一些经典例题,本节再来看几个具体例子。 例6 设某工厂有 1000 台机器,生产两种产品 A、B ,若投入 x 台机器生产 A 产品,则纯收入为5x ,若投入 y 台机器生产 B 种...
  • 数据仓库项目实例(马蜂窝数据仓库)

    千次阅读 2019-10-28 11:58:08
    接入时,只需要填写数据表信息配置以及具体的字段配置信息,数据就可以自动接入到数据仓库,形成数仓的 ODS 层数据模型,如下: 2. 任务调度平台 我们使用 Airflow 配合自研的任务调度系统,不仅能...
  • ZigBee是一项新型的无线通信技术,适用于传输范围短数据传输速率低的一系列电子元器件设备之间。 ZigBee无线通信技术可于数以千计的微小传感器相互间,依托专门的无线电标准达成相互...整理了8个基于ZigBee搭建的项目
  • 机器学习项目实例分析设计(附源码)

    万次阅读 多人点赞 2018-05-23 15:25:10
    我在原文提供的实例基础上,结合自己的分析,模拟了一个机器学习项目的分析和实现过程,包括项目分析,数据分析,模型分析,性能分析等,在原文的样本代码基础上,编写了完整的可全面自动化运行的代码,供大家一起...
  • 结合工程项目风险管理含义及其特点,从承包商的角度分析了一些常采用的风险决策方法的不足,应用贝叶斯理论提出了一种简捷实用的改进决策方法,给出了具体分析思路,并以某工程实例进行了应用研究,证明了该方法的有效性,...
  • 资源信息都来自网络,本人只是记录作为个人笔记 后端: Cloud-Platform Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,...代码简洁,架构清晰,适合学习和直接项目中使用。 核心技术采用Spring B...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,246
精华内容 45,698
关键字:

具体工程项目实例