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

线性回归模型(7大模型)

线性回归模型(7大模型)

线性回归是人工智能领域中最常用的统计学方法之一。在许多不同的应用领域中,线性回归都是非常有用的,例如金融、医疗、社交网络、推荐系统等等。

在机器学习中,线性回归是最基本的模型之一,也是许多其他模型的基础。在深度学习中,线性回归模型可以用作神经网络的基础,例如单层感知器模型。

线性回归模型也有许多改进和扩展版本,例如多元线性回归、逻辑回归、岭回归、lasso回归、弹性网回归等等。这些模型可以更好地处理实际应用中的不同情况,例如多个自变量、非线性关系、高维度数据等等。

本章节主要从以下四个环节进行介绍线性回归模型,主要详细介绍7大模型。

一、什么是线性回归

二、为什么使用线性回归

三、回归技术的类型

四、如何选择正确的回归模型

一、什么是线性回归

1. 线性入门

​ 先从一个简单的问题开始:如何用一个线性函数来拟合一个二维数据集?

​ 假设我们有一个二维数据集,其中每个样本都由一个x和一个y组成。我们可以用一个线性函数 y = ax + b 来拟合这个数据集,其中a和b是待定的系数。我们的目标是找到最佳的a和b,使得这个线性函数能够尽可能地拟合这个数据集。

​ 这就是线性回归的基本思想:通过拟合一个线性函数来预测一个连续型的输出变量。这是一个非常简单的案例。线性回归在实际应用中应用非常广泛,线性回归可以用于许多不同的任务,比如预测销售额、房价、股票价格等。

2. 什么是回归分析

​ 回归分析是一种统计学方法,用于研究自变量和因变量之间的关系。它是一种建立关系模型的方法,可以帮助我们预测和解释变量之间的相互作用。回归分析通常用于预测一个或多个因变量的值,这些因变量的值是由一个或多个自变量的值所决定的。回归分析的目标是建立一个数学模型来描述因变量和自变量之间的关系。这个数学模型可以是线性或非线性的,可以包含一个或多个自变量。通过回归分析,我们可以使用已知的自变量和因变量值来计算模型参数,然后使用这些参数来预测因变量值。回归分析被广泛应用于各种领域,包括经济学、社会学、医学、环境科学和工程学等。它可以用于研究许多不同的问题,如房价预测、销售预测、股票价格预测、人口增长预测等等。

回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细解释这一点。

二、为什么使用线性回归

举例理解

上述已经说了,回归分析估计了两个或者多个变量之间的关系,由一个简单的例子进行下一步的加深理解:

比如说,在当前的经济条件下,你要估计一家公司的销售额增长情况。现在,你有公司最新的数据,这些数据显示出销售额增长大约是经济增长的2.5倍。那么使用回归分析,我们就可以根据当前和过去的信息来预测未来公司的销售情况。

根据上述例子我们可以得到以下信息:

  1. 我们可以将销售额的增长率定义为:销售额增长率 = 公司销售额增长 / 经济增长

  2. 销售额增长大约是经济增长的2.5倍。因此,我们可以将上述式子转化为:销售额增长率 = 2.5

现在我们可以使用历史数据来拟合这个模型,然后使用该模型来预测未来的销售额增长情况。如果我们发现公司的销售额增长率偏离了预测值,我们可以重新调整模型并进行更新。

但是需要注意的是:

回归分析是一种统计学方法,它基于历史数据和一些假设来进行预测。因此,在使用回归分析进行预测时,我们需要谨慎地考虑这些假设,以及历史数据是否足够可靠和全面。

三、回归技术的类型

在统计学和机器学习领域中,回归分析有许多不同的技术和方法。以下是我归类的7种主要类型,下面来一一介绍每种回归技术。

1. ElasticNet回归

1.1 简介

