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

sklearn中的决策树-分类树:实例-分类树在合成数据集上的表现

分类树实例:分类树在合成数据集上的表现

代码分解
  • 在不同结构的据集上测试一下决策树的效果(二分型,月亮形,环形)

  • 导入

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib.colors import ListedColormap
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import make_moons,make_circles,make_classification
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.model_selection import cross_val_score
    
  • 生成三种数据集(月亮形、环形、二分型)

    X,y = make_classification(n_samples=100 # 生成100个样本,n_features=2 # 包含两个特征,n_redundant=0 # 添加冗余特征0个,n_informative=2 # 包含信息的特征是2个,random_state=1 # 随机数种子,n_clusters_per_class=1 # 每个簇内包含的标签类别有2个)
    plt.scatter(X[:,0],X[:,1])
    

    20211206Sw3qqx

    图上可以看出,生成的二分型数据的两个簇离彼此很远,可能分类边界过于明显,使用交叉验证尝试看一下是否分类效果特别好

    for i in range(1,11):clf = DecisionTreeClassifier()cross_val = cross_val_score(clf,X,y,cv=10).mean()print(cross_val)"""输出"""
    1.0
    1.0
    1.0
    1.0
    1.0
    1.0
    1.0
    1.0
    1.0
    1.0
    

    交叉验证看,效果太好,这样不利于我们测试分类器的效果,因此我们使用np生成 随机数组通过让已经生成的二分型数据点加减0~1之间的随机数使数据分布变得更散更稀疏 注意,这个过程只能够运行一次,因为多次运行之后X会变得非常稀疏,两个簇的数据会混合在一起,分类器的效应会 继续下降。

    rng = np.random.RandomState(2) # 生成一种随机模式
    X += 2*rng.uniform(size=X.shape)# 加减0-1之间的随机数
    Linearly_separable = (X,y)
    plt.figure(figsize=(12,8))
    plt.scatter(X[:,0],X[:,1])
    

    202112065QEFAm

    依次生成月亮型环形数据,并并入datasets中

    # 用make_moons创建月亮型数据
    X,y = make_moons(noise=0.3,random_state=0)
    Moons_data = (X,y)# 用make_circles创建环形数据
    X,y = make_circles(noise=0.2,factor=0.5,random_state=1)
    Circle_data = (X,y)datasets = (Moons_data,Circle_data,Linearly_separable)
    
  • 画出三种数据集和三颗决策树的分类效应图像

    """画出三种数据集和三颗决策树的分类效应图像"""
    figure = plt.figure(figsize=(12,18))
    i = 1 # 设置用来安排图像显示位置的全局变量i# 开始迭代数据,对datasets中的数据进行for循环for ds_index,ds in enumerate(datasets):X,y = dsX = StandardScaler().fit_transform(X)X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=.4,random_state=42)# 找出数据集中两个特征的最大值和最小值,让最大值+0.5,最小值-0.5,创造一个比两个特征的区间本身更大 一点的区间x1_min,x1_max = X[:,0].min() - .5,X[:,0].max() + .5x2_min,x2_max = X[:,1].min() - .5,X[:,1].max() + .5#用特征向量生成网格数据,网格数据,其实就相当于坐标轴上无数个点 #函数np.arange在给定的两个数之间返回均匀间隔的值,0.2为步长 #函数meshgrid用以生成网格数据,能够将两个一维数组生成两个二维矩阵。 #如果第一个数组是narray,维度是n,第二个参数是marray,维度是m。那么生成的第一个二维数组是以narray为行,m行的矩阵,而第二个二维数组是以marray的转置为列,n列的矩阵 #生成的网格数据,是用来绘制决策边界的,因为绘制决策边界的函数contourf要求输入的两个特征都必须是二维的array1,array2 = np.meshgrid(np.arange(x1_min, x1_max, 0.2),np.arange(x2_min, x2_max, 0.2))#接下来生成彩色画布 #用ListedColormap为画布创建颜色,#FF0000正红,#0000FF正蓝 cm = plt.cm.RdBucm_bright = ListedColormap(['#FF0000', '#0000FF'])#在画布上加上一个子图,数据为len(datasets)行,2列,放在位置i上 ax = plt.subplot(len(datasets), 2, i)#到这里为止,已经生成了0~1之间的坐标系3个了,接下来为我们的坐标系放上标题 #我们有三个坐标系,但我们只需要在第一个坐标系上有标题,因此设定if ds_index==0这个条件 if ds_index == 0:ax.set_title("Input data")#将数据集的分布放到我们的坐标系上#先放训练集ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train,cmap=cm_bright,edgecolors='k')# 放测试集ax.scatter(X_test[:, 0], X_test[:,1],c=y_test,cmap=cm_bright,alpha=0.6,edgecolors='k')#为图设置坐标轴的最大值和最小值,并设定没有坐标轴 ax.set_xlim(array1.min(), array1.max()) ax.set_ylim(array2.min(), array2.max()) ax.set_xticks(())ax.set_yticks(())#每次循环之后,改变i的取值让图每次位列不同的位置i+=1#至此为止,数据集本身的图像已经布置完毕,运行以上的代码,可以看见三个已经处理好的数据集 #############################从这里开始是决策树模型###########################在这里,len(datasets)其实就是3,2是两列 #在函数最开始,我们定义了i=1,并且在上边建立数据集的图像的时候,已经让i+1,所以i在每次循环中的取值是2,4,6ax = plt.subplot(len(datasets),2,i)#决策树的建模过程:实例化 → fit训练 → score接口得到预测的准确率 clf = DecisionTreeClassifier(max_depth=5) clf.fit(X_train, y_train)score = clf.score(X_test, y_test)#绘制决策边界,为此,我们将为网格中的每个点指定一种颜色[x1_min,x1_max] x [x2_min,x2_max] #分类树的接口,predict_proba,返回每一个输入的数据点所对应的标签类概率 #类概率是数据点所在的叶节点中相同类的样本数量/叶节点中的样本总数量 #由于决策树在训练的时候导入的训练集X_train里面包含两个特征,所以我们在计算类概率的时候,也必须导入结构相同的数组,即是说,必须有两个特征 #ravel()能够将一个多维数组转换成一维数组 #np.c_是能够将两个数组组合起来的函数#在这里,我们先将两个网格数据降维降维成一维数组,再将两个数组链接变成含有两个特征的数据,再带入决策 树模型,生成的Z包含数据的索引和每个样本点对应的类概率,再切片,切出类概率Z = clf.predict_proba(np.c_[array1.ravel(),array2.ravel()])[:, 1]#np.c_[np.array([1,2,3]), np.array([4,5,6])]#将返回的类概率作为数据,放到contourf里面绘制去绘制轮廓Z = Z.reshape(array1.shape)ax.contourf(array1, array2, Z, cmap=cm, alpha=.8)#将数据集的分布放到我们的坐标系上# 将训练集放到图中去ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright,edgecolors='k') # 将测试集放到图中去ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,edgecolors='k', alpha=0.6)#为图设置坐标轴的最大值和最小值 ax.set_xlim(array1.min(), array1.max()) ax.set_ylim(array2.min(), array2.max()) #设定坐标轴不显示标尺也不显示数字 ax.set_xticks(())ax.set_yticks(())#我们有三个坐标系,但我们只需要在第一个坐标系上有标题,因此设定if ds_index==0这个条件 if ds_index == 0:ax.set_title("Decision Tree")#写在右下角的数字ax.text(array1.max() - .3, array2.min() + .3, ('{:.1f}%'.format(score*100)),size=15, horizontalalignment='right') #让i继续加一i += 1plt.tight_layout()
    plt.show()

    20211206CLVzAn

  • 从图上来看,每一条线都是决策树在二维平面上画出的一条决策边界,每当决策树分枝一次,就有一条线出现。当数据的维度更高的时候,这条决策边界就会由线变成面,甚至变成我们想象不出的多维图形。

    同时,很容易看得出,分类树天生不擅长环形数据。每个模型都有自己的决策上限,所以一个怎样调整都无法提升 表现的可能性也是有的。当一个模型怎么调整都不行的时候,我们可以选择换其他的模型使用,不要在一棵树上吊 死。顺便一说:

    1. 最擅长月亮型数据的是最近邻算法,RBF支持向量机和高斯过程;
    2. 最擅长环形数据的是最近邻算法 和高斯过程;
    3. 最擅长对半分的数据的是朴素贝叶斯,神经网络和随机森林。
所有代码
  • 所有代码

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib.colors import ListedColormap
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import make_moons,make_circles,make_classification
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.model_selection import cross_val_score"""生成三种数据集(月亮形、环形、二分型)"""
    #make_classification生成二分型数据
    X,y = make_classification(n_samples=100 # 生成100个样本,n_features=2 # 包含两个特征,n_redundant=0 # 添加冗余特征0个,n_informative=2 # 包含信息的特征是2个,random_state=1 # 随机数种子,n_clusters_per_class=1 # 每个簇内包含的标签类别有2个)for i in range(1,11):clf = DecisionTreeClassifier()cross_val = cross_val_score(clf,X,y,cv=10).mean()print(cross_val)
    plt.figure(figsize=(12,8))
    plt.scatter(X[:,0],X[:,1])
    plt.title('make_classification')
    plt.show()##从交叉验证和图上可以看出,生成的二分型数据的两个簇离彼此很远
    # ,这样不利于我们测试分类器的效果,因此我们使用np生成 随机数组
    # ,通过让已经生成的二分型数据点加减0~1之间的随机数
    # ,使数据分布变得更散更稀疏 
    #注意,这个过程只能够运行一次,因为多次运行之后X会变得非常稀疏,两个簇的数据会混合在一起,分类器的效应会 继续下降
    rng = np.random.RandomState(2) # 生成一种随机模式
    X += 2*rng.uniform(size=X.shape)# 加减0-1之间的随机数
    Linearly_separable = (X,y)
    plt.figure(figsize=(12,8))
    plt.scatter(X[:,0],X[:,1])# 用make_moons创建月亮型数据
    X,y = make_moons(noise=0.3,random_state=0)
    Moons_data = (X,y)# 用make_circles创建环形数据
    X,y = make_circles(noise=0.2,factor=0.5,random_state=1)
    Circle_data = (X,y)datasets = (Moons_data,Circle_data,Linearly_separable)"""画出三种数据集和三颗决策树的分类效应图像"""
    figure = plt.figure(figsize=(12,18))
    i = 1 # 设置用来安排图像显示位置的全局变量i# 开始迭代数据,对datasets中的数据进行for循环for ds_index,ds in enumerate(datasets):X,y = dsX = StandardScaler().fit_transform(X)X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=.4,random_state=42)# 找出数据集中两个特征的最大值和最小值,让最大值+0.5,最小值-0.5,创造一个比两个特征的区间本身更大 一点的区间x1_min,x1_max = X[:,0].min() - .5,X[:,0].max() + .5x2_min,x2_max = X[:,1].min() - .5,X[:,1].max() + .5#用特征向量生成网格数据,网格数据,其实就相当于坐标轴上无数个点 #函数np.arange在给定的两个数之间返回均匀间隔的值,0.2为步长 #函数meshgrid用以生成网格数据,能够将两个一维数组生成两个二维矩阵。 #如果第一个数组是narray,维度是n,第二个参数是marray,维度是m。那么生成的第一个二维数组是以narray为行,m行的矩阵,而第二个二维数组是以marray的转置为列,n列的矩阵 #生成的网格数据,是用来绘制决策边界的,因为绘制决策边界的函数contourf要求输入的两个特征都必须是二维的array1,array2 = np.meshgrid(np.arange(x1_min, x1_max, 0.2),np.arange(x2_min, x2_max, 0.2))#接下来生成彩色画布 #用ListedColormap为画布创建颜色,#FF0000正红,#0000FF正蓝 cm = plt.cm.RdBucm_bright = ListedColormap(['#FF0000', '#0000FF'])#在画布上加上一个子图,数据为len(datasets)行,2列,放在位置i上 ax = plt.subplot(len(datasets), 2, i)#到这里为止,已经生成了0~1之间的坐标系3个了,接下来为我们的坐标系放上标题 #我们有三个坐标系,但我们只需要在第一个坐标系上有标题,因此设定if ds_index==0这个条件 if ds_index == 0:ax.set_title("Input data")#将数据集的分布放到我们的坐标系上#先放训练集ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train,cmap=cm_bright,edgecolors='k')# 放测试集ax.scatter(X_test[:, 0], X_test[:,1],c=y_test,cmap=cm_bright,alpha=0.6,edgecolors='k')#为图设置坐标轴的最大值和最小值,并设定没有坐标轴 ax.set_xlim(array1.min(), array1.max()) ax.set_ylim(array2.min(), array2.max()) ax.set_xticks(())ax.set_yticks(())#每次循环之后,改变i的取值让图每次位列不同的位置i+=1#至此为止,数据集本身的图像已经布置完毕,运行以上的代码,可以看见三个已经处理好的数据集 #############################从这里开始是决策树模型###########################在这里,len(datasets)其实就是3,2是两列 #在函数最开始,我们定义了i=1,并且在上边建立数据集的图像的时候,已经让i+1,所以i在每次循环中的取值是2,4,6ax = plt.subplot(len(datasets),2,i)#决策树的建模过程:实例化 → fit训练 → score接口得到预测的准确率 clf = DecisionTreeClassifier(max_depth=5) clf.fit(X_train, y_train)score = clf.score(X_test, y_test)#绘制决策边界,为此,我们将为网格中的每个点指定一种颜色[x1_min,x1_max] x [x2_min,x2_max] #分类树的接口,predict_proba,返回每一个输入的数据点所对应的标签类概率 #类概率是数据点所在的叶节点中相同类的样本数量/叶节点中的样本总数量 #由于决策树在训练的时候导入的训练集X_train里面包含两个特征,所以我们在计算类概率的时候,也必须导入结构相同的数组,即是说,必须有两个特征 #ravel()能够将一个多维数组转换成一维数组 #np.c_是能够将两个数组组合起来的函数#在这里,我们先将两个网格数据降维降维成一维数组,再将两个数组链接变成含有两个特征的数据,再带入决策 树模型,生成的Z包含数据的索引和每个样本点对应的类概率,再切片,切出类概率Z = clf.predict_proba(np.c_[array1.ravel(),array2.ravel()])[:, 1]#np.c_[np.array([1,2,3]), np.array([4,5,6])]#将返回的类概率作为数据,放到contourf里面绘制去绘制轮廓Z = Z.reshape(array1.shape)ax.contourf(array1, array2, Z, cmap=cm, alpha=.8)#将数据集的分布放到我们的坐标系上# 将训练集放到图中去ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright,edgecolors='k') # 将测试集放到图中去ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,edgecolors='k', alpha=0.6)#为图设置坐标轴的最大值和最小值 ax.set_xlim(array1.min(), array1.max()) ax.set_ylim(array2.min(), array2.max()) #设定坐标轴不显示标尺也不显示数字 ax.set_xticks(())ax.set_yticks(())#我们有三个坐标系,但我们只需要在第一个坐标系上有标题,因此设定if ds_index==0这个条件 if ds_index == 0:ax.set_title("Decision Tree")#写在右下角的数字ax.text(array1.max() - .3, array2.min() + .3, ('{:.1f}%'.format(score*100)),size=15, horizontalalignment='right') #让i继续加一i += 1plt.tight_layout()
    plt.show()
    

相关文章:

sklearn中的决策树-分类树:实例-分类树在合成数据集上的表现

分类树实例:分类树在合成数据集上的表现 代码分解 在不同结构的据集上测试一下决策树的效果(二分型,月亮形,环形) 导入 import numpy as np from matplotlib import pyplot as plt from matplotlib.colors import Li…...

es-head(es库-谷歌浏览器插件)

1.下载es-head插件压缩包,并解压缩 2.谷歌浏览器添加插件 3.使用...

AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)

1.本地部署 1.1 ollama Ollama软件通过其高度优化的推理引擎和先进的内存管理机制,显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术(Quantization)以降低模型的计算复杂度和存储需求,同时结合张量并行计算&…...

kotlin 知识点 七 泛型的高级特性

对泛型进行实化 泛型实化这个功能对于绝大多数Java 程序员来讲是非常陌生的,因为Java 中完全没有这个概 念。而如果我们想要深刻地理解泛型实化,就要先解释一下Java 的泛型擦除机制才行。 在JDK 1.5之前,Java 是没有泛型功能的,…...

正则表达式–断言

原文地址:正则表达式–断言 – 无敌牛 欢迎参观我的个人博客:正则表达式特殊字符 – 无敌牛 断言assertions 1、(?...):正向预查(positive lookahead),表示某个字符串后面应该跟着什么。但这个字符串本身…...

OceanBase数据库实战:Windows Docker部署与DBeaver无缝对接

一、前言 OceanBase 是一款高性能、高可扩展的分布式数据库,适用于大规模数据处理和企业级应用。 随着大数据和云计算的普及,OceanBase 在企业数字化转型中扮演着重要角色。学习 OceanBase 可以帮助开发者掌握先进的分布式数据库技术,提升数…...

C++:开胃菜练习项目---定长内存池的实现以及测试

项目介绍 简介 作为学习tcmalloc高并发内存池项目前的一个铺垫。 作为程序员(C/C)我们知道申请内存使用的是malloc,malloc其实就是一个通用的大众货,什么场景下都可以用,但是什么场景下都可以用就意味着什么场景下都不会有很高的性能&#xf…...

【LLM】本地部署LLM大语言模型+可视化交互聊天,附常见本地部署硬件要求(以Ollama+OpenWebUI部署DeepSeekR1为例)

【LLM】本地部署LLM大语言模型可视化交互聊天,附常见本地部署硬件要求(以OllamaOpenWebUI部署DeepSeekR1为例) 文章目录 1、本地部署LLM(以Ollama为例)2、本地LLM交互界面(以OpenWebUI为例)3、本…...

JVM相关面试题

1. 类加载与双亲委派机制 聊一下你对类加载器的理解。 类加载器是JVM用来加载类文件到内存的组件。它负责将字节码文件解析为java.lang.Class实例,并存储到运行时数据区的方法区中。类加载器分为Bootstrap ClassLoader、Extension ClassLoader和Application ClassLo…...

WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

二:前端发送POST请求,后端获取数据

接着一:可以通过端口访问公网IP之后 二需要实现:点击飞书多维表格中的按钮,向服务器发送HTTP请求,并执行脚本程序 向服务器发送HTTP请求: 发送请求需要明确一下几个点 请求方法: 由于是向服务器端发送值…...

Go语言中的信号量:原理与实践指南

Go语言中的信号量:原理与实践指南 引言 在并发编程中,控制对共享资源的访问是一个经典问题。Go语言提供了丰富的并发原语(如sync.Mutex),但当我们需要灵活限制并发数量时,信号量(Semaphore&am…...

cpp中的继承

一、继承概念 在cpp中,封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类(也就是基类)的基础上创建新类(派生类或者子类),从而实现代码的复用。 如上图所示,Person是基类&…...

3DGS(三维高斯散射)与SLAM技术结合的应用

3DGS(三维高斯散射)与SLAM(即时定位与地图构建)技术的结合,为动态环境感知、高效场景建模与实时渲染提供了新的可能性。以下从技术融合原理、应用场景、优势挑战及典型案例展开分析: 一、核心融合原理 1. …...

DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级

在近两年由AI引发的生产力革命的背后,一场关乎数字世界秩序的攻防战正在上演:AI生成的深度伪造视频导致企业品牌声誉损失日均超千万,批量生成的侵权内容使版权纠纷量与日俱增,黑灰产利用AI技术持续发起欺诈攻击。 与此同时&#…...

mybatis 细节(${ ..}和#{..},resultType 和 resultMap的区别,别名的使用,Mapper 代理模式)

${..}和#{..} 占位符 #{..} #{}实现的是向prepareStatement中的预处理语句中设置参数值&#xff0c;sql语句中#{}表示一个占位符即?。 <!-- 根据id查询用户信息 --> <select id"findUserById" parameterType"int" resultType"user"&g…...

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况&#xff1a;本科就读于电科软院&#xff0c;24年2月开始了解考研&#xff0c;24年3月开始数学&#xff0c;9月决定考本院&#xff08;开始全天候图书馆学习&#xff09;并开始专业课学习&#xff0c;11月底开始政治学习&#xff0c;最后…...

【python】提取word\pdf格式内容到txt文件

一、使用pdfminer提取 import os import re from pdfminer.high_level import extract_text import docx2txt import jiebadef read_pdf(file_path):"""读取 PDF 文件内容:param file_path: PDF 文件路径:return: 文件内容文本"""try:text ext…...

Selenium 与 Coze 集成

涵盖两者的基本概念、集成步骤、代码示例以及相关注意事项。 基本概念 Selenium:是一个用于自动化浏览器操作的工具集,支持多种浏览器(如 Chrome、Firefox 等),能够模拟用户在浏览器中的各种操作,如点击、输入文本、选择下拉框等,常用于 Web 应用的自动化测试。Coze:它…...

SQL注入(order by,limit),seacms的报错注入以及系统库的绕过

1&#xff1a;如果information_schema被过滤了&#xff0c;该怎么绕过 1.1&#xff1a;介绍一下information_schema这个库 information_schema 是一个非常重要的系统数据库&#xff0c;它在SQL标准中定义&#xff0c;并且被许多关系型数据库管理系统&#xff08;RDBMS&#x…...

数据保护API(DPAPI)深度剖析与安全实践

Windows DPAPI 安全机制解析 在当今数据泄露与网络攻击日益频繁的背景下&#xff0c;Windows 提供的 DPAPI&#xff08;Data Protection API&#xff09;成为开发者保护本地敏感数据的重要工具。本文将从 双层密钥体系、加密流程、跨上下文加密、已知攻击向量与防御措施、企业…...

Sqlserver安全篇之_隐藏实例功能和禁用SQL Server Browser服务

总结&#xff1a; 1、隐藏实例功能和禁用SQL Server Browser服务的功能一样&#xff0c;对应非默认实例(且这个默认实例是1433端口)的情况下&#xff0c;都是需要在连接字符串中提供端口号才能连接到实例 2、隐藏实例功能后&#xff0c;就算开启了SQL Server Browser服务&#…...

muduo网络库2

Muduo网络库&#xff1a;底层实质上为Linux的epoll pthread线程池&#xff0c;且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环&#xff0c;有一个main Reactor负载accept连接&#xff0c;然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor)&…...

【ISP】畸变校正 LDC

ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;中的 LDC&#xff08;Lens Distortion Correction&#xff0c;镜头畸变校正&#xff09;是一种用于校正镜头畸变的图像处理技术。镜头畸变是由于镜头的光学特性导致的图像失真现象&#xff0c;主要…...

deepseek 学习资料整理

deepseek 学习资料整理 deepseek_清华大学指导手册_pdf_1-5 无套路&#xff0c;无需关注&#xff0c;无需登录&#xff0c;无需app&#xff0c;直接下载&#xff1a; 下载地址 文件列表&#xff1a; 001_清华大学_DeepSeek从入门到精通.pdf 002_清华大学_DeepSeek如何赋能职…...

【deepseek】本地部署+webui访问

背景 最近deepseek很火&#xff0c;但是官网的老是被限流使用&#xff0c;还有就是自己也想着玩一玩&#xff0c;于是准备在自己电脑跑一个 直接附上结果地址mydeepseek 准备工作 windows和linux都可 我这里选择linux&#xff0c;ubuntu系统 安装ollama 看下图&#xff0…...

LeetCodeHot100_0x02

LeetCodeHot100_0x02 11. 滑动窗口最大值&#xff08;不熟&#xff09; 求解思路&#xff1a; 暴力法的时间复杂度是O(NK)&#xff0c;在K常数较大时复杂度就高了。所以我们要想办法将K优化掉&#xff0c;即本题的难点在于如何在O(1)的时间复杂度求出当前窗口中的最大值。这个…...

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型&#xff0c;差别主要在设备树和数据传输上&#xff0c;由于SPI是由4根线实现主从机的通信&#xff0c;在设备树上配置时需要对SPI进行设置。 原理图可知&#xff0c;数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…...

H7 based Phalanx G1 ETH Data Switch Hub UART Interface 介绍

外接接口配置 H7 based Phalanx G1 ETH Data Switch hub UART interface 1.对外接接口进行详细介绍 以下是针对 H7 based Phalanx G1 设备的外接接口配置的详细解析&#xff0c;重点说明其 ETH Data Switch Hub 和 UART Interface 的技术特性与应用场景&#xff1a; 一、核…...

Vue04

自定义指令 directives是Vue的一个配置项 这里写自定义指令 自定义指令被调用的时机 指令与元素成功绑定时 指令所在的模板被重新解析时 函数式 <span v-big"n"></span> directives:{ big(element,binding){ element.innerText bingin…...

OpenCV(9):视频处理

1 介绍 视频是由一系列连续的图像帧组成的&#xff0c;每一帧都是一幅静态图像。视频处理的核心就是对这些图像帧进行处理。常见的视频处理任务包括视频读取、视频播放、视频保存、视频帧处理等。 视频分析: 通过视频处理技术&#xff0c;可以分析视频中的运动、目标、事件等。…...

短剧源码部署搭建小程序搭建IAA+IAP混合解锁模式

在当今数字化内容消费迅速增长的时代&#xff0c;短剧作为一种新兴的内容形式&#xff0c;凭借其短小精悍、节奏紧凑的特点&#xff0c;迅速吸引了大量用户。作为一名软件体验测试人员&#xff0c;我有幸体验了一款集创新与实用为一体的短剧小程序。这款小程序不仅在前端用户体…...

基于 CFD 预测的机器学习第 2 部分:在 Benchmark 应用程序上使用 Stochos 预测流场

了解机器学习和 Stochos 如何彻底改变制造业的 CFD 预测。 挑战 预测复杂流体动力学场景中的流场一直是工程师和科学家面临的重大挑战。传统的计算流体动力学 &#xff08;CFD&#xff09; 方法需要大量的计算资源和时间&#xff0c;因此难以处理实时预测和大规模模拟。 此外…...

NLP的预处理数据

处理文本数据的主要工具是Tokenizer。Tokenizer根据一组规则将文本拆分为tokens。然后将这些tokens转换为数字&#xff0c;然后转换为张量&#xff0c;成为模型的输入。模型所需的任何附加输入都由Tokenizer添加。 如果您计划使用预训练模型&#xff0c;重要的是使用与之关联的…...

数据结构——单链表

前言 1. 什么是链表 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。与顺序表不同&#xff0c;链表的存储数据在内存是随机分布的。 2. 链表的分类 链表的种类多种多样&#xff0c;其中最常见的有八种…...

SurfaceFlinger代码笔记

drawLayers是做client合成&#xff0c;合成完以后的buffer会放在RenderSurface里 FrameBufferSurface里的buffer是通过setClientTarget给到HWC的&#xff08;HWC应该给client合成的buffer留了一个slot) Output.cpp这个文件非常关键&#xff0c;代表着具体一个Display的操作 d…...

Linux-Ansible模块进阶

文章目录 Copy和FetchFile模块 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Linux专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年02月22日18点49分 Copy和Fetch copy和fetch模块实践 copy模块需要注意的点&#xff1a;在收集日志之前…...

【机器学习】强化学习(2)——捋清深度强化学习的思路

在之前学习的过程中我了解到深度学习中很重要的一个概念是反向传播&#xff0c;最近看论文发现深度强化学习&#xff08;DRL&#xff09;有各种各样的方法&#xff0c;但是却很难区分他们的损失函数的计算以及反向传播的过程有何不同。在有监督的学习中&#xff0c;损失可以理解…...

touchgfx的工作机制

touchgfx的工作机制 一.MVP软件架构 MVP的全称为Model-View-Presenter Model: 就是数据部分,在整个touchgfx应用中,只有一个Model类实例对象,它为所有的Screen屏幕界面服务,可以理解成是一个全局变量区,同时它还负责和后端系统通信 View: 就是UI界面部分,对应于View类,在整…...

Fisher信息矩阵(Fisher Information Matrix, FIM)与自然梯度下降:机器学习中的优化利器

Fisher信息矩阵与自然梯度下降&#xff1a;机器学习中的优化利器 在机器学习尤其是深度学习中&#xff0c;优化模型参数是一个核心任务。我们通常依赖梯度下降&#xff08;Gradient Descent&#xff09;来调整参数&#xff0c;但普通的梯度下降有时会显得“笨拙”&#xff0c;…...

2025数学建模竞赛汇总,错过再等一年

01、2025第十届数维杯大学生数学建模挑战赛&#xff08;小国赛&#xff09; 竞赛介绍&#xff1a;数学建模行业内仅次于国赛和美赛的的第三赛事&#xff0c;被多所高校认定为国家级二类竞赛。赛题类型是国内唯一和高教社杯国赛题型风格完全一致的全国性数学建模竞赛&#xff0…...

设计模式教程:观察者模式(Observer Pattern)

一、模式概述 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系。一个对象&#xff08;称为主题&#xff09;状态发生变化时&#xff0c;所有依赖于它的对象&#xff08;称为观察者&#xff09;都会自动得到…...

代码随想录算法训练营第九天| 151.翻转字符串里的单词、右旋转字符串 、28. 实现 strStr()、459.重复的子字符串、字符串总结

151.翻转字符串里的单词 题目链接&#xff1a;151.翻转字符串里的单词 文档讲解&#xff1a;代码随想录翻转字符串里的单词 视频讲解&#xff1a;LeetCode&#xff1a;翻转字符串里的单词 状态&#xff1a;参考自己写出来的 思路&#xff1a; 反转&#xff1a;思路很清晰&#…...

bpmn.js + Node.js_构建高效的后端工作流处理系统

1. 引言 1.1 研究背景与意义 随着企业业务的复杂化,传统的流程管理工具已难以满足需求。BPMN(Business Process Model and Notation)作为一种标准化的流程建模语言,结合 bpmn.js 和 Node.js 可以实现高效的工作流管理系统,提升企业的运营效率。 1.3 BPMN 和 bpmn.js 简…...

DeepSeek系统架构的逐层分类拆解分析,从底层基础设施到用户端分发全链路

一、底层基础设施层 1. 硬件服务器集群 算力单元&#xff1a; GPU集群&#xff1a;基于NVIDIA H800/H100 GPU构建&#xff0c;单集群规模超10,000卡&#xff0c;采用NVLink全互联架构实现低延迟通信。国产化支持&#xff1a;适配海光DCU、寒武纪MLU等国产芯片&#xff0c;通过…...

嵌入式硬件基础知识

1.电阻(主要是贴片电阻) 01 基础课程-电阻 1.电阻封装 2.相关参数 1.功率额定值&#xff1a; 电阻能够长期承受的最大功率&#xff0c;功率过大可能导致电阻过热或损坏。封装尺寸越大&#xff0c;散热能力越强&#xff0c;功率额定值通常越高。 2.容差&#xff1a; 电阻…...

springboot+dubbo+zookeeper的注册服务和调用实践

目录 zookeeper为什么可作为注册中心zookeeper注册中心优缺点启动zookeeper编写springboot项目提供dubbo服务1. 服务接口2. Springboot引入dubbo实现服务接口2.1 工程目录和依赖2.2 启动程序和application.properties2.3 DubboService 实现服务接口2.4 测试api&#xff0c;用于…...

ARM Cortex-M处理器中的MSP和PSP

在ARM Cortex-M系列处理器中&#xff0c;MSP&#xff08;主堆栈指针&#xff09;和PSP&#xff08;进程堆栈指针&#xff09;是两种不同的堆栈指针&#xff0c;主要用于实现堆栈隔离和提升系统可靠性。以下是它们的核心区别和应用场景&#xff1a; 1. 基本定义 MSP&#xff08;…...

计算机网络:应用层 —— 电子邮件

文章目录 电子邮件的起源与发展电子邮件的组成电子邮件协议邮件发送和接收过程邮件发送协议SMTP协议多用途因特网邮件扩展MIME 电子邮件的信息格式 邮件读取协议邮局协议POP因特网邮件访问协议IMAP 基于万维网的电子邮件 电子邮件&#xff08;E-mail&#xff09;是因特网上最早…...

Vue3 + Spring WebMVC 验证码案例中的跨域问题与解决方法

最近在基于vue3 SpringWebMVC前后端分离的开发环境中实现一个验证码的案例&#xff0c;在开发过程中遇到了一些复杂的跨域问题&#xff0c;现已解决&#xff0c;故将解决方法分享&#xff0c;希望能帮到有需要的人。 出现的问题&#xff1a; 对于验证码的实现&#xff0c;我选…...