机器学习库scikit-learn简介(一)

2023-05-16

一、机器学习问题                                                                                                      

通常,学习问题考虑n个样本数据集,然后预测未知数据的属性。若各个样本多于一个,例如,对于多维的条目(又称多元数据),即说有多个属性或特性。


我们可以把学习问题划分为如下几个大类:

1. 监督式学习,又分为:

  • 分类
  • 回归
2. 非监督式学习,
涉及到的概念:
机器学习是关于从已有的数据特性集中学习,然后应用到新的数据集。这就是为什么在通常的机器学习中评估一个算法时,把数据分为两部分。一部分为训练集(Training Set)。另一部分为测试集(Testing Set)。
二、加载例子数据集                                                                                                   
scikit-learn自带一些标准的数据集,例如iris和digits数据集用于分类,boston房价数据集用于回归

>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()  
数据集是一个类似于字典的对象,包含所有的数据以及一些关于数据的元数据。数据存储在.data成员中,它是一个n_samples, n_features数组。在监督式问题中,解释性变量存储在.target成员中,更多的关于不同数据集的细节在后续会进行介绍。
例如,在digits数据集中,digits.data访问用于分类digits样本的特征。

>>> print(digits.data)  
[[  0.   0.   5. ...,   0.   0.   0.]
 [  0.   0.   0. ...,  10.   0.   0.]
 [  0.   0.   0. ...,  16.   9.   0.]
 ...,
 [  0.   0.   1. ...,   6.   0.   0.]
 [  0.   0.   2. ...,  12.   0.   0.]
 [  0.   0.  10. ...,  12.   1.   0.]]  
digits.target给出了digits数据集的目标值。即相应的各个digit图像的数字。如下:

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])  

数据数组的形状
数据总是一个二维数组,n_sample, n_features,尽管原始数据具有不同的形状,对于digits数据集,各个原始样本是一个8x8的图像,可以使用如下访问:

>>> digits.images[0]
array([[  0.,   0.,   5.,  13.,   9.,   1.,   0.,   0.],
       [  0.,   0.,  13.,  15.,  10.,  15.,   5.,   0.],
       [  0.,   3.,  15.,   2.,   0.,  11.,   8.,   0.],
       [  0.,   4.,  12.,   0.,   0.,   8.,   8.,   0.],
       [  0.,   5.,   8.,   0.,   0.,   9.,   8.,   0.],
       [  0.,   4.,  11.,   0.,   1.,  12.,   7.,   0.],
       [  0.,   2.,  14.,   5.,  10.,  12.,   0.,   0.],
       [  0.,   0.,   6.,  13.,  10.,   0.,   0.,   0.]])  

三、学习和预测                                                                                                         
在digits数据集中,其任务就是来预测,给定一个图像,它表示的数字是多少?我们给定各个样本十个可能的类(数字0到9),通过估计器来预测未知的样本属于哪个类别。
在scikit-learn中,用于分类的估计器是一个python对象,其实现方法fit(x, y)和predict(T)。
估计器的一个例子是sklearn.svm.SVC,其实现支持向量机分类。估计器的构造器获取参数作为模型的参数,暂时我们认为估计器是一个黑盒。

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)  
选择模型参数
在该例子中,我们手动设置额gamma值,一般可能会通过使用工具像grid search和cross validation来寻找最优值。
在上述例子中,我们称估计器实例clf为分类器。
现在,必须符合该模型,即必须从该模型学习,通过传递训练集到fit模型来完成。作为训练集,我们使用我们数据集中所有的图像除了最后一个。

>>> clf.fit(digits.data[:-1], digits.target[:-1])  
SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,
  gamma=0.001, kernel='rbf', max_iter=-1, probability=False,
  random_state=None, shrinking=True, tol=0.001, verbose=False)  
现在,我们可以用训练的模型来预测新值。尤其,我们可以问分类器在数据集中最后一张图像(在训练集中没有使用的那张图像)的数字是多少

>>> clf.predict(digits.data[-1])
array([8])  

关于手写数字的识别的完整分类问题的自理,可以见:http://scikit-learn.org/stable/auto_examples/plot_digits_classification.html#example-plot-digits-classification-py


