文档章节

机器学习--第五讲---交叉验证

Betty__
 Betty__
发布于 2016/10/27 08:00
字数 951
阅读 42
收藏 0

1.验证的简介

目前为止,我们已经在训练数据集中评估了模型的精确性。当然,这是非常有必要的第一步,但是这不能帮助我们了解在没有见过的数据上使用时效果如何。在机器学习中,我们想要使用训练数据集,它包含输出标签也都是历史数据。而建立一个分类器,它会返回一个新的预测标签,没有被标记的数据。如果我们在一个被训练的数据集上评估分类器的效果,我们就会进入一个过拟合状态,也就是这个分类器只能在训练数据集上运行的很好,但在未来的数据中却不然。

测试分类器的概化理论generalizability,或者它自己在不是训练数据集中预测的精确度,我们使用交叉验证技术。交叉验证涉及将历史数据一分为二:

      一个训练数据集------我们用来训练分类器

     一个测试数据集-------我们使用多种测量方式来评估分类器效果

交叉验证是在训练任何种类的机器模型中都是需要被使用的重要一步。在这个任务中,我们将会专注于使用交叉验证来评估二元分类模型。我们将会继续研究研究生入学考试的数据集集,它包含644名申请人资料,如下几列:

     gre----申请人在GRE的分数,对于即将读研究生的学生一种普遍的考试

               分数范围200-800

     gpa---大学平均分

               介于0.0-4.0之间的连续数

      admit---二元分类值

                二元值,0或1,1代表申请者录取,0代表申请者被拒绝

在接下来的代码中,我们导入所需的库,读取admissions数据框架,重命名admitl列为actual_label,并去掉admit列

练习

import pandas as pd
from sklearn.linear_model import LogisticRegression

admissions = pd.read_csv("admissions.csv")
admissions["actual_label"] = admissions["admit"]
admissions = admissions.drop("admit", axis=1)

print(admissions.head())

2.保持验证

有许多不同方式的交叉验证技术我们可以用于评估分类器的效果。最简单的技术被叫做:保持验证。它涉及以下几个方面:

      。随机的将我们的数据集分为训练数据集和测试数据集。

      。使用训练数据集来拟合模型

      。在测试数据集中做出预测。

在admissions数据框架中我们随机选择80%的数据作为训练数据集,剩下的20%作为测试数据集。这种比例并非一成不变的,你将会看到,人们会取而代之使用75%-25%分法。

在接下的几节课中我们将会探索更多有关交叉验证技术的保持验证,在这节课中,这是最简单的验证。将数据随机分为训练集和测试集。我们将会:

    。使用numpy.random.permutation函数返回一个随机顺序中包含索引的列表

    。返回一个列表顺序的新的数据框架

    。选择前80%的行作为训练集

    。选择后20%的行作为测试集

练习:

         使用NumPy里的rand.permutation函数来随机化admissions数据框架的索引。

         在 admissions数据框架中使用loc【】方法以随机顺序来返回一个新的数据框架,把这个数据框架赋值给shuffled_admissions

         从shuffled_admissions中 选出0-514行(包含第514行)赋值给train.

         选出剩下的行,并赋值给test

         最后,显示shuffled_admissions的前5行。

import numpy as np
np.random.seed(8)
admissions = pd.read_csv("admissions.csv")
admissions["actual_label"] = admissions["admit"]
admissions = admissions.drop("admit", axis=1)
shuffled_index = np.random.permutation(admissions.index)
shuffled_admissions = admissions.loc[shuffled_index]

train = shuffled_admissions.iloc[0:515]
test = shuffled_admissions.iloc[515:len(shuffled_admissions)]

print(shuffled_admissions.head())

 

 

 

 

 

       

 

 

 

 

 

 

 

 

 

本文转载自:dataqeust.io

Betty__
粉丝 7
博文 360
码字总数 46678
作品 0
武汉
私信 提问
Python实战开发之Pyramid Web框架在商城项目中的应用实战资料

Python实战开发之Pyramid Web框架在商城项目中的应用实战资料 第一讲:Python基础和入门介绍(Web开发基础) 第二讲:Python语言基础(运算符与表达式,控制流,函数,模块) 第三讲:Pytho...

神人
2013/07/15
2.9K
4
理解「交叉验证」(Cross Validation)

交叉验证是机器学习中常用的一种验证模型的方法,使用这种方法,你可以 准确的调整模型的超参数(Hyperparameter),且这组参数对不同的数据,表现相对稳定 在某些分类场景,你可以同时使用逻...

程序员在深圳
04/27
0
0
第9章 使用Scikit-Learn调用Keras的模型

第9章 使用Scikit-Learn调用Keras的模型 scikit-learn是最受欢迎的Python机器学习库。本章我们将使用scikit-learn调用Keras生成的模型。本章将: 使用scikit-learn封装Keras的模型 使用sciki...

优惠券活动
2018/06/01
0
0
QT平台的手持媒体播放器项目如何去做?

一、本课程是怎么样的一门课程 1.1、课程的背景 Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务...

我是小北
2013/12/31
0
0
详解 Stacking 的 python 实现

1. 什么是 stacking stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。 2. 代码: 例如我们用 作为第一层学习器:...

aliceyangxi1987
2017/07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
5
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
5
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
15
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部