ElasticNet回归是回归分析中的一种线性模型,结合了Lasso回归和岭回归的特点。与Lasso回归一样,ElasticNet回归可以实现特征选择和模型稀疏性,即通过将某些系数缩减为0,选择最相关的特征。与岭回归一样,ElasticNet回归可以处理多重共线性问题,即在输入特征之间存在高度相关性的情况下,仍然能够对模型进行合理的拟合。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ig3SW5gO-1682478439027)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426094334356.png)]

ElasticNet回归在建立模型时,同时考虑L1正则项和L2正则项,这两个正则项的系数可以通过调整超参数来控制。L1正则项可以实现特征选择和稀疏性,L2正则项可以处理多重共线性问题,通过结合这两个正则项,可以得到更加稳定、可靠的模型。

ElasticNet回归适用于许多实际应用中的问题,例如图像处理、基因表达数据分析等,这些问题通常具有高维度、高相关性等特点,而ElasticNet回归能够在这些复杂的场景中,同时实现特征选择和模型稳定性。

1.2 要点和优点

要点:

1.在高度相关变量的情况下,它会产生群体效应;

2.选择变量的数目没有限制;

3.它可以承受双重收缩。

优点:

Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。

1.3 ElasticNet回归案例

from sklearn.linear_model import ElasticNet
from sklearn.datasets import make_regression# 生成随机数据集
X, y = make_regression(n_samples=100, n_features=10, noise=0.1, random_state=42)# 创建ElasticNet回归模型
elastic_net = ElasticNet(alpha=0.1, l1_ratio=0.5, max_iter=1000)# 模型拟合训练数据
elastic_net.fit(X, y)# 输出模型参数
print("Coefficients:", elastic_net.coef_)
print("Intercept:", elastic_net.intercept_)
print("R-squared:", elastic_net.score(X, y))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFkdkXxh-1682478439028)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426094517723.png)]

​ 这个代码案例中,我们使用make_regression函数生成了一个包含100个样本、10个特征的随机数据集,然后创建了一个ElasticNet回归模型,并通过fit方法对模型进行训练。最后,我们输出了模型的系数、截距和R平方值。可以通过调整alphal1_ratio参数来控制L1和L2正则项的比例。

2. Lasso Regression套索回归

2.1 简介

Lasso Regression(套索回归)是一种用于回归分析的机器学习算法,它主要用于特征选择和模型正则化,可以帮助解决多重共线性和过拟合等问题。Lasso Regression通过加入L1正则化项,将一些特征的系数缩小甚至归零,从而达到特征选择的目的,同时可以避免过拟合。

它类似于岭回归,Lasso (Least Absolute Shrinkage and Selection Operator)也会惩罚回归系数的绝对值大小。此外,它能够减少变化程度并提高线性回归模型的精度。看看下面的公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nXHvx8aC-1682478439029)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426095538767.png)]

2.2 要点和优点

要点:

1.除常数项以外,这种回归的假设与最小二乘回归类似;

2.它收缩系数接近零(等于零),这确实有助于特征选择;

3.这是一个正则化方法,使用的是L1正则化;

如果预测的一组变量是高度相关的,Lasso 会选出其中一个变量并且将其它的收缩为零。

优点:它可以处理高维数据,并且能够自动减少不重要的特征,从而简化模型,提高预测准确性。另外,它的结果也比较容易解释,可以帮助我们理解哪些特征对目标变量的影响最大。

2.3 代码案例

from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 加载数据集
boston = load_boston()# 数据预处理
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# 创建Lasso Regression模型并训练
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)# 输出模型得分
print("Training set score: {:.2f}".format(lasso.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso.score(X_test, y_test)))

在这个示例中,我们使用了Boston房价数据集进行回归分析,首先对数据进行预处理,然后划分训练集和测试集。接着,我们使用Lasso Regression创建了一个模型,并设置了alpha参数为0.1,这个参数控制着正则化的强度。最后,我们输出了模型在训练集和测试集上的得分,来评估模型的性能。

3. Ridge Regression岭回归

3.1 简介

