当前位置: 首页 > news >正文

【深度学习基础】一篇入门模型评估指标(分类篇)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

目录

1. 前言

2. 模型评估综述

2.1 什么是模型评估

2.2 评估类型

2.3 模型泛化能力

2.4 过拟合与欠拟合

3. 常见的分类模型评估方式

3.1 准确率(Accuracy)

3.2 精确率(Precision)

3.3 召回率(Recall)

3.4 F1-score

3.5 ROC曲线及AUC值

3.6 PR曲线

4. 代码实现

5. 总结 


1. 前言

本篇针对的是刚刚接触机器学习的友友~~

在猫猫刚刚入门机器学习时,有位学长问我,召回率是什么?

猫猫那是一脸懵逼,然后他又来了三连问。准确率是什么?精准率是什么?有什么曲线评估模型性能吗?

在当时猫猫的脑海中,模型好坏不就是看他预测准了多少个样本,准确率多少吗?哪来那么多东西,哈哈哈哈哈哈,机器学习还是好玩的。

想到很多刚刚入门的友友也可能苦恼于模型评估指标,猫猫便写了这篇博客,希望能给大家带来点帮助。

2. 模型评估综述

2.1 什么是模型评估

       模型评估是指在机器学习中,对于一个具体方法输出的最终模型,使用一些指标和方法来评估它的泛化能力。这一步通常在模型训练和模型选择之后,正式部署模型之前进行。模型评估不针对模型本身,而是针对问题和数据,因此可以用来评价不同方法的模型的泛化能力,以此决定最终模型的选择。

模型评估:量化模型在解决目标问题上的能力

2.2 评估类型

       机器学习的基本任务大致分为三类,分别是分类(Classification)回归(Regression)聚类(Clustering),在本文仅介绍分类的模型评估。

2.3 模型泛化能力

       模型的泛化能力是机器学习的一个重要概念和指标。是指一个模型在训练集之外的未知数据上的表现能力,泛化能力强的模型能够正确学习到数据的普遍规律并将其运用到新的数据上从而做出准确的预测。

       简单地说,当模型在训练样本上表现良好,并且能在新的数据样本上保持相同的表现,我们就可以说这个模型的泛化能力强。

2.4 过拟合与欠拟合

       过拟合与欠拟合是机器学习中常见的两个概念,描述的是模型在训练数据和未知数据上表现的差异。下图中第一到第三的图分别是欠拟合、正好和过拟合三种状态。

过拟合:

       过拟合表现为在训练数据上表现优秀的那在新数据集上表现较差,通常是因为模型过于复杂,学习到了数据集中的细节和噪声而不是数据的真实分布,因而泛化能力差。

举个很经典的例子,当我们设计一个模型用于判断一个物品是否是树叶,而训练集中有几个样本的叶片边缘带有尖刺,模型作者希望他的模型能够符合贴近他的每一个样本,因而将带有“尖刺边缘”这一不是明显特征的特点纳入了参数中,这样一来,模型就能够完美贴合训练样本,但在应用时会发现模型容易钻牛角尖,会将不带尖刺边缘的样本排除,无法识别不带尖刺边缘的树叶,这就导致了模型的泛化能力差。

解决模型过拟合的问题,有以下几种方法:

  • 增加数据量以提供更多信息,减少噪声的影响
  • 简化模型,减少模型参数的数量
  • 通过交叉验证评估模型的泛化能力

欠拟合:

       欠拟合则与过拟合相反,由于模型过于简单,无法学习到数据的足够特征,无法正确捕捉数据的复杂性和变化,没有学习到数据的规律。这就导致模型不管是在训练样本还是未知样本上的表现都不佳。

常见的解决欠拟合的方法有:

  • 增加模型的复杂度,如增加更多的特征或使用更复杂的模型
  • 收集更多的数据,提供更加丰富的信息给模型
  • 增加训练时间或者调整模型的超参数

