【机器学习基础 3】 sklearn库

目录

一、sklearn库简介

二、sklearn库安装

三、关于机器学习

四、sklearn库在机器学习中的应用

1、数据预处理

2、特征提取

3、模型选择与评估

五、常用的sklearn函数

1、数据集划分

2、特征选择

3、特征缩放

4、模型训练

5、模型预测


一、sklearn库简介

        Scikit-learn(简称sklearn)是一个用于机器学习的Python库,它包含了许多常用的机器学习算法、预处理技术、模型选择和评估工具等,可以方便地进行数据挖掘和数据分析。 Scikit-learn建立在NumPy、SciPy和Matplotlib之上。

二、sklearn库安装

pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/

比如我们要安装 sklearn 1.1.1版本,那么:
pip install scikit-learn==1.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:我们在sklearn库的学习和练习过程中,所需的 sklearn 版本不一定要最新 or 最好的,因为里面可能会有一些东西在新版本被移除了,比如:load_boston(波士顿房价数据)在最新版已被移除,因此建议安装 sklearn 1.1.1版本

三、关于机器学习

在认识sklearn库前,我们要知道机器学习一般分为四个基本的步骤:

        ① 数据的收集和准备 → 包括数据的清洗、变换、归一化和特征提取等操作;

        ② 模型选择和训练 → 选择一个合适的机器学习模型,并使用收集的数据对其进行训练(什么问题选择什么模型);

        ③ 模型评估 → 训练完成后对模型在新数据上的表现进行评估;

        ④ 模型部署和优化 → 将模型部署到实际环境中,并对其进行优化,包括压缩、加速、调参;

在这四个步骤中,最宝贵的是数据的收集和准备(一批好的数据蛮贵的)。当然,在解决机器学习问题中最困难的是② 模型的选择,不同的模型更适合不同类型的数据和不同的问题。

具体可以看下表:(源自官网Choosing the right estimator — scikit-learn 1.2.2 documentation)

 

四、sklearn库在机器学习中的应用

1、数据预处理

sklearn.preprocessing模块提供了一些常用的数据预处理函数,如缩放、标准化、二值化等,可以用来对原始数据进行处理和转换,使其更适合机器学习算法的处理。

例如:

from sklearn import preprocessing
import numpy as np

# 创建一些随机数据
data = np.random.rand(5, 2)

# 标准化数据
scaler = preprocessing.StandardScaler().fit(data)
scaled_data = scaler.transform(data)

print(scaled_data)

样例输出:

[[-0.36369316 -0.88624935]
 [ 1.60663227  0.65821309]
 [-0.94306714 -0.8578848 ]
 [ 0.67229355  1.65105326]
 [-0.97216552 -0.56513221]]

2、特征提取

sklearn.feature_extraction模块提供了一些常用的特征提取函数,如文本特征提取、图像特征提取等,可以用来从原始数据中提取有用的特征,以便用于机器学习算法的处理。

例如:

from sklearn.feature_extraction.text import CountVectorizer

# 创建一些文本数据
corpus = [
    'This is the first document.',
    'This is the second second document.',
    'And the third one.',
    'Is this the first document?',
]

# 提取文本特征
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)

print(X.toarray())

样例输出:

[[0 1 1 1 0 0 1 0 1]
 [0 1 0 1 0 2 1 0 1]
 [1 0 0 0 1 0 1 1 0]
 [0 1 1 1 0 0 1 0 1]]

3、模型选择与评估

sklearn.model_selection模块提供了一些常用的模型选择和评估工具,如交叉验证、网格搜索、评估指标等,可以用来选择最优的模型和调整模型参数,以及评估模型的性能。

例如:

from sklearn.model_selection import GridSearchCV
from sklearn import svm, datasets

# 加载数据
iris = datasets.load_iris()

# 定义模型和参数
parameters = {'kernel': ('linear', 'rbf'), 'C': [1, 10]}

svc = svm.SVC()

# 进行网格搜索
clf = GridSearchCV(svc, parameters)
clf.fit(iris.data, iris.target)

# 输出最优模型参数和得分
print(clf.best_params_)
print(clf.best_score_)

样例输出:

{'C': 1, 'kernel': 'linear'}
0.9800000000000001