Ridge Regression(岭回归)是一种用于回归分析的机器学习算法,它可以帮助解决多重共线性和过拟合等问题。Ridge Regression通过加入L2正则化项,限制了特征系数的平方和,从而使得模型更加稳定。

岭回归分析是一种用于存在多重共线性(自变量高度相关)数据的技术。在多重共线性情况下,尽管最小二乘法(OLS)对每个变量很公平,但它们的差异很大,使得观测值偏移并远离真实值。岭回归通过给回归估计上增加一个偏差度,来降低标准误差。

y=a+b*x这个方程也有一个误差项。完整的方程是:


y=a+b*x+e (error term),  [error term is the value needed to correct for a prediction error between the observed and predicted value]
=> y=a+y= a+ b1x1+ b2x2+....+e, for multiple independent variables.

在一个线性方程中,预测误差可以分解为2个子分量。一个是偏差,一个是方差。预测错误可能会由这两个分量或者这两个中的任何一个造成。在这里,我们将讨论由方差所造成的有关误差。

岭回归通过收缩参数λ(lambda)解决多重共线性问题。看下面的公式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJwl2F1y-1682478598783)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426104904970.png)]

3.2 要点和优点

要点:

1.除常数项以外,这种回归的假设与最小二乘回归类似;

2.它收缩了相关系数的值,但没有达到零,这表明它没有特征选择功能

3.这是一个正则化方法,并且使用的是L2正则化。

优点:

Ridge Regression的优点在于它可以处理高维数据,并且能够有效地减少不必要的特征,从而简化模型,提高预测准确性。另外,它的结果也比较容易解释,可以帮助我们理解哪些特征对目标变量的影响最大。

3.3 代码案例

from sklearn.linear_model import Ridge
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 加载数据集
boston = load_boston()# 数据预处理
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# 创建Ridge Regression模型并训练
ridge = Ridge(alpha=0.1)
ridge.fit(X_train, y_train)# 输出模型得分
print("Training set score: {:.2f}".format(ridge.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge.score(X_test, y_test)))

4. Stepwise Regression逐步回归

4.1 简介

Stepwise Regression(逐步回归)是一种基于特征选择的回归分析方法,它可以在给定的一组特征中选择出最佳的子集,并利用这个子集来建立回归模型。Stepwise Regression可以通过逐步添加和删除变量,逐步优化模型,从而得到更加准确和有效的结果。

Stepwise Regression通常分为前向和后向两种方法,前向方法从空模型开始,逐步添加特征,而后向方法则从包含所有特征的完整模型开始,逐步删除特征。在每一步中,模型的性能都会被评估,并且选择具有最佳性能的特征进行添加或删除。

下面列出了一些最常用的逐步回归方法:

  • 标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。
  • 向前选择法从模型中最显著的预测开始,然后为每一步添加变量。
  • 向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。

这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。

4.2 代码案例

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from mlxtend.feature_selection import SequentialFeatureSelector as SFS# 加载数据集
boston = load_boston()# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3, random_state=0)# 创建线性回归模型
linreg = LinearRegression()# 创建前向Stepwise Regression模型并训练
sfs_forward = SFS(linreg,k_features=5,forward=True,scoring='neg_mean_squared_error',cv=5)
sfs_forward.fit(X_train, y_train)# 输出最佳特征组合
print('Best feature subset:', sfs_forward.k_feature_idx_)

在这个示例中,我们使用了Boston房价数据集进行回归分析,首先划分训练集和测试集,然后创建了一个线性回归模型。接着,我们使用了mlxtend库中的SequentialFeatureSelector类来实现前向Stepwise Regression,并设置了k_features参数为5,表示最终选择5个特征。最后,我们输出了最佳特征组合的索引,可以用于重新训练模型或进行特征重要性分析。

5. Polynomial Regression多项式回归

5.1 基本介绍

