机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(二)

news2024/9/24 5:31:06

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:机器学习

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶 算法分类
      • (1)逻辑回归
        • 1.基本概要
        • 2.算法推导
        • 3.工程实现
      • (2)支持向量机
        • 1.基本概要
        • 2.算法推导
        • 3.工程实现
        • 结束语🥇


前言

  机器学习可以处理的业务场景非常丰富,从基础的回归、聚类和分类等场景到图片识别、语音识别和文本分析等。不同的业务场景也需要使用不同的算法,所以如果想对机器学习在业务的解决方案上有一定认识,则需要掌握多种场景的不同种类的算法,了解不同算法的属性、优势和缺陷,对之后的算法应用会有很大的帮助。


🎶 算法分类


  分类算法是用来解决分类问题的算法,关于场景的抽象方法在前面章节中已经介绍了,分类算法是场景最丰富的一类算法,广告的投放和疾病预测等都可以抽象成分类问题。分类算法一般都是监督学习算法,因为需要通过已有的打标数据来生成分类模型。在这一部分选取了几种比较典型的分类算法进行介绍,分别是K近邻(KNN)、朴素贝叶斯(NBM)、逻辑回归(LR)(注:这里LR作为二分类算法,LR也是回归算法的一种)、随机森林(RF)和线性支持向量机(SVM)。

(1)逻辑回归

  逻辑回归(Logistic Regression,LR)是一种广义的线性回归分析模型,属于监督学习算法。逻辑回归可以用在回归、二分类和多分类等问题上,但是最常用的还是二分类。LR作为机器学习算法中的“明星算法”,无论对大数据量的问题或是小数据量的问题都有很好的性能和计算结果,而且在参数设计上也比较利于调参。同时,逻辑回归还具备特征评估的作用(在之前的特征重要性评估章节有详细介绍)。正是因为逻辑回归具备这样多的优势,所以目前不夸张地说,在机器学习领域,有不少于一半的场景是通过逻辑回归算法来解决的,所以学会逻辑回归等于学会了机器学习的“半壁江山”。

1.基本概要

  我们先来看下逻辑回归是如何分类的,作为线性模型,顾名思义,线性回归就是通过一条曲线来区分不同的数据集。这里以最直观的二分类问题为例,假如我们的数据是二维的,可以通过一个平面坐标轴来表示(见图)。
在这里插入图片描述
图中的数据分为两种,一种通过方形表示,一种通过圆形表示,通过逻辑回归算法进行训练,最终生成的模型会是一条二元一次直线(因为本例只有两个特征),这条直线会用来对两种不同的数据集进行分类,即

y=aX+C

其中,y和x是变量,系数a和c就是我们训练得到的模型结果,二分类结果如图
所示。
在这里插入图片描述
  理解完线性模型的含义后,接下来介绍逻辑回归对输入数据的要求。逻辑回归需要对数据进行一些矩阵运算,所以入参矩阵的每个数据都需要是数值型的。同时,逻辑回归是一种监督学习算法,需要数据是打标好的。如果是二分类问题,通常目标序列都是表示成0和1的形式。图是一份标准的逻辑回归算法输入,其中,age、sex、duration 和 place 是特征值(id是string 型的,表示数据的唯一标识,不参与矩阵计算),都是通过数值类型来表示的。c是目标队列,通过0和1表示,还要注意输入数据要尽可能避免空值或者乱码的出现。
在这里插入图片描述

2.算法推导

  前一部分介绍了一些关于逻辑回归算法的基础概要,包括线性模型的意义和对输入参数的要求,这一部分将重点介绍一下关于逻辑回归算法的推导过程。首先来了解逻辑回归算法最终求得的模型是怎样的?逻辑回归的最终结果是一组特征的系数,每个特征有一个系数相乘,还以上面小节中的样例数据为例,因为输入数据的特征包括age、sex、duration和 place,生成的线性模型为

y=w, x age+ wz x sex+ w x duration+ w x place+C

  其中,w,w,w,w,C是通过算法的模型训练得到的模型系数,C 是常数项。最终的训练结果是一个模型(见图)。
