Scikit-Learn 基础教程

目录

🐋Scikit-Learn 基础教程

🐋Scikit-Learn 简介

🐋 数据预处理

🦈数据集导入

🦈数据清洗

🦈特征选择

🦈特征标准化

🐋 模型选择

🦈分类模型

🦈回归模型

🦈聚类模型

🐋模型训练与评估

🦈交叉验证

🦈超参数调优

🐋 模型保存与加载

🐋 实战案例

🦈分类问题:手写数字识别

🦈回归问题:波士顿房价预测

🦈聚类问题:鸢尾花数据集聚类分析

🐋总结


🐋Scikit-Learn 基础教程

  • Scikit-Learn(简称 sklearn)是一个基于 Python 的机器学习库。它构建在 NumPy、SciPy 和 Matplotlib 之上,为各种机器学习任务提供了简单而高效的工具。本文将详细解析 Scikit-Learn 的基础知识,并通过具体示例来展示其应用。

🐋Scikit-Learn 简介

  • Scikit-Learn 是一个开源的机器学习库,由 David Cournapeau 在 2007 年创建,并在 2010 年由 INRIA 进行发布。它以其简单易用、丰富的功能和良好的文档支持,成为了机器学习领域的重要工具。

Scikit-Learn 提供了以下主要功能:

  • 数据预处理:包括特征提取、归一化和降维等。
  • 模型选择:支持多种分类、回归和聚类算法。
  • 模型评估:提供了丰富的模型评估指标和交叉验证方法。
  • 模型调优:支持网格搜索和随机搜索等超参数调优方法。
  • 模型持久化:支持模型的保存和加载。

🐋 数据预处理

  • 数据预处理是机器学习流程中的重要环节,旨在将原始数据转换为适合模型训练的数据形式。Scikit-Learn 提供了一系列工具来简化这一过程。

🦈数据集导入

  • Scikit-Learn 提供了一些常用数据集,可以通过 datasets 模块直接加载。此外,还可以从 CSV、Excel 等文件中导入数据。
from sklearn import datasets

# 加载鸢尾花数据集
iris = datasets.load_iris()
X, y = iris.data, iris.target

🦈数据清洗

  • 数据清洗包括处理缺失值、去除重复数据等。可以使用 pandas 库进行数据清洗。
import pandas as pd
from sklearn.impute import SimpleImputer

# 加载数据
data = pd.read_csv('data.csv')

# 填补缺失值
imputer = SimpleImputer(strategy='mean')
data_imputed = imputer.fit_transform(data)

🦈特征选择

  • 特征选择是从大量特征中选出对模型训练最有用的特征,Scikit-Learn 提供了多种特征选择方法,如基于方差、相关系数等。
from sklearn.feature_selection import SelectKBest, f_classif

# 选择前 3 个最佳特征
selector = SelectKBest(score_func=f_classif, k=3)
X_new = selector.fit_transform(X, y)

🦈特征标准化

  • 特征标准化是将数据缩放到相同尺度,以提高模型训练效果。常用的标准化方法有 MinMaxScaler、StandardScaler 等。
from sklearn.preprocessing import StandardScaler

# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

🐋 模型选择

  • Scikit-Learn 提供了多种机器学习模型,包括分类、回归和聚类模型。选择适合的模型是机器学习的关键步骤。

🦈分类模型

  • 分类模型用于解决离散标签的预测问题。常用的分类模型有逻辑回归、支持向量机、决策树、随机森林等。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

🦈回归模型

  • 回归模型用于预测连续值。常用的回归模型有线性回归、岭回归、Lasso 回归等。
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 加载波士顿房价数据集
boston = datasets.load_boston()
X, y = boston.data, boston.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测并评估模型
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")

🦈聚类模型

  • 聚类模型用于将数据分组,常用的聚类模型有 KMeans、DBSCAN、层次聚类等。
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 训练 KMeans 模型
model = KMeans(n_clusters=3, random_state=42)
model.fit(X)

# 获取聚类结果
labels = model.labels_

# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.show()

🐋模型训练与评估

🦈交叉验证

  • 交叉验证是一种评估模型性能的技术,通过多次训练和测试来获得更稳定的评估结果。Scikit-Learn 提供了 cross_val_score 函数进行交叉验证。
from sklearn.model_selection import cross_val_score