五、常用的sklearn函数

1、数据集划分

        函数:train_test_split

        用途:将数据集划分为训练集和测试集,以便用于模型的训练和评估

样例:

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 加载数据集
iris = load_iris()

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

样例输出:

(120, 4) (30, 4) (120,) (30,)

2、特征选择

        函数:SelectKBest

        用途:选择与目标变量最相关的K个特征,以提高模型的性能和效率。

样例:

from sklearn.datasets import load_breast_cancer
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

# 加载数据集
data = load_breast_cancer()

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# 特征选择
selector = SelectKBest(score_func=f_classif, k=10)
X_train_new = selector.fit_transform(X_train, y_train)
X_test_new = selector.transform(X_test)

# 训练模型
clf = SVC()
clf.fit(X_train_new, y_train)

# 评估模型
score = clf.score(X_test_new, y_test)

print("Accuracy:", score)

        上述示例中,首先加载了一个乳腺癌数据集,然后使用train_test_split函数将数据集划分为训练集和测试集。接下来,使用SelectKBest函数进行特征选择,选择了10个最相关的特征,然后将训练集和测试集中的特征向量转换为只包含选择的特征向量的新特征向量。最后,使用支持向量机模型训练新的特征向量和目标变量,然后使用测试集评估模型性能。

3、特征缩放

        函数:StandardScaler

        用途:将特征缩放到均值为0、方差为1的范围内,以便提高模型的训练速度和准确性

 样例:

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

# 加载数据集
iris = load_iris()

# 缩放数据集
scaler = StandardScaler()
X_scaled = scaler.fit_transform(iris.data)

print(X_scaled[:5])

样例输出:

[[-0.90068117  1.01900435 -1.34022653 -1.3154443 ]
 [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ]
 [-1.38535265  0.32841405 -1.39706395 -1.3154443 ]
 [-1.50652052  0.09821729 -1.2833891  -1.3154443 ]
 [-1.02184904  1.24920112 -1.34022653 -1.3154443 ]]

4、模型训练

        函数:fit

        用途:对数据进行训练,以得到一个机器学习模型。

 样例:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

# 加载数据集
iris = load_iris()

# 训练决策树模型
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)

print(clf)

5、模型预测

        函数:predict

        用途:对新数据进行预测,以得到模型的输出结果。

样例:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

# 加载数据集
iris = load_iris()

# 训练决策树模型
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)

# 预测新数据
y_pred = clf.predict([[5.1, 3.5, 1.4, 0.2]])

print(y_pred)

输出:

[0]

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于卷积神经网络进行股价预测(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 CNN是一种人工神经网络,CNN的结构可以分为3层: 卷积层(Convolutional Layer) - 主要作用是提取特征。 …

C语言基础——流程控制语句

文章目录一、流程控制语句 -- 控制程序的运行过程 9条(一)、条件选择流程控制语句:if语句if……else……语句if……else if……语句switch语句(二)、循环流程控制语句:for语句while语句do while……语句co…

Linux学习之端口、网络协议及查看端口占用情况

端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。 HTTP协议:   HTTP协议(超文本传输协议)是一种网络通信协议,它允许将超…

Mac和Linux安装Mongodb教程

Mac教程 在mongodb的官网中有mac环境的安装配置说明 在mac上安装mongodb有两种方式: (1)使用Homebrew来安装,如果电脑中有Homebrew,安装起来就比较简单,如果没有可以安装一个,以后安装其他的…

【C++学习】多态

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! 多态🍕多态🍟构成多态的条件🍟C11 final override🍟重…

thinkphp+vue水果购物商城网站

需要解决的主要问题: 1、网页编程环境和工具。 2、后台数据库的管理。 3、网站的基本功能建设。 4、对比实际应用中的购物网站的功能和运作流程,完善程序功能。 水果购物商城系统的主要使用者分为管理员;个人中心、用户管理、水果分类管理…

支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了

支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了 熟悉RT-Thread和瑞萨MCU的朋友都知道,当前RT-Thread仓库的主线代码是不支持RA2E1这个BSP的。刚好,最近我在联合瑞萨推广一个叫《致敬未来的攻城狮计划》,使用的就是RA2E1开发板&…

ES6技术总结与测试用例

一、介绍 ES6全称是ECMAScript ECMAScript 和 JavaScript 的关系 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司&#xff0c…

连接数据库的方法和方式

前景说明: 在我们刚开始使用数据库的时候,发现只能在mysql编辑器里面使用sql语句来完成对数据库的操作,那我们怎么来通过Java来操控数据库呢?这个时候就有了JDBC的出现。 1.什么是JDBC JDBC 指java数据库连接&#xff08…

c#文案语音配图片一键生成视频

高手略过吧,功能太简单,我自己都不好意思。。 这个是我自己的需要,做产品类的短视频,东搞西搞剪辑啊啥的,特别麻烦,所以先搞这个最简版,以后再一步步丰富功能。 需求:几张图片生成…

网络安全行业0-5年规划,零基础如何入门网络渗透?

前言 网络安全这个行业优势有:需求量大,人才紧急,门槛低,工资高。对于许多未曾涉足IT行业「小白」来说,深入地学习网络安全是一件十分困难的事。 关于我 本人是一位90后奇安信驻场网络安全工程师。上海交通大学软件…

Web前端学习:章四 -- JavaScript初级(四)-- BOM

138:Object数据格式简介 1、object对象 JS中独有 的一种数据格式 名字可以随便取,值一般就那几种数据格式 139:BOM - JS跳转页面 BOM Browser Object Model:浏览器对象模型 使用JavaScript控制浏览器交互 控制浏览器里面的内…

【数据结构与算法】队列和栈的相互实现以及循环队列

目录🌔一.用队列实现栈🌙1.题目描述🌙2.思路分析🌙3.代码实现⛈二.用栈实现队列☔1.题目描述☔2.思路分析☔3.代码实现🌈三.实现循环队列🌔一.用队列实现栈 🌙1.题目描述 我们先看一下题目链接…

大数据技术之Hive SQL题库-初级

第一章环境准备1.1 建表语句hive>-- 创建学生表 DROP TABLE IF EXISTS student; create table if not exists student_info(stu_id string COMMENT 学生id,stu_name string COMMENT 学生姓名,birthday string COMMENT 出生日期,sex string COMMENT 性别 ) row format delim…

STM32学习(九)

IWDG的本质 Independent watchdog,即独立看门狗。 本质是:能产生系统复位信号的计时器。 递减的计数器。时钟由独立的RC振荡器提供(不是来自于主时钟HSE或HSI),可在待机或者停止模式下运行。看门狗被激活后&#xff…

【云原生 • Docker】cAdvisor+Prometheus+Grafana 10分钟搞定Docker容器监控平台

文章目录cAdvisorPrometheusGrafana 10分钟搞定Docker容器监控平台cAdvisor部署Prometheus部署Grafana部署cAdvisorPrometheusGrafana 10分钟搞定Docker容器监控平台 cAdvisor(Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的使用情况和性…

【网络安全必备知识】本地提权漏洞分析

0. 前言 CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞,原本以为有利用代码会很好分析,但是结果花费了很长时间,难点主要了两个:漏洞点定位和漏洞利用代码分析,欢迎指正。 1. 漏洞简介 根据官方信息&a…

【数据结构】二叉树的遍历以及基本操作

目录 1.树形结构 1.概念 2.二叉树 2.1概念 2.2 两种特殊的二叉树 2.3二叉树的存储 2.4二叉树的基本操作 1.手动快速创建一棵简单的二叉树 2.二叉树的遍历 (递归) 3.二叉树的层序遍历 4.获取树中节点的个数 5.获取叶子节点的个数 6.获取第K层节点的个数 7.获取二叉…

Python深度学习实战:人脸关键点(15点)检测pytorch实现

引言 人脸关键点检测即对人类面部若干个点位置进行检测,可以通过这些点的变化来实现许多功能,该技术可以应用到很多领域,例如捕捉人脸的关键点,然后驱动动画人物做相同的面部表情;识别人脸的面部表情,让机…

线程池的讲解和实现

🚀🚀🚀🚀🚀🚀🚀大家好,今天为大家带来线程池相关知识的讲解,并且实现一个线程池 🌸🌸🌸🌸🌸🌸🌸🌸…
最新文章