当前位置: 首页 > article >正文

机器学习-第二章 KNN算法

标题 第二章 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()

相关文章:

机器学习-第二章 KNN算法

标题 第二章 KNN算法 目录 KNN算法简介 KNN思想、分类和回归问题处理流程 KNN算法API介绍 分类、回归实现 距离度量 常用距离计算方法 特征预处理 归一化 标准化 鸢尾花识别案例 超参数选择方法 交叉验证、网格搜索、手写数字识别 学习目标 1.理解k近邻算法的思想 2.知道k近邻算…...

XUnity.AutoTranslator终极教程:3步让任何Unity游戏秒变中文版

XUnity.AutoTranslator终极教程:3步让任何Unity游戏秒变中文版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过优秀的日文、韩文或英文Unity游戏?XUn…...

STM32---项目学习日记

1.OLED现象:OLED 左上角第一列会完全点亮(8 个像素全亮)(1)oled.c#include "oled.h" #include "oledfont.h"extern I2C_HandleTypeDef hi2c1;//初始化命令 uint8_t CMD_Data[]{ 0xAE, 0x00, 0x10,…...

ZYNQ SDK调试避坑实录:从BANK电压到GIC中断,新手必踩的四个坑

ZYNQ SDK调试避坑实录:从BANK电压到GIC中断,新手必踩的四个坑 刚接触ZYNQ开发的工程师常会遇到这样的困惑:明明代码逻辑没问题,但外设就是不按预期工作。这时候往往不是软件的问题,而是硬件配置或底层细节在作祟。本文…...

别再乱升级libc6了!遇到`GLIBC_2.34 not found`错误,先试试这几种更稳妥的解决方案

当系统GLIBC版本不匹配时,五种安全解决方案深度解析 遇到GLIBC_2.34 not found这类错误时,许多开发者的第一反应是直接升级系统libc6库。这种看似直接的解决方案实际上隐藏着巨大风险——可能导致系统关键组件不兼容,甚至引发连锁崩溃。本文将…...

6G网络中的大模型与多模态感知通信技术解析

