Scikit-learn 快速入门篇

Sklearn 简介

scikit-learn (sklearn) 是 Python 中用于机器学习的最流行的库之一。它提供了一系列有效的算法和工具,涵盖各种机器学习任务,包括:

  • 分类
  • 回归
  • 聚类
  • 降维
  • 模型选择
  • 数据预处理

Sklearn 六大模块

  1. 分类:预测离散类别
    1. 算法: KNN, 随机森林 逻辑回归 朴素贝叶斯 GBDT XGboost LightGBM
    2. 应用: 垃圾邮件检测,图像识别
  2. 回归:预测连续值
    1. 算法: 线性回归 Lasso回归 决策树回归 随机森林回归 XGboost回归
    2. 应用: 房价预测,时间序列预测
  3. 聚类:将相似对象自动分组
    1. 算法: k-Means, spectral clustering, mean-shift,基于层次聚类 基于密度聚类
    2. 应用: 客户细分;将数据分成相似的组。
  4. 降维:减少数据的维度以提高效率
    1. 算法: 因子分析 PCA ICA LDA, 属性降维
    2. 应用: 可视化;减少数据的特征维度,以简化问题并提高计算效率
  5. 模型选择:比较和选择最佳模型
    1. 模型: Metrics Scoring模型得分 Grid search 网格搜索 Cross Validation 交叉验证 Hyper-Parameters 超参数选择 Validation curves 模型验证曲线
    2. 目标: 通过参数调整提高精度
  6. 数据预处理:准备和清理数据以进行建模
    1. 算法: Standardization标准化 Scaling Features归一化 Non-linear transformation非线性转化Gaussian distribution高斯分布转化 Normalization正则化 Encoding categorical features类别性编码处理
    2. 应用: 把输入数据转换为机器学习算法可用的数据

快速了解Sklearn库

英文版Sklearn官方网址:scikit-learn: machine learning in Python — scikit-learn 1.4.1 documentation
中文版Sklearn官方网址:scikit-learn中文社区

代码实现:

from sklearn import datasets
from sklearn.datasets import load_iris
#查看库的模块
print("查看库的模块:",dir(sklearn))
#查看模块中的方法和类
print("查看模块中的方法和类:",dir(sklearn.datasets))
#模块中包含的类和方法的详细信息:参数、返回值和功能描述
print("模块中包含的类和方法的详细信息:参数、返回值和功能描述:",sklearn.datasets.load_iris)

Sklearn 库中的模块、类、函数

1.数据模块(Data Modules):

  1. sklearn.datasets:包含示例数据集,如Iris、Digits等。
  2. sklearn.datasets.fetch_openml:用于从OpenML获取数据集。
  3. sklearn.datasets.fetch_lfw_people:用于获取LFW人脸数据集

2.数据处理模块(Data Preprocessing):

  1. sklearn.preprocessing:提供特征缩放、标准化、编码、缺失值处理等功能。
  2. sklearn.impute:用于填充缺失数据的模块。
  3. sklearn.feature_selection:包括特征选择方法,帮助选择最重要的特征。
  4. sklearn.decomposition:包含降维方法,如主成分分析(PCA)和因子分析。
  5. sklearn.model_selection.train_test_split:用于将数据集分割为训练集和测试集。

3.回归模块(Regression):

  1. sklearn.linear_model:包含线性回归、岭回归、Lasso回归等线性模型。
  2. sklearn.svm:支持向量机(SVM)用于回归任务。
  3. sklearn.neighbors:k-近邻(KNN)回归方法。

4.分类模块(Classification):

  1. sklearn.linear_model:逻辑回归、线性判别分析等用于分类的线性模型。
  2. sklearn.svm:支持向量机(SVM)用于分类任务。
  3. sklearn.neighbors:k-近邻(KNN)分类方法。
  4. sklearn.tree:决策树分类器。
  5. sklearn.ensemble:随机森林、AdaBoost、梯度提升等集成学习方法。

5.聚类模块(Clustering):

  1. sklearn.cluster:包括K均值、DBSCAN、层次聚类等聚类算法。
  2. sklearn.cluster.KMeans:K均值聚类
  3. sklearn.cluster.AgglomerativeClustering:层次聚类
  4. sklearn.cluster.DBSCAN:基于密度的聚类方法,可以识别具有相似密度的数据点
  5. sklearn.cluster.SpectralClustering:谱聚类,数据之间的相似度矩阵