3. 常见的分类模型评估方式

       混淆矩阵是分类模型巩固的一个重要工具,可以直观展示模型的预测结果和实际结果之间的关系,通常由以下四个部分构成:

  • 真正类 (True Positives, TP): 模型正确地预测正类的数量。
  • 假负类 (False Negatives, FN): 模型错误地将正类预测为负类的数量。
  • 假正类 (False Positives, FP): 模型错误地将负类预测为正类的数量。
  • 真负类 (True Negatives, TN): 模型正确地预测负类的数量。

 二元混淆矩阵格式如下:

多元分类矩阵格式如下:

3.1 准确率(Accuracy)

准确率是指模型正确预测的样本总数占总样本总数的比例,其计算公式为:

Accuracy=\frac{TN+TF}{TN+FN+TP+FP}=\frac T{T+F}

3.2 精确率(Precision)

       精确率的概念比较容易与准确率的概念混淆,准确率的目标是所有样本,计算的是所有分类正确样本占总样本的多少,而精确率是指在所有被模型预测为正类的样本中,实际为正类的样本的比例,关注的是被模型分为此类的数据中有多少是正确的。

       当我们使用精确率(下使用Precision代替)作为考量时,优点是不容易出现假正类,但是,当precision值过高时,容易出现模型偏向某一类别的情况,因为此时模型会倾向于预测多数类别而忽略了少数类别的预测。

       举一个例子,假设在一个疾病诊断问题中,疾病发生的实际情况(正类)非常罕见。如果模型仅仅通过预测大多数人都是健康的(负类)来提高Precision,那么它可能会忽略真正的病例,因为这些病例在数据中占比很小。这样的模型虽然精确度高,但其实用性非常有限,因为它未能有效识别和预测少数但重要的正类样本。

       在混淆矩阵中,这表现为某一行的T除以本行上所有数字的和,如下列表格标注了颜色的A行就是红色的TA值除以TA加FA的和。

其公式为:

Precision=\frac{TP}{TP+FP}

3.3 召回率(Recall)

       召回率(下使用Recall替代)衡量的是模型正确识别为正类的实例(真正类)占所有实际正类实例的比例。当recall值高时,模型会更容易捕捉到正类,但也会导致假正类出现的比例增加的情况。

       举个例子说明,假设我们有一个用于检测信用卡欺诈的模型,其中正类(欺诈)非常罕见。在10,000个交易中,可能只有100个是欺诈性的。如果我们只关注召回率,模型可能会被调整为将更多的交易标记为欺诈,以确保它不会错过那些真正的欺诈案例。例如,模型可能会将1,000个交易标记为欺诈,其中包括所有100个真正的欺诈案例和900个实际上是合法的交易。在这种情况下,召回率是100%,因为所有的欺诈交易都被正确地识别了。然而,这样做的代价是产生了很多假正类(False Positives)—那些被错误标记为欺诈的合法交易。这会导致很多不必要的麻烦,比如客户满意度下降和增加的客户服务成本。

       在混淆矩阵中,这表现为某一列中的T除以本列上左右数字的和,如下列表格,计算recall即红色字体的值除以红色和绿色字体的值的和,计算设计的数据包括正确分类的本类型样本的值和被错误分类至本类型的样本的值。

其公式为:

Recall=\frac{TP}{TP+FN}

3.4 F1-score

       正如上面所说的,当我们单独地使Precision值或者Recall值增高,都会使模型走向极端,因而我们引入了F1值,即Recall和Precision的调和平均数,,因为F1值综合考虑了Recall和Precision,因而其尤其适合在数据不平衡(不同类别的样本数据量差异很大)的情况时进行使用。当分数更高时,说明模型再识别少数类方面的能力更强,同时保持了较高的Recall和Precision平衡。其公式如下:

F1=2\times\frac{Precision\times Recall}{Percision+Recall}

       值得一提的是,这是在Recall和Precision的比重相同的同属情况下使用的,如果你认为其中某个值更加重要,你可以使用Fβ-score,其公式为:

F_\beta=(1+\beta^2)\cdot\frac{Precision\cdot Recall}{(\beta^2\cdot Precision)+Recall}

       其中的β是Recall和Precision的比值,当β大于1时,该分数会给予Recall更高的权重。

