机器学习第一次尝试

首先了解几个机器学习中常见的术语的意义
一个机器学习模型的质量问题,从对训练集样本拟合程度的角度,可以分为欠拟合(Underfitting)和过拟合(Overfitting)

数据的准备和处理

机器学习所做的第一件事就是理解数据,人工智能工作者80%的时间花在:
对数据的获取、清洗、转换与处理、特征工程的提取上。数据决定模型的上限

泰坦尼克号幸存者数据建模分析

著名数据科学竞赛平台Kaggle提供了一个非常适合初学者学习练手的项目,该数据集提供了891名泰坦尼克号的乘客数据,包括乘客姓名、年龄、客舱等级等信息;及目标数据即乘客是否生还。

接下来我么就用这个数据集进行建模分析

一. 理解数据

需要了解的问题:

  1. 学习的目标是什么?监督还是非监督?是六大任务的哪一类?
    目标:预测乘客是否生还;监督学习 ;分类问题。
  2. 每一个字段的含义
  3. 每一个字段的变量类型:数值型还是类别型
    类别型的数据,不同的数据之间距离都是1,可以用独热编码
  4. 数据规模 多少行多少列
  5. 数据质量 有多少缺失数据 多少重复数据

导入数据并对数据进行观察:


训练集数据

数据共有12个字段

PassengerId Pclass Name Sex Age SibSp
乘客ID 仓位等级 姓名 性别 年龄 在船上兄弟姐妹配偶数
Survived Ticket Fare Cabin Embarked Parch
是否幸存 船票编号 船票价格 客舱号 登船港口 在船上父母子女数

查看数据集信息:

<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

1.观察数据发现:

Name Sex Ticket Embarked字段是字符类型,其余为数值类型
Age Cabin Embarked 字段有缺失值

2.找出对预测没有意义的列并删除

PassengerID Name Ticket 这些对数据分析都没有什么影响,处理掉


删除无用列后的数据

3. 单变量数据探索

每次只对一个变量进行分析,方便后续数据预处理,常用的单变量数据处理方式有:
频数分析:适用于类别型变量;直方图;描述性统计

4. 多变量数据探索

即同时探索多个变量间的相关关系
散点图、交叉表、堆栈条图、分类汇总

二、数据预处理

需要进行的处理:

  1. 对缺失值进行处理
  2. 对类别型变量进行重新编码
  3. 对连续变量进行分箱,然后再按处理类别型数据的方式重新编码
  4. 对连续型变量进行标准化和归一化处理

PS. 不同算法和问题,对数据集的预处理要求并不一样:

  1. 缺失值对所有算法来说基本上都要处理
  2. 连续型变量是否分箱具体看算法,决策树不需要
  3. 标准化和归一化在涉及到计算距离计算的算法中一定要处理

1. 缺失值处理

常见的缺失值处理有三种方法:

  1. 简单粗暴,直接把有缺失值的数据删除,如果数据集很大而缺失值又不多的话可以
  2. 构造一个新变量来标记缺失值,缺失标记为1,不确失标记为0。这种方法认为缺失值是一个有意义的信息,不能简单处理掉。
  3. 用一个值替换掉缺失值,具体如何替换方法多样,比如数值类型的可以考虑用均值替换,类别类型变量用众数替换

在这个数据集中如果直接删掉有缺失值的行,原本的891条数据就只剩183条了,所以考虑用构造变量的方式处理缺失值。

# 构造一个新变量 AgeIsMissing
titanic_df['AgeIsMissing'] = 0
titanic_df.loc[titanic_df['Age'].isnull(), 'AgeIsMissing'] = 1
# 对 Age 缺失值进行均值填充
age_mean = round(titanic_df['Age'].mean())

2. 类别变量重新编码

目的:机器学习要求输入的变量必须是数值

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容