Polynomial Regression(多项式回归)是一种基于线性回归的扩展方法,它可以建立非线性关系的回归模型。与线性回归不同的是,多项式回归可以通过添加多项式项(例如平方项、立方项等)来拟合非线性数据。

在多项式回归中,输入特征不仅可以是原始特征,还可以是这些特征的多项式项。例如,在一元多项式回归中,我们可以使用以下模型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9yLAWGDL-1682478439031)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426105602619.png)]

在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2616hNMi-1682478439034)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426105631242.png)]

5.2 重点

重点:

虽然会有一个诱导可以拟合一个高次多项式并得到较低的错误,但这可能会导致过拟合。你需要经常画出关系图来查看拟合情况,并且专注于保证拟合合理,既没有过拟合又没有欠拟合。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wk73Cf7k-1682478439035)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426105715671.png)]

6. Logistic Regression逻辑回归

6.1 简介

逻辑回归(Logistic Regression)是一种分类算法,用于预测二元变量的结果。它通过将数据拟合到S形的逻辑函数(也称为sigmoid函数)来进行分类。逻辑回归是一种广泛应用于机器学习和数据分析的算法,通常用于二元分类问题,如信用评分、客户离职预测、疾病诊断等。它可以将输入特征与目标变量之间的关系建模为概率,并根据阈值将数据分类为两个类别。

逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,Y的值从0到1,它可以用下方程表示。


odds= p/ (1-p) = probability of event occurrence / probability of not event occurrenceln(odds) = ln(p/(1-p))logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk
p表述具有某个特征的概率

6.2 要点

要点:

1.它广泛的用于分类问题。

2.逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数OR使用了一个非线性的log转换。

3.为了避免过拟合和欠拟合,我们应该包括所有重要的变量。有一个很好的方法来确保这种情况,就是使用逐步筛选方法来估计逻辑回归。

4.它需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。

5.自变量不应该相互关联的,即不具有多重共线性。然而,在分析和建模中,我们可以选择包含分类变量相互作用的影响。

6.如果因变量的值是定序变量,则称它为序逻辑回归。

7.如果因变量是多类的话,则称它为多元逻辑回归。

代码案例

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification# 生成示例数据集
X, y = make_classification(n_samples=1000, n_features=4, n_informative=2, n_redundant=0, random_state=42)# 将数据集拆分为训练和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建逻辑回归模型
model = LogisticRegression()# 在训练集上训练模型
model.fit(X_train, y_train)# 在测试集上测试模型
accuracy = model.score(X_test, y_test)
print("Accuracy:", accuracy)

在这个代码示例中,我们首先使用Scikit-Learn的make_classification函数生成了一个示例数据集。然后,我们将数据集拆分为训练集和测试集,并创建了一个逻辑回归模型。最后,我们在训练集上训练模型,并在测试集上测试模型的准确率。

7. Linear Regression线性回归

7.1简介

线性回归(Linear Regression)是一种基本的统计学习方法,通常用于建立两个或多个变量之间的线性关系。它是通过将自变量与因变量之间的关系建模为线性方程,然后根据数据拟合出这个线性方程的系数,从而进行预测和分析的一种方法。线性回归广泛应用于金融、医疗、自然资源等多个领域,可以用于预测商品价格、销售量、股票价格等。

具体来说,线性回归通过找到一个最佳的拟合线来描述两个变量之间的关系。这个拟合线可以表示为一条直线的方程,即y = mx + b。其中,y是因变量,x是自变量,m是斜率,b是截距。斜率代表了因变量y在自变量x上的变化率,截距代表了当自变量为0时因变量的值。

线性回归的目标是通过最小化实际值和预测值之间的误差来找到最佳的拟合线。这个误差可以使用最小二乘法来计算。

用一个方程式来表示它,即Y=a+b*X+e,其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSp3itA9-1682478439036)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426110255631.png)]

7.2 如何获得最佳拟合线(a和b的值)?

