机器学习 —— 深入剖析线性回归模型
一、线性回归模型简介
线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来说,若有一个自变量 x x x 和一个因变量 y y y,简单线性回归模型可表示为: y = θ 0 + θ 1 x y = \theta_0 + \theta_1x y=θ0+θ1x,其中 θ 0 \theta_0 θ0 是截距, θ 1 \theta_1 θ1 是斜率,也被称为回归系数。通过这条直线,我们尝试让模型预测值尽可能接近真实值。
(一)多元线性回归
在实际应用中,数据往往具有多个特征,这就需要多元线性回归模型。假设我们有 n n n 个自变量 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x1,x2,⋯,xn,多元线性回归模型的表达式为: y = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n y = \theta_0 + \theta_1x_1 + \theta_2x_2 + \cdots + \theta_nx_n y=θ0+θ1x1+θ2x2+⋯+θnxn。从几何角度理解,简单线性回归是在二维平面上找一条最佳拟合直线;而多元线性回归则是在更高维度空间中寻找一个超平面,使得所有数据点到这个超平面的距离之和最小。
例如,在预测房价时,房屋价格可能受到面积、房龄、房间数量、周边配套设施等多个因素影响,多元线性回归模型能够综合考虑这些因素,从而做出更准确的预测。
(二)岭回归
岭回归是一种改进的线性回归算法,也被称为 Tikhonov 正则化。在普通线性回归中,当特征数量较多且存在多重共线性(即某些特征之间存在较强的线性关系)时,计算正规方程中的 ( X T X ) − 1 (X^TX)^{-1} (XTX)−1 可能会出现问题,导致模型不稳定,对训练数据的微小变化非常敏感,泛化能力差。
岭回归通过在损失函数中添加一个 L2 正则化项来解决这个问题。其损失函数变为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda\sum_{j = 1}^{n}\theta_j^2 J(θ)=∑i=1m(y(i)−y^(i))2+λ∑j=1nθj2,其中 λ \lambda λ 是正则化参数,用来控制正则化的强度。当 λ \lambda λ 越大时,对回归系数的约束越强,使得回归系数更倾向于收缩到 0,从而防止过拟合;当 λ \lambda λ 为 0 时,岭回归就退化为普通的线性回归。
岭回归的优势在于,它不仅能在一定程度上解决多重共线性问题,还能提高模型的泛化能力,使得模型在面对新数据时表现更加稳定。
(三)Lasso 回归
Lasso 回归,即 Least Absolute Shrinkage and Selection Operator,同样是一种用于线性回归的正则化方法。与岭回归不同,Lasso 回归在损失函数中添加的是 L1 正则化项,其损失函数为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ ∑ j = 1 n ∣ θ j ∣ J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda\sum_{j = 1}^{n}|\theta_j| J(θ)=∑i=1m(y(i)−y^(i))2+λ∑j=1n∣θj∣ 。
L1 正则化的特点是它能够产生稀疏解,即可以自动筛选出对目标值影响较大的特征,将一些不重要的特征对应的系数直接压缩为 0,从而达到特征选择的目的。例如在基因数据分析中,数据维度极高,特征众多,Lasso 回归可以帮助我们从大量的基因特征中筛选出真正与疾病相关的基因,简化模型的同时提高解释性。
(四)弹性网络回归
弹性网络回归结合了岭回归和 Lasso 回归的优点,在损失函数中同时使用 L1 和 L2 正则化项,其损失函数表达式为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ 1 ∑ j = 1 n ∣ θ j ∣ + λ 2 ∑ j = 1 n θ j 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda_1\sum_{j = 1}^{n}|\theta_j| + \lambda_2\sum_{j = 1}^{n}\theta_j^2 J(θ)=∑i=1m(y(i)−y^(i))2+λ1∑j=1n∣θj∣+λ2∑j=1nθj2 ,其中 λ 1 \lambda_1 λ1 和 λ 2 \lambda_2 λ2 分别是 L1 和 L2 正则化项的系数。
这种方法既可以像 Lasso 回归一样进行特征选择,又能像岭回归一样处理多重共线性问题。在一些复杂的数据场景中,比如图像识别中,数据既存在大量冗余特征,又有特征间的相关性,弹性网络回归能够发挥其综合优势,平衡模型的复杂度和性能。
二、线性回归模型的原理
线性回归模型的目标是找到一组最优的回归系数 θ = [ θ 0 , θ 1 , ⋯ , θ n ] \theta = [\theta_0, \theta_1, \cdots, \theta_n] θ=[θ0,θ1,⋯,θn],使得模型预测值与真实值之间的误差最小。通常,我们使用最小二乘法来衡量这种误差。最小二乘法的目标函数(也称为损失函数)为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 J(θ)=∑i=1m(y(i)−y^(i))2,其中 m m m 是样本数量, y ( i ) y^{(i)} y(i) 是第 i i i 个样本的真实值, y ^ ( i ) \hat{y}^{(i)} y^(i) 是第 i i i 个样本的预测值, y ^ ( i ) = θ 0 + θ 1 x 1 ( i ) + θ 2 x 2 ( i ) + ⋯ + θ n x n ( i ) \hat{y}^{(i)} = \theta_0 + \theta_1x_1^{(i)} + \theta_2x_2^{(i)} + \cdots + \theta_nx_n^{(i)} y^(i)=θ0+θ1x1(i)+θ2x2(i)+⋯+θnxn(i)。
为了找到使损失函数最小的 θ \theta θ,我们可以对 J ( θ ) J(\theta) J(θ) 求关于 θ \theta θ 的导数,并令导数为零,从而得到正规方程: θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)−1XTy,其中 X X X 是特征矩阵,每一行代表一个样本,每一列代表一个特征, y y y 是目标值向量。但正如前面提到的,当 X T X X^TX XTX 接近奇异矩阵(即不可逆)时,求解正规方程会出现问题,这也是岭回归、Lasso 回归和弹性网络回归等方法出现的原因之一。
三、线性回归模型的优化方法
除了使用正规方程求解回归系数外,我们还可以使用梯度下降法来优化损失函数。梯度下降法是一种迭代的优化算法,它通过不断地沿着损失函数的负梯度方向更新回归系数,来逐步减小损失函数的值。
具体来说,对于损失函数 J ( θ ) J(\theta) J(θ),其梯度为: ∇ J ( θ ) = 2 m X T ( X θ − y ) \nabla J(\theta) = \frac{2}{m}X^T(X\theta - y) ∇J(θ)=m2XT(Xθ−y)。在每次迭代中,我们按照以下公式更新回归系数: θ = θ − α ∇ J ( θ ) \theta = \theta - \alpha\nabla J(\theta) θ=θ−α∇J(θ),其中 α \alpha α 是学习率,它控制着每次更新的步长。学习率的选择非常关键,如果学习率过大,可能会导致模型无法收敛,甚至发散;如果学习率过小,模型收敛速度会非常慢,需要更多的迭代次数。
四、Python 代码实现
下面我们使用 Python 来实现一个简单的线性回归模型,包括普通线性回归、多元线性回归、岭回归、Lasso 回归和弹性网络回归,并对比它们的效果。首先,我们需要导入必要的库,如numpy
、matplotlib
和sklearn
中的相关模块。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import GridSearchCV# 生成一些随机数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 普通线性回归
lin_reg = LinearRegression()
lin_reg.fit(X, y)
y_lin_pred = lin_reg.predict(X)# 多元线性回归(添加一个多项式特征)
poly_features = PolynomialFeatures(degree=3, include_bias=False) # 修改多项式次数为3
X_poly = poly_features.fit_transform(X)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)
y_poly_pred = lin_reg_2.predict(X_poly)# 岭回归
ridge_reg = Ridge(alpha=0.1)
ridge_reg.fit(X, y)
y_ridge_pred = ridge_reg.predict(X)# Lasso回归
lasso_reg = Lasso(alpha=0.1)
lasso_reg.fit(X, y)
y_lasso_pred = lasso_reg.predict(X)# 弹性网络回归
elastic_net_reg = ElasticNet(alpha=0.1, l1_ratio=0.5)
elastic_net_reg.fit(X, y)
y_elastic_pred = elastic_net_reg.predict(X)# 使用网格搜索优化岭回归和Lasso回归的超参数
ridge_grid = GridSearchCV(Ridge(), param_grid={'alpha': [0.01, 0.1, 1, 10, 100]})
ridge_grid.fit(X, y)
best_ridge = ridge_grid.best_estimator_
y_ridge_best_pred = best_ridge.predict(X)lasso_grid = GridSearchCV(Lasso(), param_grid={'alpha': [0.01, 0.1, 1, 10, 100]})
lasso_grid.fit(X, y)
best_lasso = lasso_grid.best_estimator_
y_lasso_best_pred = best_lasso.predict(X)# 绘制数据和拟合直线
plt.figure(figsize=(15, 8))plt.subplot(2, 3, 1)
plt.plot(X, y, "b.")
plt.plot(X, y_lin_pred, "r-", linewidth=2, label='Linear Regression')
plt.title('Linear Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 2)
plt.plot(X, y, "b.")
X_sorted = np.sort(X, axis=0)
X_poly_sorted = poly_features.fit_transform(X_sorted)
plt.plot(X_sorted, lin_reg_2.predict(X_poly_sorted), "g-", linewidth=2, label='Polynomial Linear Regression (Degree=3)')
plt.title('Polynomial Linear Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 3)
plt.plot(X, y, "b.")
plt.plot(X, y_ridge_pred, "m-", linewidth=2, label='Ridge Regression (alpha=0.1)')
plt.title('Ridge Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 4)
plt.plot(X, y, "b.")
plt.plot(X, y_lasso_pred, "c-", linewidth=2, label='Lasso Regression (alpha=0.1)')
plt.title('Lasso Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 5)
plt.plot(X, y, "b.")
plt.plot(X, y_elastic_pred, "y", linewidth=2, label='Elastic Net Regression (alpha=0.1, l1_ratio=0.5)')
plt.title('Elastic Net Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 6)
plt.plot(X, y, "b.")
plt.plot(X, y_ridge_best_pred, "k", linewidth=2, label='Optimized Ridge Regression')
plt.plot(X, y_lasso_best_pred, "saddlebrown", linewidth=2, label='Optimized Lasso Regression')
plt.title('Optimized Ridge and Lasso Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.tight_layout()
plt.show()
在上述代码中,我们首先生成了一些随机数据。然后分别使用LinearRegression
类实现普通线性回归和多元线性回归(通过添加多项式特征实现),使用Ridge
类实现岭回归,使用Lasso
类实现 Lasso 回归,使用ElasticNet
类实现弹性网络回归。最后绘制出数据点和各个模型的拟合直线,以便直观对比它们的效果。
五、总结与模型选用建议
不同的线性回归模型各有特点,在实际应用中需要根据具体情况选择合适的模型。
✨简单线性回归模型形式最为简单,仅包含一个自变量和一个因变量 ,适用于特征与目标值之间呈现明显线性关系,且数据特征单一的场景,比如根据时间预测某一产品的销量变化趋势。
🎈多元线性回归在简单线性回归基础上拓展到多个自变量,能处理更复杂的数据关系,像预测房价时综合考虑多个影响因素。但当数据存在多重共线性时,普通的多元线性回归可能导致模型不稳定。
🎨岭回归通过 L2 正则化项,在一定程度上缓解多重共线性问题,同时提升模型泛化能力。若数据特征众多且存在共线性,又希望保留所有特征,岭回归是不错的选择,如金融风险评估中,众多经济指标相互关联,岭回归可有效处理。
🍫Lasso 回归利用 L1 正则化产生稀疏解,自动筛选重要特征,实现特征选择,在高维数据场景优势明显,如基因数据分析,能从海量基因特征中找出关键特征。
🧆弹性网络回归结合了 L1 和 L2 正则化,兼具特征选择和处理共线性的能力,当数据既存在大量冗余特征,又有特征间相关性时,弹性网络回归能平衡模型复杂度与性能,例如图像识别领域。
在选择线性回归模型时,首先要分析数据特征,判断是否存在多重共线性、数据维度高低等。若数据简单且特征少,普通线性回归即可;若特征多且存在共线性,可考虑岭回归;若需特征选择,Lasso 回归或弹性网络回归更合适。还可以通过交叉验证等方法,比较不同模型在训练集和验证集上的性能指标,如均方误差(MSE)、决定系数(R²)等,最终选择性能最优的模型。 不断实践和尝试不同模型,才能在实际应用中发挥线性回归模型的最大价值。
相关文章:
机器学习 —— 深入剖析线性回归模型
一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来…...
33.日常算法
1.螺旋矩阵 题目来源 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] class Solution { public:vec…...

#渗透测试#批量漏洞挖掘#微商城系统 goods SQL注入漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞概述 二、漏洞复现步骤 三、技术…...

【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命
目录 一、DeepSeek-R1 势不可挡二、DeepSeek-R1 卓越之处三、DeepSeek-R1 创新设计四、DeepSeek-R1 进化之路1. 强化学习RL代替监督微调学习SFL2. Aha Moment “啊哈”时刻3. 蒸馏版本仅采用SFT4. 未来研究计划 部分内容有拓展,部分内容有删除,与原文会有…...

Vision Transformer学习笔记(2020 ICLR)
摘要(Abstract):简述了ViT(Vision Transformer)模型的设计和实验结果,展示了其在大规模图像数据集上进行训练时的优越性能。该模型直接采用原始图像块作为输入,而不是传统的卷积神经网络(CNNs),并通过Transformer架构处理这些图像块以实现高效的图像识别。引言(Introdu…...
一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路
以下是一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路: 需求分析阶段核心功能梳理 音乐播放器(播放/暂停/进度条/音量)歌单分类(流行/古典/摇滚等)用户系统(登录/收藏/历史记录)搜索功能(歌曲/歌手/专辑)推荐系统(根据用户偏好推荐)技术选型 前端:微信…...

25/2/8 <机器人基础> 阻抗控制
1. 什么是阻抗控制? 阻抗控制旨在通过调节机器人与环境的相互作用,控制其动态行为。阻抗可以理解为一个力和位移之间的关系,涉及力、速度和位置的协同控制。 2. 阻抗控制的基本概念 力控制:根据感测的外力调节机械手的动作。位置…...
golang 开启HTTP代理认证
内部网路不能直接访问外网接口,可以通过代理发送HTTP请求。 HTTP代理服务需要进行认证。 package cmdimport ("fmt""io/ioutil""log""net/http""net/url""strings" )// 推送CBC07功能 func main() {l…...

详解Nginx no live upstreams while connecting to upstream
网上看到几个相关的文章,觉得很不错,这里整理记录分享一下,供大家参考。 upstream配置分 在分析问题原因之前,我们先来看下关于上面upstream配置一些相关的参数配置说明,参考下面表格 ngx_http_proxy_module 这里重…...

Open3d Qt的环境配置
Open3d Qt的环境配置 一、概述二、操作流程2.1 下载文件2.2 新建文件夹2.3 环境变量设置2.4 qt6 引用3、qt中调用4、资源下载一、概述 目前统一使用qt6配置,open3d中可视化功能目前使用vtk代替,语言为c++。 二、操作流程 2.1 下载文件 访问open3d github链接,进入releas…...
5.Python字典和元组:字典的增删改查、字典遍历、访问元组、修改元组、集合(set)
1. 字典(dict) 字典是一个无序的键值对集合,每个键对应一个值。 字典的增、删、改、查: 添加键值对: my_dict {a: 1, b: 2} my_dict[c] 3 # 添加新键c,值为3 print(my_dict) # 输出:{a: 1, b: 2, c: …...

深度学习系列--04.梯度下降以及其他优化器
目录 一.梯度概念 1.一元函数 2.二元函数 3.几何意义上的区别 二.梯度下降 1.原理 2.步骤 3.示例代码(Python) 4.不同类型的梯度下降 5.优缺点 三.动量优化器(Momentum) 适用场景 1.复杂地形的优化问题 2.数据具有噪声的问…...

2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题
1、面试题模块汇总 面试题包括以下十九个模块: Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示…...

Ubuntu MKL(Intel Math Kernel Library)
Get Intel oneAPI Math Kernel Library wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/79153e0f-74d7-45af-b8c2-258941adf58a/intel-onemkl-2025.0.0.940_offline.sh sudo sh ./intel-onemkl-2025.0.0.940_offline.sh MKL库的配置和使用-CSDN博客 CMak…...

消费电子产品中的噪声对TPS54202的影响
本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…...
第四十章:职场转折:突破困境,重新出发
从绍兴与岳父岳母温馨相聚归来后,小冷满心都是温暖与幸福,本以为生活与工作会继续平稳前行,然而,命运却悄然为他的职场之路埋下了转折的伏笔。 平静工作下的暗潮涌动 小冷所在的公司是一家专注于地图导航与位置服务的企业…...
c++ 不定参数,不定类型的 max,min 函数
MSVC\14.29.30133\include\utility(33,19): error C2064: 项不会计算为接受 2 个参数的函数 max min #include <iostream> #include <type_traits>// 自定义 min_gd(支持任意类型和数量参数) template <typename... Args> auto min_g…...

数据库的关系代数
关系就是表 属性(Attribute)是关系中的列.例如,关系 “学生” 中可能有属性 “学号”、“姓名”、“班级”。 元组(Tuple)是关系中的一行数据 1. 基本运算符 选择(Selection) 符号:σ 作用:从关…...
VSCode使用总结
1、VSCode左边资源窗口字体大小设置 方法一(使用,已成功) 进入安装目录Microsoft VS Code\resources\app\out\vs\workbench(如果是下载的压缩包,解压后resources\app\out\vs\workbench) 打开文件 workbench.desktop.main.css 搜…...

关系模型的数据结构及形式化定义
1 关系模型的核心结构 ①单一的数据结构(关系) 现实世界的实体以及实体间的各种联系均用关系来表示 ②逻辑结构(二维表) 从用户角度,关系模型中数据的逻辑结构是一张二维表,行代表元组(记录&a…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...