图表示的是每个特征对应的系数w,m,w,w,C。确定了模型系数后,我们就可以利用模型来进行预测了。
  对于整个逻辑回归算法从训练到预测的过程有3个地方是要具体说明的,一个是如何把结果区间表示到[0,1],另一个是如何求解每个特征的系数,最后是如何利用模型进行预测。于是这里就引出了逻辑回归最关键的3个步骤,Sigmoid 函数、最优化算法以及预测。
(1)Sigmoid函数。Sigmoid 函数是一个成S型分布的函数,Sigmoid 函数的公式表示为
在这里插入图片描述
其中,t为变量,Sigmoid 函数如图下图所示。
在这里插入图片描述
  通过图像可以更直观地了解到,Sigmoid 函数可以把结果区间均匀地表示在[0,1]的范围中。如果把上面的案例的模型带进去,就表示为

在这里插入图片描述

这样的话,结果就控制在[0,1了。
  (2)最优化算法。最优化算法是统计学中研究各种系统最优化途径的方案。从数学意义上来讲,最优化方法是一种求极值的方法,即在一组约束为等式或不等式的条件下使系统目标函数达到极值,即最大值或最小值。我们可以举一个例子来说明最优化算法在逻辑回归中的作用,还是以逻辑回归章节开篇的那个二维数据分类的例子来讲。我们有圆形和方形两组数据,什么样的线性模型才能更好地对两组数据进行分类呢?需要分类直线尽可能地区分不同的数据集,直线上面是一种类别,下面是另一种类别。如图 5-12所示,中间那条直线显然是我们需要的效果,最优化算法在逻辑回归中的作用就是计算出这条直线。
在这里插入图片描述
  有多种最优化算法都适用于逻辑回归,常见的如梯度下降法或者是 Newton 法。这里选用梯度下降方法进行介绍。
  梯度下降法(Gradient Descent ),是利用一阶梯度信息找到函数局部最优解的一种方法,是机器学习算法中常用的一种最优化解法。梯度下降法的思路很简单,就是每一步都向最终的结果前进一点,通过迭代的方式计算直到收敛,得到最优解。梯度下降法有点像爬山的问题,一步一步逼近终点,在维基百科上有一张图可以清楚地表示这个方法的思想.
  梯度下降的实现方式有很多,而且包含很多衍生方式,这里以最基础的版本来介绍。我们要求的最终模型实际上是二个向量,向最的长度跟数据的特征数是一致的,可以把这个向量用,来表示,是一个变量、表示的是梯度下降法迭代的次数。通常可以把原始的特征系数向量,也就是设置成初始值全是1、初始特征系数向量可以表示为W=(1.11….1)。
在这里插入图片描述
  这里还要设置一个步长ō和收敛条件,步长是指梯度下降法每次学习的速率,就相当于爬山中每步的跨度、如果步长大长,在训练过程中可能一下子就迈过了最合适的点,失去了最优解;如果步长太短,则会发现达到终点的速率会非常慢,容易造成过拟合。收敛条件比较好理解,是设置二个条件来判断什么情况下达到了最优解,失去这个收敛条件后函数就会一直迭代没有终点。例如,设m 是判断收敛条件的阈值,m 一般是一个比较小的数值(根据实际求而定)通常的判定方法是通过 W…和 W,的向量距离来判断,如果|W…-W:|向量距离<m就判定迭代到第:次的时候已经是最优解,可以停止计算了,W,就是我们要的值。其实对算法终结点的限制还可以通过限制选代次数来做,具体选用何种方式就需要根据具体的需求来判断。梯度下降的公式为

W=W,-αxX’xerror

其中,α在计算中通常作为梯度的乘积系数,X"表示训练特征数据矩阵的转置,error 表示
的每一次迭代的梯度。下面通过一个例子介绍如何通过梯度下降的方法进行模型的计算。

  • 首先看下训练数据。这是一个包含3组输入数据的矩阵,其中矩阵的前3个字段是特征列,第4个字段是目标列。

在这里插入图片描述

  • 设置α的数值为 0.001,作为每次迭代的步长。
  • X表示输入特征矩阵的转置,特征矩阵X可以表示为

在这里插入图片描述
转置之后,行和列位置对调,X为
在这里插入图片描述

  • 下面计算 error。error 表示的是每一次迭代计算的梯度,计算公式为

error=Y-Sigmoid(XW;)

Y表示的是目标列,在本例中是指向量
在这里插入图片描述
Sigmoid(XW;)是把第t次的模型权重和特征矩阵的乘积带入 Sigmoid 函数计算,在本案例中设 W=(1,1,1),Sigmoid(XW;)的计算方式为
在这里插入图片描述
  通过以上方式不断迭代 刚… =㎡,-αxX’xerror ,直到达到收敛条件即可。
通过 Sigmoid 函数以及最优化算法可以得到一个模型,下面通过举例说明如何通过这个模型进行预测。假设最终生成的模型㎡,=(0.1,0.2,0.3),常数项 C=0.18,当我们有一条预测集数据为 A=(5,6,7)时,该如何对A进行预测呢?
  以上通过介绍 Sigmoid 函数、梯度下降以及模型预测介绍了整个逻辑回归算法的推导流程。这里还需要强调一个机器学习的线性算法中经常会发生的问题,就是过拟合问题,在线性回归算法中,往往可能会出现线性模型过拟合训练数据的情况。如果训练中出现过拟合问题,表现的特性是针对训练数据的预测结果会非常理想,但是针对其他的数据,果就会差很多。过拟合问题的出现通常是因为训练的特征量过多,可以通过适当减少特征来解决这样的问题,也可以通过L1范数正则化和L2范数正则化等方法来防止过拟合的题发生。在逻辑回归的模型训练过程中一定要注意避免过拟合现象的发生。

3.工程实现

  通过 Python 的 numpy 库来实现逻辑回归算法,以下分别是 sigmoid 和梯度下降方法的实现。
Sigmoid 函数的实现如下。

def sigmoid(x):
             return 1.0/(1+exp(-x))

梯度下降函数 gradAscent 的实现如下。

def gradAscent(dataMat,classLabel,alpha,maxCycles):
			dataMatrix= mat(dataMat)
			labelMat = mat(classlabel).transpose()
			m,n = shape (dataMatrix)
			weights =ones((n,1))
			for i in range(maxCycles):
					h= sigmoid(dataMatrix*weights)
					error=(labelMat-h)
weights =weights + alpha *dataMatrix.transpose()* error
   return weights
   
  • 4个入参从左到右分别是特征矩阵列、目标列、步长和循环次数
  • error 是代价函数。
  • weights 是最终的生成模型。
      以上介绍了逻辑回归的基本原理、算法推导以及工程上的实现,其实逻辑回归算法的运用是非常广泛的,特别是在天气预测和广告推荐等行业,而且逻辑回归的变种也非常多,最终的最优化算法也有很多选择。所以想真正地了解并且熟练使用逻辑回归算法需要阅访大量的文献,了解各种变型情况之间的差异。

(2)支持向量机

1.基本概要

  支持向量机(Support Vector Machine,SVM)是一种有监督的分类算法,通过探求风险最小来提高学习机的泛化能力,实现经验风险和置信度范围的最小化。通俗来说就是找到能区分特征空间最大间隔的分类器,把问题转化成一个凸二次规划问题的求解。SVM 的原理听上去可能比较难以理解,首先通过对支持向量机的名字进行拆解,详细介绍一下它的具体算法概念。
在这里插入图片描述
  以二维数据为例,我们看图 的这组数据中实心和空心的两组数据可以通过一条直线进行分类。这条用于分类的直线就叫作分类机。这个分类机就是支持向量机中这个“机”的含义。下面再来了解什么是支持向量,我们看到在二分类的这条线上下,都有每个类别跟分类器间隔最近的一些点,这些点被标记出来。如果这些点的位置发生了变化,那么分类机的位置也相应地会发生变化,也就是说这些间隔点支持了分类机,这些间隔点就是“支持向量”。到了这一步,我们通过名字已经知道了这个算法的组成和含义,就是支持向量和分类机。下面只要保证每一个类别的这些支持向量跟分类机的几何距离最大,就可以保证分类的准确度。
  下面介绍支持向量机的分类,支持向量机可以分为两种:一种是线性支持向量机( Linear Support Vector Machine ),另外一种是非线性支持向量机( Non-linear Support Vecto,Machine)。线性支持向量机主要是解决的线性可分的场景,与之前介绍的逻辑回归的实现场景是一样的,线性可分表示的是通过一条线可以进行分类的场景,如图 所示。
在这里插入图片描述

  线性可分又分为近似线性可分和绝对线性可分,绝对线性可分就是一条线可以完全把数据进行分类。近似可分需要借助软间隔最大化的方法,学习出一个线性的分类器。下面来看下非线性可分的场景,图 是典型的线性不可分场景。
在这里插入图片描述
  在这个二维空间中有两种数据集,分别用圆圈和叉来表示,我们无法通过线来把这两组数据进行分类。这种场景要如何来解决呢?在非线性支持向量机算法中,可以利用移函数的方法先将数据映射到高维度空间中去,然后在更高的维度中把数据进行分类,这里借用下图来表示。
在这里插入图片描述
  上图中左半边表示的是在低维度空间里很难进行分类的一组数据,当我们通过算法把数据映射到高维度时(该图中是将二维空间数据映射到三维空间上),就可以通过一个超平面对数据进行分类。这里涉及空间维度转化的理论,以及平衡分类效果和置信度的软间隔最大化的方法。
以上介绍了支持向量机的基本概念和分类,下面谈一下这个算法的一些特性。
  1)SVM 的理论比较新颖的地方在于它是一种基于小样本学习的算法,在 SVM 算法中,我们的核心点是通过找到支持向量来进行分类,跟传统的逻辑回归算法这种利用历史全样本经验来归纳演绎的思想有所不同。
  2)SVM 在分类的时候引入了最大边界的思想,这个也比较好理解,当确定了支持向量后,只需要找到一个超平面使得正负两类的支持向量到这个平面的距离最大即可。
  3)SVM 还提供了一种处理非线性可分场景的思路,就是将低维数据映射到高维空间去求解的方法,并且已经衍生出多种核函数算法来支撑这种思想。
  4)SVM 的最终分类效果实际上是通过少数的支持向量来决定的,这就给模型本身带来了很大的鲁棒性,如果只是增删数据集中的数据而没有涉及支持向量,那么分类器对这种改变并不敏感。
  5)SVM 的缺陷就是对多分类问题的处理上不如逻辑回归或者树状结构的算法那样灵活,SVM 主要还是处理有监督的二分类场景的问题。