这个问题可以使用最小二乘法轻松地完成。最小二乘法也是用于拟合回归线最常用的方法。对于观测数据,它通过最小化每个数据点到线的垂直偏差平方和来计算最佳拟合线。因为在相加时,偏差先平方,所以正值和负值没有抵消。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMiDw1pt-1682478439037)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20230426110328635.png)]

我们可以使用R-square指标来评估模型性能。想了解这些指标的详细信息,可以阅读:模型性能指标Part 1,Part 2.

7.3 要点

要点:

1.自变量与因变量之间必须有线性关系

2.多元回归存在多重共线性,自相关性和异方差性。

3.线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值。

4.多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感。结果就是系数估计值不稳定

5.在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。

7.4 代码案例

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression# 生成示例数据集
X, y = make_regression(n_samples=1000, n_features=4, noise=0.1, random_state=42)# 将数据集拆分为训练和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建线性回归模型
model = LinearRegression()# 在训练集上训练模型
model.fit(X_train, y_train)# 在测试集上测试模型
score = model.score(X_test, y_test)
print("Score:", score)

在这个代码示例中,我们首先使用Scikit-Learn的make_regression函数生成了一个示例数据集。然后,我们将数据集拆分为训练集和测试集,并创建了一个线性回归模型。最后,我们在训练集上训练模型,并在测试集上测试模型的准确率。

四、如何正确选择回归模型?

在多类回归模型中,基于自变量和因变量的类型,数据的维数以及数据的其它基本特征的情况下,选择最合适的技术非常重要。以下是你要选择正确的回归模型的关键因素

  1. 数据探索是构建预测模型的必然组成部分。在选择合适的模型时,比如识别变量的关系和影响时,它应该首选的一步。

  2. 比较适合于不同模型的优点,我们可以分析不同的指标参数,如统计意义的参数,R-square,Adjusted R-square,AIC,BIC以及误差项,另一个是Mallows’ Cp准则。这个主要是通过将模型与所有可能的子模型进行对比(或谨慎选择他们),检查在你的模型中可能出现的偏差。

  3. 交叉验证是评估预测模型最好额方法。在这里,将你的数据集分成两份(一份做训练和一份做验证)。使用观测值和预测值之间的一个简单均方差来衡量你的预测精度。

  4. 如果你的数据集是多个混合变量,那么你就不应该选择自动模型选择方法,因为你应该不想在同一时间把所有变量放在同一个模型中。

  5. 它也将取决于你的目的。可能会出现这样的情况,一个不太强大的模型与具有高度统计学意义的模型相比,更易于实现。

  6. 回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好。

相关文章:

线性回归模型(7大模型)

线性回归模型(7大模型) 线性回归是人工智能领域中最常用的统计学方法之一。在许多不同的应用领域中,线性回归都是非常有用的,例如金融、医疗、社交网络、推荐系统等等。 在机器学习中,线性回归是最基本的模型之一&am…...

VP记录:Codeforces Round 868 (Div. 2) A~D

传送门:CF A题:A-characteristic 构造一个只有 1 , − 1 1,-1 1,−1的数组,满足乘积为 1 1 1的数对的个数为 k k k. 发现 n n n的范围很小,考虑直接暴力枚举数组中 1 1 1的个数,记为 i i i,那么对于1的所有数对来说,我们有 i ∗ ( i − 1 ) / 2 i*(i-1)/2 i∗(i−1)/2个,然后…...

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2 0、前言Abstract1 Introduction2 Background2.1 Vector Quantized Variational AutoEncoder3 Method3.1 Stage 1: Learning Hierarchical Latent Codes3.2 Stage 2: Learning Priors over Latent C…...

并发编程基石:管程

大家好,我是易安! 如果有人问我学习并发并发编程,最核心的技术点是什么,我一定会告诉他,管程技术。Java语言在1.5之前,提供的唯一的并发原语就是管程,而且1.5之后提供的SDK并发包,也…...

电路中噪声来源

