三、机器学习基础知识:Python常用机器学习库(SKlearn)

news2024/11/28 14:36:46

文章目录

  • 1、Scikit learn简介
  • 2、主要步骤
  • 3、数据预处理
  • 4、模型选择与算法评价

1、Scikit learn简介

Scikit learn 的简称是 SKlearn,专门提供了 Python 中实现机器学习的模块。Sklearn 是一个简单高效的数据分析算法工具,建立在 NumPy、SciPy和 Matplotlib 的基础上。SKlearn 包含许多目前最常见的机器学习算法,例如分类、回归、聚类、数据降维,数据预处理等,每个算法都有详细的说明文档。
对于大多数机器学习,通常有以下四个数据集。

  1. train_ data.训练数据集。
  2. train target:训练数据的真实结果集。
  3. test_data:测试数据集。
  4. test_ target:测试数据集所对应的真实结果,用来检测预测的正确性。

用各算法解决问题时,也大都有两个共同的核心两数:训练函数fit()和测试函数predict()。

2、主要步骤

Sklearn针对机器学习的过程,提供了一个一般步骤,该步骤主要过程如下:

  1. 获取数据,创建数据集。在Sklearn中提供了很多经典的数据集可以直接使用,通过Sklearn的datasets模块来使用里面的相关数据集,包括经典的鸢尾花数据集、波士顿房价数据集等。
  2. 数据预处理。这一步骤专门针对数据进行预处理,使数据能够有效地被模型或者评估器识别。
  3. 数据集拆分。该步骤主要将数据集拆分为训练数据集与验证数据集,训练集用于训练模型,验证集用于验证模型性能。
  4. 训练模型。针对需要处理的问题,选择适当的模型并进行定义,同时使用训练数据集对定义好的模型进行训练。
  5. 性能评估。使用相关的评估标准对训练好的模型性能进行评估。

3、数据预处理

在Sklearn的datasets模块提供了一些常见的数据集。

数据集描述
datasets.fetch_california_housing加利福尼亚住房数据集
datasets.fetch_lfw_people有标签的人脸数据集
datasets.load_boston波士顿房价数据集
datasets.load_breast_cancer乳腺癌数据集
datasets.load_diabetes糖尿病数据集
datasets.load_iris鸢尾花数据集
datasets.load_wine葡萄酒数据集

鸢尾花数据集的加载:

from sklearn.datasets import load_iris
import pandas as pd
iris_data = load_iris()
x=pd.DataFrame(iris_data.data)
print(x)   #输出鸢尾花数据集每条数据包含的属性数据值
y=iris_data.target
print(y)  #输出鸢尾花数据集的类别标签

在这里插入图片描述

葡萄酒数据集的加载:

from sklearn.datasets import load_wine
import pandas as pd
wine_data = load_wine()
x=pd.DataFrame(wine_data.data)
print(x)   #输出葡萄酒数据集的属性数据
y=wine_data.target
print(y)  #输出葡萄酒数据集的类别标签

在这里插入图片描述

Sklearn所进行的预处理主要是针对数据集完成诸如数据标准化、正则化、二值化、编码以及数据缺失处理等,使用的是preprocessing模块的相关功能,常用的功能如下:

函数名称功能
preprocessing.Binarizer根据阈值对数据进行二值化
preprocessing.Imputer插值,用于填补缺失值
preprocessing.LabelBinarizer对标签进行二值化
preprocessing.MinMaxScaler将每个数据标准化到某个范围内
preprocessing.Normalizer将每个数据归一化为单位范数
preprocessing.OneHotEncoder使用One-Hot方案对整数特征编码
preprocessing.StandardScaler对数据进行标准正态分布的标准化
preprocessing.normalize将输入向量缩放为单位范数
preprocessing.scale沿某个轴标准化数据

使用preprocessing.MinMaxScaler进行标准化:

from sklearn import preprocessing
import numpy as np
x=np.array([[12,145,6],[27,365,3],[33,115,2]])
x_minmax=preprocessing.MinMaxScaler()  #默认缩放到区间[0,1]之间
x_minmax.fit_transform(x)

在这里插入图片描述

使用preprocessing.StandardScaler进行标准化:

from sklearn import preprocessing
import numpy as np
x=np.array([[12,145,6],[27,365,3],[33,115,2]])
x_scaled=preprocessing.StandardScaler().fit(x)
x_scaled.transform(x)

在这里插入图片描述

完成数据的标准化或归一化之后需要将数据集(训练数据集)做进一步划分,一般来说划分为训练集和验证集,划分过程可以直接使用Sklearm提供的train_test_split()方法,按照比例对数据集进行划分.。train_test_split()是交叉验证中常用的函数,其语法格式如下:

x_train,x_test,y_train,y_test=cross_calidationtrain_test_split(train_data,train_target,test_size=0.3,random_state= )

其中train_data,train_target分别表示要划分的样本数据集和数据集特征;test_size表示验证集占比,默认值为0.3,即验证集占整体数据集的30%,若设置为整数,则为验证集的数量;random_state为随机数的种子,即该组随机数的编号,重复实验时,使用相同编号可以获取相同的数据集。
一般来说,在进行机器学习训练时,只需要将数据集划分为训练集和测试集即可,对于较为复杂的训练过程,可以划分为训练集、验证集以及测试集,划分过程均可通过上述函数实现。
数据集的划分:

from sklearn.datasets import load_iris
import pandas as pd
from sklearn.model_selection import train_test_split
iris_data = load_iris()
x=pd.DataFrame(iris_data.data)
y=pd.DataFrame(iris_data.target)
train_x,test_x,train_y,test_y=train_test_split(x,y,test_size=0.3,random_state=0)
print('训练数据集属性数据:\n',train_x)
print('测试数据集属性数据:\n',test_x)
print('训练数据集标签数据:\n',train_y)
print('测试数据集标签数据:\n',test_y)

在这里插入图片描述

4、模型选择与算法评价

模型选择主要包括两个部分:学习模型的选择、超参数的设置。
通过分析问题,确定要选择什么模型来处理问题,Sklearn中主要模型包括:分类、回归、聚类、降维、模型选择以及预处理这几个功能模块,每个功能模型都提供了丰富的算法模型提供使用,针对不同的问题,选择合适的模型是非常重要的。
确定好模型后,需要为模型选择合适的超参数,通过对参数的赋值来完成模型初始化。

模型建立之后,需要使用数据集进行学习,即训练,Sklearn的机器学习模型中大都提供了fit()函数用于学习训练;训练完成之后就可以使用模型对新的数据集进行测试,Sklearn的机器学习模型同样大都提供了predict()函数用于测试。
在测试过程中,性能指标是主要用于评价模型的标准,它一般是通过测量,计算模型的输出和真值之间的差距而得出,Sklearn的metrics模块中提供了许多计算差距的评估方法以供选择。
常用的分类评价指标:

函数名功能
metrics.f1_score()计算调和均值f1指数
metrics.precision_score()计算精确率
metrics.recall_score()计算召回率
metrics.roc_auc_acore()计算曲线ROC的面积
metrics.precision_recall_fscore_support()计算每个类的精确度、召回率、f1指数和支持度
metrics.classification_report()根据测试标签和预测标签,计算分类的精确度、召回率、f1指数和支持度

常用的Sklearn回归指标:

函数名功能
metrics.mean_absolute_error()平均绝对误差回归损失
metrics.mean_squared_error()均方误差回归损失
metrics.r2_score()R^2回归分数函数

Sklearn还提供了聚类指标,包括常见的兰德指数等,可以直接使用函数名调用:
metrics.adjusted_rand_score(labels_true,…)

此外sklearn.model_selection模块中也提供了模型验证功能:

函数名功能
model_selection.cross_validate()通过交叉验证评估指标,并记录测试分数、训练得分、拟合次数等,可多个指标
model_selection.cross_val_score()通过交叉验证评估测试分数,单个指标
model_selection.learning_curve()学习曲线
model_selection.validation_curve()验证曲线

分类性能评价:

from sklearn.metrics import classification_report
y_true=[0,1,1,0,0,0]
y_prediction=[0,0,1,1,0,0]
print(classification_report(y_true,y_prediction))  #计算分类的精确度、召回率、f1指数和支持度

在这里插入图片描述
扩展:
四、机器学习基础知识:交叉验证
八、机器学习基础知识:分类性能评价指标
九、机器学习基础知识:回归预测性能评价指标

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

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

相关文章

深入研究Android内存

深入研究Android内存 Android应用程序开发时,我们始终意识到自己是Android硬件和操作系统的一部分。 从硬件角度来看,我们可以将Android手机分为不同级别。基本上,我们可以将它们分类为适用于低端硬件或API的入门级、中级和高级硬件-API手机…

Python+Selenium WebUI自动化框架 -- 基础操作封装

前言: 封装Selenium基本操作,让所有页面操作一键调用,让UI自动化框架脱离高成本、低效率时代,将用例的重用性贯彻到极致,让烦人的PO模型变得无所谓,让一个测试小白都能编写并实现自动化。 知识储备前提&a…

WordPress自适应图片主题源码CX-UDY主题模板 带会员积分下载系统

说明:该主题只适用于WordPress 4.8及以下版本,高版本暂不支持,介意的请勿下! 下载地址 qnziyw点cn/cmsmb/wordpress/8084点html

Flutter:安装依赖报错doesn‘t support null safety

项目中需要引用http依赖,在pubspec.yaml文件中添加如下信息: 当同步时,报错信息如下: [myflutter] flutter pub upgrade Resolving dependencies... The current Dart SDK version is 3.1.3. Because myflutter depends on http &…

超简单的Mac双开微信,升级后失败重复操作仍然有效

首先找到安装的微信 应用程序 -> 微信 右键 -> 复制 复制出来效果如下: 在复制出来的微信应用右键-> 点击显示包内容 但是每次打开微信都特别麻烦,这里选择脚本右键制作替身,最后多出来的替身图标,拖拽到桌面就可以了…

6.数据类型与运算符