6.降维模块(Dimensionality Reduction):

  1. sklearn.decomposition:主成分分析(PCA)、独立成分分析(ICA)等降维方法。
  2. sklearn.decomposition.PCA:主成分分析是一种线性降维方法
  3. sklearn.decomposition.FastICA:独立成分,从混合信号中分离出原始信号

7.模型评估模块(Model Evaluation):

  1. sklearn.metrics:包括各种模型评估指标,如准确率、F1分数、ROC曲线等。
  2. sklearn.model_selection:提供交叉验证、参数搜索和数据集分割的工具。

8.模型保存模块(Model Saving):

  1. sklearn.externals.joblib:用于模型保存和加载的工具。

其他,集成学习模块  :

  1. sklearn.ensemble: 这个模块包括集成学习方法,如随机森林、梯度提升、AdaBoost等。

 Sklearn 常见方法:

  1. fit(): 用于训练机器学习模型。
  2. predict(): 用于进行预测。
  3. transform(): 对数据进行变换,如特征工程。
  4. score(): 评估模型性能。
  5. GridSearchCV(): 用于网格搜索交叉验证以调优模型参数。
  6. cross_val_score(): 执行交叉验证并返回评分。
  7. train_test_split(): 将数据集分割为训练集和测试集。
  8. confusion_matrix(): 计算混淆矩阵,用于分类问题的性能评估。

机器学习流程

  • 问题定义

    1. 明确定义所要解决的问题
    2. 需求分析,业务理解,梳理问题并定义,让需求方确认
  • 数据准备

    1.获取数据:模块数据,自制数据,公开数据

        (1)模块自带的数据集

from sklearn import datasets
dir(datasets)

        sklearn 库载入数据

from sklearn import datasets
iris = datasets.load_iris()# 载入数据

         sklearn 自带经典数据集

数据集名称描述类型维度
load_bostonBoston房屋价格回归506*13
fetch_california_housing加州住房回归20640*9
load_diabetes糖尿病回归442*10
load_digits手写字分类1797*64
load_breast_cancer乳腺癌分类、聚类(357+212)*30
load_iris鸢尾花分类、聚类(50*3)*4
load_wine葡萄酒分类(59+71+48)*13

        (2)自制数据集

        (3)公开数据集(网站和论文)

                1.Kaggle网址

                2.UCI数据集网址

                3.论文中数据Papers with Code - The latest in Machine Learning

 

        2.分析数据:描述性统计,统计特征

1.data.head(); data.tail()查看数据。2.data.info()查看数据的整体信息,数据维度shape,数据类型dtypes,是否有空值。3.data.describe()查看数据的基本统计信息,包括均值、方差、最大值、最小值等。4.corr()函数计算变量之间的成对相关性。

        3.分析数据:数据可视化

        数据可视化是通过图表、图形和可视化工具将数据呈现出来,以帮助人们更好地理解数据、发现模式和趋势。

图表类型:1.条形图(Bar Chart):用于比较不同类别的数据。2.折线图(Line Chart):用于显示数据随时间的变化。3.散点图(Scatter Plot):用于展示两个变量之间的关系。4.饼图(Pie Chart):用于显示不同部分占整体的比例。5.热力图(Heatmap):用于呈现矩阵数据的关联和分布。6.箱线图(Box Plot):用于显示数据分布的中位数、四分位数和离群值。7.直方图(Histogram):用于展示数据的分布情况。

        4.数据清洗:缺失,重复,异常

        处理数据中的异常值、缺失值、空值、重复值以及其他不规范的数据是数据预处理的关键步骤,以确保数据质量和可用性。

1.缺失:删除缺失值,空值,data.dropna(inplace = True)
2.重复:data.drop_duplicates(inplace = True)
3.异常:1.识别异常值:异常值通常是与其他数据点明显不同的值,可能是输入错误、测量错误或其他原因引起的。箱线图可以了解数据的异常值和分布的离散程度。2.选择处理方法:通常的处理方法。3.删除异常值:可以将异常值从数据集中删除,但要谨慎使用,因为可能会损失信息。4.替换异常值:你可以将异常值替换为合理的值,例如使用中位数、均值或其他合适的统计值。5.标记异常值:你可以将异常值进行标记,以后可以根据需要进一步处理。

        5.特征处理:特征缩放,特征选择,归一化,标准化

1.在训练模型之前,通常需要对数据进行预处理,以确保数据的质量和一致性。
2.标准化 (standardization):每个维度的特征减去该特征均值,除以该维度的标准差。
3.归一化 (MinMaxScaler):每个维度的特征减去该特征最小值,除以该特征的最大值与最小值之差。

