文章目录

  • 先言
  • 一、特征工程概述
  • 二、特征提取
    • 1.字典特征提取(特征离散化)
    • 2.文本特征提取
      • 2.1英文文本提取
      • 2.2中文文本提取(jieba分词器)
    • 3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取
  • 三、数据归一化与标准化
    • 1.MinMaxScaler 归一化(Min-Max Scaling):(适合分布有界的数据)
    • 2.normalize归一化(Normalize Scaling):(适合分布有界的数据)
    • 3.标准化(Z-Score Scaling):StandardScaler(适合高斯分布数据)
  • 四、特征选择与降维
    • 1.方差阈值法(VarianceThreshold)剔除低方差特征
    • 2.皮尔逊相关系数(Pearson correlation coefficient)
    • 3.主成分分析(sklearn.decomposition.PCA)
  • 结语


先言

在机器学习项目中,数据和特征决定了模型性能的上限,而优秀的特征工程能让我们逼近这个上限。特征工程是从原始数据中提取、转换和优化特征的过程,直接影响模型的准确性、泛化能力和训练效率。

本文将深入探讨特征工程的核心技术包括:字典特征提取(DictVectorizer)、文本特征处理(词袋模型、TF-IDF)、数据标准化与归一化(StandardScaler, MinMaxScaler)、特征降维(低方差过滤、PCA主成分分析)。通过理论讲解与代码实战,帮助你掌握如何将原始数据转化为高质量特征,为机器学习模型提供更强大的输入!


一、特征工程概述

什么是特征工程?为什么它如此重要?

特征工程:就是对特征进行相关的处理
一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程
特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。
特征工程步骤为:

  • 特征提取, 如果不是像dataframe那样的数据,要进行特征提取,比如字典特征提取,文本特征提取
  • 无量纲化(预处理)
    • 归一化
    • 标准化
  • 降维
    • 底方差过滤特征选择
    • 主成分分析-PCA降维

二、特征提取

特征提取旨在从原始特征中提取出新的、更具表达力的特征。

1.字典特征提取(特征离散化)

sklearn.feature_extraction.DictVectorizer(sparse=True)

参数:
sparse=True返回类型为csr_matrix的稀疏矩阵
sparse=False表示返回的是数组,数组可以调用.toarray()方法将稀疏矩阵转换为数组

  • 转换器对象:

    转换器对象调用fit_transform(data)函数,参数data为一维字典数组或一维字典列表,返回转化后的矩阵或数组

    转换器对象get_feature_names_out()方法获取特征名

代码如下(示例):

from  sklearn.feature_extraction import  DictVectorizer
import pandas as pd
data = [{'city':'成都', 'age':30, 'temperature':200}, {'city':'重庆','age':33, 'temperature':60}, {'city':'北京', 'age':42, 'temperature':80}]
#创建字典列表特征提取对象
transfer = DictVectorizer(sparse=False)
#调用fit_transform方法,获取转换后的特征数组
data_new = transfer.fit_transform(data)
#打印特征数组
print(data_new)
#获取特性名称
print(transfer.get_feature_names_out())
[[ 30.   0.   1.   0. 200.][ 33.   0.   0.   1.  60.][ 42.   1.   0.   0.  80.]]
['age' 'city=北京' 'city=成都' 'city=重庆' 'temperature']

当sparse=True时,返回一个三元组的稀疏矩阵:

#获取稀疏矩阵
transfer = DictVectorizer(sparse=True)
data_new = transfer.fit_transform(data)
#返回一个三元组稀疏矩阵
print(data_new)

返回数据结果如下:

<Compressed Sparse Row sparse matrix of dtype 'float64'with 9 stored elements and shape (3, 5)>Coords	Values(0, 0)	30.0(0, 2)	1.0(0, 4)	200.0(1, 0)	33.0(1, 3)	1.0(1, 4)	60.0(2, 0)	42.0(2, 1)	1.0(2, 4)	80.0

三元组表 (Coordinate List, COO):三元组表就是一种稀疏矩阵类型数据,存储非零元素的行索引、列索引和值:

(行,列) 数据

(0,0) 10

(0,1) 20

(2,0) 90

(2,20) 8

(8,0) 70

表示除了列出的有值, 其余全是0
我们可以对三元组表进行转换为数组形式,可上面的数组一致,只不过通过三元组对数据进行获取可以节省资源,示例代码:

#对三元组矩阵进行转换
data_new = data_new.toarray()
print(data_new)
print(transfer.get_feature_names_out())

返回结果如下:

[[ 30.   0.   1.   0. 200.][ 33.   0.   0.   1.  60.][ 42.   1.   0.   0.  80.]]
['age' 'city=北京' 'city=成都' 'city=重庆' 'temperature']

补充(稀疏矩阵):

稀疏矩阵
稀疏矩阵是指一个矩阵中大部分元素为零,只有少数元素是非零的矩阵。在数学和计算机科学中,当一个矩阵的非零元素数量远小于总的元素数量,且非零元素分布没有明显的规律时,这样的矩阵就被认为是稀疏矩阵。例如,在一个1000 x 1000的矩阵中,如果只有1000个非零元素,那么这个矩阵就是稀疏的。

由于稀疏矩阵中零元素非常多,存储和处理稀疏矩阵时,通常会采用特殊的存储格式,以节省内存空间并提高计算效率。

2.文本特征提取

sklearn.feature_extraction.text.CountVectorizer

​构造函数关键字参数stop_words,值为list,表示词的黑名单(不提取的词)

fit_transform函数的返回值为稀疏矩阵

2.1英文文本提取

代码如下(示例):

from  sklearn.feature_extraction.text import  CountVectorizer
import pandas as pd
import jieba
data=["stu is well, stu is great", "You like stu"]
#创建转换器
transfer = CountVectorizer()
#调用fit_transform方法进行提取
data_new = transfer.fit_transform(data)
#返回的数组数字代表词频
print(data_new.toarray())
#获取特征名称
print(transfer.get_feature_names_out())
#使用pandas创建字典列表
data = pd.DataFrame(data_new.toarray(),columns=transfer.get_feature_names_out(),index=['sentence1','sentence2'])
print(data)

返回结果:

[[1 2 0 2 1 0][0 0 1 1 0 1]]
['great' 'is' 'like' 'stu' 'well' 'you']great  is  like  stu  well  you
sentence1      1   2     0    2     1    0
sentence2      0   0     1    1     0    1

2.2中文文本提取(jieba分词器)

代码如下(示例):

#中文文本提取
data = ["小明喜欢小张","小张喜欢小王","小王喜欢小李"]
#创建中文文本分割函数
def chinese_word_cut(mytext):return " ".join(jieba.cut(mytext))
data1 = [chinese_word_cut(i) for i in data]
# print(data1)
#创建词频统计对象
transfer = CountVectorizer()
data_new = transfer.fit_transform(data1)
print(data_new.toarray())
print(transfer.get_feature_names_out())

返回结果:

[[1 1 1 0 0][1 1 0 0 1][1 0 0 1 1]]
['喜欢' '小张' '小明' '小李' '小王']

补充:jieba是一个工具库可以通过pip下载,jieba用于对中文进行自动分词对于自然语言方面一个不错的分词工具

3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取

词频(Term Frequency, TF), 表示一个词在当前篇文章中的重要性

逆文档频率(Inverse Document Frequency, IDF), 反映了词在整个文档集合中的稀有程度
在这里插入图片描述
代码与CountVectorizer的示例基本相同,仅仅把CountVectorizer改为TfidfVectorizer即可,代码如下(示例):

import jieba
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.preprocessing import normalize
def chinese_word_cut(mytext):return " ".join(jieba.cut(mytext))
data = ["量子纠缠是物理学中一种奇妙的现象,两个粒子即使相隔遥远也能瞬间影响彼此的状态。","今天早上我吃了一个苹果,然后去公园散步,看到很多人在跳舞。","䴖䴗䴘䴙䴚䴛是一些非常罕见的汉字,它们属于 Unicode 扩展字符集。"
]
#通过jieba对数据进行分词
data1 = [chinese_word_cut(i) for i in data]
#创建文字稀有度统计对象
transfer =TfidfVectorizer()
#调用对象方法转换数据
data_new = transfer.fit_transform(data1)
print(data_new.toarray())
print(transfer.get_feature_names_out())
data_new = MyTfidfVectorizer(data1)
print(data_new)

提取结果:

[[0.         0.         0.         0.25819889 0.25819889 0.0.         0.25819889 0.25819889 0.         0.         0.0.25819889 0.25819889 0.         0.         0.         0.0.         0.         0.25819889 0.25819889 0.25819889 0.258198890.         0.25819889 0.25819889 0.25819889 0.         0.0.         0.25819889 0.25819889 0.        ][0.         0.31622777 0.         0.         0.         0.316227770.31622777 0.         0.         0.         0.         0.0.         0.         0.31622777 0.         0.31622777 0.316227770.         0.31622777 0.         0.         0.         0.0.31622777 0.         0.         0.         0.         0.316227770.31622777 0.         0.         0.        ][0.33333333 0.         0.33333333 0.         0.         0.0.         0.         0.         0.33333333 0.33333333 0.333333330.         0.         0.         0.33333333 0.         0.0.33333333 0.         0.         0.         0.         0.0.         0.         0.         0.         0.33333333 0.0.         0.         0.         0.33333333]]
['unicode' '一个' '一些' '一种' '两个' '今天' '公园' '即使' '奇妙' '字符集' '它们' '属于' '影响''彼此' '很多' '扩展' '散步' '早上' '汉字' '然后' '物理学' '状态' '现象' '相隔' '看到' '瞬间' '粒子''纠缠' '罕见' '苹果' '跳舞' '遥远' '量子' '非常']

自己函数实现重要程度特征提取(有兴趣的可以看看):

def MyTfidfVectorizer(data):#提取词频TFtransfer = CountVectorizer()data_new = transfer.fit_transform(data)TF = data_new.toarray()#提取IDFIDF = np.log((len(TF)+1)/(np.sum(TF!=0,axis=0)+1))+1tf_idf = TF*IDF#l2归一化tf_idf =normalize(tf_idf,norm='l2')return tf_idf
data_new = MyTfidfVectorizer(data1)
print(data_new)

执行后连着的结果是一样的

三、数据归一化与标准化

通过对原始数据进行变换把数据映射到指定区间(默认为0-1)

归一化公式:

1.MinMaxScaler 归一化(Min-Max Scaling):(适合分布有界的数据)

在这里插入图片描述

这里的 𝑥min 和 𝑥max 分别是每种特征中的最小值和最大值,而 𝑥是当前特征值,𝑥scaled 是归一化后的特征值。

若要缩放到其他区间,可以使用公式:x=x*(max-min)+min;

比如 [-1, 1]的公式为:
在这里插入图片描述

sklearn.preprocessing.MinMaxScaler(feature_range)

参数:feature_range=(0,1) 归一化后的值域,可以自己设定
fit_transform函数归一化的原始数据类型可以是list、DataFrame和ndarray, 不可以是稀疏矩阵
fit_transform函数的返回值为ndarray
代码如下(示例):

#获取数据集
iris = load_iris()
data = iris.data[:5]
print(data)
#最大最小值归一化(MinMaxScaler)
#创建MinMaxScaler对象
transfer1 =MinMaxScaler()
#对数据进行规划处理
data_new = transfer1.fit_transform(data)
print(data_new)

这里是以鸢尾花数据为例:

初始数据
[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]归一化后数据
[[1.         0.83333333 0.5        0.        ][0.6        0.         0.5        0.        ][0.2        0.33333333 0.         0.        ][0.         0.16666667 1.         0.        ][0.8        1.         0.5        0.        ]]

2.normalize归一化(Normalize Scaling):(适合分布有界的数据)

 sklearn.preprocessing.normalize(data, norm='l2', axis=1)
  • norm表述normalize标准化的三种方式

<1> L1归一化(norm=l1):绝对值相加作为分母,特征值作为分子

<2> L2归一化(norm=l2):平方相加作为分母,特征值作为分子

<3> max归一化(norm=max):max作为分母,特征值作为分子

代码如下(示例):

#不用创建对象直接调用方法
#l1绝对值相加做分母
data_new= normalize(data,norm="l1",axis=1)
print(data_new)
#l2平方和做分母
data_new = normalize(data,norm="l2",axis=1)
print(data_new)
#max最大值做分母
data_new = normalize(data,norm="max",axis=1)
print(data_new)

归一化效果:

l1归一化
[[0.5        0.34313725 0.1372549  0.01960784][0.51578947 0.31578947 0.14736842 0.02105263][0.5        0.34042553 0.13829787 0.0212766 ][0.4893617  0.32978723 0.15957447 0.0212766 ][0.49019608 0.35294118 0.1372549  0.01960784]]
l2归一化
[[0.80377277 0.55160877 0.22064351 0.0315205 ][0.82813287 0.50702013 0.23660939 0.03380134][0.80533308 0.54831188 0.2227517  0.03426949][0.80003025 0.53915082 0.26087943 0.03478392][0.790965   0.5694948  0.2214702  0.0316386 ]]
max归一化
[[1.         0.68627451 0.2745098  0.03921569][1.         0.6122449  0.28571429 0.04081633][1.         0.68085106 0.27659574 0.04255319][1.         0.67391304 0.32608696 0.04347826][1.         0.72       0.28       0.04      ]]

3.标准化(Z-Score Scaling):StandardScaler(适合高斯分布数据)

在机器学习中,标准化是一种数据预处理技术,也称为数据归一化或特征缩放。它的目的是将不同特征的数值范围缩放到统一的标准范围,以便更好地适应一些机器学习算法,特别是那些对输入数据的尺度敏感的算法。

  • <1>标准化公式

最常见的标准化方法是Z-score标准化,也称为零均值标准化。它通过对每个特征的值减去其均值,再除以其标准差,将数据转换为均值为0,标准差为1的分布。这可以通过以下公式计算:
在这里插入图片描述

其中,z是转换后的数值,x是原始数据的值,μ是该特征的均值,σ是该特征的 标准差

  • <2> 标准化 API
sklearn.preprocessing.StandardScale

与MinMaxScaler一样,原始数据类型可以是list、DataFrame和ndarray

fit_transform函数的返回值为ndarray, 归一化后得到的数据类型都是ndarray

代码示例:

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
#获取数据集
iris = load_iris()
data = iris.data[:5]
#StandardScaler标准化
#创建标准化转换对象
transfer = StandardScaler()
#调用fit_transform
data_new = transfer.fit_transform(data)
print(data_new)

标准化效果:

[[ 1.29399328  0.95025527  0.          0.        ][ 0.21566555 -1.2094158   0.          0.        ][-0.86266219 -0.34554737 -1.58113883  0.        ][-1.40182605 -0.77748158  1.58113883  0.        ][ 0.75482941  1.38218948  0.          0.        ]]

四、特征选择与降维

实际数据中,有时候特征很多,会增加计算量,降维就是去掉一些特征,或者转化多个特征为少量个特征

特征降维其目的:是减少数据集的维度,同时尽可能保留数据的重要信息。

特征降维的好处:

减少计算成本:在高维空间中处理数据可能非常耗时且计算密集。降维可以简化模型,降低训练时间和资源需求。

去除噪声:高维数据可能包含许多无关或冗余特征,这些特征可能引入噪声并导致过拟合。降维可以帮助去除这些不必要的特征。

特征降维的方式:

  • 特征选择
    • 从原始特征集中挑选出最相关的特征
  • 主成份分析(PCA)
    • 主成分分析就是把之前的特征通过一系列数学计算,形成新的特征,新的特征数量会小于之前特征数量

1.方差阈值法(VarianceThreshold)剔除低方差特征

  • Filter(过滤式): 主要探究特征本身特点, 特征与特征、特征与目标 值之间关联

    • 方差选择法: 低方差特征过滤

      如果一个特征的方差很小,说明这个特征的值在样本中几乎相同或变化不大,包含的信息量很少,模型很难通过该特征区分不同的对象,比如区分甜瓜子和咸瓜子还是蒜香瓜子,如果有一个特征是长度,这个特征相差不大可以去掉。

      1. 计算方差:对于每个特征,计算其在训练集中的方差(每个样本值与均值之差的平方,在求平均)。
      2. 设定阈值:选择一个方差阈值,任何低于这个阈值的特征都将被视为低方差特征。
      3. 过滤特征:移除所有方差低于设定阈值的特征

代码示例:

from sklearn.datasets import load_iris
from sklearn.feature_selection import VarianceThreshold
import numpy as np
iris = load_iris()
X = iris.data[:10]
y = [1,1,1,0,0,0,1,0,1,1]
print(X)#低反差过滤特征选择
#创建转换器对象
transfer1 = VarianceThreshold(threshold=0.01)
data_new = transfer1.fit_transform(X)
print(data_new)
特征过滤前
[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2][5.4 3.9 1.7 0.4][4.6 3.4 1.4 0.3][5.  3.4 1.5 0.2][4.4 2.9 1.4 0.2][4.9 3.1 1.5 0.1]]经过低方差过滤后
[[5.1 3.5 1.4][4.9 3.  1.4][4.7 3.2 1.3][4.6 3.1 1.5][5.  3.6 1.4][5.4 3.9 1.7][4.6 3.4 1.4][5.  3.4 1.5][4.4 2.9 1.4][4.9 3.1 1.5]]

