机械学习 - 基础概念 - scikit-learn - 数据预处理 - 1

news2024/11/24 18:21:10

目录

  • 安装 scikit-learn
  • 术语理解
    • 1. 特征(feature )和样本( sample / demo)的区别?
    • 2. 关于模型的概念
  • 一、机械学习概念
    • 1. 监督学习
    • 总结:
    • 2. 非监督学习
    • 总结:
    • 3. 强化学习
    • 总结:
    • 三种学习的特点总结
    • scikit-learn 说明
  • 二、机械学习的基本实操逻辑
    • 1. 采集数据
    • 2. 数据预处理(Preprocessing)
      • 预处理算法:
        • 归一化:
          • 1.normalize()
    • 3. 数据降维处理 (Dimensionality reduction)
    • 4. 分类(Classification)、回归(Regression)、聚类(Clustering)处理 三选一
    • 5. 模型选择 (Model selection)
  • 三、数据预处理 —— 数据分析
    • 数据规范化详解 —— 归一化 / 标准化
    • 如何区分归一化和标准化
      • 数据归一化 —— 范围缩放(scale)及映射
      • 1. 最大最小规范化(归一化)(Min-Max Normalization) [0,1] / 范围缩放(Scaling)
        • 功能:
      • 2. Mean normalization (均值归一化)[-1,1]:
      • 前两种归一化方法应用场景:
      • 前两种归一化方法不适用场景:
      • 3. 小数定标规范化(归一化) (normalization by decimal scaling)
        • 功能:
      • 什么时候用归一化?
      • 数据标准化 std
      • 1. 零-均值规范化 (标准化)(z-score standardization)/ 均值移除(Mean removal)
        • 功能:
        • 意义:
        • 应用场景:
      • 什么时候用标准化?
  • 归一化 与 标准化资料链接:
  • 下一章节跳转链接

安装 scikit-learn

记得在虚拟环境下安装,这里推荐 Virtualenv

pip install scikit-learn

链接:Windows 10 - Python 的虚拟环境 Virtualenv - 全局 python 环境切换问题

在这里 scikit-learn框架的核心模块 —— sklearn,而不是 scikit

import sklearn