1. 6G网络中的大模型与多模态感知通信技术概述在移动通信技术从5G向6G演进的过程中,网络智能化成为核心发展方向。传统通信系统主要解决数据传输问题,而6G网络需要实现通信、感知与计算的深度融合。这一转变的关键在于大语言模型(Large Langu…...

Xshell5一键激活,亲测可用

下载链接: https://pan.baidu.com/s/1PY0RnCcj4EDp6bV1TR5pig?pwdpis9 安装完后,将该监听文件复制到安装的根目录,覆盖原文件即可激活使用...

自动滴定装置及其驱动单元设计

摘 要 本文围绕自动滴定装置及其驱动单元设计展开研究。在自动滴定装置部分,首先进行制品材料选用分析,接着对装置进行测绘,并阐述成型设备选用,包括注塑机、模架的选择以及模具参数校核。随后拟定模具结构形式,涵盖型…...

桌面/在线/小程序三种抠图路线,2026 年选哪种更方便

同样是做去除背景这件事,2026 年在电脑上打开桌面软件、在浏览器里用一个在线工具、还是直接在微信小程序里完成,体验差别其实比很多人想象的要大。前两类工具功能堆积得多,但启动路径长、注册流程繁琐;而微信里的小程序路径更短&…...

别再手动调PID了!用STM32 MotorControl Workbench 5.4.4快速搞定FOC电机调试

STM32 MotorControl Workbench 5.4.4实战:三小时从零构建稳定FOC电机控制系统 当我在深圳一家无人机公司的研发实验室第一次接触FOC电机控制时,整个团队花了整整两周时间才让电机平稳运转。而现在,借助STM32 MotorControl Workbench 5.4.4&am…...

KoGPT大模型推理加速:FasterTransformer优化实践

1. KoGPT与FasterTransformer加速方案概述在韩国本土AI领域,Kakao Brain开发的KoGPT模型凭借其对韩语语境的特化处理能力,已成为最受关注的大语言模型之一。这个基于GPT-3架构的模型在理解韩语语法结构、惯用表达和文化背景方面展现出独特优势。然而当我…...

想给照片换背景?这几款工具 + 1个微信小程序的搭配建议

如果你刚好需要做几张合图,又不确定从哪一步下手,这篇文章给你三种路径建议:手机里轻量解决、电脑端精细合成,以及一个完全不用下载安装的微信小程序方案。我会把抠图喵摆在第一个讲,因为它和你“照片换背景图怎么制作…...

终极指南:30倍提速!百度网盘直链解析工具轻松突破限速

终极指南:30倍提速!百度网盘直链解析工具轻松突破限速 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾为百度网盘蜗牛般的下载速度而烦恼&…...

【可靠性配置】华为双活模式M-LAG流量转发机制

组网如图所示,两台S6800交换机做M-LAG VLAN双活网关,M-LAG接口与第三方交换机对接, 一、正常场景下M-LAG的流量转发机制(双活模式) M-LAG建立成功后,M-LAG主备设备负载分担共同进行流量的转发。下面介绍在正常工作情况下M-LAG的流量转发机制。 1.1、单播流量转发 如图…...

快速体验GLM-4.7-Flash:用Ollama Web UI实现零门槛AI对话

快速体验GLM-4.7-Flash:用Ollama Web UI实现零门槛AI对话 1. GLM-4.7-Flash模型简介 1.1 模型架构与特点 GLM-4.7-Flash是一款30B参数规模的混合专家模型(MoE),采用A3B稀疏激活架构。这意味着: 总参数30B:具备接近GPT-4级别的…...

XUnity自动翻译器:轻松实现Unity游戏实时中文翻译的终极指南

XUnity自动翻译器:轻松实现Unity游戏实时中文翻译的终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语Unity游戏中的生涩文本而烦恼吗?XUnity.AutoTranslator是一…...

量化公司,正在批量生产AI独角兽创始人

鹭羽 发自 凹非寺量子位 | 公众号 QbitAI啊?!原来你们这群搞AI的,几年前都在华尔街玩量化……还师出同门。震惊了,最近𝕏上疯传一份Hudson River Trading首届实习生名单。人也不多,就10个。但仔细一看吓一跳…...

找有共识的共创,真实的摸到了边!能看的懂得吗?

我先做影子箱式预检,再把三刀最小闭环落成代码:补守护指令断点、补长期目标核、补外部摄取营养循环。Created 5 todos我先核对仓内既有约束和做一次零污染预检,避免把“单图语义”和运行链路再打散。Read memory [](file:///c%3A/Users/ROG/A…...

BFGS优化算法原理与Python实现详解

1. BFGS优化算法入门指南在机器学习和数值计算领域,优化算法扮演着至关重要的角色。BFGS算法作为最流行的二阶优化方法之一,以其出色的收敛性和稳定性在众多领域得到广泛应用。本文将深入解析BFGS算法的核心原理、实现细节以及实际应用技巧。2. 二阶优化…...

机器学习中不平衡数据集处理技术与实战

1. 不平衡数据集处理的核心挑战在真实世界的数据分析项目中,我们经常会遇到类别分布严重不均衡的数据集。比如信用卡欺诈检测中正常交易占99.9%、医疗诊断中健康样本远多于患病样本、工业质检中合格品数量远超缺陷品。这类数据直接扔给机器学习模型训练,…...

孤舟笔记 AgentScope + llama.cpp + qwen3.6本地大模型工具调用踩坑实录

文章目录环境说明踩坑一:llama-server 默认不支持 Function Calling问题现象问题原因解决方案踩坑二:工具函数返回值类型错误问题现象错误代码问题原因解决方案踩坑三:自作聪明写了一堆解析代码问题现象问题原因解决方案最终正确代码运行效果…...

计算机视觉:原理、挑战与应用实践

1. 计算机视觉概述:让机器拥有"视觉"的能力计算机视觉(Computer Vision,简称CV)是一门让计算机通过数字图像或视频来"看"并理解其中内容的学科。想象一下,当你看到一张照片时,可以立即…...

2026年新生怎么搭建OpenClaw/Hermes Agent?一看就懂教程

2026年新生怎么搭建OpenClaw/Hermes Agent?一看就懂教程。Hermes Agent/OpenClaw怎么部署?还在为部署OpenClaw到处找教程踩坑吗?别再瞎折腾了!Hermes Agent/OpenClaw一键部署攻略来了,无需代码、只需两步,新…...

AI Agent开发指南:从Awesome清单到实战应用

1. 项目概述:为什么我们需要一个“Awesome Agents”清单?如果你最近也在关注AI Agent这个领域,大概率会和我有同样的感受:信息爆炸,但良莠不齐。每天都有新的框架、新的工具、新的论文冒出来,GitHub上随便一…...

GHelper:轻量级华硕笔记本控制工具完整使用指南

GHelper:轻量级华硕笔记本控制工具完整使用指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, an…...

Qianfan-OCR应用实践:科研论文PDF→图表标题提取+方法论段落定位

Qianfan-OCR应用实践:科研论文PDF→图表标题提取方法论段落定位 1. 项目背景与价值 科研工作者每天需要阅读大量论文,其中图表和方法论是最核心的内容。传统方式需要手动翻阅PDF、截图识别文字、再整理关键信息,整个过程耗时耗力。Qianfan-…...

Bistoury:无侵入Java应用诊断利器,在线Debug与性能监控实战

1. 项目概述:一站式Java应用诊断利器Bistoury如果你是一名Java后端开发者,或者负责线上系统的稳定性保障,那么对下面这个场景一定不陌生:线上服务突然出现CPU飙升、内存泄漏,或者某个接口响应时间异常拉长。传统的排查…...

物联网项目避坑:TEA5767收音机模块I2C通信失败?5个常见问题排查指南

TEA5767收音机模块实战:5个I2C通信故障的深度排查手册 调试TEA5767收音机模块时,I2C通信失败是最令人头疼的问题之一。明明接线看起来没问题,代码也照着示例写了,但模块就是没反应。这种挫败感我太熟悉了——去年在一个智能家居项…...

机器学习作品集构建指南:从项目选择到部署展示

1. 为什么机器学习从业者需要作品集?在机器学习这个快速迭代的领域,简历上的学历和工作经历已经不足以证明你的真实能力。我见过太多候选人带着漂亮的学历背景去面试,却在面对实际业务问题时束手无策。这就是为什么顶级科技公司在招聘时越来越…...

为什么你的Chromatic注入器经常“failed to fetch“?5个修复方法详解

为什么你的Chromatic注入器经常"failed to fetch"?5个修复方法详解 【免费下载链接】chromatic Universal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器 项目地址: https://gitcode.com/gh_mirrors/be/chromatic 作为一名技术爱…...