pandas教程:Introduction to scikit-learn scikit-learn简介

文章目录

  • 13.4 Introduction to scikit-learn(scikit-learn简介)

13.4 Introduction to scikit-learn(scikit-learn简介)

scikit-learn是一个被广泛使用的python机器学习工具包。里面包含了很多监督式学习和非监督式学习的模型,可以实现分类,聚类,预测等任务。

虽然scikit-learn并没有和pandas深度整合,但在训练模型之前,pandas在数据清洗阶段能起很大作用。

译者:构建的机器学习模型的一个常见流程是,用pandas对数据进行查看和清洗,然后把处理过的数据喂给scikit-learn中的模型进行训练。

这里用一个经典的kaggle比赛数据集来做例子,泰坦尼克生还者数据集。加载训练集和测试集:

import numpy as np
import pandas as pd
train = pd.read_csv('../datasets/titanic/train.csv')
test = pd.read_csv('../datasets/titanic/test.csv')
train.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS

statsmodelsscikit-learn通常不能应付缺失值,所以我们先检查一下哪些列有缺失值:

train.isnull().sum()
PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64
test.isnull().sum()
PassengerId      0
Pclass           0
Name             0
Sex              0
Age             86
SibSp            0
Parch            0
Ticket           0
Fare             1
Cabin          327
Embarked         0
dtype: int64

对于这样的数据集,通常的任务是预测一个乘客最后是否生还。在训练集上训练模型,在测试集上验证效果。

上面的Age这一列有缺失值,这里我们简单的用中位数来代替缺失值:

impute_value = train['Age'].median()
train['Age'] = train['Age'].fillna(impute_value)
test['Age'] = test['Age'].fillna(impute_value)

对于Sex列,我们将其变为IsFemale,用整数来表示性别:

train['IsFemale'] = (train['Sex'] == 'female').astype(int)
test['IsFemale'] = (test['Sex'] == 'female').astype(int)
train.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedIsFemale
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS0
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C1
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS1
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S1
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS0

接下来决定一些模型参数并创建numpy数组:

predictors = ['Pclass', 'IsFemale', 'Age']
X_train = train[predictors].values
X_test = test[predictors].values
y_train = train['Survived'].values
X_train[:5]
array([[  3.,   0.,  22.],[  1.,   1.,  38.],[  3.,   1.,  26.],[  1.,   1.,  35.],[  3.,   0.,  35.]])
y_train[:5]
array([0, 1, 1, 1, 0])

这里我们用逻辑回归模型(LogisticRegression):

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()

然后是fit方法来拟合模型:

model.fit(X_train, y_train)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,penalty='l2', random_state=None, solver='liblinear', tol=0.0001,verbose=0, warm_start=False)

在测试集上进行预测,使用model.predict:

y_predict = model.predict(X_test)
y_predict[:10]
array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0])

如果我们有测试集的真是结果的话,可以用来计算准确率或其他一些指标:

(y_true == y_predcit).mean()

实际过程中,训练模型的时候,经常用到交叉验证(cross-validation),用于调参,防止过拟合。这样得到的预测效果会更好,健壮性更强。

交叉验证是把训练集分为几份,每一份上又取出一部分作为测试样本,这些被取出来的测试样本不被用于训练,但我们可以在这些测试样本上验证当前模型的准确率或均方误差(mean squared error),而且还可以在模型参数上进行网格搜索(grid search)。一些模型,比如逻辑回归,自带一个有交叉验证的类。LogisticRegressionCV类可以用于模型调参,使用的时候需要指定正则化项C,来控制网格搜索的程度:

from sklearn.linear_model import LogisticRegressionCV
model_cv = LogisticRegressionCV(10)
model_cv.fit(X_train, y_train)
LogisticRegressionCV(Cs=10, class_weight=None, cv=None, dual=False,fit_intercept=True, intercept_scaling=1.0, max_iter=100,multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,refit=True, scoring=None, solver='lbfgs', tol=0.0001, verbose=0)

如果想要自己来做交叉验证的话,可以使用cross_val_score函数,可以用于数据切分。比如,把整个训练集分为4个不重叠的部分:

from sklearn.model_selection import cross_val_score
model = LogisticRegression(C=10)
model
LogisticRegression(C=10, class_weight=None, dual=False, fit_intercept=True,intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,penalty='l2', random_state=None, solver='liblinear', tol=0.0001,verbose=0, warm_start=False)
scores = cross_val_score(model, X_train, y_train, cv=4)
scores
array([ 0.77232143,  0.80269058,  0.77027027,  0.78828829])

默认的评价指标每个模型是不一样的,但是可以自己指定评价函数。交叉验证的训练时间较长,但通常能得到更好的模型效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

羊大师:蜂蜜加羊奶,养颜美容佳品

羊大师:蜂蜜加羊奶,养颜美容佳品 蜂蜜和羊奶是两种自然界中的宝贵养生食材,它们的结合不仅味道美味,还具有丰富的营养价值和一系列的保健功效,被誉为养颜美容的佳品。下面让小编羊大师带大家来详细了解一下蜂蜜加羊奶…

美团小游戏rpk包对接流程小记