2.算法推导

  以上介绍了支持向量机的一些概念和特性,已经明确了SVM 的几个概念:支持向量分类超平面、支持向量要与分类超平面的距离最大。下面通过拆解上面的这几个概念来具体看一下 SVM 的公式推导过程(这里通过线性支持向量机在二维空间的分类来举例)。
(1)几何超平面概念。我们可以设超平面方程为

wX+b=0

其中,w和b并不是系数,w表示的是一组法向量(法向量是空间解析几何的概念,垂直于平面的直线所表示的向量为该平面的法向量,在空间中可以用来确定平面倾斜的角度),b表示的是截距,我们只要确定了w和b的值,就得到了对数据可以进行二分类的几何超平面。
  (2)几何间隔。假设我们有一组数据集 T={(x1,y),(x,y),(x,y),(xy),…},在监督学习场景下,其中 x表示的是特征向量,为表示的是目标值,加的取值有两种{-1,+1}(这里为什么是+1和-1,而不用0和1来打标,下面通过推导可以看到这样的打标更容易通过求点到平面的距离来进行分类)。假设已经确定了分类超平面为(w,b)。那么数据点 T 到超平面(w,b)的距离为

D=y„(w x x„+b)

  通过几何间隔 D(见下图)可以确定支持向量到超平面的距离,保证分隔距离最大,从而就确定了超平面的参数(w,b)。