# 进行 5 折交叉验证
scores = cross_val_score(model, X, y, cv=5)
print(f"Cross-validation scores: {scores}")
print(f"Mean score: {scores.mean()}")

🦈超参数调优

  • 超参数调优是通过调整模型的超参数来提升模型性能。Scikit-Learn 提供了网格搜索和随机搜索方法。
from sklearn.model_selection import GridSearchCV

# 定义参数网格
param_grid = {
    'C': [0.1, 1, 10, 100],
    'solver': ['lbfgs', 'liblinear']
}

# 进行网格搜索
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 最佳参数
print(f"Best parameters: {grid_search.best_params_}")

🐋 模型保存与加载

  • Scikit-Learn 提供了简单的模型保存和加载方法,通过 joblib 库实现。
import joblib

# 保存模型
joblib.dump(model, 'model.pkl')

# 加载模型
loaded_model = joblib.load('model.pkl')

🐋 实战案例

🦈分类问题:手写数字识别

  • 手写数字识别是经典的分类问题,可以使用 MNIST 数据集进行演示。
from sklearn.datasets import load_digits
from sklearn.neighbors import KNeighborsClassifier

# 加载手写数字数据集
digits = load_digits()
X, y = digits.data, digits.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练 KNN 分类器
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

🦈回归问题:波士顿房价预测

  • 波士顿房价预测是经典的回归问题,使用线性回归模型进行演示。
# 已在上文演示

🦈聚类问题:鸢尾花数据集聚类分析

  • 使用 KMeans 对鸢尾花数据集进行聚类分析。
# 已在上文演示

🐋总结

  • 通过本文的介绍,我们了解了 Scikit-Learn 的基本功能和使用方法。Scikit-Learn 提供了从数据预处理、模型选择、模型训练到模型评估和调优的全流程支持,极大地简化了机器学习的实现过程。希望通过本文的学习,读者能更好地掌握 Scikit-Learn,并应用于实际的机器学习任务中。

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

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

相关文章

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images(镜像)生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联: Docker: Docker 是一个开源平台&#…

HTML旋转照片盒子

效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content…

docker私有镜像仓库的搭建及认证

简介&#xff1a; docker私有镜像仓库的搭建及认证 前言 在生产上使用的 Docker 镜像可能包含我们的代码、配置信息等&#xff0c;不想被外部人员获取&#xff0c;只允许内 网的开发人员下载。 Docker 官方提供了一个叫做 registry 的镜像用于搭建本地私有仓库使用。在内部网…

C 基础 - 预处理命令和基本语法详解

#include <stdio.h> //预处理指令int main() //函数 {printf("Hello, World!"); //输出语句return 0; //返回语句 } 目录 一.预处理指令 1.#define #ifdef #ifndef #if #else #elif #endif 2.#inlcude a.新增一个文件 b.#include c.运行结果 d.扩…

Liunx中使用他人身份来执行命令或新建文件

前言 在一些情况下。我们想要借助某个用户的身份来执行命令或者新建文件&#xff0c; 比如某个用户的bash是 nologin 或者 false。 该怎么做呢&#xff1f;&#xff1f; 答&#xff1a;使用 sudo -u 即可。 例如&#xff1a; sudo -u ygz1 touch temp1.txt哈哈哈&#xff0…

【FPGA】Verilog语言从零到精通

接触fpga一段时间&#xff0c;也能写点跑点吧……试试系统地康康呢~这个需要耐心但是回报巨大的工作。正原子&&小梅哥 15_语法篇&#xff1a;Verilog高级知识点_哔哩哔哩_bilibili 1Verilog基础 Verilog程序框架&#xff1a;模块的结构 类比&#xff1a;c语言的基础…

javascript DOM 属性详解:读取、修改、移除

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、读取…

Tesseract-OCR使用 jTessBoxEditor 进行训练及python调用

Python-tesseract 是 python 的光学字符识别 &#xff08;OCR&#xff09; 工具。 也就是说&#xff0c;它将识别并“读取”嵌入在图像中的文本。 1、下载安装 jTessBoxEditor和tesseract-ocr 我下载的是jTessBoxEditor-2.2.0版本的&#xff0c;里面自带tesseract-ocr。 两种…

哪款桌面便签软件安全好用?2024好用便签app推荐

桌面便签软件已经成为许多人日常生活和工作中不可或缺的工具&#xff0c;它们实用、灵活&#xff0c;能够帮助我们快速记录重要信息&#xff0c;提醒任务事项。随着科技的进步&#xff0c;市面上的便签软件层出不穷&#xff0c;功能也越发强大和实用。在众多的便签软件中&#…

