机器学习--特征工程常用API
1. DictVectorizer - 字典特征提取
DictVectorizer
是一个用于将字典(如Python中的字典对象)转换为稀疏矩阵的工具,常用于处理类别型特征。
DictVectorizer(sparse=True, sort=True, dtype=<class 'numpy.float64'>)
- 参数:
sparse
:布尔值,默认值为True
。如果为True
,输出是稀疏矩阵;如果为False
,输出是密集的Numpy数组。sort
当 sort=True 时,特征名称按字母顺序排序。
当 sort=False 时,特征名称的顺序是其在字典中首次出现的顺序。dtype
:输出数据类型,默认为numpy.float64
。
2. CountVectorizer - 文本特征提取
CountVectorizer
是一种用于将文本数据转换为词频向量的工具。
- 主要参数:
max_df
:浮点数或整数,表示在文档中出现频率超过这个比例(浮点数)或超过这个绝对次数(整数)的词语将被忽略,默认值为1.0
。min_df
:浮点数或整数,表示在文档中出现频率低于这个比例(浮点数)或低于这个绝对次数(整数)的词语将被忽略,默认值为1
。max_features
:整数,选择出现频率最高的max_features
个特征。stop_words
:字符串或列表,指定忽略的停用词,可以选择'english'
或自定义停用词列表。ngram_range
:元组,表示词组的范围,如(1, 2)
表示一元词和二元词。binary
:布尔值,是否只考虑词是否出现(即词频为1还是0),默认值为False
。
from sklearn.feature_extraction.text import CountVectorizer# 示例文本数据
corpus = ['This is the first document.','This document is the second document.','And this is the third one.','Is this the first document?',
]# 初始化CountVectorizer
vectorizer = CountVectorizer(stop_words=["you","this"])# 转换为词频向量
X = vectorizer.fit_transform(corpus)#得到稀疏矩阵# 输出特征名称和词频向量
print(vectorizer.get_feature_names_out())
print(X.toarray())#转换为矩阵
print(X)
结果:
['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third']
[[0 1 1 1 0 0 1 0][0 2 0 1 0 1 1 0][1 0 0 1 1 0 1 1][0 1 1 1 0 0 1 0]](0, 3) 1(0, 6) 1(0, 2) 1(0, 1) 1(1, 3) 1(1, 6) 1(1, 1) 2(1, 5) 1(2, 3) 1(2, 6) 1(2, 0) 1(2, 7) 1(2, 4) 1(3, 3) 1(3, 6) 1(3, 2) 1(3, 1) 1
2.1 中文文本提取
jieba
是一个广泛使用的中文分词库,适用于中文文本处理和特征提取。jieba
提供了高效的中文分词功能,可以帮助将中文文本转换为词语列表,从而用于机器学习模型和文本分析。
安装 jieba
你可以通过以下命令安装 jieba
:
pip install jieba
基本用法
以下是一些使用 jieba
进行中文文本提取的常见操作示例:
1. 基础分词
import jieba# 示例文本
text = "我爱自然语言处理"# 使用jieba进行分词
words = jieba.cut(text)# 输出分词结果
print("/ ".join(words))
2. 精确模式和全模式
- 精确模式:试图将句子最精确地切开,适合文本分析。
- 全模式:将句子中所有可能的词语都找出来,适合用于词云展示等。
import jieba# 示例文本
text = "我爱自然语言处理"# 精确模式
words = jieba.cut(text, cut_all=False)
print("精确模式: " + "/ ".join(words))# 全模式
words = jieba.cut(text, cut_all=True)
print("全模式: " + "/ ".join(words))
结果:
精确模式: 我/ 爱/ 自然语言/ 处理
全模式: 我/ 爱/ 自然/ 自然语言/ 语言/ 处理
3. 关键词提取
jieba
还提供了关键词提取功能,基于 TF-IDF 算法或者 TextRank 算法。需要额外安装 jieba
的 jieba.analyse
模块。
import jieba.analyse# 示例文本
text = "我爱自然语言处理。自然语言处理是计算机科学领域和人工智能领域中的一个重要方向。"# 提取关键词
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=False)print("关键词: " + "/ ".join(keywords))
结果:
关键词: 自然语言/ 领域/ 处理/ 计算机科学/ 人工智能
4. 自定义词典
如果你有一些专有名词或者行业术语,jieba
允许你使用自定义词典来提高分词的准确性。
import jieba# 加载自定义词典
jieba.load_userdict('userdict.txt')# 示例文本
text = "我在腾讯工作"# 使用自定义词典进行分词
words = jieba.cut(text)
print("/ ".join(words))
自定义词典 userdict.txt
的格式如下:
腾讯 10 n
其中,每行包含一个词汇,词汇后面的数字表示词频(可选),词性(可选)。
3. TfidfVectorizer - TF-IDF文本特征提取
TfidfVectorizer
用于计算词语的TF-IDF(词频-逆文档频率)特征,衡量词语在文档中的重要性。
TfidfVectorizer
是 scikit-learn
提供的一个工具,用于将文本数据转换为 TF-IDF 特征矩阵。TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本特征表示方法,用于衡量词语在文档中的重要性。下面是 TfidfVectorizer
的工作原理及其详细解释:
TF-IDF 原理
-
Term Frequency (TF)
-
定义:词频,衡量词语在某个文档中出现的频率。
-
解释:词频越高,说明该词在该文档中越重要。
-
-
Inverse Document Frequency (IDF)
-
定义:逆文档频率,衡量词语在所有文档中出现的稀有程度。
-
解释:出现频率较低的词语(即少数文档中出现的词语)会有较高的 IDF 值,从而提高其在文档中的权重。
-
-
TF-IDF Score
-
定义:词语在文档中的 TF-IDF 权重,结合了词频和逆文档频率。
-
解释:通过 TF-IDF 评分,重要的词语(即在该文档中频繁出现而在其他文档中不常见的词语)会得到较高的权重。
-
-
主要参数:
max_df
:同CountVectorizer
。min_df
:同CountVectorizer
。max_features
:同CountVectorizer
。stop_words
:同CountVectorizer
。ngram_range
:同CountVectorizer
。use_idf
:布尔值,是否启用逆文档频率(IDF)加权,默认值为True
。smooth_idf
:布尔值,是否加1平滑IDF,默认值为True
。norm
:字符串,表示归一化方法,'l1'
或'l2'
,默认值为'l2'
。
-
适用场景:适用于文本数据中特征词重要性分析,更适合文本分类任务。
代码示列:
from sklearn.feature_extraction.text import TfidfVectorizer# 示例文本数据
corpus = ['This is the first document.','This document is the second document.','And this is the third one.','Is this the first document?',
]# 初始化TfidfVectorizer
vectorizer = TfidfVectorizer()# 转换为TF-IDF特征向量
X = vectorizer.fit_transform(corpus)# 输出特征名称和TF-IDF向量
print(vectorizer.get_feature_names_out())
print(X.toarray())
结果:
['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third' 'this']
[[0. 0.46979139 0.58028582 0.38408524 0. 0.0.38408524 0. 0.38408524][0. 0.6876236 0. 0.28108867 0. 0.538647620.28108867 0. 0.28108867][0.51184851 0. 0. 0.26710379 0.51184851 0.0.26710379 0.51184851 0.26710379][0. 0.46979139 0.58028582 0.38408524 0. 0.0.38408524 0. 0.38408524]]
4. MinMaxScaler - 归一化
MinMaxScaler
将特征缩放到给定的最小值和最大值之间,通常是缩放到 [0, 1]
。
MinMaxScaler 是一种常用的数据预处理方法,其主要目的是将数据的特征缩放到指定的范围(通常是 ([0, 1]))。这样做的目的是为了消除不同特征值之间量级上的差异,从而避免因不同特征值的范围差异对模型训练产生不良影响。
MinMaxScaler的数学原理
假设我们有一个一维的特征向量 (X = {x_1, x_2, \dots, x_n}),其中每个 (x_i) 表示第 (i) 个样本的特征值。
1. 计算原始数据的最小值和最大值
首先,找到特征向量 (X) 中的最小值 (X_{\text{min}}) 和最大值 (X_{\text{max}}),即:
X min = min ( X ) X max = max ( X ) X_{\text{min}} = \min(X) X_{\text{max}} = \max(X) Xmin=min(X)Xmax=max(X)
2. 应用缩放公式
接下来,使用以下公式将每个数据点 (x_i) 映射到目标范围 ([a, b]) 中(默认为 ([0, 1])):
x i ′ = x i − X min X max − X min × ( b − a ) + a x_i' = \frac{x_i - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} \times (b - a) + a xi′=Xmax−Xminxi−Xmin×(b−a)+a
- (x_i’) 是缩放后的值。
- (a) 和 (b) 是目标范围的下限和上限,默认是 (a = 0) 和 (b = 1)。
- (X_{\text{min}}) 和 (X_{\text{max}}) 分别是原始数据的最小值和最大值。
3. 线性变换过程
公式中的变换可以分为两个步骤:
-
标准化:先减去最小值,然后除以原始数据的范围(最大值减去最小值),即:
x i ∗ = x i − X min X max − X min x_i^* = \frac{x_i - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} xi∗=Xmax−Xminxi−Xmin
这一步骤将 (x_i) 变换到 ([0, 1]) 的范围内。 -
线性扩展:将标准化后的值 (x_i^
$$
扩展到目标范围 (a, b):x_i’ = x_i^* \times (b - a) + a
$$
这一步将数据映射到我们希望的范围内。
示例详解
假设有一个简单的数据集: X = [2, 4, 6, 8, 10] ,目标范围是 ([0, 1])。
-
计算 ( X_{\text{min}} = 2 ) 和 ( X_{\text{max}} = 10 )。
-
使用公式计算每个 ( x_i ) 的缩放值 ( x_i’ ):
-
对于 ( x = 2 ):
x ′ = 2 − 2 10 − 2 × ( 1 − 0 ) + 0 = 0 x' = \frac{2 - 2}{10 - 2} \times (1 - 0) + 0 = 0 x′=10−22−2×(1−0)+0=0 -
对于 ( x = 4 ):
x ′ = 4 − 2 10 − 2 × ( 1 − 0 ) + 0 = 0.25 x' = \frac{4 - 2}{10 - 2} \times (1 - 0) + 0 = 0.25 x′=10−24−2×(1−0)+0=0.25 -
对于 ( x = 6 ):
x ′ = 6 − 2 10 − 2 × ( 1 − 0 ) + 0 = 0.5 x' = \frac{6 - 2}{10 - 2} \times (1 - 0) + 0 = 0.5 x′=10−26−2×(1−0)+0=0.5 -
对于 ( x = 8 ):
x ′ = 8 − 2 10 − 2 × ( 1 − 0 ) + 0 = 0.75 x' = \frac{8 - 2}{10 - 2} \times (1 - 0) + 0 = 0.75 x′=10−28−2×(1−0)+0=0.75 -
对于 ( x = 10 ):
x ′ = 10 − 2 10 − 2 × ( 1 − 0 ) + 0 = 1 x' = \frac{10 - 2}{10 - 2} \times (1 - 0) + 0 = 1 x′=10−210−2×(1−0)+0=1
-
转换后的数据集为 ([0, 0.25, 0.5, 0.75, 1])。
-
主要参数:
feature_range
:元组,表示缩放后的特征范围,默认值为(0, 1)
。clip
:布尔值,是否将数据截断到指定范围内,默认值为False
。
-
适用场景:适用于需要将特征值缩放到相同范围的情况,特别是当模型对特征的范围敏感时,如在神经网络中。
代码示列:
from sklearn.preprocessing import MinMaxScaler# 示例数据
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]# 初始化MinMaxScaler
scaler = MinMaxScaler()# 转换数据
scaled_data = scaler.fit_transform(data)# 输出归一化后的数据
print(scaled_data)
结果:
[[0. 0. ][0.25 0.25][0.5 0.5 ][1. 1. ]]
5. StandardScaler - 标准化
StandardScaler
将特征进行标准化,使其均值为0,方差为1。
-
主要参数:
with_mean
:布尔值,是否将特征均值设为0,默认值为True
。with_std
:布尔值,是否将特征方差设为1,默认值为True
。
-
适用场景:适用于需要将特征缩放到标准正态分布的场景,常用于线性模型和基于距离的模型。
代码示列:
from sklearn.preprocessing import StandardScaler# 示例数据
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]# 初始化StandardScaler
scaler = StandardScaler()# 转换数据
scaled_data = scaler.fit_transform(data)# 输出标准化后的数据
print(scaled_data)
结果:
[[-1.18321596 -1.18321596][-0.50709255 -0.50709255][ 0.16903085 0.16903085][ 1.52127766 1.52127766]]
StandardScaler
是一种常用的数据预处理方法,其主要目的是对数据进行标准化处理,使得数据的均值为0,标准差为1。通过标准化,StandardScaler
可以消除不同特征之间的量纲差异,并且使数据更适合于一些基于距离度量的机器学习算法,如SVM、KNN等。
StandardScaler的数学原理
StandardScaler
的标准化过程涉及两个步骤:
- 中心化:将数据的均值调整为0。
- 缩放:将数据的标准差调整为1。
对于一个给定的数据集
X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn}
(假设这里的数据是单个特征的值),StandardScaler
的标准化公式如下:
x i ′ = x i − μ σ x_i' = \frac{x_i - \mu}{\sigma} xi′=σxi−μ
其中:
- $$
- x_i 是原始数据中的某个数据点。
- \mu 是原始数据的均值。
- \sigma 是原始数据的标准差。
- x_i’ 是标准化后的数据。
$$
步骤 1:计算均值和标准差
1. 计算均值
μ \mu μ
均值 μ 是所有数据点的平均值,可以通过以下公式计算: μ = 1 n ∑ i = 1 n x i 均值 \mu 是所有数据点的平均值,可以通过以下公式计算: \mu = \frac{1}{n} \sum_{i=1}^{n} x_i 均值μ是所有数据点的平均值,可以通过以下公式计算:μ=n1i=1∑nxi
2.
计算标准差 σ 计算标准差 \sigma 计算标准差σ
标准差 σ 是数据点到均值的平均偏离程度的平方根,可以通过以下公式计算: σ = 1 n ∑ i = 1 n ( x i − μ ) 2 标准差 \sigma 是数据点到均值的平均偏离程度的平方根,可以通过以下公式计算: \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2} 标准差σ是数据点到均值的平均偏离程度的平方根,可以通过以下公式计算:σ=n1i=1∑n(xi−μ)2
步骤 2:应用标准化公式
计算出均值 μ 和标准差 σ 之后,对每个数据点 x i 使用以下公式进行标准化处理: x i ′ = x i − μ σ 计算出均值 \mu 和标准差 \sigma 之后,对每个数据点 x_i 使用以下公式进行标准化处理: x_i' = \frac{x_i - \mu}{\sigma} 计算出均值μ和标准差σ之后,对每个数据点xi使用以下公式进行标准化处理:xi′=σxi−μ
6. VarianceThreshold - 底方差过滤降维
VarianceThreshold
是一种简单的特征选择方法,通过移除方差低于某个阈值的特征来进行降维。
4.底方差过滤(Variance Thresholding)的数学原理可以通过以下几个步骤详细解释:
1. 方差定义
方差是用来衡量数据分布的离散程度的统计量。对于给定的特征 X (假设是一个向量),其方差 σ 2 可以通过以下公式计算: 方差是用来衡量数据分布的离散程度的统计量。对于给定的特征 X (假设是一个向量),其方差 \sigma^2 可以通过以下公式计算: 方差是用来衡量数据分布的离散程度的统计量。对于给定的特征X(假设是一个向量),其方差σ2可以通过以下公式计算:
σ X 2 = 1 N ∑ i = 1 N ( x i − x ˉ ) 2 \sigma^2_X = \frac{1}{N} \sum_{i=1}^{N} (x_i - \bar{x})^2 σX2=N1i=1∑N(xi−xˉ)2
其中:
- $$
- N 是样本的总数,
- x_i 是特征 X 的第 i 个样本,
- \bar{x} 是特征 X 的均值。
$$
2. 方差计算过程
假设我们有一个数据矩阵 X (大小为 m × n ,其中 m 是样本数, n 是特征数),我们可以对每一个特征列 X j 计算方差。对于特征 X j ,其方差可以表示为 假设我们有一个数据矩阵 X (大小为 m \times n ,其中m是样本数,n是特征数),我们可以对每一个特征列 X_j 计算方差。对于特征X_j,其方差可以表示为 假设我们有一个数据矩阵X(大小为m×n,其中m是样本数,n是特征数),我们可以对每一个特征列Xj计算方差。对于特征Xj,其方差可以表示为
:
σ X j 2 = 1 m ∑ i = 1 m ( X i j − X j ˉ ) 2 \sigma^2_{X_j} = \frac{1}{m} \sum_{i=1}^{m} (X_{ij} - \bar{X_j})^2 σXj2=m1i=1∑m(Xij−Xjˉ)2
其中:
- $$
- X_{ij}是第i个样本的第j个特征值,
- \bar{X_j}是第j个特征的均值。
$$
3. 设置方差阈值
为了进行特征选择,我们需要设置一个方差阈值 ( \tau )。这个阈值可以是固定的,也可以根据数据集的统计特性(例如方差的均值或标准差)来设定。常见的选择方法包括:
-
选择一个绝对阈值,例如
τ = 0.01 \tau = 0.01 τ=0.01 -
选择一个相对阈值,例如选取方差在所有特征方差中的某个百分位(如前 50%)。
-
主要参数:
threshold
:浮点数,表示方差阈值,默认值为0.0
(即移除所有方差为零的特征)。
-
适用场景:适用于删除对模型贡献较小的低方差特征,通常是为了减少噪音和维度。
代码示列:
import numpy as np
from sklearn.feature_selection import VarianceThreshold# 创建一个示例数据集 (m样本, n特征)
X = np.array([[1, 2, 3, 4],[2, 2, 3, 4],[3, 2, 3, 4],[4, 2, 3, 4]
])print("原始数据集:")
print(X)# 设置方差阈值 (0.1)
threshold = 0.1# 初始化 VarianceThreshold 对象
selector = VarianceThreshold(threshold=threshold)# 拟合并转换数据
X_reduced = selector.fit_transform(X)print("\n经过底方差过滤后的数据集:")
print(X_reduced)
结果:
原始数据集:
[[1 2 3 4][2 2 3 4][3 2 3 4][4 2 3 4]]经过底方差过滤后的数据集:
[[1][2][3][4]]
7. PCA - 主成分分析降维
-
主成分分析(Principal Component Analysis, PCA)是一种用于降维的线性变换方法,主要目的是通过构造一组新的变量(称为主成分),这些主成分是原始数据中方差最大的方向上的线性组合。PCA可以最大限度地保留数据的方差信息,同时减少数据的维度,通过线性变换将高维数据映射到低维空间,同时尽量保留数据的方差。。
-
主要参数:
n_components
:整数或浮点数,指定保留的主成分数。如果是浮点数,则表示保留的方差比例。如果未指定,则保留所有成分。whiten
:布尔值,是否将成分向量标准化为单位方差,默认值为False
。svd_solver
:字符串,指定奇异值分解的算法,可以选择'auto'
、'full'
、'arpack'
、或'randomized'
。tol
:浮点数,svd_solver=’arpack’时使用的容差,默认值为0.0
。random_state
:整数或None
,指定随机数生成器的种子。
-
适用场景:适用于数据降维、去噪和可视化,同时保留数据的主要信息。
import numpy as np
from sklearn.decomposition import PCA
data = np.array([[2.5, 2.4],[0.5, 0.7],[2.2, 2.9],[1.9, 2.2],[3.1, 3.0],[2.3, 2.7],[2, 1.6],[1, 1.1],[1.5, 1.6],[1.1, 0.9]
])# 初始化PCA并指定主成分数
pca = PCA(n_components=2)# 降维
reduced_data = pca.fit_transform(data)print("降维后的数据:\n", reduced_data)
相关文章:
![](https://i-blog.csdnimg.cn/direct/cfb18953311b4857b7fa04e57b7fcfd3.png#pic_center)
机器学习--特征工程常用API
1. DictVectorizer - 字典特征提取 DictVectorizer 是一个用于将字典(如Python中的字典对象)转换为稀疏矩阵的工具,常用于处理类别型特征。 DictVectorizer(sparseTrue, sortTrue, dtype<class numpy.float64>)参数: spar…...
![](https://i-blog.csdnimg.cn/direct/5d31149c0c8446ba9b5745da7b92832a.png)
块级LoRA:个性化与风格化在文本到图像生成中的新突破
人工智能咨询培训老师叶梓 转载标明出处 文本到图像生成技术的核心目标是教会预训练模型根据输入的文本提示生成具有特定主题和风格的新颖图像。尽管已有多种微调技术被提出,但它们在同时处理个性化和风格化方面仍存在不足,导致生成的图像在个人身份和风…...
![](https://www.ngui.cc/images/no-images.jpg)
redis的数据结构——压缩表(Ziplist)
压缩表(Ziplist)是Redis中一种紧凑的数据结构,主要用于节省内存。它通常被用于存储少量的字符串或小整数,尤其在列表类型(List)和哈希类型(Hash)中。当数据量较小或数据本身占用内存较少时,Redis会选择用压缩表来存储数据,以减少内存开销。 压缩表的基本结构 压缩表…...
![](https://i-blog.csdnimg.cn/direct/adfc536258a74667ba1fe06b94826e18.png)
探索未知,悦享惊喜 —— 您的专属盲盒一番赏小程序盛大开启
在这个充满奇遇与惊喜的时代,每一份未知都蕴藏着无限可能。为了将这份独特的乐趣带到您的指尖,我们精心打造了“悦赏盲盒”小程序,一个集潮流、趣味、收藏于一体的全新互动平台,让每一位用户都能享受到拆盲盒的乐趣,发…...
![](https://i-blog.csdnimg.cn/direct/b8326976cc6543d7a0d260f3291f309e.png)
dompdf导出pdf中文乱码显示问号?
环境:PHP 8.0 框架:ThinkPHP 8 软件包:phpoffice/phpword 、dompdf/dompdf 看了很多教程(包括GitHub的issue、stackoverflow)都没有解决、最终找到解决问题的根本! 背景:用Word模板做转PDF…...
![](https://i-blog.csdnimg.cn/direct/53d0ddd45bdb40908bb91095e525ed7b.png)
韩顺平Java-第二十四章:MYSQL基础篇
一 数据库 1 数据库简单原理图 2 使用命令行窗口连接MYSQL数据库 (1)mysql -h 主机名 -P 端口 -u 用户名 -p密码; (2)登录前,保证服务启动。 3 MySQL三层结构 (1)所谓安装MySQL数…...
![](https://i-blog.csdnimg.cn/direct/28df4526282749f088d6a15e1458aa28.png)
【动态规划算法题记录】最长/最大 问题汇总 (leetcode)
目录 32. 最长有效括号思路代码 300. 最长递增子序列思路代码 674. 最长连续递增序列思路1:双指针代码1:双指针思路2:dp代码2:dp 718. 最长重复子数组思路1:dp代码1:dp思路2:dp优化代码2&#x…...
![](https://i-blog.csdnimg.cn/direct/233982fbf8eb425699afdc2bdb2f71a9.png)
2020 位示图
2020年网络规划设计师上午真题解析36-40_哔哩哔哩_bilibili 假设某计算机的字长为32位,该计算机文件管理系统磁盘空间管理采用位示图(bitmap),记录磁盘的使用情况。若磁盘的容量为300GB,物理块的大小为4MB,…...
![](https://www.ngui.cc/images/no-images.jpg)
富格林:防止陷入黑幕欺诈平台
富格林指出,不少投资者因未做好投资准备而不慎误入黑幕欺诈平台,造成了不必要的亏损。投资者在投资前,需要时刻保持警惕,根据市场行情,作出有依据的投资决定,而不是依赖黑幕欺诈平台的噱头进行投资。建议投…...
![](https://www.ngui.cc/images/no-images.jpg)
Cookie、Session 、token
Cookie 优点: 简单易用: 浏览器自动管理 Cookie 的发送和接收。持久性: 可以设置过期时间,使其可以在浏览器关闭后依旧存在。广泛支持: 所有现代浏览器都支持 Cookie。 缺点: 安全性问题: 存储在客户端,容易被查看和篡改。敏感信息不应直接存储在 Co…...
![](https://www.ngui.cc/images/no-images.jpg)
Json-类型映射使用TypeFactory或者TypeReference
当你需要将JSON数据转换为Java中的复杂类型时,可以使用Jackson库中的TypeFactory或 者TypeReference。这两种方式可以帮助你处理复杂的泛型类型,例如 List<Map<String, Object>> 或者 Map<String, List<Object>>。 示例 1: 使用 TypeFactory 和 T…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)
0 前言 在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、选取等特定工作。 在Linux中提供很多数据处理命令,如果我们要以行为单位进行数据处理,可以使用sed。 1 sed 的帮助信息,功能ÿ…...
![](https://i-blog.csdnimg.cn/direct/7f2c90b14d574cc2b22d746137b51026.png)
内网渗透之icmp隧道传输
原理 # 为什么要建立隧道 在实际的网络中,通常会通过各种边界设备软/硬件防火墙、入侵检测系统来检查对外连接的情况,如果发现异常,会对通信进行阻断。 # 什么是隧道 就是一种绕过端口屏蔽的方式,防火墙两端的数据包通过防火墙…...
![](https://i-blog.csdnimg.cn/direct/a41ed43455584c69b0b8f07b82b70c74.png)
【C++ 第十五章】map 和 set 的封装(封装红黑树)
1. map 和 set 的介绍 ⭐map 与 set 分别是STL中的两种序列式容器; 它们是一种树形数据结构的容器,且其的底层构造为一棵红黑树; 而在上一篇文章中提到,其实红黑树本身就是一棵二叉搜索树,是基于二叉搜索树的性质对其增加了平衡的属性来提高其综合性能 ⭐当然也…...
![](https://i-blog.csdnimg.cn/direct/36ceef679cbc433cb22e4608e70eb89a.png)
LIN通讯
目录 1 PLinApi.h 2 TLINFrameEntry 结构体 3 自定义函数getTLINFrameEntry 4 TLINScheduleSlot 结构体 5 自定义函数 getTLINScheduleSlot 6 自定义LIN_SetScheduleInit函数 7 自定义 LIN_StartSchedule 8 发送函数 9 线程接收函数 1 PLinApi.h 这是官方头文件 ///…...
![](https://i-blog.csdnimg.cn/direct/e58653031ebd4f949a05059338983f5f.png)
zabbix常见架构及组件
Zabbix作为一个开源的、功能全面的监控解决方案,广泛应用于各类组织中,以实现对网络、服务器、云服务及应用程序性能的全方位监控。部署架构灵活性高,可支持从小型单一服务器环境到大型分布式系统的多种场景。基本架构通常包括监控端…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
plsql表格怎么显示中文 plsql如何导入表格数据
在Oracle数据库开发中,PL/SQL Developer是一款广泛使用的集成开发环境(IDE),它提供了丰富的功能来帮助开发人员高效地进行数据库开发和管理。在使用PL/SQL Developer时,许多用户会遇到表格显示中文的问题,以…...
![](https://i-blog.csdnimg.cn/direct/54d7c61f0ce84847bc892ba5a00b3b4a.png)
chromedriver下载地址大全(包括124.*后)以及替换exe后仍显示版本不匹配的问题
Chrome for Testing availability CNPM Binaries Mirror 若已经更新了系统环境变量里的chromdriver路径下的exe,仍显示版本不匹配: 则在cmd界面输入 chromedriver 会跳出version verison与刚刚下载好的exe不匹配,则再输入: w…...
![](https://www.ngui.cc/images/no-images.jpg)
拦截器实现 Mybatis Plus 打印含参数的 SQL 语句
1.实现拦截器 package com.sample.common.interceptor;import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import or…...
![](https://www.ngui.cc/images/no-images.jpg)
Oracle Subprogram即Oracle子程序
Oracle Subprogram,即Oracle子程序,是Oracle数据库中存储的过程(Procedures)和函数(Functions)的统称。这些子程序是存储在数据库中的PL/SQL代码块,用于执行特定的任务或操作。下面详细介绍Orac…...
![](https://i-blog.csdnimg.cn/direct/7177f6e837be4421a6d71da2dd677fcc.png)
自然语言处理实战项目30-基于RoBERTa模型的高精度的评论文本分类实战,详细代码复现可直接运行
大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目30-基于RoBERTa模型的高精度的评论文本分类实战,详细代码复现可直接运行。RoBERTa模型是由 Facebook AI Research 和 FAIR 的研究人员提出的一种改进版的 BERT 模型。RoBERTa 通过采用更大的训练数据集、动态掩码机…...
![](https://img-blog.csdnimg.cn/img_convert/69403ac1319a5ec55559cf04833b9317.png)
RK3588J正式发布Ubuntu桌面系统,丝滑又便捷!
本文主要介绍瑞芯微RK3588J的Ubuntu系统桌面演示,开发环境如下: U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.160 Ubuntu:Ubuntu20.04.6 LinuxSDK: rk3588-linux5.10-sdk-[版本号] (基于rk3…...
![](https://i-blog.csdnimg.cn/direct/8d671ac25eaf445b988349759c0b6c19.png)
基于GPT-SoVITS的API实现批量克隆声音
目标是将每一段声音通过GPT-SoVITS的API的API进行克隆,因为拼在一起的整个片段处理会造成内存或者缓存溢出。 将目录下的音频文件生成到指定目录下,然后再进行拼接。 通过AI工具箱生成的数据文件是这样的结构,temp目录下是没个片段生成的部分,connect_是正常拼接的音频文件…...
![](https://img-blog.csdnimg.cn/img_convert/850042f80baf18aef706763aea8424ba.png)
详解华为项目管理,附华为高级项目管理内训材料
(一)华为在项目管理中通过有效的沟通、灵活的组织结构、坚持不懈的努力、细致的管理和科学的考核体系,实现了持续的创新和发展。通过引进先进的管理模式,强调以客户需求为导向,华为不仅优化了技术管理和项目研发流程&a…...
![](https://www.ngui.cc/images/no-images.jpg)
Perl(Practical Extraction and Reporting Language)脚本
Perl(Practical Extraction and Reporting Language)是一种非常灵活的脚本语言,主要用于文本处理、系统管理以及快速原型开发等领域。Perl 脚本可以用来执行一系列任务,包括文件操作、网络通信、数据处理等。 下面是一些关于编写…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fi.loli.net%2F2021%2F10%2F12%2F4kVzZ6mKBNsPdy3.png&pos_id=img-fXOkCyZV-1724216570558)
单例模式详细
文章目录 单例模式介绍八种方式1、饿汉式(静态常量)2、饿汉式(静态代码块)3、懒汉式(线程不安全)4、懒汉式(线程安全,同步方法)5、懒汉式(线程不安全…...
![](https://i-blog.csdnimg.cn/direct/620cb347e3064d71b90cf80c2f69f00b.png#pic_center)
Unity3D 自定义窗口
Unity3D 自定义窗口的实现。 自定义窗口 Unity3D 可以通过编写代码,扩展编辑器的菜单栏和窗口。 简单的功能可以直接一个菜单按钮实现,复杂的功能就需要绘制一个窗口展示更多的信息。 编辑器扩展的脚本,需要放在 Editor 文件夹中。 菜单栏…...
![](https://i-blog.csdnimg.cn/direct/300ebc8d0eb143629bb75e7f63c85e30.png)
dubbo:dubbo整合nacos实现服务注册中心、配置中心(二)
文章目录 0. 引言1. nacos简介及安装2. 注册中心实现3. 配置中心实现4. 源码5. 总结 0. 引言 之前我们讲解的是dubbozookeeper体系来实现微服务框架,但相对zookeeper很多企业在使用nacos, 并且nacos和dubbo都是阿里出品,所以具备一些天生的契合性&#…...
![](https://www.ngui.cc/images/no-images.jpg)
个人博客指路
Pudding 个人博客 比较懒,直接 github page 了,没国内代理加速。 欢迎大佬们,踩一踩 没做留言,觉得很鸡肋。有问题可以在本文底下评论、或者直接邮件...
![](https://i-blog.csdnimg.cn/direct/38702d5bc8b349b39c65fc861fbb2546.png)
【STM32 HAL】多串口printf重定向
【STM32 HAL】多串口printf重定向 前言单串口printf重定向原理实现CubeMX配置Keil5配置 多串口printf重定向 前言 在近期项目中,作者需要 STM32 同时向上位机和手机发送数据,传统的 printf 重定向只能输出到一个串口。本文介绍如何实现 printf 同时输出…...
![](https://img-blog.csdnimg.cn/2018122510121520.gif)
58这种网站怎么做/重庆网站
一、在图形界面显示图片的两种方法 一般情况下,想要在GUI中显示图片,我们会通过: – 实例化一个QLable()部件; – 实例化一个QPixmap()图形类; – 通过QLabel()部件的setPixmap()方法设置QLabel()部件的图形ÿ…...
![](/images/no-images.jpg)
建筑工程承包网址大全/免费seo关键词优化方案
1、微型计算机系统中的中央处理器通常是指( )A.内存储器和控制器B.内存储器和运算器C.运算器和控制器D.内存储器、控制器和运算器2、存储器可分为哪两类( )A.硬盘和软盘B.ROM和EPROMC.RAM和ROMD.内存储器和外存储器3、最早的计算机的用途是用于( )A.科学计算B.自动控制C.辅助设…...
![](https://img-blog.csdnimg.cn/img_convert/da826159514b19e503bfe1aea1a779a0.png)
wordpress后台地址能改/灰色关键词排名优化
https://codeforces.com/contest/1698/problem/A 标签 位运算 题意 给定 n - 1 个数, 让 x 等于这 n - 1 个数依次 按位异或 的结果, 即 x a[1] ^ a[2] ^a[3] ^ … ^ a[n - 1]. 现在将 x 放入这 n - 1 个数中并打乱, 找出哪个数是 x. 若有多个 x, 输出任意一个. 思路 …...
![](https://img-blog.csdnimg.cn/20200720215340809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E4MTI0MTc1MzA=,size_16,color_FFFFFF,t_70)
网络公司 营销型网站/专注网络营销推广公司
海思[Hi3531]GPIO应用程序和寄存器操作//主要就是这个函数啦 HI_S32 SetReg(HI_U32 u32Addr, HI_U32 u32Value) {HI_U32 *pu32Addr NULL;HI_U32 u32MapLen sizeof(u32Value);pu32Addr (HI_U32 *)HI_MPI_SYS_Mmap(u32Addr, u32MapLen);//存储映射接口if(NULL pu32Addr){retu…...
![](https://static.oschina.net/uploads/img/201610/09200510_Sah3.png)
山西建设执业资格注册管理中心网站/免费的网页入口
为什么80%的码农都做不了架构师?>>> #MyBatis进阶 复杂Java对象与多张数据库表之间的映射关系配置数据库连接池提高MyBatis对后端数据库访问的性能 ##更为复杂的E-R图 学员对课程是多对多关系,而教员与课程是一对多关系 学员 User 课程 Cous…...
网站建设海南/国内重大新闻十条
一、Lua与C的交互机制——Lua堆栈 1)交互机制 Lua和C 的交互机制的基础在于Lua提供了一个虚拟栈,C 和Lua之间的所有类型的数据交换都通过这个栈完成。无论何时C想从Lua中调用一个值,被请求的值将会被压入栈,无论何时C想要传递一个值给Lua&…...