测试环境:(请注意这里是虚拟环境 Virtualenv

操作系统: Window 10
工具:Pycharm
Python: 3.7
scikit-learn: 1.0.2
numpy: 1.21.6
scipy: 1.7.3
threadpoolctl: 3.1.0
joblib: 1.1.0

术语理解

1. 特征(feature )和样本( sample / demo)的区别?

  1. 一个样本由多个特征组成,而特征是一个样本的元素;
  2. 对于数据的处理,通过设置轴参数axis 为 0 或 1 ,可以选择对样本们,进行特征向量运算(纵向)或样本特征运算(横向);
  3. 样本指横向的元素,特征指纵向的元素。这句话的意思是,当你设置axis = 0 或 axis = 1时,那么当为 0 时,指向纵向的特征元素,为 1 时,则指向横向的样本元素,举个例子,假如有样本 A 和 样本 B,其中样本 A 和样本 B 都有特征 a、b、c ,那么当axis = 0 时,则按顺序取样本 A 和 样本 B 的特征 [Aa, Ba],[Ab, Bb],[Ac, Bc],当 axis = 1 时,则按顺序取样本 A 的特征 [Aa, Ab, Ac] ,然后再取样本 B 的 [Ba, Bb, Bc]

具体演示:

0|1		  	a   	b		c   
样本 A		Aa		Ab		Ac
样本 B		Ba		Bb		Bc

  1. 某个矩阵内的所有的输入值 x ,最终经过算法转换,得到输出值特征 y

2. 关于模型的概念

所谓的机器学习模型,本质上是一个函数,其作用是实现从一个样本 X X X 到样本的标记值 f ( x ) → x f(x) \rightarrow x f(x)x 的映射
通俗概括:可以从数据中学习到的,可以实现特定功能(映射)的函数。
进一步专业性概括:模型是在指定的假设空间中,确定学习策略,通过优化算法去学习到的由输入 到输出的映射。

现实中,我们可以看到一些用塑料制造出来的人物、机器等模型,这就是相当于一个映射,从脑海里的想法 x 中,映射为塑料模型 y ,还有3D模型,也是同理,通过构建模型 y,映射出脑海里的 x ,但是机械学习的模型,也是一样的吗?
那是自然,通过已知的数据 x 映射出未知的数据 y, 来构建出一个预测模型,该模型是通过监督、非监督、强化等学习策略,以算法为工具,来构建一个模型。

实际理解:编程语言的函数 f ( x ) f(x) f(x),输入矩阵 X X X ,也就是样本 X X X,返回值是一个模型对样本的转换后的映射 Y Y Y Y Y Y 是一个预测值。

一、机械学习概念

机械学习共分为三种学习:

  1. 监督学习
  2. 非监督学习
  3. 强化学习

1. 监督学习

监督学习Supervised Learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。
即:利用训练数据集学习一个模型,再用模型对测试样本集进行预测。

通俗理解:每个数据点都被标记或关联一个类别或者分值。

例(类别):输入一张图片,判断该图片中的动物是猫还是狗;

例(分值):通过大量数据预测一辆二手车的出售价格;

监督学习的目的就是学习大量的样本(称作训练数据),从而对未来的数据点做出预测(称作测试数据)。

分类和回归,从根本上来说,分类是预测一个标签,回归是预测一个数量

  • 分类是给一个样本预测离散型类别标签的问题。

  • 回归是给一个样本预测连续输出量的问题。

这段引用,笔者个人理解是,模型是具备输入值和输出值的,即 X X X Y Y Y ,当统计完这个模型内的一般规律,就可以用这个统计出来的一般规律,来预测其他的输入值 X X X 的可能性,即输出值 Y Y Y,当然这一点,其实就很麻烦,现实世界可无法仅仅通过一个模型的规律,就能预测的了结果,所以只能说模型多多益善。

对于分类,笔者认为是点状预测,一个点一个点的预测出来,而不是像一条线那样;
回归则是线性预测,例如可以预测股票的线性变化,笔者个人大致是这样认为的。

总结:

监督学习,需要人去找模型去喂给它,还要多多观察该模型的准确性,也就是要监督并观察该算法的性能及准确度,就好比如有的小孩子需要我们大人去监督它们的学习,这样它们会在我们的监督下,认真学习,并提高成绩,这里指的是提升算法的性能和模型的准确度。
所以哪些需要模型的,都是监督学习。

2. 非监督学习

非监督学习Unsupervised Learning)为直接对数据进行建模。没有给定事先标记过的训练范例,所用的数据没有属性或标签这一概念。事先不知道输入数据对应的输出结果是什么。

自动对输入的资料进行分类或分群,以寻找数据的模型和规律。

例:聚类

总结:

非监督学习,孩子需要靠自己自学成才,不应该需要我们去监督它们学习,这样才能独立自主,由于现实生活中的变化,我们不太可能拥有全部的现实模型,在某种情况下,我们不太可能一直监督它们学习,所以需要它拥有自学的能力,通过自主收集现实的样本特征,自动的对自己进行变量输入,从而获取一个又一个的模型,然后对于模型进行一个性能或准确度的评估等等。

3. 强化学习

强化学习Reinforcement Learning)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。

总结:

强化学习,孩子在学会了自主学习后,对它们进行一个激励的学习奖励措施,那么其会有可能形成一个应激性的行为,然后孩子就会容易去做某种对自己有利的事,比如设计一个撞墙的强化学习算法,那么对于撞墙就会执行一个闪避的有利选择,所以我们可以利用这一点,设计出一个符合该设想的机器学习算法,即强化学习。

三种学习的特点总结

有监督学习、无监督学习、强化学习具有不同的特点:

监督学习是有一个label标记)的,这个label告诉算法什么样的输入对应着什么样的输出,常见的算法是分类、回归等;
无监督学习则是没有label标记),常见的算法是聚类
强化学习强调如何基于环境而行动,以取得最大化的预期利益。

scikit-learn 说明

scikit-learn库主要功能分六大部分:分类,回归,聚类,降维,模型选择,数据预处理

分类、回归 ——> 监督学习
聚类 ——> 非监督学习

二、机械学习的基本实操逻辑

1. 采集数据

这里先不介绍采集数据,笔者还没涉猎。

2. 数据预处理(Preprocessing)

在真实的世界中,经常需要处理大量的原始数据,这些原始数据是机器学习算法无法理解的,为了让机器学习算法理解原始数据,需要对数据进行预处理。

所谓的预处理,也叫规范化,其实就是提取复杂数据里的有价值的内容,这里用到了归一化或标准化:

  • 数据归一化/标准化 —— 将原始数据分为训练用数据和测试数据,测试数据是从原始数据中抽出一部分充当测试用的数据 (这在监督学习中很常见)

预处理算法:

归一化:

1.normalize()

3. 数据降维处理 (Dimensionality reduction)

通常而言,做机器学习时,你的数据量越大,维度越多,考虑的因素越多,你的分类、回归的预测就会越准确,但也因为是考虑的太多了,你的计算也就会越慢,所以在这里就会考虑要怎么权衡预测的准确度和计算速度。
在保证最大信息量的情况下,减少维度,降低计算的时间。

减少维度,可以更好的可视化,超过了三维,人就会难以理解,所以降维可以将数据更好的可视化,还有提升计算的效率(机器学习最根本的一点)

降维算法:

4. 分类(Classification)、回归(Regression)、聚类(Clustering)处理 三选一

分类算法:

回归算法:

聚类算法:

5. 模型选择 (Model selection)

三、数据预处理 —— 数据分析

数据规范化详解 —— 归一化 / 标准化