电路包括不同的部件和芯片,所有都有可能成为噪声的来源。例如,电阻会带来热噪声,这个噪声为宽频噪声,几乎涵盖所有频率范围;运算放大器其芯片内部会产生噪声;而 ADC产生的量化噪声相较于其他器件&#xff0…...

JAVASE的全面总结

(未完待续) 五、子类与继承 5.1 子类与父类 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并…...

关于repeater录制的流量子调用的identity中带有~S的情况

前段时间同事问我,我们录制的流量中,尤其是dubbo的子调用显示经常他的末尾会带上一个小尾巴这个是什么意思呢,其实之前我没有太在意这个事情,只是同事这么疑问了,确实激起了好奇心,所以就差了下 到底是什么…...

Java面试题队列

Java中的队列都有哪些,有什么区别 1. ArrayDeque, (数组双端队列) 2. PriorityQueue, (优先级队列) 3. ConcurrentLinkedQueue, (基于链表的并发队列) 4. DelayQueue, (延期…...

大型Saas系统的权限体系设计(二)

X0 上期回顾 上文《大型Saas系统的权限体系设计(一)》提到2B的Saas系统的多层次权限体系设计的难题,即平台、平台的客户、客户的客户,乃至客户的客户的客户如何授权,这个可以通过“权限-角色-岗位”三级结构来实现。 但这个只是功能权限&am…...

HTML(四) -- 多媒体设计

目录 1. 视频标签 2. 音频标签 3. 资源标签(定义媒介资源 ) 1. 视频标签 属性值描述autoplayautoplay如果出现该属性,则视频在就绪后马上播放。controlscontrols表示添加标准的视频控制界面,包括播放、暂停、快进、音量等…...

设置苹果电脑vsode在新窗口中打开文件

0、前言 最近切换到mac电脑工作,又得重新安装一些工具软件并设置。虽然这些设置并表示啥复杂的设置,但是久了不设置还是会忘记。于是记录之,也希望给能帮助到需要的人。 我们使用vscode阅读或者编辑文件时,有时候希望同时打开多…...

第二章创建模式—单例设计模式

文章目录 单例模式的结构如何控制只有一个对象呢怎么设计这个类的内部对象外部怎么访问 单例模式的主要有以下角色 单例模式的实现饿汉式 1:静态变量饿汉式 2:静态代码块懒汉式 1:线程不安全懒汉式 2:线程安全—方法级上锁懒汉式 …...

数据结构学习记录——堆的插入(堆的结构类型定义、最大堆的创建、堆的插入:堆的插入的三种情况、哨兵元素)

目录 堆的结构类型定义 最大堆的创建 堆的插入 堆的插入的三种情况 代码实现 哨兵元素 堆的结构类型定义 #define ElementType int typedef struct HNode* Heap; /* 堆的类型定义 */ struct HNode {ElementType* Data; /* 存储元素的数组 */int Size; /* 堆中…...

netperf测试

netperf测试 目录 批量网络流量性能测试 TCP_STREAM测试UDP_STREAM 测试请求/应答网络流量测试 TCP_RR TCP_CRR Netperf 是一个网络性能测试工具,它可以测试网络协议栈的性能,例如TCP和UDP协议。Netperf可以测量网络吞吐量、延迟和CPU利用率等指标。…...

ORACLE常用语句

1.修改用户密码 alter user 用户名 identified by 新密码; 2.表空间扩容 1.增加数据文件 alter tablespace AA add datafile ‘DATA’ size 20G autoextend off; 2.修改数据文件大小 ALTER DATABASE DATAFILE ‘E:\ORACLE\PRODUCT\10.2.0\ORADATA\aa\aa.DBF’ RESIZE 400M;…...

[论文笔记]C^3F,MCNN:图片人群计数模型

(万能代码)CommissarMa/Crowd_counting_from_scratch 代码:https://github.com/CommissarMa/Crowd_counting_from_scratch (万能代码)C^3 Framework开源人群计数框架 科普中文博文:https://zhuanlan.zhihu.com/p/65650998 框架网址:https…...

HCIP-7.2VLAN间通信单臂、多臂、三层交换方式学习

VLAN间通信单臂、多臂、三层交换方式学习 1、单臂路由2、多臂路由3、三层交换机的SVI接口实现VLAN间通讯3.1、VLANIF虚拟接口3.2、VLAN间路由3.2.1、单台三层路由VLAN间通信,在一台三层交换机内部VLAN之间直连。3.2.2、两台三层交换机的之间的VLAN通信。3.2.3、将物…...

PHP快速入门17-用spl_autoload_register实现类的自动加载

文章目录 前言实现过程创建两个类创建入口文件 总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 PHP类自动载入是指在PHP应用程序中,当需要使用某个类文件时,系统会自动加载该类文件,无需手动引入。 在PHP中&#xf…...

【黑马程序员 C++教程从0到1入门编程】【笔记8】 泛型编程——模板

https://www.bilibili.com/video/BV1et411b73Z?p167 C泛型编程是一种编程范式,它的核心思想是编写通用的代码,使得代码可以适用于多种不同的数据类型。 而模板是C中实现泛型编程的一种机制,它允许我们编写通用的代码模板,然后在需…...

分享10个精美可视化模板,解决95%的大屏需求!

前段时间和朋友一起喝茶,我吐槽着excel表格做报表的繁琐,他惊讶的问我竟然不知道大屏模板这种东西,说是直接套用数据就可以,我震惊的同时吃下了这个安利。 回来之后,我好好研究了一番这个叫可视化大屏的“新鲜玩意儿”…...

好用的项目管理软件的具体功能有哪些

随着企业规模不断的扩大,项目管理往往会面临更多的挑战与难题,最常见的会出现以下几个问题:资源消耗失控,而项目部门和相关部门之间沟通越来越困难;团队凝聚力下降、项目进度难以把控,项目成本几乎失控&…...

< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>

》基于Vue状态的过渡动画 - Transition 和 TransitionGroup &#x1f449; 一、Vue Transition 简介> Transition 和 TransitionGroup 之间的区别 &#x1f449; 二、<Transition> 组件> 触发 <Transition> 组件的场景&#xff1a;> 基于 CSS 的过渡效果&…...

vmware安装redhat 8

vmware安装redhat 8 1、下载镜像文件1.1 镜像文件 2、安装系统2.1、选择自定义安装2.2、兼容性选择2.3、选择镜像文件导入2.4、设置用户名密码2.5、选择虚拟机在磁盘上的位置2.6、选择处理器数量2.7、选择内存大小2.8、选择桥接或NAT2.9、选择SCSI控制器类型2.10、选择虚拟机磁…...

OpenCV C++案例实战三十一《动态时钟》

OpenCV C案例实战三十一《动态时钟》 前言一、绘制表盘二、绘制刻线三、获取系统时间四、结果展示五、源码总结 前言 本案例将使用OpenCV C实现动态时钟效果。原理也很简单&#xff0c;主要分为绘制表盘、以及获取系统时间两步。 一、绘制表盘 首先为了效果显示美观一点&…...

字节后端入门 - Go 语言原理与实践

1.1什么是Go语言 1.2Go语言入门 环境 1.3基础语法 1.3.1变量 var name"value" 自己推断变量类型&#xff1b; 也可以显式类型 var c int 1 name: type(value) 常量&#xff1a; const name "value" g : a"foo" 字符串拼接 1.3.2 if else {}花括号…...

锂电材料浆料匀浆搅拌设备轴承经常故障如何处理?

锂电材料浆料匀浆搅拌设备是锂电池生产中重要的设备之一&#xff0c;用于将活性材料、导电剂、粘结剂和溶剂混合成均匀的浆料&#xff0c;是电极制备过程中不可或缺的步骤。然而&#xff0c;由于高速搅拌和化学腐蚀等因素的影响&#xff0c;轴承经常会出现故障&#xff0c;导致…...

设计模式——设计模式介绍和单例设计模式

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 一、设计模式概述和分类 1.1 设计模式介绍 1.2 设计模式分类 二、创建型设计模式-单例模式 2.1 介绍 2.2 八种单例模式的创…...

利用Iptables构建虚拟路由器

利用Iptables构建虚拟路由器 &#xff08;1&#xff09;修改网络类型 在VMware Workstation软件中选择“编辑→虚拟网络编辑器”菜单命令&#xff0c;在虚拟网络列表中选中VMnet1&#xff0c;将其配置为“仅主机模式&#xff08;在专用网络内连接虚拟机&#xff09;”&#x…...

C++——类和对象[中]

0.关注博主有更多知识 C知识合集 目录 1.类的默认成员函数 2.构造函数和析构函数基础 3.构造函数进阶 4.析构函数进阶 5.拷贝构造函数 6.运算符重载 7.日期类 7.1输入&输出&友元函数 8.赋值运算符重载 9.const成员函数 9.1日期类完整代码 10.取地址重载 …...

Symbol.iterator和Symbol.asyncIterator

Symbol是什么&#xff1f; symbol是ES6标准中新增的一种基本数据类型&#xff0c;symbol 的值是通过 Symbol()函数返回的&#xff0c;每一个 symbol 的值都是唯一的&#xff0c;即使传入相同的描述值。 注&#xff1a;Symbol 函数不允许通过 new 的方式调用 Symbol的作用是什…...

聊城做网站信息/媒体推广

1、HBase是否支持事务&#xff0c;支持到什么程度。 2、列族的数目跟性能的关系&#xff0c;越大越好&#xff1f; 3、为什么要设计列族&#xff1f; 4、同一个列能放在不同的列族吗&#xff1f; 5、...

如何在微信上做广告/热狗网站关键词优化

2019独角兽企业重金招聘Python工程师标准>>> 故障描述&#xff1a;论坛访问出现502&#xff0c;开始以为php端口被占用&#xff0c;按常规查端口发现并没有被占用。后又出现mysql无法连接&#xff0c;报(2002) notconnect错误&#xff0c;问百度可能是空间满了。查看…...

redis做网站/快手刷评论推广网站

点击上方"蓝字"关注我们&#xff0c;享更多干货&#xff01;直方图有两种类别&#xff0c;频率直方图与高度均衡直方图。直方图有两种类别&#xff0c;频率直方图与高度均衡直方图。默认的&#xff0c;如果一个倾斜列上的唯一值超过了254个&#xff0c;那么Oracle会对…...

商城移动端网站开发/东莞网站推广大全

引子 今年开始&#xff0c;我在翻译一本大部头的&#xff0c;比较经典的的Python进阶书籍。 有空就翻译几页。这本书不仅是教你很多进阶的Python的语法&#xff0c;更重要的是讲解很多设计方法和设计思想。 这些方法和思想&#xff0c;一点点叠加起来&#xff0c;就会让你从…...

wordpress的登录界面/怎么建立一个属于自己的网站

基础镜像 先运行一个启动ssh服务的基础镜像 docker run -d -i -t --privilegedtrue --nametest01 cdh/centos7:ssh1.0 /usr/sbin/sshd -D上传安装包 将cm和jdk安装包上传到容器内 docker cp /mnt/usb1/JDK/jdk-8u74-linux-x64.rpm test01:/usr/tmp/ docker cp /mnt/usb1/CM…...

成都网站app开发/网络广告投放渠道有哪些

1、父组件传值给子组件------->子组件使用 props 属性接收 2、子组件传值给父组件-------->子组件通过$emit 传递&#xff08;自定义事件传递&#xff09;&#xff0c;父组件通过属性名称接收 3、父组件&#xff0c;子组件&#xff0c;兄弟组件相互传值------>需要 …...