线性模型加上正则化

  • 使用弹性网络回归(Elastic Net Regression)算法来预测波士顿房屋价格。弹性网络回归是一种结合了L1和L2正则化惩罚的线性回归模型,能够处理高维数据和具有多重共线性的特征。弹性网络回归的目标函数包括数据拟合损失和正则化项:

    • m i n w 1 2 n ∣ ∣ y − X w ∣ ∣ 2 2 + α ( λ ∣ ∣ w ∣ ∣ 1 + 1 2 ( 1 − λ ) ∣ ∣ w ∣ ∣ 2 2 ) min_w\frac{1}{2n}||y-Xw||^2_2+\alpha(\lambda||w||_1+\frac12(1-\lambda)||w||^2_2) minw2n1∣∣yXw22+α(λ∣∣w1+21(1λ)∣∣w22)

    • 其中, y y y是目标变量向量, X X X是输入特征矩阵, w w w是模型的权重系数, n n n是样本数, α \alpha α是正则化强度参数, λ \lambda λ是 Elastic Net 混合参数,用来控制L1和L2正则化项的权重。

  • 处理数据流程

    • 加载波士顿房屋价格数据集,将特征矩阵存储为X,目标变量存储为y。
    • 分割数据集为训练集和测试集。
    • 对特征矩阵进行特征缩放,以避免不同特征尺度带来的问题。
    • 使用ElasticNet类来拟合训练数据,并进行预测。
    • 评估模型在测试集上的性能。
  • from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.linear_model import ElasticNet
    from sklearn.metrics import mean_squared_error
    from matplotlib import pyplot as plt
    import pandas as pd
    import numpy as np
    from tqdm import tqdm
    import time
    def ela_net(X_tr,X_te,y_tr,alpha,l1):s = StandardScaler()X_tr_s = s.fit_transform(X_tr)X_te_s = s.fit_transform(X_te)ela_model = ElasticNet(alpha=alpha,l1_ratio=l1,random_state=2023)ela_model.fit(X_tr_s,y_tr)y_pre = ela_model.predict(X_te_s)return y_pre
    data_url = "http://lib.stat.cmu.edu/datasets/boston"
    raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
    data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
    target = raw_df.values[1::2, 2]
    X, y = data, target
    X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, random_state=2023)
    best_a,best_l,min_res = 0,0,float('inf')
    for i in tqdm(np.arange(0.1,1,0.1).round(1)):time.sleep(0.5)for j in np.arange(0.1,1,0.1).round(1):# print(i)y_pre = ela_net(X_tr,X_te,y_tr,i,j)mes = mean_squared_error(y_pre,y_te)if mes < min_res:min_res = mesbest_a,best_l = i,jprint(mes)
    print("alpha:",best_a,",lambda:",best_l,",mse:",min_res)
    
  • 目标是使用Lasso回归算法来建立一个预测模型,通过输入特征预测房屋价格中位数。Lasso回归是一种线性回归的扩展方法,它通过加入L1正则化项来进行特征选择和模型参数的压缩。Lasso回归的优化目标函数如下:

    • m i n ( ∑ i − 1 n ( y i − y i ^ ) 2 + α ∑ j − 1 p ∣ β j ∣ ) min(\sum_{i-1}^n(y_i-\hat{y_i})^2+\alpha\sum_{j-1}^p|\beta_j|) min(i1n(yiyi^)2+αj1pβj)

    • 其中, n n n 是样本数量, p p p 是特征数量, y i {y_i} yi 是实际观测值, y ^ i \hat{y}_i y^i 是预测值, β j \beta_j βj 是模型参数(系数), α \alpha α 是L1正则化项的权重。L1正则化项通过在优化过程中将某些模型参数变为0来实现特征选择的作用。较大的 α \alpha α 值将更多的系数压缩到零,从而选择出更少的特征。较小的 α \alpha α 值将保留更多的特征。

    • 通过生成一个惩罚函数是回归模型中的变量系数进行压缩,达到防止过度拟合,解决严重共线性的问题。Lasso回归通过引入L1正则化 (即Lasso惩罚项),可以将系数向量中小的权重变为0,从而实现特征选择和模型稀疏性。Lasso回归具备如下几个作用。

      • **特征选择:**Lasso回归可以用于选择最重要的特征。它通过在优化目标函数中添加一项惩罚项(L1正则化)来实现稀疏性,使得系数向量中很多特征的权重变为0。通过选择非零系数对应的特征,可以筛选出对目标变量有最大预测能力的特征,从而简化模型,提高模型的泛化能力。
      • **多重共线性问题:**在研究中,往往存在多个相关的自变量。Lasso回归可以通过自变量之间的相关关系,将相关的自变量的系数变为0,从而降低多重共线性对回归结果的影响。
      • **解释模型:**Lasso回归可以用于解释模型中的变量对目标变量的影响。通过系数的大小和正负,可以了解特定特征对目标变量的正向或负向影响程度。
    • 正则化的本质可以定义为我们对训练算法所做的任何改变,以减少泛化误差,而不是训练误差。有许多正则化策略。有的对模型进行了额外的约束,如对参数值进行约束;有的对目标函数进行了额外的约束,可以认为是对参数值进行了间接约束或软约束。

  • 模型预测流程

    • 导入数据集并进行数据预处理。数据标准化 / 归一化的作用
      • 提升模型精度:标准化 / 归一化使不同维度的特征在数值上更具比较性,提高分类器的准确性。
      • 提升收敛速度:对于线性模型,数据归一化使梯度下降过程更加平缓,更易正确的收敛到最优解。
    • 拆分数据集为训练集和测试集。
    • 初始化Lasso回归模型,并训练模型。
    • 评估模型在测试集上的性能。
    • 调整超参数来改善模型性能。
  • StandardScaler:标准化数据减去均值,然后除以标准差,经过处理后数据符合标准正态分布,即均值为0,标准差为1;适用于本身服从正态分布的数据;基本可用于有outlier的情况,但在计算方差和均值时outliers仍然会影响计算。

  • MinMaxScaler:区间缩放,基于最大最小值,将数据转换到0,1区间上的,转换函数:x = (x-min) / (max-min);适用于分布范围较稳定的数据,当新数据的加入导致max/min变化,则需重新定义;因为outlier会影响最大值或最小值,因此对outlier非常敏感。

  • RobustScaler:使用具有鲁棒性的统计量缩放带有异常值(离群值)的数据,该缩放器删除中位数,并根据百分位数范围(默认值为IQR:四分位间距)缩放数据;适用于包含许多异常值的数据;x=(x-median)/(p75-p25):默认使用第一个四分位数(25%分位数)和第3个四分位数(75%分位数)之间的范围。

  • sklearn.metrics【指标】

    • 【分类指标】
    • 1.accuracy_score(y_true,y_pre) : 精度
    • 2.auc(``x, y, reorder=False) : ROC曲线下的面积;较大的AUC代表了较好的performance
    • 3.average_precision_score(y_true, y_score, average=‘macro’, sample_weight=None):根据预测得分计算平均精度(AP)
    • 4.brier_score_loss(y_true, y_prob, sample_weight=None, pos_label=None):The smaller the Brier score, the better.
    • 5.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None):通过计算混淆矩阵来评估分类的准确性 返回混淆矩阵
    • 6.f1_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’, sample_weight=None): F1值。F1 = 2 * (precision * recall) / (precision + recall) precision(查准率)=TP/(TP+FP) recall(查全率)=TP/(TP+FN)
    • 7.log_loss(y_true, y_pred, eps=1e-15, normalize=True, sample_weight=None, labels=None):对数损耗,又称逻辑损耗或交叉熵损耗
    • 8.precision_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’,) :查准率或者精度; precision(查准率)=TP/(TP+FP)
    • 9.recall_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’, sample_weight=None):查全率 ;recall(查全率)=TP/(TP+FN)
    • 10.roc_auc_score(y_true, y_score, average=‘macro’, sample_weight=None):计算ROC曲线下的面积就是AUC的值,the larger the better
    • 11.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True);计算ROC曲线的横纵坐标值,TPR,FPR;TPR = TP/(TP+FN) = recall(真正例率,敏感度) FPR = FP/(FP+TN)(假正例率,1-特异性)
    • 【回归指标】
    • 1.explained_variance_score(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’):回归方差(反应自变量与因变量之间的相关程度)
    • 2.mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’):平均绝对误差
    • 3.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’):均方差
    • 4.median_absolute_error(y_true, y_pred) 中值绝对误差
    • 5.r2_score(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’) :R平方值
      • 相关指数 R 2 R^{2} R2 表示一元多项式回归方程拟合度的高低,或者说表示一元多项式回归方程估测的可靠程度的高低。总体平方和(Total Sum of Squares): T S S = ∑ i = 1 n ( y i − y i ˉ ) 2 TSS=\sum_{i=1}^{n}\left ( y_{i}-\bar{y_{i}} \right )^{2} TSS=i=1n(yiyiˉ)2;回归平方和(Explained Sum of Squares): E S S = ∑ i = 1 n ( y i ^ − y i ˉ ) 2 ESS=\sum_{i=1}^{n}\left ( \hat{y_{i}}-\bar{y_{i}} \right )^{2} ESS=i=1n(yi^yiˉ)2;残差平方和(Residual Sum of Squares ): R S S = ∑ i = 1 n ( y i − y i ^ ) 2 RSS=\sum_{i=1}^{n}\left ( y_{i}-\hat{y_{i}} \right )^{2} RSS=i=1n(yiyi^)2。三者关系:TSS = ESS + RSS
      • Y的观测值围绕其均值的总离差(total variation)可分解为两部分:一部分来自回归线(ESS),另一部分则来自随机势力(RSS)。在给定样本中,TSS不变,如果实际观测点离样本回归线越近,则ESS在TSS中占的比重越大,因此定义拟合优度:回归平方和ESS与Y的总离差TSS的比值。即 R 2 = E S S T S S = 1 − R S S T S S R^{2} = \frac{ESS}{TSS} = 1-\frac{RSS}{TSS} R2=TSSESS=1TSSRSS 。在线性回归模型中, R 2 R^{2} R2 表示解释变量对于预测变量变化的贡献率。 R 2 R^{2} R2 越接近于1,表示回归的效果越好。因此 R 2 R^2 R2 越大,意味着残差平方和 ∑ i = 1 n ( y i − y i ^ ) 2 \sum_{i=1}^{n}\left ( y_{i}-\hat{y_{i}} \right )^{2} i=1n(yiyi^)2 越小,即模型的拟合效果越好; R 2 R^2 R2 越小,残差平方和越大,即模型的拟合效果越差。
      • sklearn.metrics.r2_score(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
        • y_true:真实值。y_pred:预测值。sample_weight:样本权重。multioutput:多维输入输出,可选‘raw_values’, ‘uniform_average’, ‘variance_weighted’或None。默认为’uniform_average’;‘variance_weighted’对所有输出的分数进行平均,并根据每个输出的方差进行加权。‘raw_values’对每一对应列求其R2指数,返回一个与列数相同的一维数组。
  • import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    data_url = "http://lib.stat.cmu.edu/datasets/boston"
    raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
    data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
    target = raw_df.values[1::2, 2]
    print(data.shape,"\t",target.shape)
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import RobustScaler
    X_train,X_test,y_train,y_test = train_test_split(data,target,test_size=0.3,random_state=2023)
    # ro = RobustScaler()
    # X_train_r = ro.fit_transform(X_train)
    # X_test_r = ro.fit_transform(X_test)
    from sklearn.linear_model import Lasso
    def lasso_net(alpha):model = Lasso(alpha=alpha)model.fit(X_train,y_train)y_pre = model.predict(X_test)return y_pre
    from sklearn.metrics import r2_score
    max_r , best_a= 0,0
    for i in np.arange(0.1,1,0.1).round(1):r2 = r2_score(lasso_net(i),y_test)if r2>max_r:max_r = r2best_a = iprint(r2)
    las = Lasso(best_a)
    las.fit(X_train, y_train)
    # 绘制特征系数变化图
    features = ["CRIM","ZN","INDUS","CHAS","NOX","RM","AGE","DIS","RAD","PTRATIO","B","LSTAT","MEDV"]
    plt.plot(range(data.shape[1]), las.coef_)
    plt.xticks(range(data.shape[1]), features, rotation=90)
    # 设置数字标签
    for a, b in zip(range(data.shape[1]), las.coef_):plt.text(a, b, b.round(2), ha='center', va='bottom', fontsize=12)
    plt.xlabel('Features')
    plt.ylabel('Coefficients')
    plt.title('Lasso Regression Coefficients')
    plt.show()
    
  • 在这里插入图片描述

  • 岭回归是一种用于处理多重共线性问题的线性回归方法,它通过对模型的系数进行约束,可以提高模型的稳定性和泛化能力。岭回归通过在损失函数中添加一个L2正则化项来控制模型的复杂度。L2正则化项基于模型的系数向量的平方和来惩罚大的系数值,从而有效地减小模型的过拟合风险。

    • λ ∑ j − 1 p w j 2 \lambda\sum_{j-1}^pw^2_j λj1pwj2

    • 其中, λ \lambda λ 是我们定义的正则化参数, p p p 是特征的数量, w j w_j wj 是第 j j j 个特征的系数。岭回归的目标是最小化以下损失函数: l o s s = M S E + λ ∑ j − 1 p w j 2 loss=MSE+\lambda\sum_{j-1}^pw^2_j loss=MSE+λj1pwj2。这里的 MSE \text{MSE} MSE 是均方误差,即预测值与真实值之间的平方差的平均值。通过添加正则化项,岭回归通过权衡模型的拟合能力和稳定性来提高泛化能力

  • 数据处理步骤

    • 导入必要的库和数据集
    • 数据探索和预处理
    • 拆分数据集为特征矩阵 X 和目标向量 y
    • 归一化特征矩阵 X
    • 使用岭回归模型进行训练和预测
    • 评估模型性能
  • from sklearn.model_selection import train_test_split
    import numpy as np
    import pandas as pd
    data_url = "http://lib.stat.cmu.edu/datasets/boston"
    raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
    data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
    target = raw_df.values[1::2, 2]
    Xtrain,Xtest,ytrain,ytest = train_test_split(data,target)
    from sklearn.preprocessing import StandardScaler
    s = StandardScaler()
    Xtrains = s.fit_transform(Xtrain)
    Xtests = s.fit_transform(Xtest)
    from sklearn.linear_model import Ridge
    def ri_net(xt,yt,xtest,alpha):ri = Ridge(alpha=alpha)ri.fit(xt,yt)y_pre = ri.predict(xtest)return y_pre
    from sklearn.metrics import mean_absolute_percentage_error,r2_score,mean_squared_error
    for i in np.arange(0.1,2,0.1):ym = ri_net(Xtrains,ytrain,Xtests,i)print(mean_absolute_percentage_error(ytest,ym),r2_score(ytest,ym),mean_squared_error(ytest,ym))
  • 岭回归模型通过引入正则化项来对线性回归模型进行约束,以避免过拟合。使用了 Scikit-learn 中的 Ridge 类来实现岭回归,并使用均方误差来评估模型的性能。

  • 使用多项式回归模型来学习这些特征和价格之间的关系,并预测新的房屋价格。多项式回归是一种回归分析中使用的方法,可以通过拟合一个关于自变量的多项式来预测因变量的数值。与简单线性回归模型只使用一个自变量不同,多项式回归模型可以使用多个自变量来进行拟合。通过引入高次特征变量,多项式回归模型可以更好地适应非线性关系。多项式回归模型的一般形式可以表示为:

    • Y = θ 0 + θ 1 X + θ 2 X 2 + … + θ n X n Y = \theta_0 + \theta_1X + \theta_2X^2 + \ldots + \theta_nX^n Y=θ0+θ1X+θ2X2++θnXn

    • 其中, Y Y Y表示因变量, X X X表示自变量, θ 0 , θ 1 , … , θ n \theta_0, \theta_1, \ldots, \theta_n θ0,θ1,,θn表示模型的参数, n n n表示多项式的阶数。假设我们有一组自变量 X = { x 1 , x 2 , … , x m } X = \{x_1, x_2, \ldots, x_m\} X={x1,x2,,xm} 和对应的因变量 Y = { y 1 , y 2 , … , y m } Y = \{y_1, y_2, \ldots, y_m\} Y={y1,y2,,ym},我们的目标是找到最佳拟合的二次多项式曲线。 Y = θ 0 + θ 1 X + θ 2 X 2 Y = \theta_0 + \theta_1X + \theta_2X^2 Y=θ0+θ1X+θ2X2。为了找到最佳拟合的参数值 θ 0 , θ 1 , θ 2 \theta_0, \theta_1, \theta_2 θ0,θ1,θ2,我们可以使用最小二乘法。我们需要最小化残差平方和(RSS):

    • R S S = ∑ i = 1 m ( y i − y ^ i ) 2 RSS = \sum_{i=1}^{m}(y_i - \hat{y}_i)^2 RSS=i=1m(yiy^i)2

    • 其中, y i y_i yi是观测到的因变量值, y ^ i \hat{y}_i y^i 是根据模型得到的预测值。

  • 计算流程

    • 导入必要的库和数据集
    • 从数据集中加载数据
    • 提取特征变量和目标变量
    • 使用多项式回归模型进行拟合
    • 预测新的房屋价格
    • 计算模型的性能指标(如均方误差)
    • 绘制原始数据散点图和拟合曲线图
  • from sklearn.metrics import r2_score
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.linear_model import LinearRegression
    import numpy as np
    import pandas as pd
    data_url = "http://lib.stat.cmu.edu/datasets/boston"
    raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
    data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
    target = raw_df.values[1::2, 2]
    poly = PolynomialFeatures(degree=3)
    X_p = poly.fit_transform(data)
    model = LinearRegression()
    model.fit(X_p,target)
    y_p = model.predict(X_p)
    r2 = r2_score(target,y_p)
    print(r2)
    
  • 使用PolynomialFeatures类将原始特征向量X转换为多项式特征向量X_poly。使用LinearRegression类构建多项式回归模型并进行拟合。

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

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

相关文章

torch.nn.batchnorm1d,torch.nn.batchnorm2d,torch.nn.LayerNorm解释:

批量归一化是一种加速神经网络训练和提升模型泛化能力的技术。它对每个特征维度进行标准化处理&#xff0c;即调整每个特征的均值和标准差&#xff0c;使得它们的分布更加稳定。 Batch Norm主要是为了让输入在激活函数的敏感区。所以BatchNorm层要加在激活函数前面。 1.torch.…

如何用低代码的思路设计文字描边渐变组件

前言 文字特效设计一直是困扰 Web 前端 Css 世界多年的问题, 比如如何用纯 Css 实现文字描边, 渐变, 阴影等, 由于受限于浏览器兼容性的问题, 我们不得不使用其他替代方案来实现. 平时工作中我们使用 PS 等设计工具能很容易的实现文字渐变等特效, 但是随着可视化技术的成熟, 我…

Swagger在php和java项目中的应用

Swagger在php和java项目中的应用 Swagger简介Swagger在java项目中的应用步骤常用注解 Swagger在php项目中的应用 Swagger简介 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 总体目标是使客户端和文件系统作为服务器以…

MyBatis的功能架构,MyBatis的框架架构设计,Mybatis都有哪些Executor执行器,Mybatis中如何指定使用哪一种Executor执行器

文章目录 MyBatis的功能架构是怎样的把Mybatis的功能架构分为三层&#xff1a; **MyBatis的框架架构设计**是怎么样的架构图如下Mybatis都有哪些Executor执行器&#xff1f;它们之间的区别是什么&#xff1f;Mybatis中如何指定使用哪一种Executor执行器&#xff1f; MyBatis的功…

SASS的导入文件详细教程

文章目录 前言导入SASS文件使用SASS部分文件默认变量值嵌套导入原生的CSS导入后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努…

人工智能入门教学——AI代理(AI Agent)

目录 一、简介 二、特征 三、结构 四、工作流程 五、类型 六、应用 一、简介 AI代理 (Artificial Intelligence Agent)是指使用人工智能技术和算法来执行特定任务、解决问题或实现目标的程序或系统。这些代理可以是简单的程序&#xff0c;也可以是复杂的系统&#xff0c…

面向对象编程:Rust的面向对象特性

欢迎关注我的公众号lincyang新自媒体&#xff0c;回复关键字【程序员经典书单】&#xff0c;领取程序员的100本经典书单 大家好&#xff01;我是lincyang。 今天我们将深入探讨Rust语言中的面向对象编程&#xff08;OOP&#xff09;特性&#xff0c;并将其与其他流行编程语言进…

基于U-Net的视网膜血管分割(Pytorch完整版)

基于 U-Net 的视网膜血管分割是一种应用深度学习的方法&#xff0c;特别是 U-Net 结构&#xff0c;用于从眼底图像中分割出视网膜血管。U-Net 是一种全卷积神经网络&#xff08;FCN&#xff09;&#xff0c;通常用于图像分割任务。以下是基于 U-Net 的视网膜血管分割的内容&…

mysql高级知识点

一、mysql架构 连接层&#xff1a;负责接收客户端的连接请求&#xff0c;可以进行授权、认证(验证账号密码)。服务层&#xff1a;负责调用sql接口&#xff0c;对sql语法进行解析&#xff0c;对查询进行优化&#xff0c;缓存。引擎层&#xff1a;是真正进行执行sql的地方&#x…

Linux面试题(二)

目录 17、怎么使一个命令在后台运行? 18、利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息&#xff1f; 19、哪个命令专门用来查看后台任务? 20、把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令? 21、终止进程用什么命令…

Vue框架学习笔记——事件修饰符

文章目录 前文提要事件修饰符prevent&#xff08;常用&#xff09;stop&#xff08;不常用&#xff09;事件冒泡stop使用方法三层嵌套下的stop三层嵌套看出的stop&#xff1a; once&#xff08;常用&#xff09;capture&#xff08;不常用&#xff09;self&#xff08;不常用&a…

Vue轻松入门,附带学习笔记和相关案例

目录 一Vue基础 什么是Vue&#xff1f; 补充&#xff1a;mvvm框架 mvvm的组成 详解 Vue的使用方法 1.直接下载并引入 2.通过 CDN 使用 Vue 3.通过npm安装 4.使用Vue CLI创建项目 二插值表达式 什么是插值表达式&#xff1f; 插值表达式的缺点 解决方法 相关代…

【数据结构】树与二叉树(廿五):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…

VUE限制文件上传大小和上传格式

<el-form-item label"图片&#xff1a;" prop"tempImagePath"><el-uploadclass"upload"accept"image/jpeg":show-file-list"false"list-type"picture-card":headers"{ token: token}":action&…

linux的netstat命令和ss命令

1. 网络状态 State状态LISTENING监听中&#xff0c;服务端需要打开一个socket进行监听&#xff0c;侦听来自远方TCP端口的连接请求ESTABLISHED已连接&#xff0c;代表一个打开的连接&#xff0c;双方可以进行或已经在数据交互了SYN_SENT客户端通过应用程序调用connect发送一个…

人力资源管理后台 === 基础环境+登陆

目录 1.人力资源项目介绍 1.1 项目架构和解决方案 1.2 课程安排 1.3 课程具备能力 1.4 课程地址 2. 拉取项目基础代码 3.项目目录和入口文件介绍 4.App.vue根组件解析 5.基础设置settings.js和导航守卫permission.js 6.Vuex的结构 7.使用模板中的Icon图标 8.扩展…

最新世界银行WDI面板数据(1960-2022年)

The World Development Indicators 是由世界银行编制和发布的全面数据集&#xff0c;旨在提供全球发展的详尽统计信息。这份数据集收录了1960-2022年间&#xff0c;世界266个国家共计1477个指标&#xff0c;涵盖经济、社会、环境、教育、公共卫生等20个领域 一、数据介绍 数据…

chromium通信系统-mojo系统(一)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节&#xff0c;实现解耦&#xff0c;也方便于传输&#xff0c;ipcz系统使用handle表示一个对象&#xff0c;hand…

MySQL基本SQL语句(下)

MySQL基本SQL语句&#xff08;下&#xff09; 一、扩展常见的数据类型 1、回顾数据表的创建语法 基本语法&#xff1a; mysql> create table 数据表名称(字段名称1 字段类型 字段约束,字段名称2 字段类型 字段约束,...primary key(主键字段 > 不能为空、必须唯一) ) …

WebSocket协议测试实战

当涉及到WebSocket协议测试时&#xff0c;有几个关键方面需要考虑。在本文中&#xff0c;我们将探讨如何使用Python编写WebSocket测试&#xff0c;并使用一些常见的工具和库来简化测试过程。 1、什么是WebSocket协议&#xff1f; WebSocket是一种在客户端和服务器之间提供双向…