在这里插入图片描述
上图 表示的是一个点到平面(w,b)的几何间隔 D。通过上图也可以看出,对于-组数据,它的最优分隔超平面有且只有一个。同时,因为数据的目标值,的值是通过+1和-1的正负号区分,为决定了几何间隔 D的系数符号,在计算结果的时候会方便对数据进行预测,因为可以把间隔距离是正数的归为一类,间隔距离为负数的是另外一类,而且间隔距离越大说明置信度越高。所以在实际的预测过程中,我们只需要计算每个点的特征向量与分隔几何超平面的距离就可以得到这个点的分类以及相关的程度。
  (3)支持向量求解。了解了几何超平面以及几何间隔的求解方法之后,接下来就剩向量机的解法了,这一部分也是支持向量机最难理解的一部分。这里要引入拉格朗日函数和拉格朗日乘子的概念。拉格朗日乘子法是在约束条件下求极值的方法,在 SVM 的问题中可以理解成通过数据点找到支持向量和分隔超平面,而这两项都受一些条件约束,如要确定支持向量和分隔平面的距离最大。具体的拉格朗日函数式为
在这里插入图片描述
其中,a是拉格朗日乘子,ax≥0。(w,b)表示的是分类超平面,x表示的是训练集特征数据,是训练集的目标值。把数据带入后可以用求二次偏导的方法对最优化问题求极值。因为这是在 SVM 中,存在正负样本对偶性的问题,有两步优化解法:
在这里插入图片描述
  其实通过拉格朗日乘子的算法,就可以通过求极值的方法直接求得支持向量是哪些点、分隔超平面的(w,b)参数的具体的值是什么。