数据规范化处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲(不同的物理量)和取值范围差异的影响,需要进行标准化处理(对数据进行预处理),将数据按照比例进行缩放(归一化处理),使之落入一个特定的区域,便于进行综合分析。如将工资收入属性值映射到 [ − 1 , 1 ] [-1,1] [1,1]或者 [ 0 , 1 ] [0, 1] [0,1]内 (这是归一化例子

数据规范化对于基于距离的挖掘算法尤为重要。(这里的基于距离指的是变量输出值之间的距离

规范化 指归一化 或 标准化

如何区分归一化和标准化

归一化标准化都是对数据做变换的方式,将原始的一列数据转换到某个范围,或者某种形态,具体的:

归一化(Normalization):数据归一化用于需要对特征向量的值进行调整时,以保证每个特征向量的值都缩放到相同的数值范围,将一列数据变化到某个固定区间(范围)中,通常,这个区间是 [ 0 , 1 ] [0, 1] [0,1],广义的讲,可以是各种区间,比如映射到 [ 0 , 1 ] [0,1] [0,1]一样可以继续映射到其他范围,图像中可能会映射到 [ 0 , 255 ] [0,255] [0,255],其他情况可能映射到 [ − 1 , 1 ] [-1,1] [1,1]
标准化(Standardization):将数据变换为均值为0,标准差为1的分布 [ 0 , 1 ] [0, 1] [0,1],切记,并非一定是正态的;
中心化:另外,还有一种处理叫做中心化,也叫零均值处理,就是将每个原始数据减去这些数据的均值。(其实也就是上面的标准化)

有时候会看到标准归一化,其实也差不多,说是标准化,其实这个定义早就被归一化的概念给覆盖了,标准化归一化都可以这么叫,但是具体到它们的实现公式就得考虑清楚,名字随意,实现它们时,就得看看是怎么个处理方法。
一个是等比例缩放、一个是去均值中心化缩放。

数据归一化 —— 范围缩放(scale)及映射

scale n. 天平,磅秤;;刻度,标度;标尺,刻度尺;v 缩放

广义的说,标准化归一化同为对数据的线性变化,所以我们没必要规定死,归一化难道就必须到 [ 0 , 1 ] [0,1] [0,1]之间,我到 [ 0 , 1 ] [0,1] [0,1] 之间后,然后再乘一个255,你奈我何?所以切记不要被概念所束缚住,常见的有以下几种:

1. 最大最小规范化(归一化)(Min-Max Normalization) [0,1] / 范围缩放(Scaling)

功能:

归一化的最通用模式Normalization,也称线性归一化、最小-最大规范化,也称为离散标准化,是对原始数据的线性变换,将数据值映射到 [ 0 , 1 ] [0, 1] [0,1] 之间

转换公式如下:

X n e w = X i − X m i n X m a x − X m i n X_{new}=\frac{X_{i}-X_{min}}{X_{max}-X_{min}} Xnew=XmaxXminXiXmin ,范围 [ 0 , 1 ] [0,1] [0,1]

  • X i X_{i} Xi : 指的是要归一化的数据,通常是二维矩阵
  • X m a x X_{max} Xmax : 每列中的最大值组成的行向量
  • X m i n X_{min} Xmin : 每列中的最小值组成的行向量
  • X n e w X_{new} Xnew : 指的是占比结果,到了这一步其实还不算完整,看下面的公式中的 X s c a l e d X_{scaled} Xscaled

X s t d = X − X . m i n ( a x i s = 0 ) X . m a x ( a x i s = 0 ) − X . m i n ( a x i s = 0 ) X_{std}=\frac{X_{}-X_{.}min(axis=0)}{X_{.}max(axis=0)-X_{.}min(axis=0)} Xstd=X.max(axis=0)X.min(axis=0)XX.min(axis=0)

X s c a l e d = X s t d × ( m a x − m i n ) + m i n X_{scaled}=X_{std}\times(max-min)+min Xscaled=Xstd×(maxmin)+min ,范围 [ 0 , 1 ] [0,1] [0,1]

乍看一下很懵逼,解释一下:

  • X X X:要归一化的数据,通常是二维矩阵,例如
[[4,2,3]
[1,5,6]]
  • X . m i n ( a x i s = 0 ) X.min(axis=0) X.min(axis=0):每列中的最小值组成的行向量,如上面的例子中应该是[1,2,3]

  • X . m a x ( a x i s = 0 ) X.max(axis=0) X.max(axis=0):每列中的最大值组成的行向量,如上面的例子中应该是[4,5,6]

  • m a x max max: 要映射到的区间最大值,默认是1 ,可以根据情况更改,不要被束缚住

  • m i n min min:要映射到的区间最小值,默认是0 ,可以根据情况更改,不要被束缚住

  • X s t d X_{std} Xstd : 占比结果

  • X s c a l e d X_{scaled} Xscaled: 最终的归一化结果,映射到范围 [ 0 , 1 ] [0,1] [0,1]而已,借助 X s t d X_{std} Xstd 完成最后一步的 X s c a l e d X_{scaled} Xscaled m i n min min 为 0.

再用朴实的语言描述一下上面公式所做的事:

  • 第一步求每个列中元素到最小值距离占该列最大值和最小值距离的比例,这实际上已经是将数据放缩到了 [ 0 , 1 ] [0,1] [0,1] 区间上
  • 第二步将占比结果数据按同等比例缩放映射到指定的 [ m i n , m a x ] [min,max] [min,max] 区间

2. Mean normalization (均值归一化)[-1,1]:

若要转换到 [ − 1 , 1 ] [-1,1] [1,1] 之间,则

X s t d = X − X m e a n X m a x − X m i n X_{std}=\frac{X-X_{mean}}{X_{max}-X_{min}} Xstd=XmaxXminXXmean
X s c a l e d = X s t d × ( m a x − m i n ) + m i n X_{scaled}=X_{std}\times(max-min)+min Xscaled=Xstd×(maxmin)+min ,范围 [ − 1 , 1 ] [-1,1] [1,1]

  • X s t d X_{std} Xstd : 去除均值的占比结果
  • X m e a n X_{mean} Xmean 代表了 X X X的每一列的均值
  • X . m i n ( a x i s = 0 ) X.min(axis=0) X.min(axis=0):每列中的最小值组成的行向量
  • X . m a x ( a x i s = 0 ) X.max(axis=0) X.max(axis=0):每列中的最大值组成的行向量
  • X s c a l e d X_{scaled} Xscaled: 最终的归一化结果,所谓的映射,本质是放大了 X s t d X_{std} Xstd 的数值,映射到范围 [ − 1 , 1 ] [-1,1] [1,1]而已
  • m a x max max: 要映射到的区间最大值,默认是1 ,可以根据情况更改,不要被束缚住
  • m i n min min:要映射到的区间最小值,默认是0 ,可以根据情况更改,不要被束缚住

前两种归一化方法应用场景:

  • 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用该方法或其他归一化方法(不包括Z-score方法)。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在 [ 0 − 255 ] [0 - 255] [0255] 的范围

前两种归一化方法不适用场景:

  • 原始数据存在小部分很大或很小的数据时,会造成大部分数据规范化后接近于 0 或 1,区分度不大,比如 ( 1, 1.2, 1.3, 1.4, 1.5, 1.6,8.4)这组数据。若将来遇到超过目前属性[min, max]取值范围的时候,会引起系统报错,需要重新确定 m i n min min m a x max max —— 将这组数据标准化(归一化),然后得到的一组规范化后各值接近于0的数据,假如以后加入新的数据,会有可能超过该数据标准化后的最大最小的范围,就需要重新确定 m i n min min m a x max max

3. 小数定标规范化(归一化) (normalization by decimal scaling)

功能:

通过移动属性值的小数位数,将属性值映射到[-1, 1]之间,移动的小数位数取决于属性值绝对值的最大值。

转化公式为: 原始值 / 10^k
在这里插入图片描述
X n e w = X 1 0 k X_{new}=\frac{X}{10^k} Xnew=10kX

  • k 取决于 X X X 内的属性取值中的最大绝对值
  • 小数定标规范化就是通过移动小数点的位置来进行规范化。
  • 小数点移动多少位取决于 X X X 内的属性的取值中的最大绝对值。

这里的 X X X 内的属性代指样本实例的某种属性,比如长度、宽度、数量等。
也就是说找的是矩阵内绝对值化后的最大的输入值元素x,并且使用恰当的对数函数方法 log10 ,以10为底,值为该绝对值化的最大值 max(x) ,即 l o g 10 m a x ( X ) = k log_{10} max(X) = k log10max(X)=k ,得到 k 值,还要注意的一点是 k k k 值必须是向上取整,这里提供一个方法是numpy模块的 ceil(k)方法,向上取整方法,注意不是四舍五入,而是整个小数点后的值都被舍去了。完整公式: X n e w = c e i l ( l o g 10 m a x ( a b s ( X ) ) ) X_{new} = ceil(log_{10} max(abs(X))) Xnew=ceil(log10max(abs(X)))abs() 是绝对值函数

什么时候用归一化?

  • 如果对输出结果范围有要求,用归一化。
  • 如果数据较为稳定,不存在极端的最大最小值,用归一化。

数据标准化 std

1. 零-均值规范化 (标准化)(z-score standardization)/ 均值移除(Mean removal)

通常我们会把每个特征的平均值移除,以保证特征均值为0(即标准化处理)。这样做可以消除特征彼此之间的偏差(bias)。

功能:

零-均值规范化也称标准差标准化,经过处理的数据的均值为0,标准差为1,是当前用得最多数据标准化方式

转化公式为: (原始值 - 均值)/ 标准差

X n e w = X − X m e a n X s t d X_{new}=\frac{X-X_{mean}}{X_{std}} Xnew=XstdXXmean

符号解释:
X n e w X_{new} Xnew 为标准化后的值
X m e a n X_{mean} Xmean X X X 的均值
X s t d X_{std} Xstd X X X 的标准差

意义:

  • 变换后数据的 均值为0,方差为1
  • 结果没有实际意义,仅用于比较

应用场景:

  • 分类聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好。

什么时候用标准化?

  • 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

归一化 与 标准化资料链接:

如何理解归一化(normalization)?

最大最小化标准化

标准化和归一化,请勿混为一谈,透彻理解数据变换

常用数据规范化方法: min-max规范化,零-均值规范化等

数据挖掘实验(一)数据规范化【最小-最大规范化、零-均值规范化、小数定标规范化】

【机器学习】数据归一化——MinMaxScaler理解

python中axis=0 axis=1的理解

参考链接:

6_Python机器学习库Scikit-Learn介绍

下一章节跳转链接

机械学习 - scikit-learn - 数据预处理 - 2

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

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

相关文章

硬件基础常识【1】--如何让BJT工作在深度饱和区

引言BJT饱和的概念差不多的比喻特性曲线说明记忆NPN和PNP的小技巧- -保证一辈子不忘简单估算总结引言 学过模电或者做过一些电子作品的人都知道三极管这个器件,虽然是个小玩意,但在电路设计过程中承担了巨大的作用。BJT叫做双极结型三极管,可…

浏览器并发行为记录

使用nodejs koa起一个服务,使请求延时返回。 服务端代码 /** 延时 */ exports.timeoutTestData async function (ctx) {console.log(get query:, ctx.request.query);const query ctx.request.query;let timeout query.timeout || 2000;await new Promise(res…

vue专项练习

一、循环实现一个列表的展示及删除功能 1.1 列表展示 1、背景: 完成一个这样的列表展示。使用v-for 循环功能 id接口名称测试人员项目名项目ID描述信息创建时间用例数1首页喵酱发财项目a1case的描述信息2019/11/6 14:50:30102个人中心张三发财项目a1case的描述信…

Redis学习(13)之Lua脚本【环境准备】

文章目录一 Lua入门环境准备1.1 Lua简介1.2 Linux 系统安装Lua1.2.1 Lua 下载1.2.2 Lua 安装1.3 Hello World1.3.1 命令行模式1.3.2 脚本文件模式1.3.3 两种脚本运行方式1.4 Win安装Lua1.4.1 LuaForWindows的安装1.4.2 SciTE修改字体大小1.4.3 SciTE中文乱码1.4.4 SciTE快捷键工…

aws ecs 使用copilot快速创建ecs集群环境并部署服务

参考资料 https://github.com/aws/copilot-cli https://aws.github.io/copilot-cli/ https://github.com/aws-samples/amazon-ecs-cli-sample-app https://ecsworkshop.com/microservices/frontend/#deploy-frontend-0 ecs的服务部署从头开始需要进行以下操作 创建vpc等网…

JS中的事件、DOM操作

一、事件1.1 事件介绍事件: 就是发生在浏览器(页面)上一件事,键盘事件,鼠标事件,表单事件,加载事件等等1.2 事件绑定方式事件要想发生,就得将事件和标签先绑定一个完整的事件有三部分事件源(标签)什么事(事件)响应(动作效果)事件绑定,其实就是事件和标签绑定方式1: 事件源,事件…

IBM Semeru Windows 下的安装 JDK 17

要搞清楚下载那个版本,请参考文章:来聊聊 OpenJDK 和 JVM 虚拟机下载地址semeru 有认证版和非认证版,主要是因为和 OpenJ9 的关系和操作系统的关系而使用不同的许可证罢了,本质代码是一样的。在 Windows 下没有认证版,…

[计算机组成原理(唐朔飞 第2版)]第三章 系统总线(学习复习笔记)

3.1 总线的基本概念 计算机系统的五大部件之间的互连方式有两种 各部件之间使用单独的连线,称为分散连接将各部件连到一组公共信息传输线上,称为总线连接 总线是连接多个部件的信息传输线,是各部件共享的传输介质。 当多个部件与总线相连时&…

【java基础】LinkedList源码解析

文章目录基本介绍构造器基础方法linkFirstlinkLastlinkBeforeunlinkFirstunlinkLastunlinknodeindexOf方法分析总结基本介绍 在java中,LinkedList就是使用双向链表存储元素,既然是链表,那么也就知道了该数据结构擅长添加和删除。对于需要频繁…

线程等待/休眠/状态及 Runnable 和 Callable 的简单使用及原理

关于线程和进程的基本概念☛操作系统中线程和进程的概念理解 这篇文章已经有了很详细的解释, 接下来主要来讲讲线程等待与线程休眠 / 线程的几种状态 / Runnable 和 Callable 与 Thread 的概念和区别及 Executor 框架是什么样的. 关于线程1 线程等待与线程休眠2 线程一共有哪些…

[洛谷-P3698][CQOI2017]小Q的棋盘

一、问题 题目描述 小 Q 正在设计一种棋类游戏。 在小 Q 设计的游戏中,棋子可以放在棋盘上的格点中。某些格点之间有连线,棋子只能在有连线的格点之间移动。整个棋盘上共有 VVV 个格点,编号为 0,1,2,⋯,V−10,1,2,\cdots, V- 10,1,2,⋯,V−…

【C++知识点】C++11 常用新特性总结

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…

EasyRcovery16免费的电脑照片数据恢复软件

电脑作为一种重要的数据储存设备,其中保存着大量的文档,邮件,视频,音频和照片。那么,如果电脑照片被删除了怎么办?今天小编给大家介绍,误删除的照片从哪里可以找回来,误删除的照片如…

win10打印机拒绝访问解决方法

一直以来,在安装使用共享打印机打印一些文件的时候,会遇到错误提示:“无法访问.你可能没有权限使用网络资源。请与这台服务器的管理员联系”的问题,那为什么共享打印机拒绝访问呢?别着急,下面为大家带来相关的解决方法…

mysql时区问题

设置mysql容器时间与服务器时间一致 问题背景: 今天测试发现一个问题,时间不一致,当工单入库时,其创建时间和更新时间应该是一样的,即使不一样最多只会错几秒的时间;实际上两个时间相差的大概8小时&#…

青少年学AI,Amazon DeepRacer有何魔力?

导读:北京名校中学生可以根据兴趣开发AI模型甚至发表论文,偏远地区的校长还在犹豫“人工智能教育,中考会考吗?高考会加分吗?”教育鸿沟由来已久,绝非仅靠某些企业或教育机构可以扭转,但我们至少…

maven仓库的配置

下载 官网下载:https://maven.apache.org/download.cgi 2. 配置maven环境 右键电脑 ->属性 -> 高级系统设置 -> 环境变量 -> 系统变量-新建 变量名:MAVEN_HOME 变量值为maven的文件安装地址 编辑Path系统变量 新建:%MAVE…

132.《render-props, Hoc,自定义hooks 详解》

文章目录render-props 模式props 方式children 方式(推荐)Hoc(高阶组件)使用步骤示例props 丢失解决方案自定义 hook1.只执行一次2.防抖hook高阶组件与自定义hook有什么区别相同点不同点React 中代码逻辑复用有三种方式,render-props, Hoc&am…

Altium Designer(AD)软件使用记录05-PCB叠层设计

目录Altium Designer(AD)软件使用记录05-PCB叠层设计一、正片层和负片层的介绍1、正片层(Signal)2、负片层(Plane)3、内电层的分割实现二、正片层和负片层的内缩设计1、负片设置内缩20H原则2、正片铺铜设置内缩1、设置规则2、重新铺铜三、AD的层叠设计四、叠层设计需要注意的问…

计算机组成原理_总线标准

计算机组成原理总目录总线标准 总线标准是系统与各模块、模块与模块之间的一个互连的标准,就像我们用汉语来相互交流一样。 1. 系统总线 ISA总线的扩展插槽,其颜色一般为黑色,比PCI接口插槽要长些,位于主板的最下端。 可插接显卡&…