Linux网络-使用Tcp协议进行网络通信并通过网络接口实现远端翻译

文章目录 Tcp协议Tcp协议常见API接口1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. int listen(int socket, int backlog);4. int accept(int socket, struct socka…

[.NET开发者的福音]一个方便易用的在线.NET代码编辑工具.NET Fiddle

前言 今天给大家分享一个方便易用的.NET在线代码编辑工具&#xff0c;能够帮助.NET开发人员快速完成代码编写、测试和分享的需求&#xff08;.NET开发者的福音&#xff09;&#xff1a;.NET Fiddle。 .NET Fiddle介绍 我们可以不用再担心环境与庞大的IDE安装的问题&#xff0…

python实现——分类类型数据挖掘任务(图形识别分类任务)

分类类型数据挖掘任务 基于卷积神经网络&#xff08;CNN&#xff09;的岩石图像分类。有一岩石图片数据集&#xff0c;共300张岩石图片&#xff0c;图片尺寸224x224。岩石种类有砾岩&#xff08;Conglomerate&#xff09;、安山岩&#xff08;Andesite&#xff09;、花岗岩&am…

github有趣项目:自制“我的世界” project make

videocodehttps://www.youtube.com/watch?v4O0_-1NaWnY,https://www.bilibili.com/video/BV1oj411p7qM/?https://github.com/jdah/minecraft-weekend MAKE git clone --recurse-submodules https://github.com/jdah/minecraft-weekend.git 正克隆到 minecraft-weekend... …

【笔记】关于brew install ffmpeg出现问题解决

Macos系统需要安装ffmpeg使用&#xff0c;通过brew install ffmpeg安装相关依赖时&#xff0c;当安装至flac时出现下列问题 环境&#xff1a;有代理开启 使用国内数据源 brew install ffmpeg --verbose --debug 安装过程中显示日志 curl: (35) error:1400442E:SSL routines:C…

前端3剑客(第1篇)-初识HTML

100编程书屋_孔夫子旧书网 当今主流的技术中&#xff0c;可以分为前端和后端两个门类。 前端&#xff1a;简单的理解就是和用户打交道 后端&#xff1a;主要用于组织数据 而前端就Web开发方向来说&#xff0c; 分为三门语言&#xff0c; HTML、CSS、JavaScript 语言作用HT…

Apache Pulsar 中文社区有奖问卷调查(2024 上半年度)

Apache Pulsar 中文社区有奖问卷调查&#xff08;2024 上半年度&#xff09; &#x1f4e3; &#x1f4e3; &#x1f4e3; Hi&#xff0c;Apache Pulsar 社区的小伙伴们&#xff0c;社区 2024 上半年度的有奖问卷调查来啦&#xff01; &#x1f64c; 本次调查旨在了解用户使用 …

EIS 2019 webshell

请求中可以确定是http POST流量 同时可以判断是 蚁剑的流量 进一步过滤 http.request.method "POST" 直接追踪其tcp流 得到 列举部分 eVAl(cHr(0x40).ChR(0x69).ChR(0x6e).ChR(0x69).ChR(0x5f).ChR(0x73).ChR(0x65).ChR(0x74).ChR(0x28)直接输出一下 内容 <…

数据治理基础知识

文章目录 基本概念相关名词术语数据治理对象 基本概念 1&#xff09;从管理者视角看数据治理 数据治理是企业发展战略的组成部分&#xff0c;是指导整个集团进行数字化变革的基石&#xff0c;要将数据治理纳入企业的顶 层规划&#xff0c;各分/子公司、各业务部门都需要按照企…

智慧园区整理技术方案(ppt,软件全套建设方案)

智慧园区管控平台整体技术方案 1.平台概述 2.公共安全 3.物业管理 4.综合管理 5.企业服务 平台规划&#xff0c;整理技术架构搭建&#xff0c;统一门户&#xff0c;lot物联平台&#xff0c;视频云管理平台&#xff0c;GIS服务平台&#xff0c;服务器架构&#xff0c;统一身份认…

发现一个ai工具网站

网址 https://17yongai.com/ 大概看了下&#xff0c;这个网站收集的数据还挺有用的&#xff0c;有很多实用的ai教程。 懂ai工具的可以在这上面找找灵感。