3.工程实现

  以上介绍的是支持向量机的基本概念和算法的公式推导,下面介绍SVM 在工程上的实现,因为 SVM 的代码实现起来比较复杂,这里介绍一下 SVM 最著名的开源库 LIBSVM以及其在 Python 环境下的使用方法。
LIBSVM 是台湾大学林智仁教授等人开发的一个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包,提供了全套的源代码,而且可以在 Windows、Linux、Mac Os 这几种系统下运行,目前 LIBSVM 还拥有C、Java、Matlab、C#、Ruby、Python 等数十种语言的版本,LBSVM 是支持向量机在开源领域比较权威的一款工具包。官网地址http://www.csie.ntu.edu.tw/~ cjlin/libsvm/
  (1)环境配置。本文以系统Mac Os10.11,Python2.7 作为实验环境。
首先下载并且解压 LIBSVM 的源码包,并且在包的根目录下编译。

$ tar xzfv libsvm-3.17.tar.gz
$ cd libsvm-3.17
$ make

  如果想通过 Python 调用的话,用户还需要到目录下面的 Python 目录中,再次用 make编译一下。
  (2)代码解析。进入 Python 目录后,用户可以看到 svm.py 和 svmutil.py 两个文件。这两个文件是支持向量机算法的 Python 实现,代码写的很简练而且性能非常高。以下是几个关键的函数。

  • svm_train():训练 SVM 模型。
  • svm_predict():对数据做预测。
  • svm_read_problem():读 LIBSVM 格式的数据,
  • svm_load_model():读取模型。
  • svm_save_model():存模型
  • evaluations():结果评估。
      (3)实验。调用 LIBSVM 库来实现一个案例,首先需要介绍的就是LIBSVM 的数据格式跟之前算法使用的数据格式不同,是通过 k:v这样的形式表示的。
      第一列是目标列,通过+1和-1表示正反两种对象。除了第一列都是训练数据,数据之间用空格隔开,通过k:v来表示,k是索引(第几列),v表示具体数据值,如果v是0的话可以不连续,这是一种稀疏数据的表现方式。LBSVM 的数据格式可以通过脚本生成,也可以通过链接https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/直接下载一些样例教据。
    下面介绍 LIBSVM 的调用。
from svmutil import *
y,x= svm_read problem('ala.txt')
yt,xt= svm read problem('ala.t.txt')
m=svm train(y,x)
svm predict(yt,xt,m)

通过对 ala.txt 数据进行训练,对 ala.t.txt 进行预测.
  SVM 一直以良好的分类效果著称,通过向量机进行分类以及把低维数据映射到高维的思路体现了 SVM 的独特性,也让 SVM 成为每个算法研究者的必修课。本节只是对 SVM 的理论和推导进行了最基础的介绍,因为SVM 的算法是一个非常复杂的逻辑,所以如果想完全理解 SVM 需要花费非常多的时间。在工程实现部分使用的 LIBSVM 开源包是一款非常出色的开源项目,也是一个非常好的学习工具,如果有对 SVM 非常感兴趣的同学,建议从 LIBSVM 项目学起。


