三、归一化与标准化
归一化与标准化
- 前言
- 一、最小最大值归一化
- 1.1 原理(公式)
- 1.2 API 介绍
- 1.2.1 参数介绍
- 1.2.2 属性介绍
- 1.2.3 注意事项
- 1.2.4 代码演示
- 1.3 举例说明
- 二、标准化
- 2.1 原理(公式)
- 2.2 API 介绍
- 2.2.1 参数介绍
- 2.2.2 属性介绍
- 2.2.3 注意事项
- 2.2.4 代码演示
- 2.3 举例说明
- 三、案例代码:利用KNN算法进行鸢尾花分类
- 总结
前言
- 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些模型(算法)无法学习到其它的特征。
- 所以我们需要对特征进行预处理,让不同特征在同一尺度下进行比较,从而避免因特征值大小差异而导致的模型训练偏倚。
一、最小最大值归一化
1.1 原理(公式)
- 这种方法将特征值缩放到指定的区间内,默认是0到1之间。计算公式如下:
x n o r m = x − m i n ( x ) m a x ( x ) − m i n ( x ) x_{norm} = \frac{x-min(x)}{max(x)-min(x)} xnorm=max(x)−min(x)x−min(x) - 如果需要缩放至其他区间[a, b],则可以使用:
x n o r m = a + ( x − m i n ( x ) m a x ( x ) − m i n ( x ) ) ⋅ ( b − a ) x_{norm} = a + (\frac{x-min(x)}{max(x)-min(x)}) \cdot (b-a) xnorm=a+(max(x)−min(x)x−min(x))⋅(b−a)
1.2 API 介绍
- sklearn.preprocessing.MinMaxScaler ( )
1.2.1 参数介绍
- feature_range:tuple (min, max), default=(0, 1)
- 描述:这个参数用于设定缩放的范围。默认情况下,数据会被缩放到 [0, 1] 范围内。但用户可以根据需要设定其他范围,例如 [-1, 1]。
- 作用:通过调整缩放范围,可以对数据的分布进行更精细的控制,以适应不同的机器学习算法和数据特点。
- copy:boolean, optional, default=True
- 描述:这个参数用于指定是否将转换后的数据覆盖原数据。如果设置为 True,则不会修改原始数据,而是返回一个新的缩放后的数据数组。如果设置为 False,则会在原地修改原始数据。
- 作用:通过控制是否覆盖原数据,可以保护原始数据的完整性,避免在数据处理过程中发生数据丢失或修改。
- clip:boolean, optional, default=False
- 描述:clip 参数是一个布尔值,用于控制是否对变换后的数据进行裁剪。
- 作用:当 clip=True 时,变换后的数据将被裁剪到指定的范围内,确保数据的一致性和有效性;当 clip=False 时,变换后的数据可能超出指定的范围,这需要根据具体情况来决定是否启用裁剪功能。
1.2.2 属性介绍
在 MinMaxScaler 类中,还有一些重要的属性,用于存储缩放过程中的相关信息:
- min_:ndarray of shape (n_features,)
- 描述:存储每个特征调整后的最小值。
- scale_:ndarray of shape (n_features,)
- 描述:存储每个特征数据缩放的比例。这个比例是通过计算特征的最大值和最小值之差,然后除以指定的缩放范围(feature_range)来得到的。
- data_min_ 和 data_max_:ndarray of shape (n_features,)
- 描述:分别存储每个特征在训练数据中的最小值和最大值。这些值是在调用 fit 或 fit_transform 方法时计算得到的。
1.2.3 注意事项
- 归一化受到最大值与最小值的影响,这种方法容易受到异常数据的影响, 鲁棒性较差,适合传统精确小数据场景
1.2.4 代码演示
代码如下(示例):
# 导包
from sklearn.preprocessing import MinMaxScaler # 归一化的类# 1. 准备特征数据. 每个子列表 = 1个样本(Sample)
data = [[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]# 2. 创建归一化对象.
transfer = MinMaxScaler()# 3. 具体的 归一化动作.
# fit_transform(): 训练 + 转换 => 适用于 训练集.
# transform(): 直接转换 => 适用于 测试集.
new_data = transfer.fit_transform(data)# 4. 打印 归一化后的结果
print(f'归一化后, 数据集为: {new_data}') # [[1. 0. 0. 0. ]# [0. 1. 1. 0.83333333]# [0.5 0.5 0.6 1. ]]
1.3 举例说明
- 1.有以下一个数据集,包含两个特征:年龄(Age)和收入(Income)。我们希望这两个特征进行归一化处理。
Age | Income |
---|---|
20 | 30000 |
22 | 32000 |
35 | 55000 |
45 | 75000 |
50 | 85000 |
-
2.我们将年龄和收入都归一化到0到1的范围内。
-
2.1 年龄归一化:
A g e n o r m = A g e − m i n ( A g e ) m a x ( A g e ) − m i n ( A g e ) Age_{norm} = \frac{Age-min(Age)}{max(Age)-min(Age)} Agenorm=max(Age)−min(Age)Age−min(Age)- A g e n o r m = 20 − 20 50 − 20 = 0 Age_{norm} = \frac{20-20}{50-20} = 0 Agenorm=50−2020−20=0
- A g e n o r m = 22 − 20 50 − 20 = 0.0667 Age_{norm} = \frac{22-20}{50-20} = 0.0667 Agenorm=50−2022−20=0.0667
- A g e n o r m = 35 − 20 50 − 20 = 0.5 Age_{norm} = \frac{35-20}{50-20} = 0.5 Agenorm=50−2035−20=0.5
- A g e n o r m = 45 − 20 50 − 20 = 0.8333 Age_{norm} = \frac{45-20}{50-20} = 0.8333 Agenorm=50−2045−20=0.8333
- A g e n o r m = 50 − 20 50 − 20 = 1 Age_{norm} = \frac{50-20}{50-20} = 1 Agenorm=50−2050−20=1
-
2.2 收入归一化:
I n c o m e n o r m = I n c o m e − m i n ( I n c o m e ) m a x ( I n c o m e ) − m i n ( I n c o m e ) Income_{norm} = \frac{Income-min(Income)}{max(Income)-min(Income)} Incomenorm=max(Income)−min(Income)Income−min(Income)- I n c o m e n o r m = 30000 − 30000 85000 − 30000 = 0 Income_{norm} = \frac{30000-30000}{85000-30000} = 0 Incomenorm=85000−3000030000−30000=0
- I n c o m e n o r m = 32000 − 30000 85000 − 30000 = 0.0364 Income_{norm} = \frac{32000-30000}{85000-30000} = 0.0364 Incomenorm=85000−3000032000−30000=0.0364
- I n c o m e n o r m = 55000 − 30000 85000 − 30000 = 0.4545 Income_{norm} = \frac{55000-30000}{85000-30000} = 0.4545 Incomenorm=85000−3000055000−30000=0.4545
- I n c o m e n o r m = 75000 − 30000 85000 − 30000 = 0.8182 Income_{norm} = \frac{75000-30000}{85000-30000} = 0.8182 Incomenorm=85000−3000075000−30000=0.8182
- I n c o m e n o r m = 85000 − 30000 85000 − 30000 = 1 Income_{norm} = \frac{85000-30000}{85000-30000} = 1 Incomenorm=85000−3000085000−30000=1
-
-
3 原数据集就会变成下面这样
Age | Income |
---|---|
0 | 0 |
0.0667 | 0.0364 |
0.5 | 0.4545 |
0.8333 | 0.8182 |
1 | 1 |
二、标准化
2.1 原理(公式)
- 标准化是将特征值转换为具有零均值和单位方差的形式。计算公式如下:
x s t d = x − μ σ x_{std} = \frac{x-μ}{σ} xstd=σx−μ - 其中, μ μ μ 是特征的平均值, σ σ σ 是特征的标准差。
2.2 API 介绍
- sklearn.preprocessing.StandardScaler( )
2.2.1 参数介绍
- copy:类型:布尔值(Boolean);默认值:True
- 说明:如果设置为 True,则会在操作后创建数据的副本,不会修改原始数据。如果设置为 False,则不会创建副本,操作后会直接替换原始数据。
- with_mean:类型:布尔值(Boolean);默认值:True
- 说明:如果设置为 True,则在转换数据时会减去均值(即进行中心化)。如果设置为 False,则不会在转换时减去均值,但 fit 操作仍然会计算均值,并可以通过 mean_ 属性查看。
- with_std:类型:布尔值(Boolean);默认值:True
- 说明:如果设置为 True,则在转换数据时会除以标准差(即进行缩放)。如果设置为 False,则不会在转换时除以标准差,但 fit 操作仍然会计算标准差,并可以通过 scale_ 属性查看。
2.2.2 属性介绍
- scale_:
- 存放每个特征的标准差,是一个列表,长度为特征数。
- mean_:
- 存放每个特征的均值,是一个列表,长度为特征数。
- var_:
- 存放每个特征的方差,是一个列表,长度为特征数。
- feature_names_in_:
- 存放特征的名字,只有导入的数据中有特征名字时才会被定义。
- n_samples_seen_:
- 导入样本数据的个数。
2.2.3 注意事项
- 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大。
2.2.4 代码演示
代码如下(示例):
from sklearn.preprocessing import StandardScaler# 1. 准备特征数据. 每个子列表 = 1个样本(Sample)
data = [[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]# 2. 创建 标准化 对象.
transfer = StandardScaler()# 3. 具体的 标准化 动作.
# fit_transform(): 训练 + 转换 => 适用于 训练集.
# transform(): 直接转换 => 适用于 测试集.
new_data = transfer.fit_transform(data)# 4. 打印 标准化 后的结果
print(f'标准化后, 数据集为: {new_data}')# 5. 打印每个特征列的 平均值 和 方差 和 标准差
print(f'均值: {transfer.mean_}')
print(f'方差: {transfer.var_}')
print(f'标准差: {transfer.scale_}')
print(f'样本数: {transfer.n_samples_seen_}')
2.3 举例说明
- 1.有以下一个数据集,包含两个特征:年龄(Age)和收入(Income)。我们希望这两个特征进行归一化处理。
Age | Income |
---|---|
20 | 30000 |
22 | 32000 |
35 | 55000 |
45 | 75000 |
50 | 85000 |
-
2.我们将年龄和收入标准化到具有零均值和单位方差的形式。
-
2.1 年龄标准化:
x s t d = x − μ σ x_{std} = \frac{x-μ}{σ} xstd=σx−μ
μ A g e = 20 + 22 + 35 + 45 + 50 5 = 34.4 μ_{Age} = \frac{20+22+35+45+50}{5} = 34.4 μAge=520+22+35+45+50=34.4
σ A g e = ( 20 − 34.4 ) 2 + ( 22 − 34.4 ) 2 + ( 35 − 34.4 ) 2 + ( 45 − 34.4 ) 2 + ( 50 − 34.4 ) 2 5 = 142.8856 ≈ 11.9536 σ_{Age} = \sqrt{\frac{(20-34.4)^2+(22-34.4)^2+(35-34.4)^2+(45-34.4)^2+(50-34.4)^2}{5}} = \sqrt{142.8856} ≈ 11.9536 σAge=5(20−34.4)2+(22−34.4)2+(35−34.4)2+(45−34.4)2+(50−34.4)2=142.8856≈11.9536- A g e s t d = 20 − 34.4 11.9536 ≈ − 1.2047 Age_{std} = \frac{20-34.4}{11.9536} ≈ -1.2047 Agestd=11.953620−34.4≈−1.2047
- A g e s t d = 22 − 34.4 11.9536 ≈ − 1.037 Age_{std} = \frac{22-34.4}{11.9536} ≈ -1.037 Agestd=11.953622−34.4≈−1.037
- A g e s t d = 35 − 34.4 11.9536 ≈ 0.0502 Age_{std} = \frac{35-34.4}{11.9536} ≈ 0.0502 Agestd=11.953635−34.4≈0.0502
- A g e s t d = 45 − 34.4 11.9536 ≈ 0.8868 Age_{std} = \frac{45-34.4}{11.9536} ≈ 0.8868 Agestd=11.953645−34.4≈0.8868
- A g e s t d = 50 − 34.4 11.9536 ≈ 1.3050 Age_{std} = \frac{50-34.4}{11.9536} ≈ 1.3050 Agestd=11.953650−34.4≈1.3050
-
2.2 收入标准化:
μ I n c o m e = 30000 + 32000 + 55000 + 75000 + 85000 5 = 55 , 400 μ_{Income} = \frac{30000+32000+55000+75000+85000}{5} = 55,400 μIncome=530000+32000+55000+75000+85000=55,400
σ I n c o m e = ( 30000 − 55400 ) 2 + ( 32000 − 55400 ) 2 + ( 55000 − 55400 ) 2 + ( 75000 − 55400 ) 2 + ( 85000 − 55400 ) 2 5 = 486176800 ≈ 22049 σ_{Income} = \sqrt{\frac{(30000-55400)^2+(32000-55400)^2+(55000-55400)^2+(75000-55400)^2+(85000-55400)^2}{5}} = \sqrt{486176800} ≈ 22049 σIncome=5(30000−55400)2+(32000−55400)2+(55000−55400)2+(75000−55400)2+(85000−55400)2=486176800≈22049- I n c o m e n o r m = 30000 − 55400 22049 = − 1.1520 Income_{norm} = \frac{30000-55400}{22049} = -1.1520 Incomenorm=2204930000−55400=−1.1520
- I n c o m e n o r m = 32000 − 55400 22049 = − 1.0613 Income_{norm} = \frac{32000-55400}{22049} = -1.0613 Incomenorm=2204932000−55400=−1.0613
- I n c o m e n o r m = 55000 − 55400 22049 = − 0.0181 Income_{norm} = \frac{55000-55400}{22049} = -0.0181 Incomenorm=2204955000−55400=−0.0181
- I n c o m e n o r m = 75000 − 55400 22049 = 0.8889 Income_{norm} = \frac{75000-55400}{22049} = 0.8889 Incomenorm=2204975000−55400=0.8889
- I n c o m e n o r m = 85000 − 55400 22049 = 1.3425 Income_{norm} = \frac{85000-55400}{22049} = 1.3425 Incomenorm=2204985000−55400=1.3425
-
-
3 原数据集就会变成下面这样
Age | Income |
---|---|
-1.2047 | -1.1520 |
-1.037 | -1.0613 |
0.0502 | -0.0181 |
0.8868 | 0.8889 |
1.3050 | 1.3425 |
三、案例代码:利用KNN算法进行鸢尾花分类
代码如下(示例):
# 0.导入工具包
from sklearn.datasets import load_iris
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 1.加载数据集
iris_data = load_iris()
# print(iris_data)
# print(iris_data.target)# 2.数据展示
iris_df = pd.DataFrame(iris_data['data'], columns=iris_data.feature_names)
iris_df['label'] = iris_data.target
# print(iris_data.feature_names)
# sns.lmplot(x='sepal length (cm)',y='sepal width (cm)',data = iris_df,hue='label')
# plt.show()# 3.特征工程(预处理-标准化)
# 3.1 数据集划分
x_train, x_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size=0.3, random_state=22)
print(len(iris_data.data))
print(len(x_train))
# 3.2 标准化
process = StandardScaler()
x_train = process.fit_transform(x_train)
x_test = process.transform(x_test)
# 4.模型训练
# 4.1 实例化
model = KNeighborsClassifier(n_neighbors=3)
# 4.2 调用fit法
model.fit(x_train,y_train)
# 5.模型预测
x = [[5.1, 3.5, 1.4, 0.2]]
x=process.transform(x)
y_predict =model.predict(x_test)
print(model.predict_proba(x))# 6.模型评估(准确率)
# 6.1 使用预测结果
acc =accuracy_score(y_test,y_predict)
print(acc)# 6.2 直接计算
acc = model.score(x_test,y_test)
print(acc)
总结
- 文章总结了特征预处理中的归一化和标准化,并对每一种方法做了详细讲解,最后用一个综合案例,使用前面学过的的KNN算法来验证预处理的必要性。
相关文章:
三、归一化与标准化
归一化与标准化 前言一、最小最大值归一化1.1 原理(公式)1.2 API 介绍1.2.1 参数介绍1.2.2 属性介绍1.2.3 注意事项1.2.4 代码演示 1.3 举例说明 二、标准化2.1 原理(公式)2.2 API 介绍2.2.1 参数介绍2.2.2 属性介绍2.2.3 注意事项…...

B2105 矩阵乘法
B2105 矩阵乘法 #include <iostream> using namespace std; int main(){int n,m,k;cin>>n>>m>>k;int arr1[n][m];int arr2[m][k];for(auto & line:arr1){for(auto & x: line){cin>>x;}}for(auto & line:arr2){for(auto & x: lin…...

centos之下的mysql8的安装
文章目录 1.mysql.com进入(网址栏)2.xshell操作2.1拖拽上传2.2安装发布包2.3检查情况2.4安装mysql2.5手动启动2.6查看状态2.7查看随机密码2.8登录2.9重置密码 1.mysql.com进入(网址栏) 找下面的这个download按钮: 一直往下面划:找到下面的这个 下面的这个…...

计算机导论
概述 计算机简史 1935年代,英国数学家图灵(Alan Turing)提出“图灵机”,奠定了计算机的理论基础。 1952年,冯诺依曼确定了计算机由运算器、控制器、存储器、输入、输出等5部分组成(Von Neumann 体系结构)。 60年代…...
力扣209-长度最小的子数组-滑动窗口思想
题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&am…...

Xilinx 7系列FPGA PCI Express IP核简介
前言:Xilinx7系列FPGA集成了新一代PCI Express集成块,支持8.0Gb/s数据速率的PCI Express 3.0。本文介绍了7系列FPGA PCIe Gen3的应用接口及一些特性。 1. PCI Express规范演进 PCIe是一种高速串行计算机扩展总线标准,旨在替代传统的PCI和AG…...
红包雨html
1、分享一个红包雨html代码。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>红包雨小游戏</ti…...
js 基础补充3
1. 闭包 在函数内部定义的函数,可以访问改函数的属性和方法 私有属性 延长变量的生命周期,更好的避免命名冲突 缺点:内存消耗比较大,不建议频繁使用 2. js 原型 原型链 访问对像的属性方法,不光会在对象上查找还会在…...
Invalid bean definition with name ‘employeeMapper‘ defined in file
参考以下博客: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version> </dependency> 总结: 1. 拉取老项目的时候要特…...

悦享驾驶,乐在旅途,首选江铃集团新能源易至EV3青春版
金秋时节,天高气爽,正是出游的好时节。不论是家庭自驾游,还是朋友结伴出游,一款好看又好开的车绝对是提升旅行品质的重要因素。江铃集团新能源易至汽车EV3青春版,凭借其超高安全性、便捷操作性、卓越性能,成…...
测试WIFI和以太网的TCP带宽、UDP带宽和丢包率、延时
一、测试TCP、UDP的带宽 作为服务器:iperf3 -s -i 1 (或者用CloudCampus软件,或者iperf magic) Wi-Fi 发送、接收吞吐率的测试_magic iperf-CSDN博客 车机作为iperf3服务器,电脑作为iperf3得客户端,分别…...
redis 第155节答疑 源码分析Hash类型ziplist结构和zlentry实体解析
155属性 zlbytes zltail zllen entryX zlend 类型 uint32 t uint32 t uint16 t 列表节点 uint8 t 长度 4字节 4字节 2字节 不定 1字节 用途 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配,或者计算 zlend 的位置时使用 记录压缩列表表尾节点距离压缩…...
IDE使用技巧与插件推荐
集成开发环境(IDE)是开发者日常工作中的重要工具,合理使用IDE和合适的插件,能大大提高开发效率。本文将分享常见IDE(如VS Code、IntelliJ IDEA等)的一些高效使用技巧,以及开发过程中常用的插件推…...
1020接口测试面试题随记
1.测试中对于上下游承接的业务是怎么处理的 针对上下游承接的业务,我会采取以下措施进行处理:首先,明确上下游系统的接口和依赖关系,确保理解数据流和业务逻辑的连接点。其次,进行接口测试,验证上下游系统…...

Zotero7最新(2024)翻译问题——配置 百度API翻译
在使用翻译之前,首先要确保已经安装了插件:Translate for Zotero 关于插件的安装可以参考这篇文章: Zotero7最新(2024)安装、配置步骤-CSDN博客 接下来进入正题。 当使用Zotero7对英文文献翻译时,可能会…...
python程序设计员—练习笔记
目录 基础处理 字符串列表字典运算符正则表达式re库requestsBeautiful Soupjieba库分词模式基于TF-IDF算法的关键词提取 基于TextRank算法的关键词提取pandas 打开有多个表的.xlsx文件 基础处理 字符串 str_ str_.lower()lower()函数:将字符中的大写字母转换成小…...

1.DBeaver连接hive数据库
1.hive开启远程服务,linux中直接输入:hiveserver2 2.解压dbeaver和hive-jdbc-2.1.1.zip 3.双击打开 4.数据库,新建连接 5.搜索hive 6.配置参数 7.编辑驱动设置 8.添加jar包 9.测试连接 10.右击,新建sql编辑器 11.执行sql 12.调整字…...
CODESYS随机动态图案验证码制作详细案例(三)
#使用CODESYS软件模仿网页端动态图案验证码的制作详细案例# 前言: 通过上篇图案验证码的实际测试,我们已经完成了该案例的制作,但是在项目应用中,我们想对该功能直接调用,就需要将具有一定功能的程序代码或可视化进行封装成库文件。我们熟知,CODESYS有丰富的库文件,有…...
NodeJS 使用百度翻译API
在大数据处理中,经常需要大批量地翻译短小的文字,使用在线翻译平台的API 调用能够大幅度提高效率。 最近尝试了一下。 第一步在百度翻译开放平台注册 百度翻译开放平台 (baidu.com) 申请APPID 和SECRET加密码 源代码(mjs) …...

摩熵数科数据产品阵容BCPM
摩熵数科基本介绍 摩熵数科(成都)医药科技有限公司BCPMdata Pharma Technology (Chengdu)Co.,Ltd以“探索生命科学数据本源,构建全产业链数据应用生态”为愿景,致力于成为生命科学领域全球领先的数据系统与…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...