3.5 ROC曲线及AUC值

       在二分类的过程中,我们通常会设置一个阈值(取值为0到1之间),大于阈值的会被归于正类,小于阈值的会被归为负类,当我们降低阈值时,样本会更容易地被归为正类,但也会更容易出现假正类,反之则更容易出现遗漏的情况,而随着阈值的变化,混淆矩阵也会出现变化,为了直观地体现这种变化,我们引入了ROC曲线。

       在ROC曲线中,x和y轴分别为假阳性率(TPR)真阳性率(FPR),其中,假阳性率表示在所有阴性(即Negative)样本中,被错误地预测为阳性(即Positive)的比例,计算公式为:

FPR=\frac{FP}{FP+TN}

       而真阳性率又称召回率,表示所有实际阳性样本被正确预测为阳性的比例,计算公式为:

TPR=\frac{TP}{TP+FN}

       通过ROC曲线,我们可以明确地直观地看出模型的好坏,为了模型准确率更高,我们自然而然地希望真阳性率更高而假阳性率更低,因此,当曲线越靠近左上角,我们会认定这条曲线所代表的模型判断准确率更高,如下图所示

       这是通过KNN算法和决策树算法对sklearn库内置的乳腺癌库进行训练预测的ROC曲线结果图,如图所示,由于代表KNN算法的折线更靠近左上角,因而我们可以说在这个数据集上,使用了KNN算法的模型表现更好。

       而AUC(Area Under the Curve)值就是指曲线下的面积,当AUC值越接近1,可说明模型的分类性能更好。如下图涂黄的部分就是该曲线的AUC值。

3.6 PR曲线

       PR曲线,即精确率-召回率曲线,它是以召回率(Recall)为x轴,精确率(Precision)为y轴的曲线,在机器学习中,尤其在再不平衡数据集中非常有用。

       当我们在改变模型的分类阈值时,TP、FP和FN等都会发生变化,从而导致Recall和Precision发生变化,PR曲线展示了这种变化关系,可以帮助我们理解模型在不同阈值下的性能表现。通常来说,曲线越靠近右上方,代表模型的表现越好。

       其AUC值同样是一个重要的性能指标,反映了模型在所有可能的分类阈值上的平均效果,当AUC值越大表示模型性能越好。

       如下图所示的是KNN算法和决策树算法对sklearn库内置的乳腺癌库进行训练预测的PR曲线的结果图:

4. 代码实现

使用sklearn库中内置的算法和数据集进行实操,仅仅作为一个补充练习:

from sklearn.datasets import load_breast_cancer  # 导入乳腺癌数据集
from sklearn.model_selection import train_test_split  # 导入数据集分割工具
from sklearn.neighbors import KNeighborsClassifier  # 导入K近邻分类器
from sklearn.tree import DecisionTreeClassifier  # 导入决策树分类器
from sklearn.metrics import roc_curve, auc, precision_recall_curve, average_precision_score  # 导入性能评估工具
import matplotlib.pyplot as plt  # 导入绘图库# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data  # 特征数据
y = data.target  # 标签数据# 将数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  # 将训练集和测试集按8:2的比例拆分# 初始化并训练K近邻分类器
knn_classifier = KNeighborsClassifier(n_neighbors=5)
knn_classifier.fit(X_train, y_train)# 初始化并训练决策树分类器
tree_classifier = DecisionTreeClassifier(random_state=42)
tree_classifier.fit(X_train, y_train)# 预测测试集的概率
y_scores_knn = knn_classifier.predict_proba(X_test)[:, 1]
y_scores_tree = tree_classifier.predict_proba(X_test)[:, 1]# 计算KNN的ROC曲线和AUC值
fpr_knn, tpr_knn, _ = roc_curve(y_test, y_scores_knn)
roc_auc_knn = auc(fpr_knn, tpr_knn)# 计算决策树的ROC曲线和AUC值
fpr_tree, tpr_tree, _ = roc_curve(y_test, y_scores_tree)
roc_auc_tree = auc(fpr_tree, tpr_tree)# 计算KNN的精确度-召回率曲线和平均精确度
precision_knn, recall_knn, _ = precision_recall_curve(y_test, y_scores_knn)
average_precision_knn = average_precision_score(y_test, y_scores_knn)# 计算决策树的精确度-召回率曲线和平均精确度
precision_tree, recall_tree, _ = precision_recall_curve(y_test, y_scores_tree)
average_precision_tree = average_precision_score(y_test, y_scores_tree)# 绘制ROC曲线
plt.figure(figsize=(14, 6))plt.subplot(1, 2, 1)
plt.plot(fpr_knn, tpr_knn, color='darkorange', lw=2, label='KNN (AUC = %0.2f)' % roc_auc_knn)
plt.plot(fpr_tree, tpr_tree, color='green', lw=2, label='Decision Tree (AUC = %0.2f)' % roc_auc_tree)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend(loc="lower right")# 绘制精确度-召回率曲线
plt.subplot(1, 2, 2)
plt.plot(recall_knn, precision_knn, color='blue', lw=2, label='KNN (AP = %0.2f)' % average_precision_knn)
plt.plot(recall_tree, precision_tree, color='purple', lw=2, label='Decision Tree (AP = %0.2f)' % average_precision_tree)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('P-R Curve')
plt.legend(loc="lower left")plt.tight_layout()
plt.show()