2.皮尔逊相关系数(Pearson correlation coefficient)

皮尔逊相关系数(Pearson correlation coefficient)是一种度量两个变量之间线性相关性的统计量。它提供了两个变量间关系的方向(正相关或负相关)和强度的信息。皮尔逊相关系数的取值范围是 [−1,1],其中:

  • ρ=1\rho=1ρ=1 表示完全正相关,即随着一个变量的增加,另一个变量也线性增加。
  • ρ=−1\rho=-1ρ=1 表示完全负相关,即随着一个变量的增加,另一个变量线性减少。
  • ρ=0\rho=0ρ=0 表示两个变量之间不存在线性关系。

相关系数
ρ\rho ρ
的绝对值为0-1之间,绝对值越大,表示越相关,当两特征完全相关时,两特征的值表示的向量是
在同一条直线上,当两特征的相关系数绝对值很小时,两特征值表示的向量接近在同一条直线上。当相关系值为负数时,表示负相关,皮尔逊相关系数:pearsonr相关系数计算公式, 该公式出自于概率论
对于两组数据 𝑋={𝑥1,𝑥2,…,𝑥𝑛} 和 𝑌={𝑦1,𝑦2,…,𝑦𝑛},皮尔逊相关系数可以用以下公式计算:

ρ=Cos⁡(x,y)Dx⋅Dy=E[(x−Ex)(y−Ey)]Dx⋅Dy=∑i=1n(x−x~)(y−yˉ)/(n−1)∑i=1n(x−xˉ)2/(n−1)⋅∑i=1n(y−yˉ)2/(n−1)\rho=\frac{\operatorname{Cos}(x, y)}{\sqrt{D x} \cdot \sqrt{D y}}=\frac{E[(x_-E x)(y-E y)]}{\sqrt{D x} \cdot \sqrt{D y}}=\frac{\sum_{i=1}^{n}(x-\tilde{x})(y-\bar{y}) /(n-1)}{\sqrt{\sum_{i=1}^{n}(x-\bar{x})^{2} /(n-1)} \cdot \sqrt{\sum_{i=1}^{n}(y-\bar{y})^{2} /(n-1)}} ρ=DxDyCos(x,y)=DxDyE[(xEx)(yEy)]=i=1n(xxˉ)2/(n1)i=1n(yyˉ)2/(n1)i=1n(xx~)(yyˉ)/(n1)
xˉ\bar{x}xˉyˉ\bar{y}yˉ 分别是𝑋和𝑌的平均值

|ρ|<0.4为低度相关; 0.4<=|ρ|<0.7为显著相关; 0.7<=|ρ|<1为高度相关

scipy.stats.personr(x, y) 计算两特征之间的相关性
返回对象有两个属性:

  • statistic皮尔逊相关系数[-1,1]
  • pvalue零假设(了解),统计上评估两个变量之间的相关性,越小越相关

代码示例:

from sklearn.datasets import load_iris
from scipy.stats import pearsonr
import numpy as np
iris = load_iris()
X = iris.data[:10]
y = [1,1,1,0,0,0,1,0,1,1]
#相关系数过滤特征选择
#将数据转为numpy数组提取每一列
del1 = np.array(X)[:,0]
print(del1)
print(y)
#pearsonr可以直接计算相关系数
r1 = pearsonr(del1,y)
#输出相关系数statistic 相关性:负数值表示负相关,正数表示正相关,0表示不相关
print(r1.statistic)
#输出相关系数pvalue 程度相关性:pvalue的值越小,则越相关
print(r1.pvalue)
[5.1 4.9 4.7 4.6 5.  5.4 4.6 5.  4.4 4.9]
[1, 1, 1, 0, 0, 0, 1, 0, 1, 1]
-0.4135573338871735
0.2348356617037816

3.主成分分析(sklearn.decomposition.PCA)

  • 用矩阵P对原始数据进行线性变换,得到新的数据矩阵Z,每一列就是一个主成分, 如下图就是把10维降成了2维,得到了两个主成分

    在这里插入图片描述

  • 根据主成分的方差等,确定最终保留的主成分个数, 方差大的要留下。一个特征的多个样本的值如果都相同,则方差为0, 则说明该特征值不能区别样本,所以该特征没有用。

