Python线性回归:从理论到实践的完整指南
Python线性回归:从理论到实践的完整指南
线性回归是数据科学和机器学习中最基础且最重要的算法之一。本文将深入探讨如何使用Python实现线性回归,从理论基础到实际应用,帮助读者全面理解这一重要的统计学和机器学习方法。
什么是线性回归?
线性回归是一种通过建立因变量(目标变量)和一个或多个自变量(特征变量)之间线性关系的统计分析方法。它的核心思想是找到一条最佳拟合线,使得所有数据点到这条线的距离平方和最小。这种方法不仅可以帮助我们理解变量之间的关系,还能用于预测未知数据点的值。
线性回归的类型
-
简单线性回归
- 只包含一个自变量和一个因变量
- 可以用一条直线表示
- 方程形式:y = mx + b
- 适用于简单的二维关系分析
-
多元线性回归
- 包含多个自变量和一个因变量
- 在高维空间中形成超平面
- 方程形式:y = b0 + b1x1 + b2x2 + … + bnxn
- 适用于复杂的多变量分析
线性回归的数学原理
最小二乘法
最小二乘法是线性回归中最常用的参数估计方法。其核心思想是:
- 计算预测值与实际值之间的差异(残差)
- 将所有残差的平方求和
- 找到使这个平方和最小的参数值
这个过程可以通过以下数学公式表示:
- 残差平方和(RSS):Σ(yi - ŷi)²
- 其中yi是实际值,ŷi是预测值
- 目标是找到使RSS最小的参数
模型评估指标
-
R平方(R²)
- 反映模型解释数据变异性的程度
- 取值范围在0到1之间
- 越接近1表示模型拟合效果越好
- 需要注意过拟合问题
-
均方误差(MSE)
- 预测值与实际值差异的平均平方
- 越小表示模型预测越准确
- 受异常值影响较大
-
平均绝对误差(MAE)
- 预测值与实际值差异的绝对值平均
- 比MSE更容易理解
- 对异常值不太敏感
实际应用中的注意事项
数据预处理
-
缺失值处理
- 删除包含缺失值的记录
- 使用平均值、中位数填充
- 使用更复杂的插值方法
- 根据业务场景选择合适的处理方式
-
特征缩放
- 标准化(StandardScaler)
- 归一化(MinMaxScaler)
- 对数转换
- 确保特征在相似的尺度上
-
异常值处理
- 箱线图检测
- Z-score方法
- IQR方法
- 根据业务知识判断
模型假设验证
线性回归模型基于以下假设:
-
线性性
- 自变量和因变量之间存在线性关系
- 可以通过散点图观察
- 必要时进行变量转换
- 考虑非线性关系的可能性
-
独立性
- 观测值之间相互独立
- 特别重要的时间序列数据
- 使用Durbin-Watson检验
- 注意自相关问题
-
同方差性
- 残差的方差应该恒定
- 可以通过残差图检验
- 考虑异方差性的处理方法
- 必要时使用加权回归
-
正态性
- 残差应该呈正态分布
- 使用Q-Q图检验
- 考虑数据转换
- 大样本下可以放宽要求
高级技巧和优化方法
特征工程
-
特征选择
- 相关性分析
- 逐步回归法
- Lasso和Ridge正则化
- 主成分分析(PCA)
-
特征创建
- 多项式特征
- 交互项
- 基于领域知识的特征
- 时间相关特征
正则化技术
-
Ridge回归(L2正则化)
- 添加系数平方和惩罚项
- 减少过拟合
- 适合处理多重共线性
- 不会产生稀疏解
-
Lasso回归(L1正则化)
- 添加系数绝对值和惩罚项
- 可以实现特征选择
- 产生稀疏解
- 适合高维数据
-
Elastic Net
- 结合L1和L2正则化
- 平衡两种方法的优点
- 更灵活的正则化方案
- 需要调整两个超参数
实际应用场景
1. 房价预测
- 考虑多个影响因素
- 处理非线性关系
- 注意市场周期性
- 考虑地理位置影响
2. 销售预测
- 时间序列特征
- 季节性因素
- 促销活动影响
- 竞争对手影响
3. 能耗预测
- 温度影响
- 时间模式
- 设备效率
- 人员行为模式
常见问题和解决方案
1. 过拟合问题
- 增加训练数据
- 使用正则化
- 减少特征数量
- 交叉验证
2. 特征共线性
- 相关性分析
- VIF检验
- 主成分分析
- 选择重要特征
3. 预测效果不佳
- 检查数据质量
- 添加新特征
- 尝试非线性转换
- 考虑其他算法
最佳实践建议
-
数据探索
- 充分理解数据特征
- 可视化分析
- 统计描述
- 异常值检测
-
模型构建
- 从简单模型开始
- 逐步添加复杂性
- 注意模型解释性
- 保持模型简洁
-
模型评估
- 使用多个评估指标
- 交叉验证
- A/B测试
- 持续监控模型性能
-
文档和维护
- 详细记录建模过程
- 保存中间结果
- 版本控制
- 定期更新模型
总结
线性回归是一个强大且实用的统计学习方法,它不仅提供了变量之间关系的洞察,还能用于预测分析。通过本文的详细讲解,我们了解了从基础理论到实际应用的完整过程。关键是要记住:
- 理解基本假设和限制
- 重视数据预处理的重要性
- 选择合适的评估指标
- 注意模型的实际应用价值
在实际应用中,线性回归往往是更复杂分析的起点。掌握好这个基础工具,将为后续学习更高级的机器学习方法打下坚实的基础。
参考资料
- 统计学习方法(李航)
- Python机器学习实战
- Applied Linear Regression (Weisberg)
- scikit-learn官方文档
希望这篇文章能帮助你更好地理解和应用线性回归。记住,实践是最好的学习方式,建议读者动手实现文中提到的各个概念和方法。祝你在数据科学的道路上取得进步!
代码实战
1. 简单线性回归实现
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt# 生成示例数据
np.random.seed(42)
X = np.random.rand(100, 1) * 10
y = 2 * X + 1 + np.random.randn(100, 1) * 0.5# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 打印模型参数
print(f"斜率: {model.coef_[0][0]:.2f}")
print(f"截距: {model.intercept_[0]:.2f}")# 可视化结果
plt.scatter(X, y, color='blue', label='实际数据')
plt.plot(X, model.predict(X), color='red', label='预测线')
plt.xlabel('X')
plt.ylabel('y')
plt.title('简单线性回归示例')
plt.legend()
plt.show()
2. 多元线性回归示例
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import r2_score, mean_squared_error
import numpy as np# 加载波士顿房价数据集
boston = load_boston()
X = boston.data
y = boston.target# 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测和评估
y_pred = model.predict(X_test)
print(f"R² 分数: {r2_score(y_test, y_pred):.3f}")
print(f"均方误差: {mean_squared_error(y_test, y_pred):.3f}")# 特征重要性分析
feature_importance = pd.DataFrame({'feature': boston.feature_names,'importance': abs(model.coef_)
})
print("\n特征重要性:")
print(feature_importance.sort_values('importance', ascending=False))
3. 数据预处理示例
import pandas as pd
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.impute import SimpleImputerdef preprocess_data(df):# 处理缺失值imputer = SimpleImputer(strategy='mean')df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)# 标准化scaler = StandardScaler()df_scaled = pd.DataFrame(scaler.fit_transform(df_imputed), columns=df.columns)# 处理异常值(使用IQR方法)Q1 = df_scaled.quantile(0.25)Q3 = df_scaled.quantile(0.75)IQR = Q3 - Q1df_clean = df_scaled[~((df_scaled < (Q1 - 1.5 * IQR)) | (df_scaled > (Q3 + 1.5 * IQR))).any(axis=1)]return df_clean# 使用示例
# df = pd.read_csv('your_data.csv')
# df_processed = preprocess_data(df)
4. 正则化回归示例
from sklearn.linear_model import Ridge, Lasso, ElasticNet
from sklearn.model_selection import cross_val_score# Ridge回归
ridge = Ridge(alpha=1.0)
ridge_scores = cross_val_score(ridge, X_scaled, y, cv=5)
print(f"Ridge回归 CV分数: {ridge_scores.mean():.3f} (+/- {ridge_scores.std() * 2:.3f})")# Lasso回归
lasso = Lasso(alpha=1.0)
lasso_scores = cross_val_score(lasso, X_scaled, y, cv=5)
print(f"Lasso回归 CV分数: {lasso_scores.mean():.3f} (+/- {lasso_scores.std() * 2:.3f})")# ElasticNet
elastic = ElasticNet(alpha=1.0, l1_ratio=0.5)
elastic_scores = cross_val_score(elastic, X_scaled, y, cv=5)
print(f"ElasticNet CV分数: {elastic_scores.mean():.3f} (+/- {elastic_scores.std() * 2:.3f})")
5. 模型诊断和可视化
import seaborn as sns
from scipy import statsdef model_diagnostics(model, X, y, y_pred):# 残差分析residuals = y - y_pred# 创建诊断图fig, axes = plt.subplots(2, 2, figsize=(12, 10))# 残差vs预测值axes[0,0].scatter(y_pred, residuals)axes[0,0].axhline(y=0, color='r', linestyle='--')axes[0,0].set_xlabel('预测值')axes[0,0].set_ylabel('残差')axes[0,0].set_title('残差 vs 预测值')# Q-Q图stats.probplot(residuals, dist="norm", plot=axes[0,1])axes[0,1].set_title('Q-Q图')# 残差直方图sns.histplot(residuals, ax=axes[1,0], kde=True)axes[1,0].set_title('残差分布')# 实际值vs预测值axes[1,1].scatter(y, y_pred)axes[1,1].plot([y.min(), y.max()], [y.min(), y.max()], 'r--')axes[1,1].set_xlabel('实际值')axes[1,1].set_ylabel('预测值')axes[1,1].set_title('实际值 vs 预测值')plt.tight_layout()plt.show()# 使用示例
# model_diagnostics(model, X_test, y_test, y_pred)
6. 完整的建模流程示例
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import GridSearchCVdef build_model_pipeline(numeric_features, categorical_features):# 预处理步骤numeric_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='median')),('scaler', StandardScaler())])categorical_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='constant', fill_value='missing')),('onehot', OneHotEncoder(drop='first', sparse=False))])preprocessor = ColumnTransformer(transformers=[('num', numeric_transformer, numeric_features),('cat', categorical_transformer, categorical_features)])# 完整管道pipeline = Pipeline(steps=[('preprocessor', preprocessor),('regressor', LinearRegression())])return pipeline# 使用示例
# numeric_features = ['age', 'income', 'rooms']
# categorical_features = ['location', 'type']
# model_pipeline = build_model_pipeline(numeric_features, categorical_features)
# model_pipeline.fit(X_train, y_train)
相关文章:
Python线性回归:从理论到实践的完整指南
Python线性回归:从理论到实践的完整指南 线性回归是数据科学和机器学习中最基础且最重要的算法之一。本文将深入探讨如何使用Python实现线性回归,从理论基础到实际应用,帮助读者全面理解这一重要的统计学和机器学习方法。 什么是线性回归&a…...
python 爬虫框架介绍
文章目录 前言一、Requests BeautifulSoup(基础组合)二、Scrapy(高级框架)三、PySpider(可视化爬虫)四、Selenium(浏览器自动化)五、Playwright(新一代浏览器自动化&…...
强化学习算法实战:一个例子搞懂sarsa、dqn、ddqn、qac、a2c及其区别
简介 在学习强化学习算法:sarsa、dqn、ddqn、qac、a2c、trpo、ppo时,由于有大量数学公式的推导,觉得十分晦涩,且听过就忘记了。 但是当把算法应用于实战时,代码的实现要比数学推导直观很多。 接下来通过不同的算法实现…...
文章记单词 | 第86篇(六级)
一,单词释义 pretty /ˈprɪti/- adj. 漂亮的;相当的 /adv. 相当地labour /ˈleɪbə(r)/- n. 劳动;劳工;分娩 /v. 劳动;努力(英式英语, labor)imaginary /ɪˈmdʒɪnəri/- adj. …...
firewall防火墙
一.Firewalld 防火墙概述 1.firewalld 简介 firewalld 的作用是为包过滤机制提供匹配规则(或称为策略),通过各种不同的规则告诉netfilter 对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙,firewa11d 提供了…...
TII-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》
推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统…...
Pageassist安装(ollama+deepseek-r1)
page-assist网站:https://github.com/n4ze3m/page-assist 首先电脑配置node.js,管理员打开命令窗口输入下面命令下载bun npm install -g buncd 到你想要安装page-assist的地方(推荐桌面) 输入下列命令 git clone https://gith…...
Java—— 方法引用 : :
方法引用是什么 把已经存在的方法拿过来用,当做函数式接口中抽象方法的方法体 方法引用符 :: 方法引用的条件 1.需要有函数式接口 2.被引用方法必须已经存在 3.被引用方法的形参和返回值需要跟抽象方法保持一致 4.被引用方法的功能要满足当前…...
Linux基础开发工具大全
目录 软件包管理器 1>软件包 2>软件生态 3>yum操作 a.查看软件包 b.安装软件 c.卸载软件 4>知识点 vim编辑器 1>基本概念 2>基本操作 3>正常模式命令集 a.模式切换 b.移动光标 c.删除 d.复制 e.替换 f.撤销 g.更改 4>底行模式命令…...
C语言实现INI配置文件读取和写入
一.INI文件介绍 INI配置文件是一种简单的文本文件,用于存储配置信息,通常由一个或多个节(section)组成,每个节包含多个键值对(Key-Value)格式。INI文件易于阅读和编辑,广泛应用于多…...
volatile关键字详解
volatile关键字详解 1. 定义与核心作用 volatile 是Java中的关键字,用于修饰变量,主要解决多线程环境下的内存可见性和指令重排序问题。其核心作用: 保证可见性:确保所有线程读取到变量的最新值。禁止指令重排序:防止…...
二叉树子树判断:从递归到迭代的全方位解析
一、题目解析 题目描述 给定两棵二叉树root和subRoot,判断root中是否存在一棵子树,其结构和节点值与subRoot完全相同。 示例说明 示例1: root [3,4,5,1,2],subRoot [4,1,2] 返回true,因为root的左子树与subRoot完…...
【PhysUnits】4.1 类型级比特位实现解释(boolean.rs)
一、源码 该代码实现了一个类型级(type-level)的布尔系统,允许在编译时进行布尔运算。 //! 类型级比特位实现 //! //! 这些是基础的比特位类型,作为本库中其他数值类型的构建基础 //! //! 已实现的**类型运算符**: //! //! - 来自 core::op…...
(7)python开发经验
文章目录 1 找不到资源文件2 使用subprocess执行时有黑色弹窗3 找不到exec4 pyside6-project lupdate的bug5 找不到pyd模块6 pyd模块编码错误7 运行显示Qt platform plugin "windows" in "8 tr()包含的字符串无法被翻译 更多精彩内容👉内容导航 &…...
【Manim】使用manim画一个高斯分布的动画
1 Manim例子一 最近接触到manim,觉得挺有趣的,来玩一玩把。如下是一个使用manim画的高斯分布的动画。 from manim import * import numpy as npclass GaussianDistribution(Scene):def construct(self):# 创建坐标系axes Axes(x_range[-4, 4, 1],y_ra…...
Day11-苍穹外卖(数据统计篇)
前言: 今天写day11的内容,主要讲了四个统计接口的制作。看起来内容较多,其实代码逻辑都是相似的,这里我们过一遍。 今日所学: Apache ECharts营业额统计用户统计订单统计销量排行统计 1. Apache ECharts 1.1 介绍 A…...
论文阅读:Self-Collaboration Code Generation via ChatGPT
地址:Self-Collaboration Code Generation via ChatGPT 摘要 尽管大型语言模型(LLMs)在代码生成能力方面表现出色,但在处理复杂任务时仍存在挑战。在现实软件开发中,人类通常通过团队协作来应对复杂任务,…...
LocaleContextResolver实现多语言切换-笔记
1. LocaleContextResolver功能简介 org.springframework.web.servlet.LocaleContextResolver是 Spring MVC 中用于解析和管理用户 Locale(语言环境) 的核心接口。 //LocaleContextResolver 接口定义 public interface LocaleContextResolver extends L…...
Vue3中setup运行时机介绍
在 Vue3 中,直接写在 <script setup>...</script> 中的代码运行时机可以分为以下几个关键阶段: 一、执行顺序层级 #mermaid-svg-bF3p98MiNdLfcoSG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#33…...
计算机视觉----感兴趣区域(ROI)、非极大值抑制
感兴趣区域(Region of Interest,ROI)是指在一幅图像或者数据集中,用户关注并希望进行重点分析、处理或者研究的特定区域。以下为你详细介绍它在不同领域的应用: 医学影像领域 在医学影像中,医生可以通过确…...
YOLO11解决方案之对象裁剪探索
概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 对象裁剪是指从图像或视频中分离并提取特定的检测对象,YOLO11 模型功能可用于准…...
将单链表反转【数据结构练习题】
- 第 98 篇 - Date: 2025 - 05 - 16 Author: 郑龙浩/仟墨 反转单链表(出现频率非常的高) 文章目录 反转单链表(出现频率非常的高)题目:反转一个链表思路:代码实现(第3种思路): 题目:反转一个链表 将 1->2->3->4->5->NULL反转…...
多网卡管理实战指南:原理、问题分析与实用工具推荐
多网卡管理实战指南:原理、问题分析与实用工具推荐 在现代网络环境中,越来越多的用户面临一个实际问题:一台电脑连接了多个网络接口,如有线 无线、双有线、或实体网卡 虚拟VPN网卡。这种“多网卡”环境虽然提供了更多可能性&am…...
qt5.14.2 opencv调用摄像头显示在label
ui界面添加一个Qlabel名字是默认的label 还有一个button名字是pushButton mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <opencv2/opencv.hpp> // 添加OpenCV头文件 #include <QTimer> // 添加定…...
使用Python实现简单的人工智能聊天机器人
最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...
Python爬虫(28)Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化
目录 一、背景:动态渲染技术的演进与挑战二、核心技术对比与选型三、环境搭建与工具链配置1. Docker部署Splash集群2. Selenium环境配置 四、双引擎渲染核心实现1. 智能路由中间件2. Splash高级Lua脚本控制 五、性能优化实战方案1. 浏览器资源池化2. 异步渲染加速 六…...
uv python 卸载
又是查了半天 官网wiki没有 网上一堆傻子胡说 uv提示也不对 AI还在这尼玛胡编乱造 开始 我原来装了这几个环境 uv python list 现在python3.7.7不需要了,卸载,直接 uv python uninstall 3.7.7 去找你自己要卸载的版本号,不需要整个包名复制…...
如何备考GRE?
1.引言 GRE和雅思不太相同,首先GRE是美国人的考试,思维方式和很多细节和英系雅思不一样。所以底层逻辑上我觉得有点区别。 难度方面,我感觉GRE不容易考低分,但考高分较难。雅思就不一样了不仅上限难突破,下限还容易6…...
Crowdfund Insider聚焦:CertiK联创顾荣辉解析Web3.0创新与安全平衡之术
近日,权威金融科技媒体Crowdfund Insider发布报道,聚焦CertiK联合创始人兼CEO顾荣辉教授在Unchained Summit的主题演讲。报道指出,顾教授的观点揭示了Web3.0生态当前面临的挑战,以及合规与技术在推动行业可持续发展中的关键作用。…...
第六章 进阶10 实习生的焦虑
时间过得很快,实习的蕾蕾入职已经三个月了,到了离开的日子。 照例我和她约了1对1谈话,在开始和结束阶段的谈话格外有意义。 谈话的最后,我问蕾蕾有没有什么问题问我,她的问题让我格外惊讶: “自己有点焦…...
技术融资:概念与形式、步骤与案例、挑战与应对、发展趋势
一、技术融资概述 技术融资是指通过外部资金支持技术研发、产品开发或市场扩展的过程。它通常涉及风险投资、天使投资、私募股权、众筹等多种形式。技术融资的核心目标是为技术创新提供资金保障,推动技术从概念到市场的转化。 技术融资的主要形式包括以下几种&…...
duxapp 2025-03-29 更新 编译结束的复制逻辑等
CLI copy 文件夹内的内容支持全量复制优化小程序配置文件合并逻辑(更新后建议将 project.config.json 文件从git的追踪中移除)新增 copy.build.complete 文件夹的复制逻辑,会在程序编译结束之后将文件复制到指定位置 (模块和用户…...
【Linux】Shell脚本中向文件中写日志,以及日志文件大小、数量管理
1、写日志 shell脚本中使用echo命令,将字符串输入到文件中 覆盖写入:echo “Hello, World!” > laoer.log ,如果文件不存在,则会创建文件追加写入:echo “Hello, World!” >> laoer.log转移字符:echo -e “Name:\tlaoer\nAge:\t18” > laoer.log,\t制表符 …...
Qwen3技术报告
参考链接:https://zhuanlan.zhihu.com/p/1905945819108079268 介绍的很详细,先贴后续再整理...
python + flask 做一个图床
1. 起因, 目的: 对这个网站:https://img.vdoerig.com/ , 我也想实现这种效果。做一个简单的图床,后面,可以结合到其他项目中。 2. 先看效果 实际效果。 3. 过程: Grok 聊天: https://img.vdoerig.co…...
虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身
虚拟来电是一款集虚拟来电与虚拟短信于一体的应用程序。它可以帮助用户在需要时模拟一个真实的来电或短信,以最顾及对方情面的方式逃离尴尬场合。无论是自定义来电联系人、时间、次数,还是设置自定义通话语音、来电震动和铃声,这款解锁了VIP功…...
日志与策略模式
什么是设计模式 IT⾏业 ,为了让 菜鸡们不太拖⼤佬的后腿, 于是⼤佬们针对⼀些经典的常⻅的场景, 给定了⼀些对应的解决⽅案, 这个就是 设计模式 日志认识 计算机中的⽇志是记录系统和软件运⾏中发⽣事件的⽂件,主要作⽤是监控运⾏状态、记录异常信 息ÿ…...
Linux下载与安装
一、YUM 1.1 什么是YUM 在CentOS系统中,软件管理方式通常有三种方式:rpm安装、yum安装以及编译(源码)安装。 编译安装,从过程上来讲比较麻烦,包需要用户自行下载,下载的是源码包,需…...
java18
1.API之时间类 Date类: SimpleDateFormat类: Calendar类:...
向量和矩阵范数
向量和矩阵范数 向量范数 定义 设 x T \boldsymbol{x}^\text{T} xT, y T \boldsymbol{y}^\text{T} yT ∈ K n \in \mathbb{K}^n ∈Kn,数量积定义为: y T x ( 或 y H x ) \boldsymbol{y} ^\text{T} \boldsymbol{x}\left(或\boldsymbol{y}^\text{H}\bo…...
使用 gcloud CLI 自动化管理 Google Cloud 虚拟机
被操作的服务器,一定要开启API完全访问权限,你的电脑安装gcloud CLI前一定要先安装Python3! 操作步骤 下载地址,安装大概需要十分钟:https://cloud.google.com/sdk/docs/install?hlzh-cn#windows 选择你需要的版本&a…...
驱动芯片走线、过孔指导,大电流、散热过孔
参考: 一份大厂PCB布局指南参考! 技巧 使用大面积铺铜 铜是一种极好的导热体。由于 PCB 的基板材料(FR-4 玻璃环氧树脂)是一种不良导热体。因此,从热管理的角度来看,PCB的铺铜区域越多则导热越理想。 走…...
数据结构进阶:AVL树与红黑树
目录 前言 AVL树 定义 结构 插入 AVL树插入的大致过程 更新平衡因子 旋转 右单旋 左单旋 左右双旋 右左双旋 实现 红黑树 定义 性质 结构 插入 实现 总结 前言 在学习了二叉搜索树之后,我们了解到其有个致命缺陷——当树的形状呈现出一边倒…...
AI人工智能在交通物流领域的应用
AI人工智能在交通物流领域的应用 AI人工智能在交通物流领域有着广泛而深入的应用,正推动着该领域的深刻变革,以下是详细介绍: 交通领域 智能驾驶 自动驾驶汽车:依靠深度学习算法、计算机视觉、激光雷达和传感器融合技术&#x…...
牛客网NC22222:超半的数
牛客网NC22222:超半的数 题目描述 输入输出格式 输入格式: 第一行包含一个整数 n (1 ≤ n ≤ 1000)第二行包含 n 个整数 a_i (1 ≤ a_i ≤ 10^9) 输出格式: 输出一个整数,表示出现次数超过一半的那个数 解题思路 这道题目有多种解法&a…...
在服务器上安装AlphaFold2遇到的问题(2)
如何删除已安装的cuDNN 1. 通过包管理器卸载(推荐) RHEL/CentOS (dnf/yum) #查看已安装的 cuDNN 包 sudo dnf list installed | grep cudnn #卸载 cuDNN 运行时和开发包 sudo dnf remove -y libcudnn* libcudnn8* libcudnn-devel* Ubuntu/Debian (ap…...
【2025年软考中级】第一章1.5 输入输出技术(外设)
文章目录 输入输出技术(外设)I/O设备总线结构输入输出控制程序控制方式中断方式直接内存存取(DMAC)方式IO通道方式和外围处理机(IOP)方式 数据传输方式生物特征认证技术 输入输出技术(外设&…...
2025 家用投影新标杆:雷克赛恩 CyberPro1 如何重新定义客厅观影体验
目录 一、家庭影音升级:从 “看得清” 到 “看得精” 的需求之变 (一)传统投影的痛点突围 (二)技术参数背后的用户价值 二、全天候观影无忧:亮度与环境光的博弈艺术 (一)真实亮…...
[基础] HPOP、SGP4与SDP4轨道传播模型深度解析与对比
HPOP、SGP4与SDP4轨道传播模型深度解析与对比 文章目录 HPOP、SGP4与SDP4轨道传播模型深度解析与对比第一章 引言第二章 模型基础理论2.1 历史演进脉络2.2 动力学方程统一框架 第三章 数学推导与摄动机制3.1 SGP4核心推导3.1.1 J₂摄动解析解3.1.2 大气阻力建模改进 3.2 SDP4深…...
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
文章目录 一、如何实现一条用例,实现覆盖所有用例的测试1、结合数据驱动:编辑一条用例,外部导入数据实现循环测试2、用例体:实现不同用例的操作步骤对应的断言 二、实战1、项目路径总览2、common 文件夹下的代码文件3、keywords 文…...