美团小游戏rpk包对接流程小记 美团小游戏开发时,其实很简单,和各大厂差不多。 一、先贴个文档: 美团游戏开放平台文档地址: https://game.meituan.com/#/docs二、接入前准备: 与微信抖音小游戏的流程差不多&#xf…

Mysql深入——5

SQL语句为什么有时候会执行的很慢 这种情况是随机的,有时候突然你执行一条语句就会变慢,这是为什么呢? 从以前的内容可以得知,InnoDB在执行更新语句的时候,有一个redo log,更新内存写完redo log之后就返回…

解读 | 从谷歌AI判定阿波罗登月“造假“来谈谈合成图片检测技术

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 整个事情可以爬楼看…

Vue3的transition标签以及animate.css使用详解

一:前言 在项目开发中,有一种特殊情况是使用动画过渡去完成某个效果。比如淡入淡出,或者在动画完成后执行某些操作等。在以前开发中我们通常会选择使用 CSS3 进行研发。但是这样会有很多不好的地方,比如最原始化的封装&#xff0c…

VMware系列:此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI

此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI 一. 此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI1.首先了解此选项有什么作用:(开启虚拟化 虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI )操作1.从系统层面设置入手:操作2.从电脑软件冲突层面解决问题:然后关闭Hyper-V的相关设…

Spring Security 6.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构,为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统,包括: Username and Password:使用用户名/密码 方式…

别做无用功!了解伦敦银交易指标的分类

在伦敦银投资中,我们都喜欢使用技术指标来帮助我们判断市场行情、预测银价点位。其实,伦敦银的技术指标是有不同分类的,我们了解主要的几类,这样在交易中才不至于将相同类型的叠加在一起,这样容易降低决策效率。 分类一…

Docker compose启动服务遇到的问题

这是学长留的一个任务,用docker compose启动三个服务,分别是minio、elasticsearch、nginx。 话不多说,让我们看看有哪些错误。 一、数据卷挂载权限问题 这是原始docker-compose.yaml文件 version: "3.8"networks:my-net:name: g…

最强学习辅助工具重磅上市:虚拟与现实互动结合助力学习更快一步

太让人震撼了!!当当狸这款AR智能学习图集打破了传统历史学习材料壁垒 将AR增强现实技术与诗词互动、历史人文、古典建筑巧妙融合 内容真实有趣,全面激发孩子们的学习探索兴趣 妈妈们都想入手的【教学辅助工具】 有了它,孩子学…

2.3基于springboot养老院管理系统

2.3基于springboot养老院管理系统 成品项目已经更新!同学们可以打开链接查看!需要定做的及时联系我!专业团队定做!全程包售后! 2000套项目视频链接:https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

docker-compose Install OrangeHRM

OrangeHRM 前言 OrangeHRM 是一个全面的人力资源管理(HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。 OrangeHRM 提前条件 OrangeHRMdocker & docker-composer 安装or

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

Linux后台运行jar包

Linux后台运行jar包 方式一 命令如下: java -jar /data/tools/jar/demo.jar注:/data/tools/jar:指定jar包所在位置,否则要在jar包所在位置运行改命令;当前ssh窗口被锁定,可按CTRL C打断程序运行&#xf…

小功能实现(十八)生成kml文件

引入依赖 <!--解析、生成kml文件类--><dependency><groupId>de.micromata.jak</groupId><artifactId>JavaAPIforKml</artifactId><version>2.2.0</version></dependency>使用方法 注意&#xff1a;需要什么内容可自行添…

Mysql深入——6

数据库占用空间太大&#xff0c;将表删除掉一半的数据后&#xff0c;为什么表的大小还是没有变 数据库的回收&#xff0c;一个InnoDB表中包含了两个部分&#xff0c;分别是表结构定义和数据。在Mysql8.0以前&#xff0c;表结构是存在以.frm为后缀的文件里&#xff0c;在mysql8…

CCC联盟数字钥匙(一)——UWB MAC概述

本文在前面已经介绍了相关UWB的PHY之后&#xff0c;重点介绍数字钥匙&#xff08;Digital Key&#xff09;中关于MAC层的相关实现规范。由于MAC层相应涉及内容比较多&#xff0c;本文首先从介绍UWB MAC的整体框架&#xff0c;后续陆续介绍相关的网络、协议等内容。 1、UWB MAC架…

android安全启动验证链(安全启动 secure boot)

android安全启动验证链_android 安全启动_Kael.dong的博客-CSDN博客

class类

如果有一个名为 ExampleClass 的类&#xff0c;可以通过 ExampleClass.class 获取表示该类的 Class 类实例&#xff0c;或者如果你有一个 ExampleClass 类的对象 exampleObject&#xff0c;可以通过 exampleObject.getClass() 来获取。这些 Class 类的实例可以用来在运行时查询…

深入redis过程-命令

目录 通用命令 get set keys exists del expire key seconds ttl type 常用数据结构 String类型 SET GET MSET MGET INCR INCRBY INCRBYFLOAT SETNX SETEX Hash类型 HSET key field value HGET key field HMSET HMGET HGETALL HKEYS HVALS HINCRB…