Scikit-learn进行数据变换

预处理操作库名称
标准化sklearn.preprocessing.StandardScaler
归一化sklearn.preprocessing.MinMaxScaler

        6.数据拆分:数据拆分为训练集,验证集,测试集

1.数据分为三个部分:训练集、验证集和测试集。
2.训练集用来训练模型,验证集用于模型的超参数调整,而测试集用于最终评估模型性能。# 拆分数据集为训练集和测试集 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 参数解释:
# - X_train: 训练集特征
# - X_test: 测试集特征
# - y_train: 训练集目标
# - y_test: 测试集目标
# - test_size: 测试集的比例,通常为 0.2(20% 的数据作为测试集)
# - random_state: 随机种子,可确保拆分是可重复的
  • 模型搭建和训练

    根据任务类型选择合适的模型。
  • 模型评估和优化

    常见的评价指标
评价指标库名称使用范围
准确率accuracy_score分类
精确率precision_score分类
F1 值f1_score分类
对数损失log_loss分类
混淆矩阵confusion_matrix分类
含多种评价的分类报告classification_report分类
均方误差MSEmean_squared_error回归
平均绝对误差MAEmean_absolute_error回归
决定系数R2r2_score回归

 

1.准确率(Accuracy)准确率是模型正确分类的样本数与总样本数之比。它衡量模型在所有类别中正确分类的比例。准确性高可能是一个好的性能指标,但在不平衡类别分布的情况下可能不太合适。
2.精确率(Precision):又叫查准率,是模型预测为正类别(正例)的样本中实际为正类别的比例。它衡量了模型的正例预测的准确性。
3.召回率(Recall):又叫查全率,是实际为正类别的样本中被模型正确分类为正类别的比例。它衡量了模型捕获正例的能力。召回率越高,代表实际负样本被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。
4.F1分数(F1 Score):F1分数是精确度和召回率的调和平均值。F1分数高表示模型在精确度和召回率之间取得了平衡。
5.混淆矩阵(Confusion Matrix):混淆矩阵是一个二维矩阵,用于显示模型的分类结果。它包括真正例(True Positive, TP)、真负例(True Negative, TN)、假正例(False Positive, FP)、假负例(False Negative, FN)。混淆矩阵可以用于计算上述指标。
6.分类报告(Classification Report):分类报告是一种包含多个分类指标的文档,通常包括精确度、召回率、F1分数和支持数(每个类别的样本数量)。分类报告对多类别分类问题特别有用。

         二分类 

预测值正例预测值反例
真实值正例TP – True Positive(真正例)FN – False Negative(假反例)
真实值反例FP – False Positive(假正例)TN – True Negative(真反例)
TP: 实际 1预测为 1,预测正确
FP: 实际 0预测为 1,预测错误
FN: 实际 1预测为 0,预测错确
TN: 实际 0预测为 0,预测正确
准确率 =(TP+TN)/(TP+TN+FP+FN)
精准率 =TP/(TP+FP)
召回率=TP/(TP+FN)
F1=(2×Precision×Recall)/(Precision+Recall)

 

  • 模型保存和应用 

1.模型保存:joblib.dump(model,'train_model.m')
2.模型应用:model = joblib.load('train_model.m')

 

常见术语与含义 

符号含义
X_train训练数据
X_test测试数据
y_train训练集标签
y_test测试集标签
X完整数据
y数据标签
y_pred预测标签

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

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

相关文章

分布式强化学习

标题 易混淆概念联邦学习与强化学习1)联邦学习应用于强化学习2)强化学习应用于联邦学习 时空图卷积网络(ST-GCN)基本概念结合训练 易混淆概念 DistributionalRL是分布RL,不是分布式RL。分布RL是把Q值从一个期望构建成…

2024-4-10 群讨论:JFR 热点方法采样实现原理

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号:hashcon,私信拉你 什么是 JFR 热点方法采样,效果是什么样子? 其实对应的就是 jdk.ExecutionSample 和 jdk.NativeMethodSample 事件 这两个事件是用来采样的&#xff0c…

睿尔曼复合机器人之底盘操作流程

以操作流程为例,介绍底盘的操作流程。 开机:长按电源按钮,蜂鸣器短响两声,当第三声变长鸣后松开,等待机器开机。 使用: 建立通讯:主要采用无线WiFi与底盘进行通讯连接 无线连接方式&#xff…

