机器学习-第二章 KNN算法

news2026/4/28 9:41:52
标题 第二章 KNN算法目录KNN算法简介KNN思想、分类和回归问题处理流程KNN算法API介绍分类、回归实现距离度量常用距离计算方法特征预处理归一化 标准化鸢尾花识别案例超参数选择方法交叉验证、网格搜索、手写数字识别学习目标1.理解k近邻算法的思想2.知道k近邻算法分类流程3.知道k近邻算法回归流程41.KNN算法简介KNN算法思想如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别则该样本也属于这个类别2.k近邻算法样本相似性样本都是属于一个任务数据集的。样本距离越近则越相似。利用k近邻算法预测电影类型。欧氏距离对应维度差值平方和开平方根3.K值选择k值小了过拟合–数据量少容易学到脏数据用较小领域中的训练实例进行预测容易受异常点影响k值减小就意味着整体模型变得复杂容易发生过拟合k值大了欠拟合–模型变得简单用较大领域中的训练实例进行预测受到样本均衡的问题k值增大就意味着整体模型变得简单容易发生欠拟合举例KNN为训练样本无论实例输入什么只会按训练集只能怪最多的类别选择4.解决的问题分类问题、回归问题1.相同点都是有监督学习欧氏距离2.不同分类–投票 --标签不连续回归–均值–标签连续3.算法思想若一个样本在特征空间中的k个最相似的样本大多数属于某个类别则该样本也属于这个类别总结2. KNN算法APIk nearest neighbor学习目标掌握分类api/回归api1.分类API KNN算法介绍K Nearest Neighborsk近邻算法 原理 基于欧氏距离计算 测试集和每个训练集之间的距离然后更具距离升序排序找到近邻的k个样本 基于k个样本投票票数多的就作为最终预测结果---》分类问题 基于k个样本计算平均值作为最终预测结果---》回归问题 实现思路 1.分类问题 适用于有特征、有笔阿斯哦钱且标签是不连续的--练得 2.回归问题 适用于有特征、有标签、且标签是连续的 KNN算法分类问题 思路如下是 1.计算测试集和每个训练样本之间的距离 2.基于距离进行升序pair 3.找到最近的k个样本 4.k个样本进行投票 5.票数多的结果作为预测结果 代码实现思路 1导包 2.准备数据集训练集和测试集 3.创建KNN分类模型模型对象 4.模型训练 5.模型预测 # 1导包 from sklearn.neighbors import KNeighborsClassifier # 2.准备数据集训练集和测试集 # train 训练集 # test测试集 # neighbors最近邻的邻居数 x_train [[0], [1], [2], [3]] #训练集的特征数据 y_train [0, 0, 1, 1] #训练集的标签数据 x_test [[5]] #测试集的特征数据 # 3.创建KNN分类模型模型对象 # estimator 估计其模型对象也可以用变量名model做接收 estimator KNeighborsClassifier(n_neighbors4) # 0 estimator KNeighborsClassifier(n_neighbors3) # 1 # 4.模型训练 # 传入训练集的特征数据、训练集的标签数据 estimator.fit(x_train, y_train) # 5.模型预测 # 传入测试集的特征数据获取到预测结果测试集的标签y_test y_pre estimator.predict(x_test) # 6.打印数据结果 print(f预测结果为{y_pre})2.回归API KNN算法介绍K Nearest Neighborsk近邻算法 原理 基于欧氏距离计算 测试集和每个训练集之间的距离然后更具距离升序排序找到近邻的k个样本 基于k个样本投票票数多的就作为最终预测结果---》分类问题 基于k个样本计算平均值作为最终预测结果---》回归问题 实现思路 1.分类问题 适用于有特征、有笔阿斯哦钱且标签是不连续的--练得 2.回归问题 适用于有特征、有标签、且标签是连续的 KNN算法回归问题 思路如下是 1.计算测试集和每个训练样本之间的距离 2.基于距离进行升序排序 3.找到最近的k个样本 4.基于k个样本的标签计算平均值 5.将上述计算出来的平均值作为最终的预测结果 代码实现思路 1导包 2.准备数据集训练集和测试集 3.创建KNN分类模型模型对象 4.模型训练 5.模型预测 总结 k值过小容易受到异常值影响且会导致模型学到大量的“脏特征”导致出现过拟合 k值过大模型会变得简单容易发生欠拟合。 # 1导包 from sklearn.neighbors import KNeighborsRegressor #KNN算法的回归模型 # 2.准备数据集训练集和测试集 # 开根号 14.53 14.28 1 2.236 # 平方和211 204 1 5 # 差值3,11,92,10,100,1,01,0,2 # k3 0.2 0.3 0.4 均值 0.3 x_train [[0,0,1], [1,1,0],[3,10,10],[4,11,12]] #训练集的特征数据因为特可以有多个特征所以是一个二维数组 y_train [0.1, 0.2, 0.3, 0.4] #训练集的标签数据因为标签是连续的所以是一个一维数组 x_test [[3,11,10]] #测试集的特征数据 # x_test [[3,110003,10333]] #k过大 # 3.创建KNN分类模型模型对象 estimator KNeighborsRegressor(n_neighbors3) # estimator KNeighborsRegressor(n_neighbors4) # 4.模型训练 # 传入训练集的特征数据、训练集的标签数据 estimator.fit(x_train, y_train) # 5.模型预测 y_pre estimator.predict(x_test) #特征需要传入一个二维数组 # 6.打印数据结果 print(预测结果, y_pre)3.距离度量1.欧氏距离常见距离公式两点在空间中的距离一般指的都是欧式距离欧氏距离对应维度差值平方和开平方根二维平面 d三维空间n维空间2.曼哈顿距离 也称为城市街区距离欧氏距离对应维度差值平方和开平方根曼哈顿距离对应维度差值的绝对值之和只能横平竖直的走 0,06,6 曼哈顿距离6612 欧氏距离6*66*6 开根 6*1.4148.463.切比雪夫距离国际象棋中可以横竖斜着走对应维度值差值的绝对值求最大值1,25,55-14 5-23 43 44.闵式距离不是一种新的距离的度量方式是对多个距离公式的概括性表述4.特征预处理1.为什么做归一化、标准化特征的单位或者大小相差太大或者某个特征的方差相比其他的特征要大出几个数量及容易影响支配目标结果使得一些模型算法无法学到其他特征。归一化API1.sklearn.preprocessing.MinMaxScalerfeature_range 缩放区间2.fit_transformx 训练加转换 适合第一次 训练集transform 适合训练集 案例演示特征预处理 --归一化 回顾特征工程目的 和 步骤 目的 利用专业的背景知识和技巧处理数据用于提升模型的性能 步骤 1.特征提取 2.特征预处理 归一化 标准化 3.特征降维 4.特征选择 5.特征组合 特征预处理之 归一化介绍 目的 防止因为量纲单位问题导致特征列的放差值相差较大影响模型最终结果 所以通过公式把 哥猎德值 映射到【0,1】区间 公式 x当前值-该列最小值/该列最大值-该列最小值 xx*mx-mimi 公式解析 x‘ 基于公式算出来的结果 x’‘ 最终的结果 mx 区间的最大值 mi 区间的最小值 弊端 容易受到最大值和最小值的影响所以他一般用于处理小数据集 #导包 from sklearn.preprocessing import MinMaxScaler #归一化对象 # 1.准备数据集归一化之前的原数据 x_train [[90,2,10,40],[60,4,15,45],[75,3,13,46]] # 2.创建归一化对象 # 参数 feature_range(0,1) 指定归一化后的数据区间 # 默认区间是【0,1】如果就是这个区间可以省略不写 # transfer MinMaxScaler(feature_range(3,5)) transfer MinMaxScaler() #3.对原数据集进行归一化处理 x_train_new transfer.fit_transform(x_train) # 4.打印处理后的数据 print(归一化处理后的数据为, x_train_new)标准化数据标准化 通过对原始数据进行标准化 转换为均值为0标准 差为1的正态分布的数据正态分布是一种改成分布也叫高斯分布钟形分布正态分布记作Nμσμ决定了其位置标准差决定了分布的幅度μ0 σ1正态分布是标准正态分布方差API 案例演示特征预处理 --标准化 回顾特征工程目的 和 步骤 目的 利用专业的背景知识和技巧处理数据用于提升模型的性能 步骤 1.特征提取 2.特征预处理 归一化 标准化 3.特征降维 4.特征选择 5.特征组合 特征预处理之 标准化介绍 目的 防止因为量纲单位问题导致特征列的方差值相差较大影响模型最终结果 所以通过公式把 各列的值 映射到 均值为0 标准差为1 的 正态分布序列 公式 x当前值-该列平均值/ 该列的标准差 应用场景 适用于大数据集的处理 结论 无论是归一化还是标准化目的都是为了解决量纲单位问题导致模型评估较低等问题 回顾 方差计算公式该列每个值和该列均值的差的平方和的平均值 标准差方差开平方根 #导包 from sklearn.preprocessing import StandardScaler #标准化对象 # 1.准备数据集标准化之前的原数据 x_train [[90,2,10,40],[60,4,15,45],[75,3,13,46]] # 2.创建标准化对象 transfer StandardScaler() #3.对原数据集进行归一化处理 x_train_new transfer.fit_transform(x_train) # 4.打印处理后的数据 print(标准化处理后的数据为, x_train_new) # 5.打印数据集的均值和方差和标准差 print(数据集的均值为, transfer.mean_) print(数据集的方差为, transfer.var_) print(数据集的标准差为, transfer.std_)5. 案例利用KNN算法对鸢尾花分类花萼 sepal 长和宽花瓣 petal 长和宽0 1 2 三种鸢尾花 案例通过KNN算法 实现 鸢尾花 的 分类 回顾机器学习的研发流程 1.加载数据 2.数据预处理 3.特征工程 提取 预处理 4.模型训练 5.模型评估 6.模型预测 Min Max Mean SD Class Correlation sepal length: 4.3 7.9 5.84 0.83 0.7826 sepal width: 2.0 4.4 3.05 0.43 -0.4194 petal length: 1.0 6.9 3.76 1.76 0.9490 (high!) petal width: 0.1 2.5 1.20 0.76 0.9565 (high!) #导包 from sklearn.datasets import load_iris #加载鸢尾花测试集的 import seaborn as sns import pandas as pd import matplotlib matplotlib.use(TkAgg) import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split #分割训练集和测试集的 from sklearn.preprocessing import StandardScaler #数据标准化的 from sklearn.neighbors import KNeighborsClassifier #KNN算法 分类对象 from sklearn.metrics import accuracy_score #模型评估的 计算模型预测的准确率 # 1. 定义函数 加载鸢尾花数据集并查看数据集 def dm01_loadiris(): #1.加载鸢尾花数据集 iris_data load_iris() # 2. 查看数据集 # print(f数据集{iris_data}) #字典 # print(f数据集类型{type(iris_data)}) #class sklearn.utils._bunch.Bunch # 3. 查看数据集所有的键 print(f数据集所有的键{iris_data.keys()}) #数据集所有的键dict_keys([data, target, frame, target_names, DESCR, feature_names, filename, data_module]) # 4. 查看数据集的键对应的值 # print(f具体的数据{iris_data.data[:5]}) #有150条数据每条数据有四个特征我们只看前五条 # print(f具体标签{iris_data.target[:5]}) #有150条数据每条数据有1个标签我们只看前五条 print(f具体的数据{iris_data.data}) #有150条数据每条数据有四个特征 print(f具体标签{iris_data.target}) #有150条数据每条数据有1个标签 print(f标签名称{iris_data.target_names}) #[setosa versicolor virginica] print(f数据集的特征名称{iris_data.feature_names}) #[sepal length (cm), sepal width (cm), petal length (cm), petal width (cm)] # print(f数据集的描述{iris_data.DESCR}) # print(f数据集的frame{iris_data.frame} ) #None # print(f数据集的filename{iris_data.filename}) #iris.csv # print(f数据集的data_module{iris_data.data_module}) #klearn.datasets.data # 2.定义函数绘制数据集的散点图 def dm02_show_iris(): # 1. 加载鸢尾花数据集 irir_data load_iris() # 2. 把鸢尾花的数据集转换成DataFrame irir_df pd.DataFrame(datairir_data.data, columnsirir_data.feature_names) # 3. 给数据集添加标签 irir_df[label]irir_data.target print(irir_df) # 4. 通过seaborn绘制散点图 # 参1:数据集 参2x轴 参3y轴 参4标签 参5是否显示回归线 sns.lmplot(datairir_df,xsepal length (cm), ysepal width (cm), huelabel, fit_regTrue) # 5. 设置标题 显式 plt.title(iris_data) plt.tight_layout () #自动调整子图参数以使得整个图像边界紧贴着子图 plt.show() # 3.定义函数 切分训练集和测试集 def dm03_split_train_test(): # 1. 加载鸢尾花数据集. iris_data load_iris() # 2. 数据的预处理 从150个特征和标签中按照8:2的比例切分训练集和测试集. # random_state:随机种子相同训练集和测试集的切分结果相同 # 返回值训练集的特征数据、测试集的特征数据、训练集的标签数据、测试集的标签数据 x_train, x_test, y_train, y_test train_test_split(iris_data.data, iris_data.target, test_size0.2, random_state22) # 3. 打印切割后的结果 print(f训练集特征数据{x_train},个数{len(x_train)}) #120条每条数据有4个特征 print(f训练集标签数据{y_train},个数{len(y_train)}) #120条每条数据有1个标签 print(f测试集特征数据{x_test},个数{len(x_test)}) #30条每条数据有4个特征 print(f测试集标签数据{y_test},个数{len(y_test)}) #30条每条数据有1个标签 # 4.定义函数实现鸢尾花完整案例 --》加载数据集数据预处理特征工程模型训练模型评估模型预测 def dm04_iris_test(): # 1. 加载数据集 iris_data load_iris() # 2. 数据预处理 x_train, x_test, y_train, y_test train_test_split(iris_data.data, iris_data.target, test_size0.2, random_state22) # 3.特征工程 # 思考一特征提取因为源数据是4个特征所以不需要进行特征提取 # 思考二特征预处理因为源数据是连续的所以不需要进行特征预处理但是加入代码更完善 # 3.1 创建标准化对象 transfer StandardScaler() # 3.2 对数据列进行标准化处理 x_train transfer.fit_transform(x_train) x_test transfer.transform(x_test) # 4.模型训练 # 4.1 创建模型对象 estimator KNeighborsClassifier(n_neighbors5) # 4.2 具体的模型训练动作 estimator.fit(x_train, y_train) # 5.模型预测 #场景1 对刚才切分的30条测试集进行预测 # 5.1直接预测预测结果保存在y_pre中 y_pre estimator.predict(x_test) # 5.2打印预测结果 print(f预测结果{y_pre}) # 场景2对新数据集进行测试 #5.1 自定义测试数据集 my_data [[7.8,2.1,3.9,1.6]] # 5.2 对数据集进行标准化处理 my_data transfer.transform(my_data) #只有第一次是fit_transform # 5.3 预测新数据集 y_pre_new estimator.predict(my_data) print(f预测结果{y_pre_new}) # 5.4 查看数据集每种分类的预测结果 y_pre_proba estimator.predict_proba(my_data) print(f预测概率{y_pre_proba}) #预测概率[[0. 0.6 0.4]] ---对应的0分类的概率为0 1分类的概率为0.6 2分类的概率为0.4 # 6.模型评估 # 方式一直接评估基于训练集的特征 和 训练集的标签 print(f准确率{estimator.score(x_test, y_test)}) #准确率0.93 # 方式二基于测试集的特征 和 测试集的标签 print(f准确率{accuracy_score(y_test, y_pre)}) #准确率0.93 # 5.测试 if __name__ __main__: # dm01_loadiris() # dm02_show_iris() # dm03_split_train_test() dm04_iris_test()6.超参数训练方法1.什么是交叉验证是一种数据集的分割方法将训练集划分为n份拿一份做验证集测试集、其他n-1份做训练集2.交叉验证法原理将数据集划分为cv4 份第一次把第一份做验证集其他数据做训练第二次: 把第二份做验证集其他数据做训练…训练四次 做四次评估使用训练集验证集多次评估取平均值做交叉验证为模型得分若k5模型得分最好再使用全部训练集训练集验证集对k5模型在训练一遍再使用测试集对k5模型做评估。3.网格搜索为什么需要网格搜索模型有很多超参能力存在很大差异。需要手动产生很多超参数组合来训练模型每组超参数都蚕蛹交叉验证评估最后选出最优参数组合建立模型网格搜索时模型调参的有力工具只需要将若干参数传给网格搜索对象它自动帮我们完成不同超参数的组合、模型训练、模型评估最终返回一组最优参数APIsklearn.model_selection.GridSearchCV(estimator,param_gridNone,cvNone)estimator估计器对象param_grid:估计器参数cv几折fit输入训练数据score准确率结果分析bestscore_: 交叉验证解释 原理 把数据分成n份例如4份也叫4折交叉验证 第一次把第一份数据作为测试集其他座位训练集训练模型模型预测获取准确率--》准确率1 第2次把第2份数据作为测试集其他座位训练集训练模型模型预测获取准确率--》准确率2 第3次把第3份数据作为测试集其他座位训练集训练模型模型预测获取准确率--》准确率3 第4次把第4份数据作为测试集其他座位训练集训练模型模型预测获取准确率--》准确率4 然后计算上述四次准确率的平均值 作为模型的最终准确率 假设第四次最好--准确率最高则用全部数据训练集测试集训练模型再次用测试集对模型测试 目的 为了让模型的最终验证结果更准确 网格搜索 目的/作用 寻找最优超参 原理 接受超参可能出现的值然后针对超参的每个值进行交叉验证获取最优 超参数组合 超参数 需要用户手动录入数据不同超参数组合肯呢个会影响模型的最终测评结果 大白话解释 #导包 from sklearn.datasets import load_iris #加载鸢尾花测试集的 import seaborn as sns import pandas as pd import matplotlib matplotlib.use(TkAgg) import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split,GridSearchCV #分割训练集和测试集的,寻找最优超参的网格搜索交叉验证 from sklearn.preprocessing import StandardScaler #数据标准化的 from sklearn.neighbors import KNeighborsClassifier #KNN算法 分类对象 from sklearn.metrics import accuracy_score #模型评估的 计算模型预测的准确率 # 1 . 定义函数 加载鸢尾花数据集并查看数据集 iris_data load_iris() # 2. 数据预处理 x_train, x_test, y_train, y_test train_test_split(iris_data.data, iris_data.target, test_size0.2, random_state22) # 3. 特征工程 # 3.1 创建标准化对象 transfer StandardScaler() # 3.2 对数据列进行标准化处理 x_train transfer.fit_transform(x_train) x_test transfer.transform(x_test) # 4 模型训练 # 4.1 创建模型对象 KNN estimator KNeighborsClassifier(n_neighbors5) # 4.2 定义字典记录超参出现的情况 param_dict {n_neighbors:[i for i in range(1,11)]} # 4.3 创建GridSearchCV对象--》寻找最优超参使用网格搜索交叉验证 # 参数1要计算最优超参的模型对象 # 参数2该模型超参可能出现的值 # 参数3交叉验证的次数这里的4折表示每个超参组合都进行4次交叉验证。这里共计4*1040次交叉验证 # 返回值 estimator-处理后的超参对象 estimator GridSearchCV(estimator, param_gridparam_dict, cv4) # 4.4 具体的模型训练 estimator.fit(x_train, y_train) # 4.5 打印最优超参组合 print(f最优超参组合{estimator.best_params_}) print(f最优超参组合对应的准确率{estimator.best_score_}) print(f模型预测结果{estimator.predict(x_test)}) print(f模型预测结果{estimator.cv_results_}) print(f模型预测结果{estimator.best_estimator_}) # 5.模型评估 # 5.1 获取最优超参的模型对象 # estimator estimator.best_estimator_ estimator KNeighborsClassifier(n_neighbors3) # 5.2 模型训练 estimator.fit(x_train, y_train) # 5.3 模型预测 y_pre estimator.predict(x_test) # 5.4 模型评估 print(f准确率{accuracy_score(y_test, y_pre)})7. 利用KNN算法手写数字识别1.数据介绍 train.csv 和 test.csv 包含从0-9的手写数字识别2.每个图片2828,784个像素0–纯黑1–纯白代码实现1.加载数据2.拿到特征、标签3.特征reshape 2828 案例演示KNN算法 识别图片 即手写数字识别案例 介绍 每张图片都是由28*28像素组成的即我们的csv文件中的每一行都有784个像素点表示图片每个像素的颜色。 最终构成图像 import matplotlib.pyplot as plt import pandas as pd from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier import joblib from collections import Counter # 忽略警告 import warnings warnings.filterwarnings(ignore,modulesklearn) #参1忽略警告 警告级别 参2模块名称 参3过滤条件 # 1.定义函数接受用户传入的所有展示该索引对应的图片 def show_digit(idx): # 1.读取数据集 获取元数据 df pd.read_csv(./data/手写数字识别.csv) # print(df) #(42000行*785列) # 2.判断传入的索引是否越界 if idx len(df)-1 or idx0: print(索引越界) return # 3.走这里说明没有越界就正常获取数据 x df.iloc[:,1:] #,前所有行 后第一列后 y df.iloc[:,0] #4.查看数据传入的索引对应的图片 是几 print(f该图片对应的数字式{y.iloc[idx]}) #5.查看下 用户传入的索引对应的图片的形状 print(x.iloc[idx].shape) print(x.iloc[idx].values) # 6. 把784转换成28,28 xx.iloc[idx].values.reshape(28,28) print(x) # 7. 具体的绘制灰度图的动作 plt.imshow(x,cmapspring_r) #灰度图 plt.axis(off) # 不显示坐标轴 plt.show() #2.[掌握] 定义函数训练模型并保存训练好的模型 def train_model(): # 1. 加载数据集 df pd.read_csv(./data/手写数字识别.csv) # 2. 数据预处理 #2.1 拆分出特征列 x df.iloc[:,1:] # 2.2 拆分出标签列 y df.iloc[:,0] # 2.3 打印特征和标签的形状 print(x.shape) # (42000, 784) print(y.shape) # (42000,) print(fy的标签值分布{Counter(y)}) # 2.4 对特征列拆分前进行 归一化. # x x/255.0 x x # 2.5 拆分训练集和测试集. # 参1特征列 参2标签列 参3测试集所占比例 参4随机数种子 参5参考y轴比例进行切分保持数据均衡 x_train, x_test, y_train, y_test train_test_split(x,y,test_size0.2,random_state0,stratifyy) # 3.模型训练 # 3.1 创建模型对象 estimator KNeighborsClassifier(n_neighbors3) # 3.2 模型训练 estimator.fit(x_train,y_train) # 4.模型评估 print(f准确率{estimator.score(x_test,y_test)}) print(f准确率{accuracy_score(y_test,estimator.predict(x_test))}) #altenter 自动导包 # 5.保存模型 # 参数1模型对象 参数2保存的文件名 joblib.dump(estimator,./my_model/手写数字识别.pkl) #pickle文件pythonpandas的独有文件格式 print(模型保存成功) #3.定义函数测试模型 def test_model(): #pytest # 1.加载图片 x plt.imread(./data/demo.png) #28*28 # 2.绘制图片 plt.imshow(x,cmapgray) # plt.axis(off) #不显示坐标轴 # plt.show() #3.加载模型 estimator joblib.load(./my_model/手写数字识别.pkl) print(模型加载成功) # 4.模型预测 # print(x.shape) # print(x.reshape(1,784).shape) # print(x.reshape(1,-1).shape) #4.2 具体的转换动作 # x x.reshape(1,-1)/255.0 x x.reshape(1,-1) # 4.3 模型预测 print(f预测结果为{estimator.predict(x)}) #4. if __name__ __main__: # show_digit(9) # train_model() test_model()

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…