四、模型持久性                                                                                                        

在scikit中,通过使用内置的称为pickle的持久模型来保存模型


>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> iris = datasets.load_iris()
>>> X, y = iris.data, iris.target
>>> clf.fit(X, y)  
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)

>>> import pickle
>>> s = pickle.dumps(clf)
>>> clf2 = pickle.loads(s)
>>> clf2.predict(X[0])
array([0])
>>> y[0]
0  
 在scikit的特殊例子中,可以更加对使用joblib来取代pickle感兴趣(joblib.dump&joblib.load),因为对于big data其更加有效,  but can only pickle to the disk and not to a string:


>>> from sklearn.externals import joblib
>>> joblib.dump(clf, 'filename.pkl')   



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习库scikit-learn简介(一) 的相关文章

  • scikit-learn介绍

    在机器学习和数据挖掘的应用中 xff0c scikit learn是一个功能强大的python包 在数据量不是过大的情况下 xff0c 可以解决大部分问题 学习使用scikit learn的过程中 xff0c 我自己也在补充着机器学习和数据
  • python机器学习之scikit安装

    scikit是Python很容易上手的第三方库 下面介绍一下安装过程中遇到的问题 环境是 xff1a win32 43 python27 安装scikit需要安装numpy和scipy 很多教程都会选择使用easy install或者pip
  • boost learn notes

    lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt boost learn notes boost learn notes Documents http www boost org
  • 机器学习库scikit-learn简介(一)

    一 机器学习问题 通常 xff0c 学习问题考虑n个样本数据集 xff0c 然后预测未知数据的属性 若各个样本多于一个 xff0c 例如 xff0c 对于多维的条目 xff08 又称多元数据 xff09 xff0c 即说有多个属性或特性 我
  • 【Tensorflow】辅助工具篇——scikit-image介绍

    很多时候我们跑deep learning算法的难点不在于搭建网络 xff0c 而是数据获取与处理 xff0c 当你看到大量的数据却无从下手时该是怎样的心情 xff01 这几篇我将为大家介绍目前很多paper代码复现中比较流行的辅助工具 首先
  • 安装scikit-learn问题

    1 问题描述如下 xff1a pytorch root 64 cento conda install scikit learn Solving environment failed CondaHTTPError HTTP 000 CONNE
  • 机器学习-scikit-learn

    文章目录 前言线性回归模型 LinearRegression准备数据集使用LinearRegression总结 前言 scikit learn是Python中最流行的机器学习库之一 xff0c 它提供了各种各样的机器学习算法和工具 xff0
  • Meta-learning:Learn to learn

    基于李宏毅教授的ML课程做的笔记 xff0c 主要供自己复习 xff0c 所以就留下了一些自己想多看的东西 xff0c b站有全面的课程视频 引言 xff1a 为什么few shot任务常常提及元学习meta learning xff1f
  • 【机器学习小白必备】Scikit-learn(Sklearn)最常用的函数这里都帮您总结好了~速速来取!持续更新!

    Scikit learn Sklearn 常用函数详解大全 在这篇文章中 xff0c 总结了sklearn模块常用的函数 xff0c 建议收藏 xff01 因为会持续更新 xff01 文章目录 Scikit learn Sklearn 常用
  • Git learn

    分布式版本控制系统 Git https git scm com 一 初始化 init xff0c 添加 add 到暂存区 stage xff0c 提交 commit 到版本库 master 二 工作区 xff0c 版本库 状态 status
  • scikit-learn no moudule named six

    在scikit learn版本0 23中删除了模块sklearn externals six 解决方案 要使用它 xff0c 你必须降级到0 22版本及以下 xff0c 可以执行以下命令 pip install scikit span cl
  • Meta-Learning: Learning to Learn Fast

    Meta Learning Learning to Learn Fast 元学习 学习如何学习 译 原文 本文与原文基本没有区别 xff0c 仅供个人学习记录 电子笔记本 前言 xff1a 元学习解决 xff1a 遇到没有见过的任务 xff
  • imbalanced-learn API 传送门

    imbalanced learn API API详情可见User guide 或者见我的其余四篇关于imblearn的博客 即我翻译的doc 1 python imblearn toolbox 解决数据不平衡问题 一 imblearn简介
  • softwares

    视频切帧 变换分辨率 VLC 文件对比 Beyond Compare 远程控制 向日葵 TeamViewer
  • 从零开始学web开发之html5-h5概述

    前言 为了掌握多一门技术 于是开始了学习前端技术的脚步 虽然安卓还是没有深入地学习一些比较高端的知识 比如view绘制原理 事件分发机制 属性动画的绘制 没有深入地研究一些流行框架 最遗憾的是没有将rxjava应用到自己的工作中 更加没有学
  • 使用MATLAB做传热学分析及后处理——CFDTool 官方例程

    目录 前言 1 环境配置 2 问题背景 3 传热学例程 heat transfer3 最后 中国加油 武汉加油 前言 cfdtool 官网 https www cfdtool com 是一个MATLAB的扩展工具箱 既然看到这个CFD问题了
  • I/O模型

    参考链接 I O多路复用 IO多路复用之select poll epoll详解 epoll讲解 深入Go语言网络库的基础实现 I O模型 I O模型 1 1 阻塞I O模型 最常用的I O模型 默认情况下 所有文件操作都是阻塞的 比如I O
  • 输入IP使用JDBC读取数据库信息并返回具体地址

    思路分析 定义连接类 连接数据库 定义properties 存放mysql信息 读取properties 注册驱动 获取连接 定义测试类 运行主程序 定义输入类 检测控制台输入 定义正则表达式 对输入的ip进行判断 判断通过则调用核心逻辑
  • Pandas 过滤dataframe中包含特定字符串的数据

    假如有一列全是字符串的dataframe 希望提取包含特定字符的所有数据 该如何提取呢 因为之前尝试使用filter 发现行不通 最终找到这个行得通的方法 举例说明 我希望提取所有包含 Mr 的人名 1 首先将他们进行字符串化 并得到其对应
  • scala数据结构

    元组 val tuple Bigdata 2020 748 333 容器 collection Scala Collection Seq 索引0 1 2 LinearSeq gt 列表 相同类型 不可变 队列 列表 var strList

