探索Scikit-learn:Python中的机器学习宝库
探索Scikit-learn:Python中的机器学习宝库
引言
在数据科学和机器学习的世界中,Python无疑是最受欢迎的编程语言之一。而在Python的众多机器学习库中,Scikit-learn无疑是最闪耀的明星之一。Scikit-learn是一个开源的Python库,它提供了简单高效的工具用于数据挖掘和数据分析,建立在NumPy、SciPy和matplotlib之上。它包含了从数据预处理到模型训练、评估和选择的完整流程,是数据科学家和机器学习工程师的必备工具。
本文将深入探讨Scikit-learn库的各个方面,包括其核心功能、常用算法、数据处理技巧、模型评估方法以及实际应用案例。我们将通过详细的代码示例和解释,帮助读者全面理解Scikit-learn的强大功能,并能够在实际项目中灵活运用。
一、Scikit-learn简介
1.1 Scikit-learn的历史与发展
Scikit-learn项目始于2007年,由David Cournapeau在Google Summer of Code项目中启动。随后,许多开发者和研究人员加入了该项目,逐渐形成了一个活跃的社区。Scikit-learn的设计目标是提供简单易用的API,使得机器学习算法的应用变得简单快捷。经过多年的发展,Scikit-learn已经成为Python机器学习生态系统中最重要的一部分。
1.2 Scikit-learn的特点
Scikit-learn具有以下几个显著特点:
- 简单易用:Scikit-learn提供了统一的接口,使得各种机器学习算法的使用变得非常简单。
- 功能强大:涵盖了从数据预处理到模型训练、评估和选择的完整流程。
- 文档齐全:Scikit-learn的官方文档非常详细,包含了大量的示例和教程,方便用户学习和使用。
- 社区活跃:Scikit-learn拥有一个活跃的社区,用户可以在社区中寻求帮助和分享经验。
1.3 安装Scikit-learn
在开始使用Scikit-learn之前,首先需要安装它。可以通过以下命令使用pip安装Scikit-learn:
pip install scikit-learn
或者使用conda安装:
conda install scikit-learn
安装完成后,可以通过以下命令检查是否安装成功:
import sklearn
print(sklearn.__version__)
二、Scikit-learn的核心功能
2.1 数据预处理
数据预处理是机器学习流程中非常重要的一步。Scikit-learn提供了丰富的数据预处理工具,包括数据清洗、特征选择、特征缩放等。
2.1.1 数据清洗
在实际的数据集中,常常存在缺失值、异常值等问题。Scikit-learn提供了SimpleImputer
类来处理缺失值。例如,可以使用均值、中位数或众数来填充缺失值。
from sklearn.impute import SimpleImputer
import numpy as np# 创建一个包含缺失值的数据集
X = np.array([[1, 2], [np.nan, 3], [7, 6]])# 使用均值填充缺失值
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)
print(X_imputed)
2.1.2 特征缩放
在机器学习中,特征的尺度不一致可能会导致模型训练效果不佳。Scikit-learn提供了StandardScaler
和MinMaxScaler
等工具来进行特征缩放。
from sklearn.preprocessing import StandardScaler# 创建一个数据集
X = np.array([[1, 2], [3, 4], [5, 6]])# 标准化处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
2.2 特征选择
特征选择是从原始特征中选择出最有用的特征,以提高模型的性能。Scikit-learn提供了多种特征选择方法,如方差阈值、单变量特征选择、递归特征消除等。
2.2.1 方差阈值
方差阈值法是通过计算各个特征的方差,选择方差大于某个阈值的特征。
from sklearn.feature_selection import VarianceThreshold# 创建一个数据集
X = np.array([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])# 选择方差大于0.1的特征
selector = VarianceThreshold(threshold=0.1)
X_selected = selector.fit_transform(X)
print(X_selected)
2.2.2 递归特征消除
递归特征消除(RFE)是一种通过递归地构建模型并选择最重要的特征的方法。
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression# 创建一个数据集
X = np.array([[1, 2, 3, 4], [1, 3, 4, 5], [2, 4, 5, 6]])
y = np.array([0, 1, 0])# 使用逻辑回归作为基模型,选择2个最重要的特征
model = LogisticRegression()
rfe = RFE(model, n_features_to_select=2)
X_selected = rfe.fit_transform(X, y)
print(X_selected)
2.3 模型训练与评估
Scikit-learn提供了丰富的机器学习算法,包括分类、回归、聚类、降维等。同时,Scikit-learn还提供了多种模型评估方法,如交叉验证、网格搜索等。
2.3.1 分类算法
Scikit-learn提供了多种分类算法,如逻辑回归、支持向量机、决策树、随机森林等。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用随机森林分类器
model = RandomForestClassifier()
model.fit(X_train, y_train)# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
2.3.2 回归算法
Scikit-learn提供了多种回归算法,如线性回归、岭回归、Lasso回归等。
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加载波士顿房价数据集
boston = load_boston()
X, y = boston.data, boston.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, 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"均方误差: {mse:.2f}")
2.3.3 模型评估
Scikit-learn提供了多种模型评估方法,如交叉验证、网格搜索等。
from sklearn.model_selection import cross_val_score# 使用交叉验证评估模型
scores = cross_val_score(model, X, y, cv=5)
print(f"交叉验证得分: {scores.mean():.2f}")
2.4 模型选择与调优
在实际应用中,选择合适的模型并进行调优是非常重要的。Scikit-learn提供了多种模型选择和调优的工具,如网格搜索、随机搜索等。
2.4.1 网格搜索
网格搜索是一种通过遍历给定的参数组合来寻找最佳模型参数的方法。
from sklearn.model_selection import GridSearchCV# 定义参数网格
param_grid = {'n_estimators': [10, 50, 100],'max_depth': [None, 10, 20]
}# 使用网格搜索
grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)# 输出最佳参数
print(f"最佳参数: {grid_search.best_params_}")
2.4.2 随机搜索
随机搜索是一种通过随机采样参数组合来寻找最佳模型参数的方法。
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint# 定义参数分布
param_dist = {'n_estimators': randint(10, 100),'max_depth': [None, 10, 20]
}# 使用随机搜索
random_search = RandomizedSearchCV(RandomForestClassifier(), param_dist, n_iter=10, cv=5)
random_search.fit(X_train, y_train)# 输出最佳参数
print(f"最佳参数: {random_search.best_params_}")
三、Scikit-learn的实际应用案例
3.1 手写数字识别
手写数字识别是机器学习中的一个经典问题。我们可以使用Scikit-learn中的load_digits
数据集来训练一个分类模型。
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载手写数字数据集
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.2, random_state=42)# 使用支持向量机分类器
model = SVC()
model.fit(X_train, y_train)# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
3.2 图像分类
图像分类是计算机视觉中的一个重要任务。我们可以使用Scikit-learn中的fetch_olivetti_faces
数据集来训练一个图像分类模型。
from sklearn.datasets import fetch_olivetti_faces
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# 加载Olivetti人脸数据集
faces = fetch_olivetti_faces()
X, y = faces.data, faces.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用随机森林分类器
model = RandomForestClassifier()
model.fit(X_train, y_train)# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
3.3 文本分类
文本分类是自然语言处理中的一个重要任务。我们可以使用Scikit-learn中的fetch_20newsgroups
数据集来训练一个文本分类模型。
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score# 加载20个新闻组数据集
newsgroups = fetch_20newsgroups(subset='all')
X, y = newsgroups.data, newsgroups.target# 将文本数据转换为TF-IDF特征向量
vectorizer = TfidfVectorizer()
X_vectorized = vectorizer.fit_transform(X)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.2, random_state=42)# 使用朴素贝叶斯分类器
model = MultinomialNB()
model.fit(X_train, y_train)# 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
四、Scikit-learn的高级功能
4.1 管道(Pipeline)
Scikit-learn的管道功能可以将多个数据处理步骤和模型训练步骤组合在一起,形成一个完整的流程。这样可以简化代码,并避免数据泄露问题。
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression# 创建一个管道
pipeline = Pipeline([('scaler', StandardScaler()),('classifier', LogisticRegression())
])# 使用管道进行训练和预测
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
4.2 特征工程
特征工程是机器学习中非常重要的一环。Scikit-learn提供了多种特征工程工具,如多项式特征、交互特征等。
from sklearn.preprocessing import PolynomialFeatures# 创建多项式特征
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)# 使用多项式特征训练模型
model = LogisticRegression()
model.fit(X_poly, y)
4.3 模型持久化
在实际应用中,训练好的模型需要保存下来以便后续使用。Scikit-learn提供了joblib
工具来实现模型的持久化。
import joblib# 保存模型
joblib.dump(model, 'model.pkl')# 加载模型
loaded_model = joblib.load('model.pkl')
五、总结
Scikit-learn是一个功能强大且易于使用的机器学习库,涵盖了从数据预处理到模型训练、评估和选择的完整流程。通过本文的介绍,读者应该对Scikit-learn的核心功能、常用算法、数据处理技巧、模型评估方法以及实际应用案例有了全面的了解。希望本文能够帮助读者在实际项目中灵活运用Scikit-learn,提升机器学习项目的效果。
Scikit-learn的官方文档非常详细,包含了大量的示例和教程,建议读者在实际使用中多参考官方文档。同时,Scikit-learn拥有一个活跃的社区,用户可以在社区中寻求帮助和分享经验。希望读者能够在Scikit-learn的帮助下,探索机器学习的无限可能。
相关文章:
探索Scikit-learn:Python中的机器学习宝库
探索Scikit-learn:Python中的机器学习宝库 引言 在数据科学和机器学习的世界中,Python无疑是最受欢迎的编程语言之一。而在Python的众多机器学习库中,Scikit-learn无疑是最闪耀的明星之一。Scikit-learn是一个开源的Python库,它…...
活动预告 | Power Hour: Copilot 引领商业应用的未来
课程介绍 智能化时代,商业应用如何实现突破?微软全球副总裁 Charles Lamanna 将为您深度解析,剖析其中关键因素。 在本次线上研讨会中,Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略,深度解读商业…...
MIT6.824 Lecture 2-RPC and Threads Lecture 3-GFS
Lecture 2-RPC and Threads Go语言在多线程、同步,还有很好用的RPC包 《Effective Go》 线程是实现并发的重要工具 在分布式系统里关注多线程的原因: I/O concurrencyParallelismConvenience Thread challenges 用锁解决race问题 Coordination channel…...
MariaDB *MaxScale*实现mysql8读写分离
1.MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 2.MaxScale 实验环境 中间件192.168.12…...
Linux之Http协议分析以及cookie和session
Linux之Http协议分析以及cookie和session 一.分析请求行与响应行1.1请求行1.1.1资源的URL路径1.1.2常见的方法1.2响应行 二.cookie和session2.1cookie2.2session 一.分析请求行与响应行 在我们简单了解了请求和响应的格式以及模拟实现了请求和响应后我们已经可以通过网页来访问…...
Python Pandas(5):Pandas Excel 文件操作
Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…...
iOS主要知识点梳理回顾-3-运行时
运行时(runtime) 运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很…...
[渗透测试]热门搜索引擎推荐— — shodan篇
[渗透测试]热门搜索引擎推荐— — shodan篇 免责声明:本文仅用于分享渗透测试工具,大家使用时,一定需要遵守相关法律法规。 除了shodan,还有很多其他热门的,比如:fofa、奇安信的鹰图、钟馗之眼等࿰…...
java-初识List
List: List 是一个接口,属于 java.util 包,用于表示有序的元素集合。List 允许存储重复元素,并且可以通过索引访问元素。它是 Java 集合框架(Java Collections Framework)的一部分 特点: 有序…...
ElasticSearch集群因索引关闭重打开导致飘红问题排查
背景 某组件向 ElasticSearch 写入数据,从最近某一天开始写入速度变慢,数据一直有积压。推测是 ElasticSearch 集群压力导致的,查看 ElasticSearch 集群状态,发现集群确实处于 red 状态。 本文记录 ElasticSearch 集群因索引关闭…...
idea 如何使用deepseek 保姆级教程
1.安装idea插件codegpt 2.注册deepseek并生成apikey deepseek 开发平台: DeepSeek 3.在idea进行codegpt配置 打开idea的File->Settings->Tools->CodeGPT->Providers->Custom OpenAI Chat Completions的URL填写 https://api.deepseek…...
【大模型】硅基流动对接DeepSeek使用详解
目录 一、前言 二、硅基流动介绍 2.1 硅基流动平台介绍 2.1.1 平台是做什么的 2.2 主要特点与功能 2.2.1 适用场景 三、硅基流动快速使用 3.1 账户注册 3.2 token获取 3.2.1 获取token技巧 四、Cherry-Studio对接DeepSeek 4.1 获取 Cherry-Studio 4.2 Cherry-Stud…...
机器学习数学基础:14.矩阵的公式
1. 操作顺序可交换 对于矩阵 A A A,若存在两种运算 ? ? ?和 ? ? ?,使得 ( A ? ) ? ( A ? ) ? (A^{?})^{?}\ (A^{?})^{?} (A?)? (A?)?,这意味着这两种运算的顺序可以交换。由此我们得到以下三个重要等式: ( A …...
t113-qt
修改QT配置: # # qmake configuration for building with arm-linux-gnueabi-g ## MAKEFILE_GENERATOR UNIX # CONFIG incremental # QMAKE_INCREMENTAL_STYLE sublib# include(../common/linux.conf) # include(../common/gcc-base-unix.conf) # inc…...
SQL自学,mysql从入门到精通 --- 第 14天,主键、外键的使用
1.主键 PRIMARY KEY 主键的使用 字段值不允许重复,且不允许赋NULL值 创建主键 root@mysqldb 10:11: [d1]> CREATE TABLE t3(-> name varchar(10) PRIMARY KEY,-> age int,-> class varchar(8)-> ); Query OK, 0 rows affected (0.01 sec)root@mysqldb 10:…...
整合 Redis 分布式锁:从数据结构到缓存问题解决方案
引言 在现代分布式系统中,Redis 作为高性能的键值存储系统,广泛应用于缓存、消息队列、实时计数器等多种场景。然而,在高并发和分布式环境下,如何有效地管理和控制资源访问成为一个关键问题。Redis 分布式锁正是为了解决这一问题…...
ASP.NET Core WebSocket、SignalR
目录 WebSocket SignalR SignalR的基本使用 WebSocket WebSocket基于TCP协议,支持二进制通信,双工通信。性能和并发能力更强。WebSocket独立于HTTP协议,不过我们一般仍然把WebSocket服务器端部署到Web服务器上,因为可以借助HT…...
array_walk. array_map. array_filter
1. array_walk 函数 array_walk 用于遍历数组并对每个元素执行回调函数。它不会受到数组内部指针位置的影响,会遍历整个数组。回调函数接收的前两个参数分别是元素的值和键名,如果有第三个参数,则数组所有的值都共用这个参数。 示例代码&am…...
解锁国内主流前端与后端框架
前端框架大揭秘 在当今的 Web 开发领域,前端框架的地位愈发举足轻重。随着用户对 Web 应用交互性和体验性要求的不断攀升,前端开发不再仅仅是简单的页面布局与样式设计,更需要构建复杂且高效的用户界面。前端框架就像是一位得力助手…...
Nginx进阶篇 - nginx多进程架构详解
文章目录 1. nginx的应用特点2. nginx多进程架构2.1 nginx多进程模型2.2 master进程的作用2.3 进程控制2.4 worker进程的作用2.5 worker进程处理请求的过程2.6 nginx处理网络事件 1. nginx的应用特点 Nginx是互联网企业使用最为广泛的轻量级高性能Web服务器,其特点是…...
【PDF提取内容】如何批量提取PDF里面的文字内容,把内容到处表格或者批量给PDF文件改名,基于C++的实现方案和步骤
以下分别介绍基于 C 批量提取 PDF 里文字内容并导出到表格,以及批量给 PDF 文件改名的实现方案、步骤和应用场景。 批量提取 PDF 文字内容并导出到表格 应用场景 文档数据整理:在处理大量学术论文、报告等 PDF 文档时,需要提取其中的关键信…...
HTML之CSS定位、浮动、盒子模型
HTML之CSS定位、浮动、盒子模型 定位 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…...
【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java基础面经 📚本系列文章为个…...
使用scoop 下载速度慢怎么办
在国内使用 Scoop 下载速度慢是一个常见问题,主要是因为 Scoop 默认的软件源(bucket)和下载服务器通常位于国外。以下是一些提高下载速度的方法: 1. 更换 Scoop 镜像源(Bucket 镜像): 原理&…...
使用Redis解决使用Session登录带来的共享问题
在学习项目的过程中遇到了使用Session实现登录功能所带来的共享问题,此问题可以使用Redis来解决,也即是加上一层来解决问题。 接下来介绍一些Session的相关内容并且采用Session实现登录功能(并附上代码),进行分析其存在…...
OnlyOffice docker 运行(详细)
下载镜像 推荐使用 GitHub Action 方式下载: Action 地址:https://github.com/Shixuebin/DockerTarBuilder 教程地址:https://www.bilibili.com/video/BV1EZ421M7mL/ docker 镜像安装 docker load -i xxx.tar镜像运行 docker run -i -t -…...
CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战
前一篇文章,学习率调整策略 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started CNN 卷积神经网络 CNN什么是卷积工作原理深度学习的卷积运算提取特征不同特征核的效果比较卷积核感受野共享权重池化 示例源码 …...
自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同
目录 1、引言 2、主要内容 2.1、定位对比:感知与规划的全维覆盖 2.2、数据与技术特性对比 2.3、技术协同:构建全栈研发生态 2.4、应用场景与评估体系 2.5、总结与展望 3、参考文献 1、引言 随着自动驾驶技术向全栈化迈进,Motional 团…...
02.07 TCP服务器与客户端的搭建
一.思维导图 二.使用动态协议包实现服务器与客户端 1. 协议包的结构定义 首先,是协议包的结构定义。在两段代码中,pack_t结构体都被用来表示协议包: typedef struct Pack {int size; // 记录整个协议包的实际大小enum Type type; …...
基于机器学习时序库pmdarima实现时序预测
目录 一、Pmdarima实现单变量序列预测1.1 核心功能与特性1.2 技术优势对比1.3 python案例1.3.1 时间序列交叉验证1.3.1.1 滚动交叉验证1.3.1.2 滑窗交叉验证 时间序列相关参考文章: 时间序列预测算法—ARIMA 基于VARMAX模型的多变量时序数据预测 基于机器学习时序库…...
计算机视觉的研究方向、发展历程、发展前景介绍
以下将分别从图像分类、目标检测、语义分割、图像分割(此处应主要指实例分割)四个方面,为你介绍研究生人工智能计算机视觉领域的应用方向、发展历程以及发展前景。 文章目录 1.图像分类应用方向发展历程发展前景 2.目标检测应用方向发展历程…...
NLP_[2]-认识文本预处理
文章目录 1 认识文本预处理1 文本预处理及其作用2. 文本预处理中包含的主要环节2.1 文本处理的基本方法2.2 文本张量表示方法2.3 文本语料的数据分析2.4 文本特征处理2.5数据增强方法2.6 重要说明 2 文本处理的基本方法1. 什么是分词2 什么是命名实体识别3 什么是词性标注 1 认…...
单硬盘槽笔记本更换硬盘
背景 本人的笔记本电脑只有一个硬盘槽,而且没有M.2的硬盘盒,只有一个移动硬盘 旧硬盘:512G 新硬盘:1T 移动硬盘:512G 参考链接:https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…...
在stm32mp257的yocto中设置用户名和密码
在STM32MP257的Yocto环境中设置用户名和密码,通常需要修改根文件系统的用户配置。以下是详细步骤: 1. 设置root密码 默认情况下,root账户可能无密码或使用默认密码。通过以下方法修改: 方法1:在local.conf中直接设置 # 打开Yocto工程的配置文件 vi conf/local.conf# 添…...
力扣--链表
相交链表 法一: 把A链表的节点都存HashSet里,遍历B链表找相同的节点 法二: 把A、B指针都移到末尾,再同时往回走,每次往回走都比较 当前节点的下一节点(a.next b.next ?)是否相同,当不相同…...
【redis】数据类型之hash
Redis中的Hash数据类型是一种用于存储键值对集合的数据结构。与Redis的String类型不同,Hash类型允许你将多个字段(field)和值(value)存储在一个单独的key下,从而避免了将多个相关数据存储为多个独立的key。…...
多路文件IO
一、思维导图...
计算机网络面经
文章目录 基础HTTPHTTP报文结构 (注意)RPC和http的区别TCPTCP报文结构(注意)IP基础 HTTP HTTP报文结构 (注意) 请求行:请求方法get/post,url,http版本 请求头:用户标识,请求体长度,类型,cookie 请求体:内容 状态行:状态码,状态消息、(http版本) 响应头:内…...
非递减子序列(力扣491)
这道题的难点依旧是去重,但是与之前做过的子集类问题的区别就是,这里是求子序列,意味着我们不能先给数组中的元素排序。因为子序列中的元素的相对位置跟原数组中的相对位置是一样的,如果我们改变数组中元素的顺序,子序…...
00_Machine Vision_基础介绍
基础概念 由于计算机只能处理离散的数据,所以需要将连续的图片转化为离散的数据。主要包含:空间离散以及灰度值离散 空间离散:将图片的像素点离散化,即将图片的像素点转化为一个个的小方块,即为图片的分辨率。分辨率…...
排错 -- 用React.js,Solidity,智能合约构建最新区块链应用
真枪实弹:第一个Web3项目【上集】用React.js,Solidity,智能合约构建最新区块链应用详细教程 构建web跟随b站教程中遇到了很多错误,从今天开始构建完整的应用,在此记录一些排错。 问题情况1:跟随视频后无Src文件 问题情况1解决方法࿱…...
【WB 深度学习实验管理】利用 Hugging Face 实现高效的自然语言处理实验跟踪与可视化
本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在自然语言处理领域,使用Hugging Face的Transformers库进行模型训练已经成为主流。然而,随着模型复…...
ximalaya(三) playUriList值解密--webpack
本文主要介绍解密音频播放url参数。 本文仅代表个人理解,如有其他建议可在评论区沟通。 声明 仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除 目标地址:aHR0cHM6Ly93d3cueGltYWxheWEuY29tL3NvdW5k…...
ES6 Map 数据结构是用总结
1. Map 基本概念 Map 是 ES6 提供的新的数据结构,它类似于对象,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也可以跟踪键值对的原始插入顺序。 1.1 基本用法 // 创建一个空Map…...
使用Redis实现业务信息缓存(缓存详解,缓存更新策略,缓存三大问题)-更新中
一、什么是缓存? 缓存是一种高效的数据存储方式,它通过将数据保存在内存中来提供快速的读写访问。这种机制特别适用于需要高速数据访问的应用场景,如网站、应用程序和服务。在处理大量数据和高并发请求时, 缓存能显著提高性能和用…...
Windows 系统下使用 Ollama 离线部署 DeepSeek - R1 模型指南
引言 随着人工智能技术的飞速发展,各类大语言模型层出不穷。DeepSeek - R1 凭借其出色的语言理解和生成能力,受到了广泛关注。而 Ollama 作为一款便捷的模型管理和部署工具,能够帮助我们轻松地在本地环境中部署和使用模型。本文将详细介绍如…...
1.2 变革里程碑:Transformer 的崛起
变革里程碑:Transformer 的崛起 一、架构革命的核心驱动力 #mermaid-svg-hsXnwHI0wO2qZaqb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}#mermaid-svg-hsXnwHI0wO2qZaqb .error-icon{fill:#552222;}#mermaid-sv…...
SpringBoot速成(八)登录实战:未登录不能访问 P5-P8
1.登录 package com.itheima.springbootconfigfile.controller;import com.itheima.springbootconfigfile.pojo.Result; import com.itheima.springbootconfigfile.pojo.User; import com.itheima.springbootconfigfile.service.UserService;import com.itheima.springbootco…...
[Unity角色控制专题] 详细说明如何使用Character Controller配合脚本实现类似MC的第一人称控制(仅移动与视角摇晃)
关于角色控制器的基本用法我就不做介绍了,请自行查看相关文档: Unity - Manual: Character Controller component reference 本文用到了三角函数和插值函数,非常简单,如有疑问请查询以下文章: Unity中的数学 之 Mathf_uni…...
2025_2_9 C语言中队列
1.队列(先进先出) 队列也是一种受限制的线性结构 它只能在一端添加元素,在另一端访问,删除元素 (队首插入,队尾删除) 因为链表实现没有数组实现快,所以队列大多数是用数组实现的 q…...