线性模型加上正则化

  • 使用弹性网络回归(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 = mes
                best_a,best_l = i,j
            print(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 = r2
            best_a = i
        print(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类构建多项式回归模型并进行拟合。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端学习--React(4)路由

一、认识ReactRouter 一个路径path对应一个组件component&#xff0c;当我们在浏览器中访问一个path&#xff0c;对应的组件会在页面进行渲染 创建路由项目 // 创建项目 npx create router-demo// 安装路由依赖包 npm i react-router-dom// 启动项目 npm run start 简单的路…

一文读懂MySQL基础与进阶

Mysql基础与进阶 Part1 基础操作 数据库操作 在MySQL中&#xff0c;您可以使用一些基本的命令来创建和删除数据库。以下是这些操作的示例&#xff1a; 创建数据库&#xff1a; 要创建一个新的数据库&#xff0c;您可以使用CREATE DATABASE命令。以下是示例&#xff1a; CREA…

C++ day36 贪心算法 无重叠区间 划分字母区间 合并区间

题目1&#xff1a;435 无重叠区间 题目链接&#xff1a;无重叠区间 对题目的理解 移除数组中的元素&#xff0c;使得区间互不重叠&#xff0c;保证移除的元素数量最少&#xff0c;数组中至少包含一个元素 贪心算法 局部最优&#xff0c;使得重叠区间的个数最大&#xff0c…

MyBatis Generator使用总结

MyBatis Generator使用总结 介绍具体使用数据准备插件引入配置条件构建讲解demo地址 介绍 MyBatis Generator &#xff08;MBG&#xff09; 是 MyBatis 的代码生成器。它能够根据数据库表&#xff0c;自动生成 java 实体类、dao 层接口&#xff08;mapper 接口&#xff09;及m…

【STM32单片机】自动售货机控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用OLED显示模块、矩阵按键模块、LED和蜂鸣器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示系统初始界面&#xff0c;可通过…

Java王者荣耀

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im…

网络和Linux网络_5(应用层)HTTP协议(方法+报头+状态码)

目录 1. HTTP协议介绍 1.1 URL介绍 1.2 urlencode和urldecode 1.3 HTTP协议格式 1.4 HTTP的方法和报头和状态码 2. 代码验证HTTP协议格式 HttpServer.hpp 2.2 html正式测试 Util.hpp index.html 2.3 再看HTTP方法和报头和状态码 2.3.1 方法_GET和POST等 2.3.2 报头…

springboot函数式web

1.通常是路由(请求路径)业务 2.函数式web&#xff1a;路由和业务分离 一个configure类 配置bean 路由等 实现业务逻辑 这样实现了业务和路由的分离

代码常见问题

1. 前端页面出现404了&#xff1a; 1&#xff09;那说明你该页面里面有某个接口地址&#xff08;url&#xff09;写错了&#xff0c;后台没有这个接口 2&#xff09;你后台写了这个接口&#xff0c;但是后台忘了重启服务了&#xff0c;这样的话前端也映射不上的 所以404的时…

歌曲《兄弟情深》:歌手荆涛歌曲中的真挚情感

在人生的道路上&#xff0c;有时我们会遇到迷茫、失落、困惑等种种情境。而在这些时刻&#xff0c;身边有一个真挚的兄弟&#xff0c;其意义是无法估量的。歌手荆涛演唱的《兄弟情深》即是对这种深厚情感的美妙歌颂。 一、迷茫时的指引 “当我迷茫时&#xff0c;有你帮目标重新…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。在各种领域也经常被使用&#xff0c;…

Sqlserver 在数据库‘master’中拒绝了Create Database的权限

解决方案 打开SqlServer Manament Studio软件&#xff0c;然后登陆 选择安全性->登录名->找到您当前的用户 在您的登陆名上&#xff0c;点击右键-属性&#xff0c;配置相应的服务器角色权限&#xff08;这块需要勾选dbcreator的权限&#xff0c;这块如果不清楚还需要啥…

c语言:模拟实现各种字符串函数(2)

strncpy函数&#xff1a; 功能&#xff1a;拷贝指定长度的字符串a到字符串b中 代码模拟实现&#xff1a; //strncpy char* my_strncpy(char* dest, char* str,size_t num) {char* ret dest;assert(dest && str);//断言&#xff0c;如果其中有一个为空指针&#xff…

Linux篇:文件系统

一、共识原理&#xff1a; 文件文件内容文件属性 磁盘上存储文件存文件的内容&#xff08;数据块&#xff09;存文件的属性&#xff08;inode&#xff09; Linux的文件在磁盘中存储是将属性和内容分开存储的。 二、硬件简述&#xff1a; 1. 认识硬件 磁盘&#xff1a;唯一的一…

4.一维数组——用数组处理求Fibonacci数列前20项

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、结果显示 前言 本系列为一维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 用数组处理求Fibonacci数列前20项 二、题目分析 前两项&#xff1a;f[20]{1,1} 后18项&#xff1a;for(…

vue3+tsx的使用

<template><div><xiaoman on-click"getItem" name"似懂非懂"></xiaoman></div> </template><script setup langts>import xiaoman from "./App"const getItem(item:any)>{console.log(item,it…

王者小游戏作业

一、创建好文件、包、类、插入图片文件夹 二、beast包 1、Bear类 package beast; import sxt.GameFrame; public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("C:\\Users\\陆先生\\Desktop\\王者荣耀图片…

C++学习之路(四)C++ 实现简单的待办事项列表命令行应用 - 示例代码拆分讲解

本期示例介绍: 本期示例《待办事项列表应用》展示了一个简单的任务管理系统&#xff0c;用户可以通过命令行界面执行添加任务、删除任务和显示任务列表等操作。 功能描述&#xff1a; 添加任务功能&#xff1a; 用户可以输入任务描述&#xff0c;将新的任务添加到任务列表中。…

设计模式—依赖倒置原则(DIP)

1.概念 依赖倒置原则&#xff08;Dependence Inversion Principle&#xff09;是程序要依赖于抽象接口&#xff0c;不要依赖于具体实现。简单的说就是要求对抽象进行编程&#xff0c;不要对实现进行编程&#xff0c;这样就降低了客户与实现模块间的耦合。 通俗的讲&#xff1…

【教学类-06-13】20231126 (55格版)趣味题(一)1-9加法题(10倍)(整十相加)

作品展示 背景需求&#xff1a; 1、会做加法题的孩子5分钟内完成题目&#xff0c;太快了&#xff0c;所以为了拉平差异&#xff0c;需要给这些会做另外的题目&#xff0c;比如提供一些他们没有做过的“趣味题形”。 2、好多次&#xff0c;听见大班孩子在互相“考试”——“老…