结束语🥇

以上就是机器学习
持续更新机器学习教程,欢迎大家订阅系列专栏🔥机器学习
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

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

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

相关文章

新兴材料中载流子迁移率的霍尔效应测量

这篇文章是发表在《自然电子学》&#xff08;Nature Electronics&#xff09;2024年7月刊上的一篇评论文章&#xff0c;标题为“Reporting Hall effect measurements of charge carrier mobility in emerging materials”&#xff0c;作者是Vladimir Bruevich和Vitaly Podzorov…

数据仓库及数仓架构概述

往期推荐 大数据HBase图文简介-CSDN博客 数仓常见名词解析和名词之间的关系-CSDN博客 目录 0. 前言 0.1 浅谈维度建模 0.2 数据分析模型 1. 何为数据仓库 1.1 为什么不直接用业务平台的数据而要建设数仓&#xff1f; 1.2 数据仓库特征 1.3 数据仓库和数据库区别 1.4 以…

LLM 各种技巧| Prompt Engineering 大总结|指南

LLM 各种技巧| Prompt Engineering 大总结|指南 截止至今&#xff0c;关于LLM 的优化与技巧层出不穷&#xff0c;几乎每个月都有新的技术和方法论被提出&#xff0c;因此本篇主要是要介绍在各种不同情境下&#xff0c;LLM 的各种Prompt Engineering 技巧&#xff0c;每篇都有附…

数据结构经典测试题5

1. int main() { char arr[2][4]; strcpy (arr[0],"you"); strcpy (arr[1],"me"); arr[0][3]&; printf("%s \n",arr); return 0; }上述代码输出结果是什么呢&#xff1f; A: you&me B: you C: me D: err 答案为A 因为arr是一个2行4列…

使用AWS CDK构建生产级VPC基础设施指南

简介 虽然有很多关于AWS的信息&#xff0c;但实际如何将这些服务投入生产使用&#xff0c;还是需要自己思考。本文将介绍我们是如何思考并实施这些工作的。 目前有很多AWS环境构建的方法&#xff0c;但在这里我们将使用AWS CDK进行说明。 ※ 本文不会涉及CDK的基本操作方法或…

Java每日一练,技术成长不间断

目录 题目1.下列关于继承的哪项叙述是正确的&#xff1f;2.Java的跨平台特性是指它的源代码可以在多个平台运行。&#xff08;&#xff09;3.以下 _____ 不是 Object 类的方法4.以下代码&#xff1a;5.下面哪个流类不属于面向字符的流&#xff08;&#xff09;总结 题目 选自牛…

AI系统测试方法|变异测试的流程及优化技术

变异测试是AI系统测试中较为常见的一种测试方法。通过引入人工制造的缺陷来评估系统的健壮性。在AI系统测试实践中&#xff0c;变异测试解决了对测试套件进行有效性和充分性评估的难题。本文将重点探讨变异测试在AI系统测试中的执行流程&#xff0c;呈现一个完整的测试框架&…

Apple intelligence 正式开启测试!第一波文本工具测试体验来啦!

Apple Intelligence 开启测试了&#xff01;苹果带着它的人工智能走进现实了&#xff01; 但是&#xff0c;坏消息是&#xff0c;目前Apple Intelligence仅支持美国地区使用美英语言的开发者账户使用&#xff0c;国行的小伙伴不要急着更新了。 本次测试内容为WWDC2024预告中公布…

PTA 6-2 多项式求值

6-2 多项式求值&#xff08;15分&#xff09; 本题要求实现一个函数&#xff0c;计算阶数为n&#xff0c;系数为a[0] ... a[n]的多项式 在x点的值。 函数接口定义&#xff1a; double f( int n, double a[], double x ); 其中n是多项式的阶数&#xff0c;a[]中存储系数&…

【Qt】QWidget的windowOpacity属性 cursor属性 font属性