目录 mysql数据类型 整型数据类型 浮点数类型和定点数类型 1、日期时间类型 1、YEAR 2、TIME 3、DATE类型 4、DATETIME 5、TIMESTAMP 2、字符串类型 1、CHAR 和 VARCHAR类型: 2、TEXT类型 3、ENUM类型 4、SET类型 二进制字符串类型 1、BIT类型 2、…

Java学习 7.Java-方法的使用

一、为什么要使用方法 在编程中,某段功能的代码可能频繁使用,如果在某个位置重新实现一遍,会: 1.使程序变得繁琐 2.开发效率底下,做了大量重复性工作 3.不利于维护,需要改动时,所有用到该段…

Flink SQL DataGen Connector 示例

Flink SQL DataGen Connector 示例 1、概述 使用 Flink SQL DataGen Connector,可以快速地生成符合规则的测试数据,可以在不依赖真实数据的情况下进行开发和测试。 2、使用示例 创建一个名为 “users” 的表,包含 6 个字段:id…

智能井盖生产商家,万宾科技井盖传感器产品详情

市政府管理水平决定城市人民幸福程度,所以在智慧城市推进过程中,市政府也在加快城市信息基础设施建设,希望提高公共服务水平,以此来满足城市居民的需求,进一步推进城市信息化智能化发展。作为城市生命线的一个组成部分…

Docker学习——④

文章目录 1、Docker Image(镜像)2、镜像命令详解2.1 docker rmi2.2 docker save2.3 docker load2.4 docker image inspect2.5 docker history2.6 docker image prune 3、镜像综合实战3.1 离线镜像迁移3.2 镜像存储的压缩与共享 1、Docker Image&#xff…

第七章《搞懂算法:线性回归是怎么回事》笔记

线性回归算法是机器学习算法中最简单的一类,线性回归算法主要用于连续值的预测问题。 7.1 什么是线性回归 这种刻画了不同变量之间关系的模型叫作回归模型,如果这个模型是线性的,则为线性回归模型。 线性回归主要是应用回归分析来确定两种…

webgoat-Path traversal

Path traversal 路径(目录)遍历是一种漏洞,攻击者能够访问或存储外部的文件和目录 应用程序运行的位置。这可能会导致从其他目录读取文件,如果是文件,则会导致读取文件 上传覆盖关键系统文件。 它是如何工作的&#…

京东数据分析:2023年9月京东打印机行业品牌销售排行榜

鲸参谋监测的京东平台9月份打印机市场销售数据已出炉! 鲸参谋数据显示,今年9月,京东平台打印机的销量为60万,环比增长约32%,同比下滑约25%;销售额为5亿,环比增长约35%,同比下滑约29%…

“掌握高效图片管理:轻松成为图像处理达人!“

您是否曾经为找不到合适的图片而烦恼?或者因为无法批量处理图片而感到困扰?现在,我们为您带来了一款全新的图像管理工具,让您轻松实现批量图片处理,变身为图像管理达人! 第一步,首先我们要进入首…

Windows桌面便签工具推荐使用哪一款?

电脑桌面上张贴便利贴可以将近期需要完成的工作计划逐一添加到便利贴中,电脑桌面悬挂便利贴工具可以督促日常各项事务的完成。当前可悬挂在电脑桌面上的便利贴工具是比较多的,其中桌面小工具便签软件敬业签可满足各行业的办公需求。 建议大家在Windows桌…

软件测试从0offer到20k,你只差银行测试这一步!!!

金融类软件测试 举个栗子,银行里的软件测试工程师。横向跟互联网公司里的测试来说,薪资相对稳定,加班少甚至基本没有,业务稳定。实在是测试类岗位中的香饽饽! 一、什么是金融行业 金融业是指经营金融商品的特殊行业&am…

【笔记】系统集成项目管理工程师-各管理输入输出整理

目录 一、整体管理 二、范围管理 三、进度管理 四、成本管理 五、质量管理 六、人力资源管理 七、干系人管理 八、风险管理 九、word 版本整理 十、PPT图版本管理 一、整体管理 1. 制订项目章程 2. 制订项目管理计划 3. 指导与管理项目工作 4. 监控项目工作 5. 实施…

好的FPGA编码风格(1)--尽量避免组合逻辑环路(Combinational Loops)

什么是组合逻辑环路? 组合逻辑环路(Combinational Loops):指组合逻辑的输出信号不经过任何时序逻辑电路(FF等),而直接反馈到输入节点,从而构成的电路环路。 此外,如果直接…

云计算的大模型之争,亚马逊云科技落后了?

文丨智能相对论 作者丨沈浪 “OpenAI使用了Azure的智能云服务”——在过去的半年,这几乎成为了微软智能云最好的广告词。 正所谓“水涨船高”,凭借OpenAI旗下的ChatGPT在全球范围内爆发,微软趁势拉了一波自家的云计算业务。2023年二季度&a…

SSL证书加密是什么?加密原理和过程是怎样的?

随着互联网的普及和发展,人们的日常生活与网络密切交织在一起。然而,由于网络通信的开放性,信息在传输过程中很容易被窃取、篡改或伪造,因此保护用户的隐私和数据安全显得尤为重要。SSL证书加密就是一种用于保护网络通信安全的技术…