随机推荐

  • JVM调优-解决native heap持续增长

    问题的提出 xff0c 分析 xff0c 请参考JNI 小心 xff0c 内存怪兽出没 xff08 简单的说起来 xff0c 就是java进程占用了4G内存 xff0c 但是折腾来折腾去 xff0c 整个JVM的堆才100M上下 xff0c
  • Centos 7 安装openjdk8 /jdk8/jre8 mvn-3.5.2 其他版本雷同

    文章目录 openjdk8jdk8 jre8maven 3 5 2源码下载指导 openjdk8 一 使用yum命令搜索支持jdk版本 yum search java grep jdk 二 使用yum安装jdk8 yum install y
  • 【2023最新版】Hexo+github搭建个人博客并绑定个人域名

    Hexo 43 github搭建个人博客并绑定个人域名 本篇教程完整讲述了如何利用Hexo 43 github搭建个人博客并且绑定自己的域名 xff0c 成为自己的网站 xff01 我的博客网站 xff1a 武师叔 做一个有趣而不甘平庸的人
  • H13-531云计算HCIE V2.0——1~400常错题和知识点总结

    1 100 35 FusionStorage Block无法是被配置RAID的磁盘 一定要将RAID信息删除后 Fusionstrage block才能识别到这些磁盘 错误 61 Ceilometer监控通过在计算节点部署Compute服务
  • 我的2013

    今天是2013年的最后一天 xff0c 天气格外的晴朗 xff0c 站在公司的写字楼上 xff0c 能够看到远处的山水 一直都习惯在一年的最后总结一下 xff0c 总结自己哪些地方在成长 xff0c 哪些地方有收获 xff0c 哪些地方需要
  • 项目管理中的TR点

    TR的意思是技术评审 xff0c 是英语Technical Review的简写 一般项目管理中有以下一些技术评审点需要关注 xff1a TR1 概念阶段技术评审点 xff1a 产品需求和概念技术评审 xff08 业务需求评审 xff09 T
  • linux ln 命令使用参数详解(ln -s 软链接)

    这是linux中一个非常重要命令 xff0c 请大家一定要熟悉 它的功能是为某一个文件在另外一个位置建立一个同不的链接 xff0c 这个命令最常用的参数是 s 具体用法是 xff1a ln s 源文件 目标文件 当 我们需要在不同的目录 x
  • 别再让C++头文件中出现“using namespace xxx;”

    在这里 xff0c 我毫不回避地说了这句话 xff1a 引用 我再也不想在任何头文件中看到 using namespace xxx 了 作为一个开发者 团队领导者 xff0c 我经常会去招聘新的项目成员 xff0c 有时候也帮助其他组的人来
  • Linux 查看监听端口的方法

    61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • SVN MERGE 和冲突

    摘要 xff1a 最佳做法是避免冲突 冲突时 xff0c 不要把branch merge到trunk 先由最新版本的trunk得到branch 然后再修改文件 xff0c 直接merge过去就行 这样不会有冲突 先用svn merge dr
  • Linux命令之basename使用

    basename 命令 首先使用 help 参数查看一下 basename命令参数很少 xff0c 很容易掌握 basename help 用法示例 xff1a basename usr bin sort 输出 34 sort 34
  • android log详解

    之前两篇文章之后 xff0c 打算再分享一点儿经验 xff1a 之前文章见这里 xff1a 1 xff0c 全看懂了 加两年经验 语音朗读 语音识别 语音控制软件源码 2 xff0c 学生作品 配置NDK集成开发环境全过程第一版 这次打算通
  • 各种编码知识简介

    本文主要介绍我们在日常开发中接触到了latin1 xff0c GBK xff0c GB18030 xff0c UTF 8 编码几种 下面首先来看看这几种编码的的区别 latin1 1 先来看看latin1 参考百度百科 Latin1 是IS
  • Linux 技巧:让进程在后台可靠运行的几种方法

    我们经常会碰到这样的问题 xff0c 用 telnet ssh 登录了远程的 Linux 服务器 xff0c 运行了一些耗时较长的任务 xff0c 结果却由于网络的不稳定导致任务中途失败 如何让命令提交后不受本地关闭终端窗口 网络断开连接的
  • nohup命令浅析

    要将一个命令放到后台执行 xff0c 我们一般使用nohup sh command amp amp 都知道是放到后台执行这个命令 xff0c 那么nohup是做什么的 xff1f 这就要从unix的信号说起 xff0c unix的信号机制可
  • 《曾国藩家书大全集》读书笔记——励志篇

    曾国藩将立志作为人生第一要义 xff0c 只要能立志 xff0c 便人人都可以做圣贤豪杰 人生不但要立志 xff0c 还要持之以恒 xff0c 持之以恒是人生第一美德 xff0c 人而无恒 xff0c 将一事无成 曾国藩很重视逆境对人心志的
  • 书,永远的朋友

    我自己认为我是一个不大喜欢看书的人 xff0c 相对于书 xff0c 我可能跟喜欢看视频和同高手一起讨论交流 但是 xff0c 真正静下心来 xff0c 想着这么多年来 xff0c 对我影响很大的一些书 xff0c 也能想到一些 索性 xf
  • PackageManagerService Android 8.1 源码解读 01

    一 PackageManagerService 是什么 xff1f 答 PackageManagerService xff08 简称 PKMS xff09 xff0c 是 Android 系统中核心服务之一 xff0c 负责应用程序的安装
  • IMU之磁力计校准&地磁场&计算磁航向

    背景知识 xff1a 导航坐标系 xff1a 东 北 天 载体坐标系 xff1a 右 前 上 欧拉角定义 xff1a 3 1 2旋转 xff0c xff08 航向角 俯仰角 滚转角 xff09 xff1b 航向角北偏西为正 xff0c 范围
  • 机器学习库scikit-learn简介(一)

    一 机器学习问题 通常 xff0c 学习问题考虑n个样本数据集 xff0c 然后预测未知数据的属性 若各个样本多于一个 xff0c 例如 xff0c 对于多维的条目 xff08 又称多元数据 xff09 xff0c 即说有多个属性或特性 我