Scikit-learn 快速入门篇

news2024/10/7 14:23:04

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.coloradmin.cn/o/1589633.html

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

相关文章

腾讯云向量数据库-RAG介绍

1.说明 RAG结合LLM(通用大预言模型)构件基于私有文档、专业领域知识、实时信息的charbot。 2.RAG的主要步骤 知识切片成chunk向量化chunk入库query检索知识chunk构件prompts调用llm生成回答 3.优势 快速构件demo快速理解rag社区支持 4.痛点 投入大效果差调优难 5.RAG应…

激光slam论文汇总

文章目录 2014LOAM: Lidar Odometry and Mapping in Real-time 2018LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 2020LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 2021LVI-SAM: Tightly-co…

多 线 程

1.什么是多线程? 有了多线程,我们就可以让程序同时做多件事情 2.多线程的作用? 提高效率 3.多线程的应用场景? 只要你想让多个事情同时运行就需要用到多线程 比如:软件中的耗时操作、所有的聊天软件、所有的服务器 1.进程和线程【理解】 …

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境 0. 前言1. 下载小皮面板1.1 下载phpstudy(小皮面板)1.2 启动、简单访问1.2.1 启动Apache1.2.2 访问1.2.3 访问自定义文件或页面 2. 创建网站2.1 创建网站2.2 可能遇到的问题2.2.1 hosts权限问题&am…

靠谱的香港服务器有哪些(看过才后悔)_避坑血泪史

最受欢迎的外贸建站服务器就是香港服务器,可是很多人还不知道如何辨别香港服务器商家是否靠谱。 小编曾经也是建站新手,以前也碰到过很多不靠谱的服务器商家,各种踩坑,可以说都是用钱堆出来的经验。在这里小编给大家总结下&#…

ADG数据库迁移方案

一、环境说明 源库 目标库 IP 192.168.37.201 192.168.37.202 系统版本 RedHat 7.9 RedHat 7.9 数据库版本 19.3.0.0.0 19.3.0.0.0 SID pri std hostname primary standby 数据量 整个库 说明:源库已经创建数据库实例,目标库只有数据库软件。…

蓝桥杯— —小明的背包问题

小明的背包问题 小明的背包1 — — (01背包) 友情链接:小明的背包1 题目: 输入样例: 5 20 1 6 2 5 3 8 5 15 3 3 输出样例: 37思路: 对于01背包问题,其中一个重要的条件是每一种物品只有一个…

git查看单独某一个文件的历史修改记录

git查看单独某一个文件的历史修改记录 git log -p 文件具体路径 注意,Windows下默认文件路径分隔符是 \,在git bash 里面需要改成 /。 git基于change代码修改与提交_git change-CSDN博客文章浏览阅读361次。git cherry-pick:复制多个提交comm…

2023全国青少年信息素养大赛总决赛C++小学组真题

2023 全国青少年信息素养大赛总决赛C小学组真题 第一题 给定一个五位数x,你需要重复做以下操作: 把数的各个数位进行由大到小排序和由小到大排序,得到的最大值和最小值,进行求差后作为新的x。 可以证明,在经过有限次操作后&…

代码随想录算法训练营33期 第三十一天(补29) | 491. 非递减子序列、46. 全排列、47. 全排列 II

491. 非递减子序列 class Solution { public:vector<int> path;vector<vector<int>> result;void BackTracking(vector<int>& nums, int index){if(path.size()>2){result.push_back(path);}unordered_set<int> usedSet;for (int iindex…

爬取日本常用汉字秘籍

前言 昨天投简历时遇到了这样的一个笔试。本以为会是数据结构算法之类的没想到直接发了一个word直接提需求&#xff0c;感觉挺有意思就写了这篇文章&#xff0c;感兴趣的朋友可以看看。 1. 网页内容解析 首先&#xff0c;我们通过请求网页获取到日本常用汉字的链接列表。然后…

多线程java

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

逻辑卷和磁盘配额

文章目录 一、逻辑卷二、磁盘配额 一、逻辑卷 为什么会出现技术&#xff1f; 分区的缺点&#xff1a; 没有备份功能无法扩容性能取决于硬盘本身 相关概念 LVM 是 Logical Volume Manager 的简称&#xff0c;译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。…

HarmonyOS开发学习:【DevEco Device Tool 安装配置(问题全解)】

本文介绍如何在Windows主机上安装DevEco Device Tool工具。 坑点总结&#xff1a; 国内部分网络环境下&#xff0c;安装npm包可能会很慢或者超时&#xff0c;推荐使用国内npm源&#xff08;如淘宝源、华为源等&#xff09;&#xff1b;serialport这个npm包安装的过程中需要编…

STC8H8K64U 库函数学习笔记 —— GPIO 点灯

STC8H8K64U 库函数学习笔记 —— GPIO 点灯 环境说明&#xff1a; 芯片&#xff1a;STC8H8K64U 软件&#xff1a; KeilC51 μVersion V5.38.00STCAI-ISP (V6.94) 不得不说&#xff0c;Keil 是我用过的 IDE 中&#xff0c;最让人头疼的事情&#xff0c;写代码就像是在记事本里编…

【进阶篇】三、Java Agent实现自定义Arthas工具

文章目录 0、客户端代码1、JMX2、实现&#xff1a;查看内存使用情况3、实现&#xff1a;查看直接内存4、实现&#xff1a;生成堆内存快照5、实现&#xff1a;打印栈信息6、实现&#xff1a;打印类加载器的信息7、实现&#xff1a;打印类的源码8、需求&#xff1a;打印方法的耗时…

OpenHarmony开发学习:【源码下载和编译】

本文介绍了如何下载鸿蒙系统源码&#xff0c;如何一次性配置可以编译三个目标平台&#xff08;Hi3516&#xff0c;Hi3518和Hi3861&#xff09;的编译环境&#xff0c;以及如何将源码编译为三个目标平台的二进制文件。 坑点总结&#xff1a; 下载源码基本上没有太多坑&#xff…

HarmonyOS开发实例:【菜单app】

简介 分布式菜单demo 模拟的是多人聚餐点菜的场景&#xff0c;不需要扫码关注公众号等一系列操作&#xff0c;通过分布式数据库可以方便每个人可及时查看到订单详情&#xff0c;数量&#xff0c;总额等&#xff1b;效果如下 demo效果 工程目录 完整的项目结构目录如下 ├…

2024年DeFi的四大主导趋势:Restaking、Layer3、AI和DePin

DeFi&#xff08;去中心化金融&#xff09;行业在2024年将继续呈现快速增长的势头&#xff0c;驱动这一增长的主要因素将是四大主导趋势&#xff1a;Restaking、Layer3、AI和DePin。这些趋势将推动DeFi生态系统的发展&#xff0c;为用户提供更多的机会和创新。 趋势1&#xff…

雨云:不只是一阵清风,更是一场暴雨的力量

引言 在网络时代&#xff0c;服务器是任何在线业务的核心。无论你是运营一家小型博客还是承载着数百万用户的大型电商平台&#xff0c;都需要一个稳定、高效的服务器来支持你的业务。然而&#xff0c;在众多服务器提供商中&#xff0c;有一家备受推崇&#xff0c;那就是雨云。 …