一.windowOpacity属性 1.概念&#xff1a; windowOpacity属性是Qt中QWindow类的一个属性。它用于设置窗口的不透明度&#xff08;透明度&#xff09;。 窗口的不透明度值范围是0.0到1.0之间&#xff0c;其中0.0表示完全透明&#xff0c;1.0表示完全不透明。默认情况下&#…

Python科研数据可视化教程

原文链接&#xff1a;Python科研数据可视化教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247609609&idx4&sn8629ee10544f43b46993694d929843d0&chksmfa826ceecdf5e5f8ca4fbc72104c3488d5c53c0735f41f393c9a494aceddf2b93c8eb5622813&token214…

部署一个nodejs项目+配置server

1.jdk环境 tomcat服务器需要jdk环境 版本对应 ​ tomcat9>jdk1.8 ​ tomcat10>jdk17 配置系统变量JAVA_HOME 2.nginx平滑升级&#xff0c;不停服务升级nginx服务器&#xff0c;1.26.1升级到1.27.0 3.负载均衡&#xff0c;使用nginx管理后端服务器&#xff0c;…

基础复习(IO流)

1.File类 创建对象 File f1 new File("D:/resource/ab.txt"); File f2 new File("D:\\resource\\abc.txt"); 基础方法 创建与删除方法 1、public boolean createNewFile()&#xff1a;创建一个新文件&#xff08;文件内容为空&#xff09;&#xff0c;…

区块链技术在智能城市中的创新应用探索

随着全球城市化进程的加速和信息技术的快速发展&#xff0c;智能城市成为了未来城市发展的重要方向。在智能城市建设中&#xff0c;区块链技术作为一种去中心化、安全和透明的分布式账本技术&#xff0c;正逐渐展现出其在优化城市管理、提升公共服务和增强城市安全性方面的潜力…

1.6 树和二叉树

1.树的基本概念 2.二叉树的概念和性质 2.1.二叉树性质 1&#xff09;结点个数 2&#xff09;第i层&#xff0c;最多结点个数 3&#xff09;者深度为k,前k层最多结点个数 4&#xff09;叶子结点个数 2.2.完全二叉树性质 1&#xff09;结点个数 2&#xff09;第i层最多节…

云计算实训18——基于域名配置虚拟主机、基于ip配置虚拟主机、基于端口配置虚拟主机、配置samba、部署nfs服务器

一、配置文件的结构 1.首先查看配置文件 [rootstatic-server ~]# vim /usr/local/nginx/conf/nginx.conf 使用grep指令查看配置文件&#xff0c;同时不看空行不看注释 [rootstatic-server ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf 2.备份文件 将原有…

ComfyUI插件:ComfyUI Impact 节点(四)

前言&#xff1a; 学习ComfyUI是一场持久战&#xff0c;而 ComfyUI Impact 是一个庞大的模块节点库&#xff0c;内置许多非常实用且强大的功能节点 &#xff0c;例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用&#xff0…

mediawiki 启用 Minerva 皮肤后报错 哎呀!您在$wgDefaultSkin定义的wiki默认皮肤minervaneue不可用。

嗨喽大家好啊我是 kx 这是个常见的问题&#xff0c;废话不多说直接上解决方法 Minerva 皮肤在他的官网有说明怎么办 连接放到下面&#xff1a; https://www.mediawiki.org/wiki/Skin:Minerva_Neue 懒得看的话我把官网的话复制下来了&#xff0c;直接看就行了&#xff1a; 安…

JAVA通过debezium实时采集mysql数据

前期准备 需要提前安装mysql并且开启binlog,需要准备kafka和zookeeper环境 示例采用debezium1.9.0版本 Maven配置 <version.debezium>1.9.0.Final</version.debezium> <dependency> <groupId>io.debezium</groupId> <artifactId>debe…

【大模型系列篇】本地问答系统-部署Ollama、Open WebUI

部署本地大模型&#xff0c;结合Ollama、Open WebUI以及本地RAG&#xff08;Retrieval-Augmented Generation&#xff09;可以为用户提供一个强大的本地知识库和交互式对话系统。以下是详细的部署步骤和功能介绍&#xff1a; 一、部署Ollama 访问Ollama官网&#xff1a;首先&…