复盘一篇讲sklearn库学习文章(上)
认识
sklearn 官网地址: https://scikit-learn.gor/stable/
从2007年发布以来, scikit-learn已成为重要的Python机器学习库, 简称sklearn, 支持包括分类, 回归, 降维和聚类等机器学习算法, 还包括了特征提取, 数据处理, 模型评估三大模块.
sklearn是Scipy的扩展, 建立在Numpy, Matplotlib..等库的基础上. 拥有完善的文档, 上手容易, API丰富, 同时封装了大量的机器学习算法, 且内置了大量数据集, 是入门的一个非常好的库哦
sklearn-机器学习
学习类型
有监督学习
- 认识: 从成对的,已经标注的输入和输出经验数据作为一个输入进行学习, 用来预测结果, 是从用正确答案的例子中学习
- 应用: 分类问题, 回归问题
无监督学习
- 认识: 输入的数据没有标签,没有正确答案, 单纯从数据中找寻规律
- 应用: 聚类问题, 降维问题
半监督学习
- 介于之间, 增强学习
数据集
分类
- 训练集: 用来训练模型的数据集 (50%以上的数据量)
- 测试集: 用来测试模型的数据集 (25%)
- 验证集: 调整超参数变量 (25%)
交叉验证
- 认识: 将数据集分成N份, 用N-1份训练模型, 在另一块进行测试, 通常5折交叉验证.
- 优点: 能充分利用数据, 提高模型效果
模型评估
方差(variance)
偏差(biass)
偏差-方差均衡
值
- 真阳性(TP): 正确识别目标
- 假阳性(FP): 错误识别目标
- 真阴性(TN): 正确识别非目标
- 假阴性(FN): 错误识别非目标
指标
- 准确率(ACC) = (TP+TN) / (TP+TN+FP+FN)
- 精确率(P) = TP / (FP+FN)
- 召回率(R) = TP / (TP+FN)
通俗理解 : 关于准确率, 召回率, 精确率的小案例, 网上找的
说一个池塘里有1400条鲤鱼, 300只虾, 300只鳖 (即总数是2000). 现在呢, 我想去捞鲤鱼, 一网下去, 捞上来700条鲤鱼, 200只虾, 100只鳖, (即共捞起来总数是1000).
正确率: (捞起来的鲤鱼数 / 捞起来的总数) = 700 / (200 + 100 + 700) = 70%
召回率: (捞起来的鲤鱼数 / 总数中的鲤鱼数量) = 700 / 1400 = 50%
二分类最能说明, 后面单独整一篇关于率的吧..
sklearn 官方文档结构
sklearn库的算法主要有四类: 分类, 回归, 聚类, 降维
什么线性, 决策树, SVM, KNN, 随机森林, Adaboost, 随机梯度下降, Bagging, ExtraTrees...都有的哈
- preprocession: 数据预处理模块
- impute: 缺失值处理模块
- feature_selection: 特征选择模块
- decomposition: 降维算法模块
slearn快速使用
传统的机器学习任务通常的流程是: 获取数据->数据预处理->特征工程(选择, 向量化等)->模型训练->模型评估->预测
先整一个学统计学时的经典数据集鸢尾花的分类, 共150个样本, 包括4个特征变量和1个类别变量.
特征变量
- sepal length: 花萼长度
- sepal width: 花萼宽度
- petal length: 花瓣长度
- petal width: 花瓣宽度
- 类别: iris-setosa(山鸢尾), iris-versicolor(变色鸢尾花), iris-virginica (维吉尼亚鸢尾花)的哪一种
from sklearn import datasets # 用内置的数据源
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 1. 获取数据
# 数据集是 json, {data:[[]], target_names:xxx, xxx}
iris = datasets.load_iris()
# 2. 特征工程 - 获取特征变量和目标变量
iris_X = iris.data
iris_y = iris.target
print("数据准备+特征工程--")
print('X_shape:',iris_X.shape, 'y_shape:',iris_y.shape) # 查看维度
print('y_target:', iris_y)
# 2. 特征工程 - 划分测试集和训练集
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.25)
# 3. 训练模型
print("开始进行训练---")
knn = KNeighborsClassifier() # 实例对象
knn.fit(X_train, y_train)
print("模型参数:", knn.get_params())
# 4. 模型评价
print("真实值:", y_test)
print("预测值:", knn.predict(X_test))
score = knn.score(X_test, y_test)
print("预测得分为:", round(score, 3))
数据准备+特征工程--
X_shape: (150, 4) y_shape: (150,)
y_target: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
开始进行训练---
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=None, n_neighbors=5, p=2,
weights='uniform')
模型参数: {'algorithm': 'auto', 'leaf_size': 30, 'metric': 'minkowski', 'metric_params': None, 'n_jobs': None, 'n_neighbors': 5, 'p': 2, 'weights': 'uniform'}
真实值: [0 1 0 2 1 1 0 0 2 0 2 2 0 1 1 2 0 1 1 0 0 0 2 0 1 0 1 1 2 1 1 0 1 1 1 1 1
2]
预测值: [0 1 0 2 1 2 0 0 2 0 2 2 0 1 1 2 0 1 1 0 0 0 2 0 1 0 1 1 2 1 2 0 2 1 1 1 1
2]
预测得分为: 0.921
先简单引入, 下篇就是详情啦
复盘一篇讲sklearn库学习文章(上)的更多相关文章
- 复盘一篇讲sklearn库的文章(下)
skleran-处理流程 获取数据 以用sklearn的内置数据集, 先导入datasets模块. 最经典的iris数据集作为例子. from sklearn import datasets iris ...
- 复盘一篇浅谈KNN的文章
认识-什么是KNN KNN 即 K-nearest neighbors, 是一个hello world级别, 但被广泛使用的机器学习算法, 中文叫K近邻算法, 是一种基本的分类和回归方法. KNN既可 ...
- Python机器学习笔记:sklearn库的学习
网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...
- 近200篇机器学习&深度学习资料分享
编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.并且原文也会不定期的更新.望看到文章的朋友能够学到很多其它. <Brief History of Machine ...
- ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- Java 学习文章汇总
目前JAVA可以说是产业界和学术界最热门的语言,许多人都很急切想把JAVA学好. 但学习是需要步骤的,除非像电影中演的那样,能够把需要的专业技巧下载到脑海:主角只花了几秒下载资料,就马上具备飞行员的技 ...
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
1. 前言 前面的博文中,无论是作为client端还是server端,它们之间的通信都是通过具体的IP地址来寻址.通过IP地址来寻址,本身就是一个弊端,用户怎么会去记住这些魔法数字呢?那么有没 ...
随机推荐
- Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)
测试原理和方法 找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前session会话来判断要修改密码的账 号,这种情况下能否对 ...
- (转载)理解Spatial Transformer Networks
理解Spatial Transformer Networks 转载于:知乎-SIGAI 书的购买链接 书的勘误,优化,源代码资源 获取全文PDF请查看:理解Spatial Transformer Ne ...
- 爬取的地址存入mysql记录
CREATE DATABASE HELLO; CREATE TABLE IF NOT EXISTS `botoo`( `id` INT UNSIGNED AUTO_INCREMENT, `title` ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件二次开发接口对接说明示列
EasyDSS相关功能 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本主要包含:直播.录像 ...
- python办公自动化(一)PPTX
简介: python-pptx是python处理PPT的一个库,注重的是读和写,无法导出,没有渲染功能. 办公自动化,说的是大了一点,但是最常见的office三件套,word,excel,ppt.这还 ...
- 记录一次TraceId的问题
多服务部署的时候,各个服务通过httpClient进行调用时候,有时候出现问题,需要进行追查.但是如果没有一个标记,就会很迷茫,特别是多个服务来回调用,就无法快速定位问题.这个时候一般是使用MDC的 ...
- .Net Core 3 骚操作 之 用 Windows 桌面应用开发 Asp.Net Core 网站
前言 曾经在开发 Asp.Net 网站时就在想,为什么一定要把网站挂到 IIS 上?网站项目的 Main 函数哪儿去了?后来才知道这个 Main 函数在 w3wp.exe 里,这也是 IIS 的主进程 ...
- thinkphp3.2.2公用函数
thinkphp3.2.2公用函数函数调用默认路径 home/Common/function.php
- java中通过Adb判断PC是否连接了移动设备
最近用到PC端和移动端通过USB连接传输数据的方式,于是总在使用Adb命令,为了逻辑的严谨和代码容错,想在传输数据的之前,PC和移动端先建立一次会话,防止移动端还未连接就直接传输数据会报错,找了很久并 ...
- 在CAD中插入谷歌地球卫星地图
本文主要介绍如何在CAD中插入谷歌地球卫星地图,作为参照光栅图像.谷歌地球卫星地图使用“迈高图-地图数据下载器”(以下简称:迈高图)下载.迈高图会给出相关插入参数(插入点和缩放比例),保证插入卫星地图 ...