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

文章目录

  • 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葡萄酒数据集

鸢尾花数据集的加载:

python">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)  #输出鸢尾花数据集的类别标签

在这里插入图片描述

葡萄酒数据集的加载:

python">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进行标准化:

python">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进行标准化:

python">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()是交叉验证中常用的函数,其语法格式如下:

python">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为随机数的种子,即该组随机数的编号,重复实验时,使用相同编号可以获取相同的数据集。
一般来说,在进行机器学习训练时,只需要将数据集划分为训练集和测试集即可,对于较为复杂的训练过程,可以划分为训练集、验证集以及测试集,划分过程均可通过上述函数实现。
数据集的划分:

python">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()验证曲线

分类性能评价:

python">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.niftyadmin.cn/n/5156050.html

相关文章

rust变量绑定、拷贝、转移、引用

目录 一,clone、copy 1,基本类型 2,类型的clone特征 3,显式声明结构体的clone特征 4,类型的copy特征 5,显式声明结构体的clone特征 5,变量和字面量的特征 6,特征总结 二&am…

享搭低代码平台:快速构建符合需求的会议室管理系统应用

本文介绍了享搭低代码平台如何赋予用户快速构建会议室管理系统应用的能力。通过在应用商店安装费用会议室管理模板,并通过拖拽方式对模板进行自定义扩充,用户可以快速搭建符合自身需求的会议室管理系统,从而提高会议室预订和管理的效率。 介绍…

流量控制详解

1. 流量控制及其意义 流量控制是指对系统中的数据流、请求或信息流量进行管理和调节的过程。 微服务系统中的流量控制是确保整个系统能够在可接受的负载范围内运行,并保证各个微服务之间的协调工作。 在计算机网络和系统设计中,流量控制对系统性能、可靠…

视频监控管理平台EasyCVR自动注销后,页面还存留播放窗口是什么原因?解决办法是什么?

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流&#…

antv/x6 使用Stencil实现拖拽生成节点

antv/x6 使用Stencil实现拖拽生产节点 安装stencil插件引用Stencil初始化拖拽生成节点 安装stencil插件 npm install antv/x6-plugin-stencil2.1.4 --save引用Stencil <div id"stencil"></div>import { Stencil } from antv/x6-plugin-stencil// 初始化…

5G-DFS最新动态-产品不在需要走FCC官方测试

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 最近&#xff0c;FCC公布了最新版本的PAG&#xff08;Product Acceptance Group&#xff09;清单&#xff0c;即388624 D02 Pre-Approval Guidance List v18r04。这个清单的主要改变是将带有雷达侦测功能的…

Nginx bat文件

chcp 65001 rem 打开nginx的存放路径 cd D:\Java\nginx-flames rem 修改配置后重新加载生效&#xff0c;所以如果更新了文件夹或者conf配置&#xff0c;这行需要首先运行 nginx -s reload rem 正常停止或关闭。先保存上面一步&#xff0c;在停止nginx在启动&#xff0c;所以其次…

在Linux系统下部署Llama2(MetaAI)大模型教程

Llama2是Meta最新开源的语言大模型&#xff0c;训练数据集2万亿token&#xff0c;上下文长度是由Llama的2048扩展到4096&#xff0c;可以理解和生成更长的文本&#xff0c;包括7B、13B和70B三个模型&#xff0c;在各种基准集的测试上表现突出&#xff0c;最重要的是&#xff0c…