PCA(n_components=None)
  • 主成分分析
  • n_components:
    • 实参为小数时:表示降维后保留百分之多少的信息
    • 实参为整数时:表示减少到多少特征

代码示例:

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
x,y = load_iris(return_X_y=True)
data = x[0:5]
print(data)
#创建转化器对象n_components为小数时表示保留原始数据80%的信息
transfer = PCA(n_components=0.8)
#调用转换器方法fit_transform()
data_new = transfer.fit_transform(data)
print(data_new)#n_components为整数时表示保留的维度
transfer = PCA(n_components=2)
data_new = transfer.fit_transform(data)
print(data_new)

执行效果:

[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]
[[ 0.31871016][-0.20314124][-0.15458491][-0.30200277][ 0.34101876]]
[[ 0.31871016  0.06464364][-0.20314124  0.19680403][-0.15458491 -0.07751201][-0.30200277 -0.10904729][ 0.34101876 -0.07488837]]

结语

特征工程是机器学习中的“艺术”,需要领域知识、统计思维和编程技巧的结合。本文从 字典特征 到 PCA降维,系统介绍了特征工程的核心方法,并提供了可直接复用的代码示例。

🔧 动手挑战:尝试对一份真实数据集(如Kaggle的Titanic数据)进行完整的特征工程处理,观察模型效果的变化!

📚 下期预告:我们将进入 模型训练与调优 阶段,探讨如何选择算法并优化超参数。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3、CC3200串口DMA

先说下CC3200存在2个16*8的fifos, 分别用于发送和接收 当fifos被disable时&#xff0c;将会作为一个1字节深度的保持寄存器&#xff0c; 所以无论fifos是开是关&#xff0c;发送和接收都绕不开fifos DMA 由于发送和接收都绕不过fifos,所以DMA也绕不开FIFOS. MAP_UARTFIFOLevelS…

从游戏NPC到手术助手:Agent AI重构多模态交互,具身智能打开AGI新大门

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

Lesson 29 Taxi!

Lesson 29 Taxi! taxi n.出租车 同义词:cab n.出租车 相关:taxi meter计价器 taxi stand taxi rank 出租车站 call ataxi 叫车&#xff0c;打车 例句:对不起,请问出租车站在哪里? Excuse me, do you know where the taxi rank is please? land v.着陆&#xff0c;登陆n.陆地…

怎样将allegro的brd文件转化为AD的PCB文件

由于工作需要将allegro的PCB转成ad给同事&#xff0c;在使用AD软件导入Allegro的brd格式文件时出现各种的异常报错弹窗问题&#xff0c;现分享两种将Allegro PCB文件导入到AD中的方法。一、第1种方法使用高版本的AD软件&#xff08;AD22&#xff0c;同时操作电脑需安装了Allegr…

[免费]【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts)【论文+源码+SQL脚本】

大家好&#xff0c;我是python222_小锋老师&#xff0c;看到一个不错的【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)&#xff0c;分享下哈。 项目视频演示 【免费】【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts爬虫) Pytho…

什么是CI/CD?

CI/CD是持续集成&#xff08;Continuous Integration&#xff09;和持续交付/持续部署&#xff08;Continuous Delivery/Continuous Deployment&#xff09;的缩写&#xff1a;持续集成&#xff08;Continuous Integration, CI&#xff09;&#xff1a;CI是一种开发实践&#x…

【Linux】重生之从零开始学习运维之Mysql

一主一从主12主机准备工作mkdir -p /data/mysql/logbin chown -R mysql:mysql /data/mysql主节点mysql配置vim /etc/my.cnf.d/mysql-server.cnf server-id177 log_bin/data/mysql/logbin/mysql-bin default_authentication_pluginmysql_native_password查看效果systemctl resta…

Trust Management System (TMS)

Trust Management System &#xff08;TMS&#xff09;信托管理系统学习信托管理系统&#xff08;TMS&#xff09;是一种用于高效管理信托业务的综合平台&#xff0c;涵盖客户信息、资产配置、风险监控等功能。通过学习TMS&#xff0c;可以掌握信托产品设计、业务流程优化及合规…

Spring Boot中使用Bouncy Castle实现SM2国密算法(与前端JS加密交互)

