基于Jamba模型的天气预测实战
深入探索Mamba模型架构与应用 - 商品搜索 - 京东
DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东
由于大气运动极为复杂,影响天气的因素较多,而人们认识大气本身运动的能力极为有限,因此以前天气预报水平较低 。预报员在预报实践中,每次预报的过程都极为复杂,需要综合分析,并预报各气象要素,比如温度、降水等。现阶段,以往极少出现的极端天气现象越来越多,这极大地增加了预报的难度,如图11-20所示。
图11-20 天气预报
本小节将使用Jamba完成天气预测,即在给定天气因素下,预测城市是否下雨。
1. 数据集的准备
这里作者准备了来自澳大利亚多个气候站的日常共15万条收集[wy1] [晓王2] 的数据,如图11-21所示。
图11-21 澳大利亚天气数据集前5条内容
其中的变量解释如下所示。
- Location 获取该信息的气象站的名称
- MinTemp 以摄氏度为单位的低温度
- MaxTemp 以摄氏度为单位的高温度
- Rainfall 当天记录的降雨量,单位为mm
- Evaporation 到早上9点之前的24小时的A级蒸发量(mm)
- Sunshine 白日受到日照的完整小时
- WindGustDir 在到午夜12点前的24小时中的强风的风向
- WindGustSpeed 在到午夜12点前的24小时中的强风速(km/h)
- WindDir9am 上午9点时的风向
- WindDir3pm 下午3点时的风向
- WindSpeed9am 上午9点之前每10分钟的风速的平均值(km/h)
- WindSpeed3pm 下午3点之前每10分钟的风速的平均值(km/h)
- Humidity9am 上午9点的湿度(百分比)
- Humidity3am 下午3点的湿度(百分比)
- Pressure9am 上午9点平均海平面上的大气压(hpa)
- Pressure3pm 下午3点平均海平面上的大气压(hpa)
- Cloud9am 上午9点的天空被云层遮蔽的程度,这是以oktas来衡量的,这个单位记录了云层遮挡天空的程度。0表示完全晴朗的天空,而8表示完全是阴天
- Cloud3pm 下午3点的天空被云层遮蔽的程度
- Temp9am 上午9点的摄氏度温度
- Temp3pm 下午3点的摄氏度温度
- RainToday 今日是否有雨
- RainTomorrow 明日是否有雨
通过观察可以发现,这个特征矩阵由一部分分类变量和一部分连续变量组成,其中云层遮蔽程度虽然是以数字表示的,但是其本质却是分类变量。大多数特征都是采集的自然数据,比如蒸发量、日照时间、湿度等,而少部分特征则是人为构成的。还有一些是单纯表示样本信息的变量,比如采集信息的地点,以及采集的时间。
在我们知道了数据情况后,下一步就是确定目标标签,简单来说,就是我们的标签:明天下雨吗?目标特征RainTomorrow表示明天是否会下雨,即是或否。
2. 特征的选择与程序实现
在特征选择过程中,我们需要根据目标精准地挑选最合适的特征进行计算。以天气为例,我们推测昨天的天气状况可能会对今天的天气状况有所影响,同样,今天的天气状况也可能影响明天的天气状况。换言之,在样本之间,随着时间的推移,是存在相互影响的。然而,传统的算法往往只能捕捉到样本特征与标签之间的关系,即列与列之间的联系,而无法把握样本与样本之间的关联,也就是行与行之间的联系。
要让算法能够理解前一个样本标签对后一个样本标签的潜在影响,我们需要引入时间序列分析。时间序列分析是通过将同一统计指标的数据按其发生的时间顺序排列,以数列形式呈现出来。其主要目的是依据历史数据预测未来趋势。但据作者了解,时间序列分析通常适用于单调且唯一的时间线,即它一次只能预测一个地点的数据,而无法同时预测多个地点,除非进行循环操作。然而,我们的时间数据并非单调或唯一的,尤其是在抽样后,数据的连续性也可能被破坏。我们的数据混杂了多个地点和不同时间段的信息,这使得使用时间序列分析来处理问题变得相当复杂。
那么,我们可以尝试另一种思路。既然算法擅长处理的是列与列之间的关系,我们是否可以将“今天的天气影响明天的天气”这一因素转换为一个具体的特征呢?实际上,这是可行的。
我们注意到数据中有一个特征列名为RainToday,表示当前日期和地区的降雨量,即“今日的降雨量”。基于常识,我们认为今天是否下雨很可能会影响明天的天气状况。例如,在某些气候区域,一旦开始下雨,可能会持续数日;而在另一些地方,暴雨可能来得快,去得也快。因此,我们可以将时间对气候的连续影响转换为“今天是否下雨”这一特征。这样,我们可以巧妙地将原本样本间(行与行之间)的联系转换为特征与标签之间的联系(列与列之间)。
下面将使用其中6个特征'Location'、'WindGustDir'、'WindDir9am'、'WindDir3pm'、'Date'和'RainToday'完成对明日天气的预测。代码如下:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as npdef preprocessing(df, index):labels = set([])for label in df[index]:labels.add(label)labels = list(labels)# print(labels)column = df[index]df.drop(axis=1, columns=index, inplace=True)if 'RainT' in index:temp = column.map(lambda x: labels.index(x))elif index == 'Date':temp = column.map(lambda x: x[5] if x[6] == '/' else x[5:7])else:temp = column.map(lambda x: labels.index(x) + 1)df.insert(0, index, temp)return dfdef get_dataset(location): # 获取数据集df = pd.read_csv(location)# df = df[['Location', 'MinTemp', 'MaxTemp', 'Rainfall', 'Evaporation', 'Sunshine', 'WindGustDir', 'WindGustSpeed',# 'WindSpeed9am', 'WindSpeed3pm', 'Humidity9am', 'Humidity3pm', 'Pressure9am', 'Pressure3pm',# 'Cloud9am', 'Cloud3pm', 'Temp9am', 'Temp3pm', 'RainToday', 'RainTomorrow']]df = df.dropna() # 去除包含缺失值的行# 用整数标签代替字符串型数据for label in ['Location', 'WindGustDir', 'WindDir9am', 'WindDir3pm', 'Date', 'RainToday', 'RainTomorrow']:df = preprocessing(df, label)# Date列格式转换date = df['Date'].astype(float)df.drop(axis=1, columns='Date', inplace=True)df.insert(2, 'Date', date)# 删除相关系数过低的数据for key in df.corr()['RainTomorrow'].keys():if (df.corr()['RainTomorrow'][key] < 0.1) & (df.corr()['RainTomorrow'][key] > -0.1):df.drop(axis=1, columns=key, inplace=True)return dfdf = get_dataset('./weatherAUS.csv')
df_list = df.values.tolist()
feature = df.drop(['RainTomorrow'], axis=1).values.tolist()
label = df['RainTomorrow'].values.tolist()feature = np.array(feature)
label = np.array(label)
可以看到,我们使用Pandas抽取了6个特征作为训练特征,而RainTomorrow作为预测值被记录。数据量的多少读者可以打印完成。
下面将生成数据整理成PyTorch数据读取格式为模型训练做准备,代码如下:
import torch
from torch.utils.data import Dataset, random_splitclass TextSamplerDataset(torch.utils.data.Dataset):def _ _init_ _(self, feature = feature, label = label):super()._ _init_ _()self.feature = torch.from_numpy(feature)/4.self.label = torch.from_numpy(label).int()def _ _getitem_ _(self, index):return self.feature[index],self.label[index]def _ _len_ _(self):return len(self.label)dataset = TextSamplerDataset(feature,label)# 定义分割比例
train_ratio = 0.9
val_ratio = 0.1# 计算每个分割的数据量
total_size = len(dataset)
train_size = int(train_ratio * total_size)
val_size = int(val_ratio * total_size)# 进行数据分割
train_dataset, val_dataset = random_split(dataset, [train_size, val_size])
在这里,TextSamplerDataset作为数据的文本读取类,对结果进行整合,并且由于特征值普遍较大,因此在计算时我们采用除以4的方法对其进行修正。random_split的作用是将完整的数据集按9:1的比例划分为训练集与测试集。
3. 天气预测模型的实现
对于天气预测模型的实现,我们将使用Jamba作为计算核心完成预测模型,而在输入的部分,由于输入的是一个1D数据,首先需要对其维度进行调整,整理成一个新的2D向量,从而进行后续的计算。
而输出层我们采用一个全连接层,将输入向量计算后整理成一个二分类,从而对结果进行预测。完整的天气预报模型如下:
class PredicateWeather(torch.nn.Module):def _ _init_ _(self,jamba_dim = 384,jamba_head = 6,feature_num = 13):super()._ _init_ _()self.feature_num = feature_numself.linear = torch.nn.Linear(feature_num,feature_num * jamba_dim)self.jamba = model.Jamba(dim=jamba_dim,attention_head_num=jamba_head)self.logits_layer = torch.nn.Linear(feature_num * jamba_dim,2)def forward(self,x):x = self.linear(x)x = einops.rearrange(x,"b (f d) -> b f d",f = self.feature_num)x = self.jamba(x)x = torch.nn.Flatten()(x)x = torch.nn.Dropout(0.1)(x)logits = self.logits_layer(x)return logits
4. 天气预报模型的训练与验证
最后,我们将使用模型在澳大利亚天气数据集上完成预测任务。在这里,我们可以同时对损失值和正确率进行监测,并通过tqdm类具体实现,代码如下:
import torch
from tqdm import tqdm
import weather_predicate
import get_weather_datasetfrom torch.utils.data import DataLoadermodel = weather_predicate.PredicateWeather()batch_size = 256
device = "cuda"model = model.to(device)# 创建数据加载器
train_loader = DataLoader(get_weather_dataset.train_dataset, batch_size=batch_size, shuffle=True)
val_loader = DataLoader(get_weather_dataset.val_dataset, batch_size=batch_size, shuffle=False)import torch
optimizer = torch.optim.AdamW(model.parameters(), lr = 2e-4)
lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer,T_max = 6000,eta_min=2e-6,last_epoch=-1)
criterion = torch.nn.CrossEntropyLoss()for epoch in range(24):correct = 0 # 用于记录正确预测的样本数量total = 0 # 用于记录总样本数量pbar = tqdm(train_loader,total=len(train_loader))for feature,label in pbar:optimizer.zero_grad()feature = feature.float().to(device)label = label.long().to(device)logits = model(feature)loss = criterion(logits.view(-1, logits.size(-1)), label.view(-1))loss.backward()optimizer.step()lr_scheduler.step() # 执行优化器# 计算正确率_, predicted = torch.max(logits.data, 1) # 得到预测结果total += label.size(0) # 更新总样本数量correct += (predicted == label).sum().item() # 更新正确预测的样本数量accuracy = 100 * correct / total # 计算正确率pbar.set_description(f"epoch:{epoch +1},accuracy:{accuracy:.3f}%, train_loss:{loss.item():.5f}, lr:{lr_scheduler.get_last_lr()[0]*1000:.5f}")# 测试模型
model.eval()
test_correct = 0 # 用于记录正确预测的样本数量
test_total = 0 # 用于记录总样本数量
with torch.no_grad():for feature, label in val_loader:feature = feature.float().to(device)label = label.long().to(device)logits = model(feature)# 计算正确率_, predicted = torch.max(logits.data, 1) # 得到预测结果test_total += label.size(0) # 更新总样本数量test_correct += (predicted == label).sum().item()# 更新正确预测的样本数量test_accuracy = 100 * test_correct / test_total # 计算正确率print(f"在测试集上的准确率为:{test_accuracy}")
在这里,我们同时完成了模型的训练以及对结果的预测,并且在划分的验证集上获得了对结果准确率的验证,如下所示:
epoch:1,accuracy:69.912%, train_loss:3.56852 100%|██████████| 199/199 [00:26<00:00, 7.60it/s]
epoch:2,accuracy:74.985%, train_loss:3.15288 100%|██████████| 199/199 [00:26<00:00, 7.64it/s]
...
epoch:24,accuracy:82.689%, train_loss:0.4148 100%|██████████| 199/199 [00:26<00:00, 7.48it/s]在测试集上的准确率为:84.36724565756823
可以看到,经过24轮的预测,在训练集上我们获得了82.69%的准确率,而将模型和训练参数迁移到验证集上,我们获得了84.37%的准确率。当然,从训练集上的结果来看,此时可能还没有充分完成特征的训练,模型仍旧除于“欠拟合”状态,还需要继续训练,这一点有兴趣的读者可以继续尝试完成。
相关文章:
基于Jamba模型的天气预测实战
深入探索Mamba模型架构与应用 - 商品搜索 - 京东 DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 由于大气运动极为复杂,影响天气的因素较多,而人们认识大气本身运动的能力极为有限,因此以前天气预报水平较低 。预报员在预…...
Customizing Materials Management with SAP ERP Operations
Customizing Materials Management with SAP ERP Operations...
使用 NServiceBus 在 .NET 中构建分布式系统
在 .NET 中,NServiceBus 依然是构建可靠、可扩展、异步消息驱动架构的强大工具。本文将为你讲解如何在 .NET 环境下集成 NServiceBus,帮助你理解其核心概念及配置方法,并快速上手构建基于消息的系统。 一、NServiceBus 简介 NServiceBus …...
【Linux网络与网络编程】13.五种 IO 模型
前言 在前面的学习中,有一个问题一直没有展开来说,即 IO 问题。 IO 到底有多少种方式呢?什么是高效的 IO 呢? IO 本质上就是 INPUT 和 OUTPUT 。在网络中 INPUT 就是从网卡中获取数据,而 OUTPUT 就是向网卡中发送数据…...
Java后端开发day37--源码解析:TreeMap可变参数--集合工具类:Collections
(以下内容全部来自上述课程) 1. TreeMap 1.1 须知 1.1.1 Entry 节点初始为黑色:提高代码阅读性 1.1.2 TreeMap中的成员变量 comparator:比较规则root:红黑树根节点的地址值size:集合的长度和红黑树…...
海关 瑞数 后缀分析 rs
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 部分python代码 cp execj…...
【合新通信】---Mini单路光模块(Mini SFF/USOT)
产品特性 l 高可靠、全金属外壳、抗振动设计 l 紧凑的结构设计, 超小模块尺寸 l 可插拔标准LC单模光纤连接器接口,方便动态和灵活的配置数据连接 l 每通道工作速率可达1.25Gbps,速率可向下兼容 l 单路发射光纤通道,内置1310nm波长光发射…...
Java详解LeetCode 热题 100(02):LeetCode 49. 字母异位词分组(Group Anagrams)详解
文章目录 1. 题目描述2. 理解题目3. 解法一:排序法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景4. 解法二:计数法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景5. 解法三:字符串哈希法5.1 思路5.2 Java代码实现5.3 代码详解5.4 复杂…...
【每日随笔】文化属性 ① ( 天机 | 强势文化与弱势文化 | 文化属性的形成与改变 | 强势文化 具备的特点 )
文章目录 一、文化属性1、天机2、文化属性的强势文化与弱势文化强势文化弱势文化 二、文化属性的形成与改变1、文化属性形成2、文化属性改变3、文化知识的阶层 三、强势文化 具备的 特点 一、文化属性 1、天机 如果想要 了解这个世界的 底层架构 , 就需要掌握 洞察事物本质 的能…...
Java + Seleium4.X + TestNG自动化技术
系列文章目录 文章目录 系列文章目录前言一、 Java版Selenium自动化测试框架介绍和原理1.1 什么是Seleium1.2 特点1.3 注意点 二、安装SeleiumChrome环境 创建Maven项目2.1 安装Seleium Chrome环境2.2 Maven环境 三、Selenium4.X UI元素定位实战3.1 ID选择器3.2 Name选择器3.…...
Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理
一、Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 二、Hive and SparkSQL SparkSQL 的前身是 Shark,Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具。 Hive 是早期唯一运行在 Hadoop 上的 S…...
electron-vite 应用打包自定义图标不显示问题
// 修改electron-builder.yml ... win:executableName: xxx //可执行文件名称icon: build/icon.ico //你的图标路径 ...打包后,自定义图标不显示原因: 1 cannot execute causeexit status 2,安装包无法生成 用管理员身份运行,win11右击开始…...
AI中Token的理解与使用总结
AI中Token的理解与使用总结 什么是Token 在AI领域,特别是自然语言处理(NLP)中,Token是指将文本分割成的最小处理单元。Tokenization(分词)是将原始文本分解为Token的过程。 Token的几种形式 单词级Token:以单词为基本单位 示例:“Hello world” → [“Hello”, “world”…...
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 二…...
全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?
一、量子威胁的降维打击 1. Shor算法的毁灭性力量 # Shor算法量子电路简化示例(Qiskit实现) from qiskit import QuantumCircuit from qiskit.circuit.library import QFTdef shor_circuit(n: int, a: int) -> QuantumCircuit:qc QuantumCircuit(2…...
python实战项目65:drissionpage采集boss直聘数据
python实战项目65:drissionpage采集boss直聘数据 一、需求简介二、流程分析三、完整代码一、需求简介 boss直聘网站近期改版,改版之后代码需要做相应的升级维护。drissionpage采集网页数据是一种不错的方式,笔者认为比Selenium好用,使用方法大家可以自行查阅资料。boss直聘…...
常用的性能提升手段--提纲
上一篇文章里,介绍了提升性能的一种优化手段:池化。 这篇文章来归纳整理一下其他的常见的提升性能的手段 1. 缓存 (Caching) 缓存可以说是计算机领域的万金油了,它无处不在。 举个最简单的例子,CPU -> L1,L2,L3 Cache -> 内存 。 CPU的处理速度要比内存快几个数量…...
天梯——现代战争
第一次做的时候,直接暴力,显然最后超时。 暴力代码如下: #include<bits/stdc.h> using namespace std; const int N10005; bool mark1[N]{0},mark2[N]{0}; int p[N][N]; int main(){int n,m,k,a,b;cin>>n>>m>>k;fo…...
Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)
每周五篇博客:(4/5) https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区,巴尔贝索沃机场也不例外。在某个时候,Sheremetyevo的一位管理员提出了一个不寻常的想法:将行李索…...
常用第三方库:shared_preferences数据持久化
常用第三方库:shared_preferences数据持久化 前言 shared_preferences是Flutter中最常用的轻量级数据持久化解决方案,它提供了一个简单的key-value存储机制,适合存储用户配置、应用设置等小型数据。本文将从实战角度深入讲解shared_prefere…...
项目驱动 CAN-bus现场总线基础教程》随笔
阅读:《项目驱动 CAN-bus现场总线基础教程》 仲裁段的实现 有感而发 感觉出人意外之处 感觉出人意外之处 最近在阅读入门的CAN相关书籍时,在介绍仲裁段是如何实现各节点之间,通讯仲裁功能的章节中,有如下一段描述: …...
WPF之XAML基础
文章目录 XAML基础:深入理解WPF和UWP应用开发的核心语言1. XAML简介XAML与XML的关系 2. XAML语法基础元素语法属性语法集合语法附加属性 3. XAML命名空间命名空间映射关系 4. XAML标记扩展静态资源引用数据绑定相对资源引用常见标记扩展对比 5. XAML与代码的关系XAM…...
测试基础笔记第十四天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、字符串1.字符串2.字符串切片3.查找find()4.去除两端空白字符 strip5.字符串转换大小写 lower、upper5.拆分 split()6.字符串的其他常见方…...
Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解
文章目录 1. 题目描述2. 理解题目3. 解法一:暴力枚举法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二:哈希表法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景 5. 解法三:两遍哈希表法5.1 思…...
机器学习之三:归纳学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
AI声像融合守护幼儿安全——打骂/异常声音报警系统的智慧防护
幼儿园是孩子们快乐成长的摇篮,但打骂、哭闹或尖叫等异常事件可能打破这份宁静,威胁幼儿的身心安全。打骂/异常声音报警系统,依托尖端的AI声像融合技术,结合语音识别、情绪分析与视频行为检测,为幼儿园筑起一道智能安全…...
2024ICPC网络赛第二场题解
文章目录 F. Tourist(签到)I. Strange Binary(思维)J. Stacking of Goods(思维)A. Gambling on Choosing Regionals(签到)G. Game(数学)L. 502 Bad Gateway(数学)E. Escape(BFS)C. Prefix of Suffixes(kmp结论)K. match(01trie分治多项式乘法组合数) 题目链接 F. Tourist(签到…...
风控策略引擎架构设计全解析:构建智能实时决策系统
摘要 本文深入探讨现代风控策略引擎的核心架构设计,结合金融反欺诈、电商交易风控等典型场景,详细解析实时决策、规则引擎、特征计算等关键技术模块的实现方案。通过分层架构设计、分布式计算优化、策略动态编排等创新方法,展示如何构建支撑每秒万级决策的高可用风控系统。…...
TensorFlow 安装全攻略
选择 TensorFlow 的原因: TensorFlow 是一个端到端平台,它提供多个抽象级别,因此您可以根据自己的需求选择合适的级别。您可以使用高阶 Keras API 构建和训练模型,该 API 让您能够轻松地开始使用 TensorFlow 和机器学习。如果您需…...
Dijkstra 算法代码步骤[leetcode.743网络延迟时间]
有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,…...
Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit
硬件环境 使用一块技嘉 B85m-DS3H 安装 P104-100, CPU是带集成显卡的i5-4690. 先在BIOS中设置好显示设备优先使用集成显卡(IGX). 然后安装P104-100开机. 登入Ubuntu 后查看硬件信息, 检查P104-100是否已经被检测到 # PCI设备 lspci -v | grep -i nvidia lspci | grep NVIDIA …...
Golang 学习指南
目录 变量与常量数据类型与控制结构常用数据结构函数与错误处理指针与并发Gin 框架与 go mod小结与参考资料 1. 变量与常量 变量(var) 用于定义可变的值。可以指定类型,也可以自动推断类型。示例:var name string "Golang…...
Ubuntu 磁盘空间占用清理(宝塔)
目录 前言1. 基本知识2. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 本身自搭建了一个宝塔,突然一下子多了好些空…...
AntBio: 2025 AACR Meeting - Charting New Oncology Frontiers Together
AntBio cordially invites you to attend the 2025 AACR Annual Meeting and jointly chart a new course in oncology research! The global benchmark for cancer research and therapeutics—the 2025 American Association for Cancer Research (AACR) Annual Meeting—wi…...
数模学习:二,MATLAB的基本语法使用
注释代码: (1)在每行语句后面加上分号,则不显示该行代码的运算结果。 在每行代码前加%,则该行代码会被注释掉 (2) 多行注释: 选中要注释的多行语句,按快捷键Ctrl R (3) 取消注释: 选中要注释的多行语句…...
【Webpack \ Vite】多环境配置
环境变量脚本命令 如何通过不同的环境变量或不同的配置文件进行项目区分,动态加载配置。通常,使用环境变量是最简单且灵活的方法,因为它不需要改变构建命令或创建多个配置文件 环境变量 在根目录下创建 .env.xxx 文件,为不同的环…...
已知漏洞打补丁
. 打补丁 根据MS漏洞编号或者CVE漏洞编号都可以找到对应的HotfixID。 1.根据MS漏洞编号可以使用:https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/securitybulletins 即可找到KB编号。 2.根据CVE漏洞编号可以使用:https://cve…...
WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换Java代码
在做基于百度地图、高德地图等电子地图做为地图服务的二次开发时,通常需要将具有WGS84等坐标的矢量数据(如行政区划、地名、河流、道路等GIS地理空间数据)添加到地图上面。 然而,在线地图大多使用的是火星坐标系,需要…...
R语言操作n
1.加载安装vegan包 2.查看data(varechem)和data(varespec),探索其维度和结构 3.基于varespec构建物种互作网络,输出gml文件并采用gephi可视化为图片,输出pdf,阈值为r>0.6,p<0.05 4.基于varespec和varechem构建物种-环境互作…...
ChatGPT与DeepSeek在科研论文撰写中的整体科研流程与案例解析
随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域展现出强大的潜力,尤其是在论文撰写方面。本文旨在介绍如何利用ChatGPT和DeepSeek提升科研论文撰写的效率与质量,并提供一个具体案例,详细阐述其技术流程及公…...
VScode在 Markdown 编辑器中预览
1. 使用在线 Mermaid 编辑器 步骤: 打开 Mermaid Live Editor。将你 .md 文件中的 Mermaid 代码(从 mermaid 到结束的代码块)复制粘贴到编辑器的左侧输入框。编辑器会自动在右侧生成可视化的 ER 图。你可以点击右上角的下载按钮,…...
驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
一、Power-domain 框架基础概念 ✏️ 什么是 Power-domain? 在 Linux 内核中,Power-domain(电源域) 是指一组硬件模块的逻辑集合,这些模块可以被统一控制电源状态(上电、断电)。 Linux 内核通…...
无人机超声波避障技术要点与难点!
一、超声波避障技术要点 4. 障碍物建模 通过最小二乘法平面拟合,将单点测距数据转化为障碍物表面模型,提高避障准确性。 使用队列(wallqueue)存储障碍物信息,并进行去重处理,避免重复避障。 5. 避障轨…...
ASCII字符编码标准及字符表
目录 概述 1 标准 ASCII 表(0-127) 2 大写字母(A-Z) 3 小写字母(a-z) 4 说明 概述 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码ÿ…...
联想昭阳笔记本 风扇一键静音优化操作指南
【联想昭阳笔记本 一键静音优化操作指南】 第1步:安装官方工具 Lenovo Vantage 打开【开始菜单】→ 搜索【Microsoft Store】,打开。在 Store 里搜索【Lenovo Vantage】,下载安装。安装好后,打开【Lenovo Vantage】。进入【设备…...
go语言八股文(三)
1.java和go的区别 1. 语言设计目标 Java: 通用性:设计为一种通用的、面向对象的编程语言,适用于多种应用场景,如桌面应用、服务器端应用、移动应用等。跨平台性:通过“一次编写,到处运行”(Wr…...
Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理
Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理 目录 Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理 一、简单介绍 二、现象描述 三、尝试的解决方案 1、根据应用的…...
【工具】scMultiMap基于单细胞多模态数据实现增强子与靶基因的细胞类型特异性映射
文章目录 介绍代码参考 介绍 在与疾病相关的细胞类型中绘制增强子和靶基因图谱,能够为全基因组关联研究(GWAS)变异的功能机制提供关键见解。单细胞多模态数据能够测量同一细胞中的基因表达和染色质可及性,从而实现细胞类型特异性…...
rt-linux下的cgroup cpu的死锁bug
一、背景 rt-linux系统有其非常大的实时性的优势,但是与之俱来的是该系统上有一些天然的缺陷。由于rt-linux系统允许进程在内核态执行的逻辑里,在持锁期间,甚至持spinlock锁期间,都能被其他进程抢占。这一特性能带来实时性的好处…...
Java 内存泄漏 详解
Java 内存泄漏是指程序中某些对象不再被使用,但由于某些原因无法被垃圾回收器(Garbage Collector, GC)回收,导致内存被持续占用,最终可能引发性能问题或 OutOfMemoryError。 本文将从底层原理、源码层面详细解释 Java …...