5. 总结 

如果想要学习更多深度学习知识,大家可以点个关注并订阅,持续学习、天天进步

你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~

本篇文章转载自 机器学习——常见模型评估指标 - Dronnnnn - 博客园

相关文章:

【深度学习基础】一篇入门模型评估指标(分类篇)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 模…...

D80【 python 接口自动化学习】- python基础之HTTP

day80 requests请求加入headers 学习日期:20241126 学习目标:http定义及实战 -- requests请求加入headers 学习笔记: requests请求加入headers import requestsurlhttps://movie.douban.com/j/search_subjects params{"type":…...

⽂件操作详解

⽬录 一 文件操作的引入 1 为什么使⽤⽂件? 2 什么是⽂件? 3 文件分类(1 从⽂件功能的⻆度来分类:程序⽂件/数据⽂件 2根据数据的组织形式:为⽂本⽂件/⼆进制⽂件) 二 ⽂件的打开和关闭 1 …...

双高(高比例新能源发电和高比例电力电子设备)系统宽频振荡研究现状

1 为什么会形成双高电力系统 (1)新能源发电比例增加 双碳计划,新能源革命,可再生能源逐步代替传统化石能源,未来新能源发电将成为最终能源需求的主要来源。 (2)电力电子设备数量增加 为了实…...

TorchMoji使用教程/环境配置(2024)

TorchMoji使用教程/环境配置(2024) TorchMoji简介 这是一个基于pytorch库,用于将文本分类成不同的多种emoji表情的库,适用于文本的情感分析 配置流程 从Anaconda官网根据提示安装conda git拉取TorchMoji git clone https://gi…...

使用 Python 中的 TripoSR 根据图像创建 3D 对象

使用 Python 中的 TripoSR 根据图像创建 3D 对象 1. 效果图2. 步骤图像到 3D 对象设置环境导入必要的库设置设备创建计时器实用程序上传并准备图像处理输入图像生成 3D 模型并渲染下载.stl 文件展示结果3. 源码4. 遇到的问题及解决参考这篇博客将引导如何使用Python 及 TripoSR…...

Spring 框架中AOP(面向切面编程)和 IoC(控制反转)

在 Spring 框架中,AOP(面向切面编程)和 IoC(控制反转)是两个核心概念,它们分别负责不同的功能。下面我将通过通俗易懂的解释来帮助你理解这两个概念。 IoC(控制反转) IoC 是 Inver…...

电机瞬态分析基础(7):坐标变换(3)αβ0变换,dq0变换

1. 三相静止坐标系与两相静止坐标系的坐标变换―αβ0坐标变换 若上述x、y坐标系在空间静止不动,且x轴与A轴重合,即,如图1所示,则为两相静止坐标系,常称为坐标系,考虑到零轴分量,也称为αβ0坐标…...