副业天花板流量卡推广,小白也可轻松操作

在如今的互联网时代,手机已经不仅仅是一款工具,更像是我们生活中的一部分,那么手机卡也是必需品,但存在的问题就是:很多手机卡的月租很贵,流量也不够用。所以大家都在寻找一个月租低,流量多的卡&#xff0c…

计算机网络—HTTPS协议详解:工作原理、安全性及应用实践

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️💟──────── 5:06 🔄 ◀️ ⏸…

NC251500 coin

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目背景 假如我那时握住的不是硬币,而是 ... 题意简述 Rikka 和 Yuuta 在玩游戏,每一次他们会抛一枚硬币,正面向上的概率是 p,反面向上的概率是…

C++设计模式:享元模式(十一)

1、定义与动机 概述:享元模式和单例模式一样,都是为了解决程序的性能问题。面向对象很好地解决了"抽象"的问题,但是必不可免得要付出一定的代价。对于通常情况来讲,面向对象的成本大豆可以忽略不计。但是某些情况&#…

NAPI 类对象导出及其生命周期管理(下)

4. 样例工程源码剖析 工程的模板是Native C,模型是Stage。源码剖析主要围绕以下几个文件 4.1. NAPI导出对象和生命周期管理具体实现 4.1.1. 定义NapiTest类及方法 Napi.h文件内容如下: #ifndef __NAPI_TEST_H__ #define __NAPI_TEST_H__#include "napi/nat…

数据集学习

1,CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

【科技】2024最新微信机器人一键部署教程

外话 话说上次写文章好像又过了几个月了…… 其实还是因为马上小升初的各种密考,其它地方不知道,反正广东这块名校基本上都得密考考进去 笔者连考几次都惨不忍睹…… 不过5月份会有一个信息技术特长生招生,看看能不能吧~ 正文 先说&#xff…

第四百五十五回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 使用方法 3. 内容总结 我们在上一章回中介绍了"overlay_tooltip用法"相关的内容,本章回中将介绍onBoarding包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的onBo…

流动人员人事档案管理信息系统

流动人员人事档案管理信息系统是一种用于管理流动人员的人事档案的信息系统。该系统可以对流动人员的基本信息、工作经历、学历教育、培训记录、奖惩记录等进行管理和统计。通过该系统,可以方便地查询和维护流动人员的人事档案信息,提高人力资源管理的效…

核心api实操-Activiti7从入门到专家(5)

背景 上一节已经搭建了,具体的开发环境,数据库,并且找了一个可以用bpmnjs流程设计器,这一些,我们对核心api做个基础的实操,有个感性的认知,另外对数据库和基本数据流动有个理解。 部署 模板部…

从零自制docker-9-【管道实现run进程和init进程传参】

文章目录 命令行中输入参数长度过长匿名管道从父进程到子进程传参[]*os.File{}os.NewFile和io.ReadAllexe.LookPathsyscall.Execstrings.Split(msgStr, " ")/bin/ls: cannot access : No such file or directory代码 命令行中输入参数长度过长 用户输入参数过长或包…

CSS基础:border-radius圆角边框的4种写法规则以及网页实战应用的3个场景

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集 265篇…

SpringBoot 中的日志原来是这么工作的

在有些场景,能通过调整日志的打印策略来提升我们的系统吞吐量,你知道吗? 我们以Springboot集成Log4j2为例,详细说明Springboot框架下Log4j2是如何工作的,你可能会担心,如果是使用Logback日志框架该怎么办呢&#xff1…

01_QT编译报错:Cannot find file:问题解决

QT编译报错:Cannot find file:问题解决 报错原因:创建路径存在中文字符,将文件路径改为英文字符即可

多线程java

多线程的创建 前两种方法无法返回直接结果,而有的线程执行完毕后需要返回结果 方式一:java是通过java.lang.Thread类的对象来代表线程的 启动线程必须调用strat方法,不是调用run方法不要把主线程任务放在启动子线程之前 //1.让子类继承Thread线程类 public class MyThread …

阿里云服务器公网带宽费用全解析(不同计费模式)

阿里云服务器公网带宽怎么收费?北京地域服务器按固定带宽计费一个月23元/M,按使用流量计费0.8元/GB,云服务器地域不同实际带宽价格也不同,阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表: 公网…

集群监控原理

3.1.2.集群监控原理 Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令: •主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。 •客观下线:若超过指定数量&…