Spring Boot中使用Bouncy Castle实现SM2国密算法&#xff08;与前端JS加密交互&#xff09;一、环境准备二、核心实现三、前后端交互流程四、关键问题解决方案五、常见问题排查六、最佳实践建议在现代Web应用中&#xff0c;数据安全传输至关重要。SM2作为我国自主设计的非对称加…

机器学习sklearn:随机森林的决策树

bg&#xff1a;对比决策树来说&#xff0c;搞多几棵树就是随机森林了rlf_1 [] rlf_2 [] for i in range(10):rfc RandomForestClassifier(n_estimators25)rfc_s cross_val_score(rfc, wine.data, wine.target, cv10).mean()rlf_1.append(rfc_s)clf DecisionTreeClassifier…

上海月赛kk

1.十六进制#include<bits/stdc.h> using namespace std;int n;int main(){cin>>n;stack<int>re;if(n<16)cout<<0;while(n){re.push(n%16);n/16;}while(!re.empty()){int xre.top();re.pop();if(x<10)cout<<x;else cout<<char(Ax-10)…

暑期算法训练.12

目录 52. 力扣1 两数之和 52.1 题目解析&#xff1a; 52.2 算法思路&#xff1a; 52.3 代码演示&#xff1a; ​编辑 52.4 总结反思&#xff1a; 53 面试题&#xff1a;判定是否互为字符重排 53.1 题目解析&#xff1a; 53.2 算法思路&#xff1a; 53.3 代码演示&…

MySQL时间处理完全指南:从存储到查询优化

时间是数据库中最活跃的数据维度之一&#xff0c;正确处理时间数据关系到系统稳定性、数据分析准确性和业务逻辑正确性。本文将深入剖析MySQL时间处理的完整知识体系。一、MySQL时间数据类型详解1. 核心时间类型对比类型存储空间范围特性时区影响DATE3字节1000-01-01~9999-12-3…

Text2SQL 智能问答系统开发-预定义模板(二)

背景 在构建一个支持多轮对话的 Text2SQL 系统过程中&#xff0c;我完成了以下关键功能&#xff1a; 已完成 基础 Text2SQL 功能实现 实现用户输入自然语言问题后&#xff0c;系统能够自动生成 SQL 并执行返回结果。用户交互优化 支持用户通过补充信息对查询进行调整&#xff0…

JavaScript 异步编程:Promise 与 async/await 详解

一、Promise 1. 什么是 Promise&#xff1f; Promise 是 JavaScript 中用于处理异步操作的对象&#xff0c;它代表一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。 2. Promise 的三种状态 ​​Pending&#xff08;待定&#xff09;​​&#xff1a;初始状态…

OS架构整理

OS架构整理引导启动部分bios bootloader区别启动流程&#xff08;x86 BIOS 启动&#xff09;&#xff1a;biosboot_loader3.切换进保护模式实模式的限制如何切换进保护模式加载kernel到内存地址1M加载内核映像文件elf一些基础知识链接脚本与代码数据段创建GDT表段页式内存管理显…

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

目录namelist 选项&#xff1a;chem_opt 的选择其他化学相关的 namelist 选项气溶胶光学属性与输出边界与初始条件配置&#xff08;气体&#xff09;参考本博客详细介绍 WRF-Chem有关 namelist 选项。 namelist 选项&#xff1a;chem_opt 的选择 chem_opt 是什么&#xff1f;…

STM32-USART串口实现接收数据三种方法(1.根据\r\n标志符、2.空闲帧中断、3.根据定时器辅助接收)

本章概述思维导图&#xff1a;USART串口初始化配置串口初始化配置在&#xff08;STM32-USART串口初始化章节有详细教程配置&#xff09;&#xff0c;本章不做讲解直接代码示例&#xff0c;本章重点在于串口实现接收数据三种方法&#xff1b;配置USART1串口接收初始化函数步骤&a…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论数据可视化分析-点赞区间折线图实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解微博评论数据可视化分析-点赞区间折线图实现…

Unity_SRP Batcher

SRP Batcher 全面解析&#xff1a;原理、启用、优化与调试一、什么是 SRP Batcher&#xff1f;SRP Batcher 是 Unity Scriptable Render Pipeline&#xff08;URP、HDRP 或自定义 SRP&#xff09; 专属的 CPU 渲染性能优化技术&#xff0c;核心目标是 减少材质切换时的 CPU 开销…