Open3D (C++) 生成任意3D椭圆点云

目录 一、算法原理1、几何参数2、数学公式二、代码实现三、结果展示一、算法原理 1、几何参数 在三维空间中,椭圆由以下参数定义: 椭圆中心点 c = ( x 0 , y 0 , z...

5.利用Pandas以及Numpy进行数据清洗

1、缺失值处理 import pandas as pd import numpy as np#创建一张7行5列带有缺失值的表,表中的数据0-100随机生成,索引是python1. df pd.DataFrame(datanp.random.randint(0,100,size(7,5)), index [i for i in pythonl])df.iloc[2,3] Nonedf.iloc[4…...

@Bean注解详细介绍以及应用

目录 一、概念二、应用(一)代码示例1、首先创建一个简单的 Java 类User2、然后创建一个配置类AppConfig3、在其他组件中使用Bean创建的 bean4、通过 Spring 的ApplicationContext来获取UserService并调用其方法 (二)bean的方法名详…...

基于SpringBoot的预制菜销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

从 EXCEL 小白到 EXCEL 高手的成长之路

在职场与日常生活中,Excel 作为一款强大的数据处理与分析工具,扮演着不可或缺的角色。无论是初学者还是资深职场人士,掌握 Excel 技能都能极大地提高工作效率。那么,从一个 Excel 小白蜕变成为 Excel 高手,究竟需要多久…...

【纸飞机串口调试工具】数值显示器及四则运算

目录 纸飞机串口工具介绍软件下载适用场合功能介绍 纸飞机串口工具介绍 纸飞机一款性能强劲且专业的串口/网络/HID调试助手,具有多窗口绘图、关键字高亮、数据分窗和数据过滤等众多功能,可以极大的方便嵌入式开发人员的调试过程。本文介绍数值显示器的四…...

浅谈volatile

volatile有三个特性: (1)可见性 (2)不保证原子性 (3)禁止指令重排 下面我们一一介绍 (一)可见性 volatile的可见性是说共享变量只要修改,就可以被其他线…...

Python3 爬虫 Scrapy的使用

安装完成Scrapy以后&#xff0c;可以使用Scrapy自带的命令来创建一个工程模板。 一、创建项目 使用Scrapy创建工程的命令为&#xff1a; scrapy startproject <工程名> 例如&#xff0c;创建一个抓取百度的Scrapy项目&#xff0c;可以将命令写为&#xff1a; scrapy s…...

多线程篇-4--重点概念1(volatile,Synchronized,内存屏障,MESI协议)

一、volatile &#xff08;1&#xff09;、简述 volatile是java提供的一个关键字&#xff0c;英文意思为不稳定的。 可以保障被声明对象的可见性和一定程度上的有序性&#xff0c;但不能保证操作的原子性。 当一个变量被声明为volatile时&#xff0c;意味着该变量的值会直接从…...

本地学习axios源码-如何在本地打印axios里面的信息

1. 下载axios到本地 git clone https://github.com/axios/axios.git 2. 下载react项目, 用vite按照提示命令配置一下vite react ts项目 npm create vite my-vue-app --template react 3. 下载koa, 搭建一个axios请求地址的服务端 a.初始化package.json mkdir koa-server…...

1、SpringBoo中Mybatis多数据源动态切换

我们以一个实例来详细说明一下如何在SpringBoot中动态切换MyBatis的数据源。 一、需求 1、用户可以界面新增数据源相关信息,提交后,保存到数据库 2、保存后的数据源需要动态生效,并且可以由用户动态切换选择使用哪个数据源 3、数据库保存了多个数据源的相关记录后,要求…...

【浏览器】缓存与存储

我是目录 浏览器缓存为什么需要浏览器缓存&#xff1f;对浏览器的缓存机制的理解协商缓存和强缓存的区别强缓存协商缓存 点击刷新按钮或者按 F5、按 CtrlF5 &#xff08;强制刷新&#xff09;、地址栏回车有什么区别&#xff1f; 浏览器本地存储前端储存的方式有哪些&#xff1…...

积鼎科技携手西北工业大学动力与能源学院共建复杂多相流仿真联合实验室

11月26日&#xff0c;复杂多相流仿真联合实验室揭牌仪式及技术研讨活动在西北工业大学动力与能源学院成功举办。复杂多相流仿真联合实验室是由西北工业大学动力与能源学院牵头&#xff0c;携手上海积鼎信息科技有限公司与三航铸剑&#xff08;西安&#xff09;科技发展有限公司…...

5. langgraph实现高级RAG (Adaptive RAG)

1. 数据准备 from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import WebBaseLoader from langchain_community.vectorstores import Chromaurls ["https://lilianweng.github.io/posts/2023-06-23-age…...

Postman设置接口关联,实现参数化

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这…...

代码随想录day02--链表

移除链表元素 题目 地址&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/ 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 思路是使用虚拟节点的…...

杰发科技AC7803——不同晶振频率时钟的配置

计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…...

ArcGIS栅格影像裁剪工具

1、前言 在最近的栅格转矢量处理过程中&#xff0c;发现二值化栅格规模太大&#xff0c;3601*3601&#xff0c;并且其中的面元太过细碎&#xff0c;通过arcgis直接栅格转面有将近几十万的要素&#xff0c;拿这样的栅格数据直接运行代码&#xff0c;发现速度很慢还难以执行出来结…...

【查询目录】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

docker快速安装zookeeper

一、拉取镜像 docker pull zookeeper:3.9.3 二、启动zookeeper docker run --restartalways -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper:3.9.3 如果需要挂载zookeeper文件及目录&#xff0c;则参数增加&#xff1a; -v /mydata/zookeeper/d…...

MySQL中如何减少回表

在MySQL中&#xff0c;回表是指在使用非聚集索引进行查询时&#xff0c;如果需要获取的数据不在索引页中&#xff0c;就需要根据索引页中的指针返回到数据表中查找实际数据行的过程。这个过程会增加额外的磁盘I/O操作&#xff0c;降低查询性能&#xff0c;特别是在查询大量数据…...

初始Python篇(7)—— 正则表达式

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 正则表达式的概念 正则表达式的组成 元字符 限定符 其他字符 正则表达式的使用 正则表达式的常见操作方法 match方法的…...

郑州网站托管公司/网站设计的流程

http://www.liangjing.org/qiyejianzhan/Ch/Net_Index.html http://www.phpweb.net/index.php转载于:https://www.cnblogs.com/liulf/archive/2011/04/01/2002745.html...

网站开发的工作流程/百度网盘客户端下载

第一步&#xff1a;获取配置信息。Configuration configuration new Configuration().configure();configure英文是配置的意思&#xff0c; 通过读取的配置图纸&#xff0c;建立一个生产session的工厂。如果你的配置文件是在根目录src下面&#xff0c;则没有参数。如果在其他目…...

如果域名网站用来做违法/搜索引擎优化培训免费咨询

写在最前 从开始学写代码&#xff0c;胡乱的看书&#xff0c;不懂如何写第一个程序&#xff0c;到开始写出第一个程序&#xff0c;这段道路有些漫长。慢慢开始自己独立的去分析给出的需求&#xff0c;到如何实现&#xff0c;最初的想法只是仅仅实现&#xff0c;到后来懂得如何利…...

vue做的网站大全/seo专员工资一般多少

实现一个通讯录&#xff1b;通讯录可以用来存储1000个人的信息&#xff0c;每个人的信息包括&#xff1a;姓名、性别、年龄、电话、住址提供方法&#xff1a;1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系…...

如何免费做网站详细点说/网站推广一般多少钱

链接&#xff1a; Eclipse如何设置自动提示&#xff1f;...

wordpress首页优化/seo在线优化

不久前刚买了新的笔记本&#xff0c;要在Win7下重新安装JDK&#xff08;java开发工具&#xff09;以及IDE&#xff08;集成开发环境&#xff09;,于是顺便把安装过程记录下来。 第一步&#xff1a;下载JDK JDK下载网址&#xff1a;http://www.oracle.com/technetwork/java/java…...