Redis基础概念
认识
属于NoSQL
命令:https://redis.io/commands
数据结构类型:
String
Hash
List
Set
SortedSet
客户端
网址:https://redis.io/clients
Jedis
https://github.com/redis/jedis
引入依赖
创建对象,建立连接
Jedis使用
释放资源
连接池
SpringDataRedis
https://spring.io/projects/spring-data-redis
引入spring-boot-starter-data-redis依赖
yml配置redis
注入RedisTemplate
序列化方式
自动化
自定义RedisTemplate
修改RedisTemplate的序列化器为GenericJackson2JsonRedisSerializer
省内存
使用StringRedisTemplate
写入Redis时,手动把对象序列化为JSON
读取Redis时,手动把读取到的JSON反序列化为对象
AI for Science
原理
构建 数据提取 - 科学发现 - 优化求解 的完整科研闭环,减少试错,提高研发效率。
四大核心任务类型
预测型任务:构建 “输入 - 结果” 映射关系。将科研问题转化为可学习的映射模型,用 AI 预测替代高成本实验与仿真。
生成与设计型任务:主动产出全新候选方案。主动设计新对象与实验方案,需同时满足多目标约束。
因果与机理型任务:从相关性挖掘科学机理。
自动化实验闭环:将 AI 决策与自动化实验平台结合,形成设计 - 执行 - 数据回流 - 模型更新的循环系统。
科学数据体系:类型、差异与预处理
科学数据与互联网数据
AI4S常见数据形态及表征
科学数据预处理要点
模型架构选型:依据数据特征匹配模型、
序列数据(蛋白、基因、SMILES):选用Transformer,依托注意力机制解决长距离依赖问题。
图结构数据(分子图、知识图谱):选用GNN(图神经网络),通过消息传递聚合节点与邻域信息。
图像数据:传统图像用CNN捕捉局部特征;复杂全局图像用 ViT(视觉 Transformer) 建模全局关系。
多模态数据(融合文本、...
常用指令记录
起因是发现,现在记忆力越来越不得行了,有些工具没有用到就会慢慢忘记指令,再去相应搜索实在不方便。因此在这里进存档,方便自己查阅。
Git
git clone [仓库链接]
git add [被修改的文件] (. 表示所有的)
git commit
git push
git status:查看状态,可以看到是否有修改
git log:查看日志(恢复时需要用到)
.gitignore:在根目录下创建,对于需要忽视不追踪的文件名,写入
复原
删除的文件:git checkout [文件名.txt]
修改文件(没有add过):git checkout [文件名.txt]
修改且add / commit:git checkout [commitid] [文件名.txt]
分支
git init -b [分支名]
git branch:查看分支
git branch [新分支名]:仅用于创建分支,但不会切换到新分支
git branch -m [旧分支名] [新分支名]
git branch -d(已修改未合并)/ -D(强制删除)[新分支名]
git chec...
Agent智能体安全
Agent 具备行动、长效记忆、多源外部输入三大特性,风险从文本误导升级为实体业务破坏
原理
受威胁
密钥凭证
私有敏感数据
资金预算
生产系统运维权限
五层攻击面
Prompt 指令层(直接提示注入)
RAG / 记忆层(内容投毒、向量检索漏洞)
Tool 工具调用层(恶意参数、高危工具诱导调用)
运行环境层(沙箱逃逸、供应链污染)
人机流程层(社工、审批疏漏、权限配置失误)
五步攻击链
外部内容 / 用户输入注入→污染记忆与向量库→诱导高危工具越权执行→依托凭证横向渗透多系统→数据外泄 / 资金损耗 / 生产故障
OWASP
6 类高频风险,覆盖注入、信息泄露、不当输出、过度自主、向量缺陷、资源无节制消耗,是 Agent 安全管控基准清单
防护
工具调用安全:最小权限 + 分级授权
提示注入防护(直接 + 间接)
记忆 & RAG 专项防护(防范记忆投毒、向量漏洞)
资源管控:
预算:设置token
循环限制:限制重试次数
熔断机制:全自动→人工确认→只读→任务暂停熔断
沙箱与密钥管控:
高危工具代码执行置于隔离沙...
GUI Agent
原理
GUI 智能体(GUI Agent),简单说就是能看懂电脑 / 手机屏幕、听懂人话、自动操作软件干活的 AI,附带配套的工具调用技术。
一、什么是 GUI Agent
以前 AI 只能打字聊天,GUI Agent 突破限制:用户发一句自然指令,AI 自己看懂界面、点按钮、开软件、跨系统完成整套操作,解决人工重复干活、步骤繁琐、各软件数据不通三大麻烦。
靠OmniParser 视觉技术,AI 能截图识别页面按钮、文字、图标,大幅提升界面操作准确率。
二、核心运行原理:ReAct 思考 + 行动模式
模仿人做事逻辑:先动脑想步骤(Thought)→下达操作指令(Action)→看执行结果(Observation),循环往复做任务。
Function Calling:简单单步任务(查天气、调接口),直接调用固定工具接口,速度快;
ReAct:多步骤复杂任务(订外卖、退电商货物),边走边根据结果改方案,两者经常搭配使用。
整套执行分五步:用户发需求→AI 思考→调用工具 / 操作界面→接收结果反馈→做完就结束,没做完继续循环。
三、三种落地...
RAG检索增强生成
是将信息检索与文本生成深度融合的架构
原理
稀疏检索:关键词匹配与词频统计
稠密检索:词义嵌入向量的相似度匹配
嵌入编码:文本转为低维稠密向量
索引构建:存入向量数据库
相似度检索:余弦相似度,召回Top_k
编码融合生成:问题与检索文档一同输入编码器
Prompt拼接生成:将检索片段拼接在用户问题Prompt中
整体架构
挑战
检索准确性问题
稀疏+稠密混合检索
重排序模块
查询扩展与改写
多文档融合难度
系统效率瓶颈
知识时效性与更新
可信度与可追溯性
生成、校验
多源验证、置信度评分
代码
导包
1234import numpy as np, torchfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics.pairwise import cosine_similarityfrom transformers import AutoTokenizer, AutoModelForSeq2SeqLM
构建知识库
...
MoE混合专家模型
用于解决参数规模与计算成本的矛盾:
Dense(传统模型):参数变大,计算量线性增长
Sparse(MoE模型):参数量巨大,每次推理只激活其中一小部分
原理
一、MoE 是什么
稀疏激活大模型:总参数极大,但每个 token 只激活Top‑k 个专家,计算量不随参数暴涨。
普通 Dense:参数↑→计算 / 显存 / 带宽全↑
MoE:参数↑→每 token 计算可控
二、结构与位置
只替换FFN/MLP,Attention 保持 Dense
专家 = 独立 FFN 模块
现代 MoE 三件套:
共享专家:所有 token 必走,稳通用能力
路由专家:按 token 选 Top‑k,做专业化
细粒度专家:多而小,分工更细
三、路由 Router(怎么选专家)
给 token 打专家分数
Softmax 转概率
选Top‑k
选中专家权重重归一化
输出加权合并
Top‑1 vs Top‑2
Top‑1:省计算 / 通信,训练易不稳
Top‑2:更稳、防塌缩,成本更高
经验:训练 Top‑2,推理 Top‑1
四、系统核心:...
量化、蒸馏、部署
原理
量化
从高精度****浮点(FP16/BF16/FP32)转换为更低比特的表示(INT8、INT4等),刻度变少,降低显存内存占用。会导致一定精度下降。
量化权重:模型参数权重进行压缩
量化激活:推理时各层产生的中间激活也转换为低比特
KV缓存:注意力机制中的Key/Value缓存用低比特存储,避免每生成一个新 token 都重复计算之前的注意力信息
PTQ
训练完成后再把权重/激活从浮点转换为低比特,不再训练或只做少量校准
QAT
在训练/微调阶段把量化误差加入前向,让模型在训练中适应低比特噪声
蒸馏
logits蒸馏:匹配输出概率分布,学习概率分配方式
特征蒸馏:中间层
任务蒸馏:把教师当作“数据生成器/标注器”,生成高质量训练数据,训练学生进行SFT
训练要素
温度
损失
蒸馏损失
监督损失
权重
部署
训练框架(PyTorch)完成训练与验证
到处为更合适的形式(ONNX)
推理引擎在目标硬件(GPU/CPU/NPU)高效执行
NPU:低功耗下提供高推理效率,适合移动端与嵌入式
算子融合:将操作合并到一次...
2605
总结
五月主要在学习大模型知识,中间也穿插着举办活动和到处逛了逛,总体很充实。
改进
可能是重心可以转一下
计划
这几天给LLM收个尾,把重心转移后端的八股和刷lc学习
开始清理宿舍的东西,寄回家,做好随时回家的准备
存疑
也不算存疑,只是我个人的一个想法。
原本是想找实习的,但是感觉以我目前的储备,还有本科bg可能不太合适。学校这里又暂时不能走,两头跑不了。还有食宿费用,我还得等国家赈灾拨款下来哈哈哈。等一切结束,可能也没剩几个月实习了,就先不想了。
打算先为后面打下一些根基,让研一的时光可以更多从容些,早点去 实习/做RA 看看。希望这个选择没错吧。不过,选择也没有对错之分,之后不合适再修正就好啦。
多模态大模型
“视觉编码器对齐到 LLM”的完整流程跑通,并做 ablation(有图 vs 无图)对比
原理
多模态:将其他信号通过模态对齐映射为 tokens,实现 Any-to-Any
发展历程
CLIP:跨模态对比学习,图像-文本对训练,映射,建立联系
BLIP-2 & LLaVA:翻译,预训练好的LLM,通过Q - Forme r(BLIP-2) 或 线性投影层 (LLaVA)
GPT-4o & Gemini 1.5 pro:端到端全模态融合,训练初期视为同等信号
架构范式
视觉编码器:常用CLIP-ViT
对齐方案:
线性映射(LLaVA):信息完整,token多,速度慢
1)输入形态:视觉编码器(常见是 CLIP-ViT)把图像切成 patch,输出一串向量
2)投影(Projector):用一个线性层或两层 MLP 把每个 vi 映射到LLM 的维度di
3)拼接进 LLM:把视觉向量当作一段前缀 token,与文本 token 拼在一起
查询提取(BLIP-2, InstructBLIP):抓重点,压缩token,加速,但丢...
代码生成大模型
原理
任务:
生成代码
代码自动补齐
代码翻译与重构
要求:
语法严格
语义精确
代码大模型:在海量开源代码库(Github等)进行预训练或微调的大型语言模型(Codex和AlphaCode)
发展历史:
预设规则
补全功能
编写转向描述
评估体系:
HumanEval
pass@k
挑战:
正确性
语法错误
逻辑错误
可靠性
输出不稳定
逻辑不一致
性能波动
安全性
生成漏洞代码
泄露敏感信息
泛化能力
代码
导包
123import ast, builtins, math, re, tracebackimport numpy as np, torchfrom transformers import AutoTokenizer, AutoModelForCausalLM
模型选择
bigcode/tiny_starcoder_py
123AutoTokenizertok.pad_token=tok.eos_tokenAutoModelForCausalLM
数据集构造
name:任务名字
inst:任务说明...
复杂推理(思维链)
原理
进阶推理
CoT作为草稿提供中间步骤 + 验证机制进行审计
步骤变长后,误差可能累积
事后编造
对提示敏感
为推理:看起来合理但实际不对
token/时延成本增加
结构化CoT
A:Plan-and-Solve:列计划再逐步执行,减少跳步。
B:Least-to-Most:先解最简单子问题,逐步递进。先从确定性最强的子问题出发,逐步收缩推理空间,适合多约束任务。
ToT与多路径探索
相当于优化问题:多分支推理 + 分步评估 + 回溯选择
同一个问题同时探索多个候选思路(分支),每走几步就评估质量,不行就剪枝/回溯,再探索别的分支
工具调用 / ReAct思路
推理 - 行动(调用实际工具)- 更新修正
Prompt自动化
数学推理
PoT
把不擅长的环节交给擅长的工具:求 LLM在遇到需要精确计算的任务时,先生成一段可执行的程序(通常是 Python 代码或计算表达式),然后把计算交给解释器/计算器执行,再把执行结果组织成最终答案。
语义理解错误
代码生成错误
解决
强制分两段输出:可执行代码+最终答案
PRM
过程监督...
文本生成任务(翻译+问答)
原理
核心特征
任务约束性
语义一致性
格式规范性
训练
基座预训练 - 任务微调 - 落地适配
语义对齐预训练
任务指令微调
挑战展望
幻觉、长文本生成效率、低资源场景适配(数据稀缺)
轻量化、多模态、可控生成、事实增强
代码
调库
12345import reimport numpy as npimport torchimport sacrebleufrom transformers import AutoTokenizer, AutoModelForSeq2SeqLM
加载模型
翻译:Helsinki-NLP/opus-mt-en-zh
问答:flan-t5-small
加载,同前,不再赘述。
AutoTokenizer
AutoModelForSeq2SeqLM
model_mt.eval()
统一生成函数
123456789101112131415161718192021222324# 通过 temperature/top_p 切换 greedy 与采样@torch.no_grad()# top_p:概率...
通用信息抽取(IE)与序列标注
概念
信息抽取 lnformation Extraction
分类
信息抽取:非结构化文本到结构化知识的桥梁,是nlp里的任务
任务包括:
命名实体识别(NER):文本中识别出来实体,分类出类型
关系抽取(RE):在实体识别后,找出它们之间的关系类型和关系结构
事件抽取(EE):事件抽取依赖实体抽取和关系抽取
挑战
实体嵌套
非连续实体
Schema依赖与零样本:依赖于预先定义的标签集
序列标注协议
标注范式:将抽取任务转化为对序列中每个Token的分类任务
BIO:Begin, Inside, Outside
BILOU:Begin, Inside, Last, Outside, Unit
应用于:中文分词、词性标注、NER、词法分析、文本加标点
实现技术
深度学习
条件随机场(CRF)
发射矩阵:每个词对应什么标签的得分表
转移矩阵:从一个标签转移到另一个标签的得分
解码方法
模型已经给出了每个Token的标签得分(发射矩阵)和标签间的转移规则(转移矩阵),解码算法要做的就是 筛选,找到总得分最高的最优序列
...
知识编辑
不重新训练条件下的知识修正
整个kl过程
cur_logits = model(p)
KL(cur || base)
加入loss:loss = edit_loss + λ * KL
λ :小,改得动,但容易污染
λ :大,很稳,但改不进去
反向传播:grad = ∂loss/∂params
更新参数:optimizer.step()
原理
不同方法对比
知识编辑:局部修正(reliability、locality、portability)
微调(PEFT/LoRA):训练(梯度)
RAG:新知识放进外部检索
IKE:新知识+示例,放上下文(非持久的)
约束
Reliability:置信度(命中)
Locality:局部性
Generalization:广义性
Portability:可移植性
Ripple Effects:连锁反应
主流做法
ROME(Parameter Edit)
单条事实写入
先定位:定位哪个层
再编辑:用解析式构造对 MLP 权重的低秩/定向更新
MEMIT(Mass Edit)
多条记忆的结构化注入
...
模型水印与防滥用
原理
攻击手段
复述:使用另一种生成模型进行改写和润色,改变token分布与相邻关系
插入/删除:少量编辑,造成链条错位,使得token的种子与绿/红名单分配发生偏移
其他安全手段
指纹技术:记录模型生成时的参数特质(留下可追溯的运行痕迹)
记录与这次生成绑定的参数特征/元数据(例如模型版本、解码设置、随机种子、调用方ID、时间戳,或对输出做哈希签名),形成一条“指纹记录”
C2PA协议:打上数字签名(一份内容凭证:数字签名+元数据清单,来源说明)
包含生成/拍摄工具、发布者标识、时间、以及关键编辑步骤的记录,形成一条“内容履历”
红队测试:发布前找专家攻击模型、挖掘漏洞
系统性设计高风险提示(越狱、提示注入、诱导泄露、仇恨/暴力/违法内容等),记录模型在不同场景下的失败模式与触发条件。
代码过程
核心原理采用经典的 Greenlist/Redlist 词表分割水印(Kirchenbauer et al., 2023 的思路):
嵌入(embed):每步解码用密钥 + 上文生成一个“绿色 token 集合”,对绿色 token 的 lo...
强化学习
知识点
风险:
幻觉
有害内容(毒性、歧视)
奖励黑客:找漏洞提升RM,编造废话和拒绝回答
阶段2奖励:
数据形式,标记
训练打分器
阶段3RL:
PPO算法
要求:
调参数,提高RM
近端,小步快跑,限制每次更新的幅度
缺点:
训练不稳定:多个环节强耦合
DPO(直接偏好优化)
要求:
采用分类损失函数
比较相对概率差
W上升,L下降
优点:
省资源
稳
快
缺点:
复杂情况,推理不佳
初级任务
Banana任务——受限生成对齐
SFT:收集成千上万条人工编写的对话数据进行微调
RL:写出规则来“评分”,模型自己学习“怎么做”
硬性代码逻辑if-else 来控制输出格式
任务目标
“受限生成”任务:
A:以Sure:开头
B:以banana结尾
C:回答简短(对冗长输出惩罚)
Policy:Qwen
Reward:Python函数,格式正确+1.0,否则不得分
必要导包
1234import torchfrom transformers import AutoToken...
指令微调
有监督的指令微调
过程
检查安装包情况,使用的
准备数据集
instruction
input(可选)
output
数据条目整理成大模型可用的输入文本
Alpaca
Phi-3
划分数据集(85%,10%,5%)
数据组织成训练批次
预分词
补齐输入和目标(50256):不同batch不同长度,同一batch相同长度
50256替换为-100
所得结果,与只用前两个样本计算得到的损失是一样的。说明忽略了-100的这个样本。cross_entropy 默认就带有 ignore_index=-100 的设置,会自动跳过标签为 -100 的位置。留一个方便知道收尾的位置,即回答结束的时候。
数据加载器
数据移到目标设备.device()
预先固定函数的部分参数
加载预训练大语言模型(这次使用中等规模的版本gpt2-medium (355M))
from gpt_download import download_and_load_gpt2
from previous_chapters import GPTModel,l...
针对分类任务的微调
微调:在预训练模型的基础上做二次训练,把模型的能力对齐到某个明确任务或者使用场景上
本节任务:使用已有的预训练模型做邮件分类
分类微调:类别和数量是预定义好的
指令微调如下图所示:
前期流程
导包
读取数据
查看种类数量
控制数量一样多:下采样(降采样)
分类编码(0/1)
划分子集
1234567891011121314151617181920def random_split(df,train_frac,validation_frac): """ sample:随机抽样 - frac=1 表示“抽取 100% 的行”,相当于全量洗牌,随机打乱 reset_index:重新生成索引 - drop=True 表示不要把原来的索引作为一列保留下来。 """ # 下标 df=df.sample(frac=1,random_state=123).reset_index(drop=True) train_end=int(len(df)*train_...
无标签预训练
关键内容
预训练大模型的训练循环
模型评估代码,检查效果与质量
解码策略
保存和加载预训练权重
现代大模型与原先区别
不使用dropout
nn.Linear不使用bias
过程记录
训练
方便文本与token ID之间来回转换
12345678910111213141516import tiktokendef text_to_token_ids(text,tokenizer): encoded=tokenizer.encode(text,allowed_special={'<|endoftext|>'}) # 把 token id 列表转成 PyTorch 张量,形状是 [seq_len] # torch.tensor(encoded) -> 1D 张量,例如 [15496, 1234, ...] # unsqueeze(0) 在最前面增加一个 batch 维度,变成 [1, seq_len] # 这么做是因为大多数模型的输入都要求带 batch 维...
从头实现GPT模型
过程
参数含义
1234567"vocab_size": 50257, # 词汇表大小(token 总数)"context_length": 1024, # 上下文长度(一次最多处理的 token 数)"emb_dim": 768, # 嵌入维度(每个 token 向量的长度)"n_heads": 12, # 注意力头数(多头注意力的 head 数量)"n_layers": 12, # Transformer 层数(block 的数量)"drop_rate": 0.1, # Dropout 概率(训练时用于防止过拟合)"qkv_bias": False # Q/K/V 线性映射是否使用 bias(是否加偏置项)
完整GPT模型
GPT完整骨架
123456789101112131415161718192021222324252627...
大模型自学记录Day2
注意力机制
注意力机制解决的问题,对比:
RNN
按顺序逐词的方式处理文本
将输入压缩为中间状态,但容易遗忘。依赖该中间状态输入token容易丢失细节,要求不断会看完整输入(遗忘)
自注意力机制
访问全部输入状态的历史信息
回看整个输入
有选择回看(权重)
点积
计算点积:torch.dot(input_query, input_1)
对dot进行展开写:
12345678# enumerate:给每个元素自动编号res=0. # 小数形式i=0for idx, ele in enumerate(inputs[i]): res+=inputs[i][idx] * input_query[idx]res
点积与余弦相似度区别
点积:相关性的“原始分数”,关键取决于夹角(很强+很像)
a⋅b=∣a∣∣b∣cosθa⋅b=∣a∣∣b∣cosθ
a⋅b=∣a∣∣b∣cosθ
方向
长度
余弦相似度:去掉长度影响后的“纯方向相似度”(很像,语义检索常用)
cosθ=a⋅b∣a∣∣b∣\cos\theta=\frac{\mathbf...
大模型自学记录Day1
终于结束了考研,现在重新拾起我的博客,记录学习。
近几个月计划
毕业前
[ ] 大模型相关内容
[ ] 雅思
[ ] 化妆
毕业后
[ ] 课题组内容
[ ] 科研技能和知识
[ ] 学车
[ ] 做饭
LLM学习
基础阶段决定先根据:张梅山老师发布的大模型基础学习路线
特此感谢!
笔记只记录一些关键代码,方便后续回顾复盘
文本数据处理
过程
分词(encode)
**标准化:**读取文本,处理标点符号
**拆分 (Split):**使用 正则表达式将文本切分为列表
**去重与排序:**提取所有唯一的单词
**构建映射表:**词 —— ID
引入特殊上下文词元
未知单词
文档分隔符
反过来(decode)
输入文本
12345with open("the-verdict.txt", "r", encoding="utf-8") as f:# 以 UTF-8 编码打开文本文件(只读) raw_text = f.read() # 读取文件全...
写在前面
今天想着先把爬虫重新捡起来,再深入下。结果一打开,就看到12.14有4名因为非法爬取判处有期徒刑的新闻。。
只能说,接下来我要小心谨慎点了。
爬虫框架
调度器:相当于cpu,调度下面几个之间协调工作
URL管理器:带爬取URL和已爬取URL,通过内存、数据库、缓存数据库实现
网页下载器:传入URL下载网页,转为字符串。urllib
网页解析器:字符串进行解析,提取我们需要的。有:re、html.parser、beautifulsoup(可以多种)、lxml(解析xml和HTML)。html.parser、beautifulsoup、lxml都以DOM树方式进行解析。
可以测试能否爬取:
看robots.txt
网站测试
检验robots
豆瓣爬取
大部分的人启蒙应该都从豆瓣开始
在爬取之前,需要先补一下正则表达式的大坑(详见下一章),因为此次主要用正则表达式。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535...
写在前面
每月总结按理应该在每月最后一天进行,但由于某些原因,决定今日考完六级后稍作总结,以及今年最后半个月的计划。
所得成就:
广师大之星——十佳三好学生
Android算吗…
更加勇敢不怕尝试
不满意的地方:
对于既定的事情(长战线)例如:考研、软考、六级,,都没有准备好
有想法问题,应该及时沟通
制定planB,以及多思考的能力好像削弱了
情绪把控不够好
动作太慢了
计划:
准备期末考
好好地了解爬虫做一些小项目
看WIFI感知的书籍
开启背单词、听听力、积累词汇的模式
多抽时间看书,看一本深度的书去了解
14-20:计网
21-25:接口
25-30:编译原理
31-4:软工
剩下时间就查缺补漏
早上背单词,晚上听力,早上复盘晚上听的读。日常读一些英语文章。
书籍晚上看。
总结
多思考,找最优解,预备方案,想清楚再立刻行动
贵在坚持
多沟通、心情不好也别太闷
做些想做的!!
激励话语
要把自己培养成理想型,你会更加爱自己
写在前面
现在时隔大概1-2月,又重新开始博客记录。没有记录的原因是前段时间都未曾开展技术学习。
谈及原因,是这学期参加大多数评优评奖而全力改动PPT和练演讲。因此,没有收入就没有产出。
数据分析平台
缘由
我个人一直想做,作为Python大作业,也当作练手项目。
当初看到这个参照项目时,刚好有个人做了这么个项目,也愿意教授。
另一方面,是2020年已然有这样的技术,感到惊叹。
再者则是,对于作者数据分析师但能不断求知和探索能力的赞赏。
Django主要就是mtv+URL,对于这种项目mt完全用不上,交互问题很吃亏。后续可以考虑改为前后端分离。
分析
ref:Python Django+SQL+Pandas+Pyecharts自建在线数据分析平台 | 知乎,特此鸣谢!
需求&改变
脱离Excel的展示框架
VBA+ADO运行效率瓶颈
未来扩展方向
目前实现核心的功能需求。
技术
后端Web框架:Python3.11 + Django
数据库:MySQL
数据处理:Pandas + Numpy + mkl + 其他
Javascript库:JQuery...
渐进式框架
10.1—10.13,学习了半个月,Vue3 快速入门和 Vue2 基础大体学完了。应该还会有部分补充,Vue3 实操和项目。
遇到的问题
启动错误
1PS D:\桌面\Vue\day04\day04\准备代码\08-事件总线-扩展> npm run serve > day04@0.1.0 serve > vue-cli-service serve 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序
解决方法
1234567node -vvue --version-- 查看版本npm install @vue/cli-service --save-dev-- 安装核心服务模块npm run serve-- 启动服务
不同符号
12alert(`姓名: ${item.name} 年纪: ${item.age}`);// 模板字面量:使用反引号 ` 包裹字符串,可以在其中嵌入变量或表达式。
单文件组件
1234567891011121314<script...
启动
12>>> django-admin startproject helloDjango # 脚手架工具创建项目>>> python manage.py runserver # 启动
APP分类
内置:框架自带应用,admin(后台管理)、auth(身份鉴权)、sessions(会话管理)
自定义:实现自身业务逻辑
第三方:社区提供
结构
层次1
1234567django_news├── django_news // 项目全局文件目录│ ├── __init__.py│ ├── settings.py // 全局配置│ ├── urls.py // 全局路由│ └── wsgi.py // WSGI服务接口(暂时不用纠结这个是神马)└── manage.py // 项目管理脚本
层次2 APP
123456789news // news 应用目录├...
Python_note
pycharm的便捷方式:
alt+shift+alt+鼠标左键
ctrl+home光标移到第一行
ctrl+end光标移到最后一行
ctrl+g输入要跳转的行数
字符串格式化
1message = "Python是%s的编程语言,能让我们%s" %(num1, num2)
1print(f"我是{name}")
精度控制
1print("数字11.345宽度限制7,小鼠精度2,结果:%7.3f" % num)
输入
1name = input("你是谁?") # 输入的都是字符串
List(列表)有序的可变序列
Tuple(元组)有序的不可变序列
Set(集合)无序不重复集合
Dictionary(字典)无需Key-Value集合
条件、循环语句
123456789101112131415"""条件"""if a>b : # 缩进elif a<b: # 缩进else...
论文名:基于WIFI的人体行为感知技术研究
作者:朱旭
种类:南京邮电大学专业学位硕士研究生学位论文
关键词:行为感知、WIFI、CSI、人员识别、手语识别
人员识别
一、监测呼吸速率(note_1详细记录)
CSI进行共轭相乘
中值滤波
EMD经验模态分解
FFT子载波选择策略
恒虚警CFAR寻峰算法
二、人员识别
滑动窗口
Input:
行: NT * NR * K
式中:NT、NR分别是发送和接收天线,K为子载波选择的数目。
列: Nresample * t
式中:N是重采样率,t是采样时长。
设置窗口大小200,步长40,CSI产生86个样本。
CNN
可改进:
基于EMD的信号分解算法,如何选择IMF重构呼吸信号[40]动态;
均值类CFAR寻峰算法可以改进,CFAR算法中的自适应类;
进一步改进分类模型。
手语识别
一维数据插值
在一组已知数据点的范围内添加新数据点的技术。线性插值是一种使用线性多项式在已知数据点的离散集合范围内构造新数据点的曲线拟合方法,适用于一维数据。
Hampel滤波器-进行降噪
Hampel滤波器使...
用于后续手写python进行转换参考
main
计算子载波波长
天线排列
linspace(5.8153e9, 5.8347e9, 57);创建一个等间隔的频率数组。
linspace函数用于生成一个在指定区间内均匀分布的数值序列,起始频率5.8153GHz,终止频率5.8347GHz,生成的间隔数值57。
num2str 将数值转换为字符串
计算偏差
计算AoA估计
aoa_mat = naive_aoa(csi_src, antenna_loc, zeros(3, 1)); zeros(3,1)适用于RCO(射频链路偏移)的零向量,在这个例子里,RCO被假设为0
aoa_gt = [0; 0; 1]; 给定的地面真实AoA向量,假设实际AoA沿着z的单位向量
error = mean(acos(aoa_gt' * aoa_mat)); 里面先计算点积,得到余弦相似度,acos(cos(theta))就得到theta,两个向量之间的夹角,取平均,得到所有估计值的平均角度误差
TOF
概念
TOF
英文翻译中文
代码注解
输入:
csida...
公式推导
RSS:接收信号强度,计算公式:R=10lgp(p:接收端接收到的信息强度 / 发射端的信号强度)。一般是负值,-50dbm~0dbm则信号很好,理想状态下0。
RSSI:(MAC层信息)接收信号强度指示,人为处理得到的信号强度,RSS通过变换转为正值RSSI(无单位)。
CSI:(物理层信息)信号状态信息(通信链路的信道属性),描述信号在每条传输路径的衰弱因子:信号散射、环境衰弱、距离衰减等。
自由空间损耗模型——弗里斯传输公式
公式推导
以上两个推导过程结合来看
自由空间的路径损耗:RSS,是PL=10lg(Pt/Pr)
概念笔记
复现笔记
基于WiFi的人体行为感知技术研究_朱旭.caj
总流程图
数据信息:3接收、3发射,30个子载波,采样率200Hz
数据预处理
从CSI分离出与呼吸相关的动态分量
(1)时频分析
(2)相位差
(3)相位比
(4)共轭相乘
本论文采用CSI共轭相乘理论模型,结合MIMO技术,消除部分相位偏移。
滤除(中值滤波)
Monitor模式采取数据可能丢包,为使数据更准确。先进行线性插值,插值长...
这篇主要是WIFI感知(包括CSI)相关知识的一个梳理
入门
软硬件平台:基础至少需要一个发送设备+一个接收设备,各设备2-3个外接天线。
CSI测量工具:Linux Ubuntu系统安装,Atheros CSI tool、Intel 5300 NIC CSI tool,Nexus 5(不同测量工具对网卡版本均有要求)
CSI处理
进阶
感知算法设计
感知系统可视化
案例实践
Widar 3.0 http://tns.thss.tsinghua.edu.cn/widar3.0/
Wi-Fi感知,顾名思义,就是利用Wi-Fi信号实现对周围环境以及环境中的人体、物体状态的感知。现有Wi-Fi感知方法主要通过分析从Wi-Fi信号采集到信道状态信息(Channel State Information,CSI)实现
Atheros CSI Tool
官方网站
指引文件
开源地址
Intel 5300
官方网站
Nexus 5
官方网站
CSI基础处理
CSI测量值解析出来为a+bj的复数形式
相关工作及代码
自我翻阅的help
one road
two Wifi...
数据集
这份数据集的内容包括第一列用户id,第二列商品id,第三列类别id(比如冰箱属于家电类),第四列用户行为类型(包括pv:浏览/fav:收藏/cart:加入购物车/buy:购买),第五列时间戳。
数据导入
首先,使用Navicat将csv格式的数据集导入Mysql。
由于数据集过大,这里仅导入前300w行数据,并以此进行分析。
数据处理
更改数据列名
123456alter table userbehavior change f1 user_id int, change f2 item_id int, change f3 category_id int, change f4 behavior_type varchar(5), change f5 time_stamp int;
查找空值
123456789select * from userbehavior where user_id is null or item_id is null ...
查缺补漏
刷题
从第三行数据开始,只取一行
12SELECT * FROM employees ORDER BY hire_date DESCLIMIT 1 OFFSET 2
左连接
1234select last_name,first_name,dept_nofrom employees sleft join dept_emp don s.emp_no = d.emp_no
获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列
12345678910SELECT d.dept_no, d.emp_no, s.salaryFROM dept_emp dJOIN salaries s ON d.emp_no = s.emp_noWHERE s.salary = ( SELECT MAX(s1.salary) FROM dept_emp d1 JOIN salaries s1 ON d1.emp_no = s1.emp_no WHERE d1.dept_no = d.d...
Tableau下载地址
学生版认证–获取密钥
完成了,好激动!准备开始学习(Fighting)
数据库连接
连接
有多种连接的来源,可以供选择
当选择两个数据进行连接后,需要选择字段
提取方式
实时:每一次更新都需要导入数据
数据提取:存储到Tableau的数据库里面
筛选器:当数据较多,且已经明确了所要的数据时,可以提前在这筛选掉
保存方式
twb:不带数据,需要连接
twbx:内置数据
数据查看
性能和数据响应程度做取舍,都是需要成本的。
数据可视化
数据变成图表的过程,就是数据映射到视觉图形的过程
数据:维度和度量
数值型【度量】:一般由数字组成,表示为图表的面积大小、条形长短、颜色深浅等可以量化的视觉元素
类别型【维度】:有限的类别数或可区分组数,表示为图表的颜色种类、图形位置、分类方式等视觉元素
【度量】映射图形,【维度】负责区分
数据可映射的数据类型:
位置
散点图主要有四种数据规律
长度
角度,例如饼状图
方向,例如折线图
形状
面积和体积
颜色和深浅
可视化字典
视觉图形的暗示排序清单
数据可视化领域的四大金刚:...
Excel
基础概念
对数据进行备份
右键——移动或复制——移到最后——创建副本——隐藏
需要显现的时候,右键任意sheet,取消隐藏
数据理解
ctrl + shift + L /* 全部筛选 */
UV与PV:去重与不去重
CPC:单次广告的成本
数据透视表
筛选
插入切片器
透视表内的筛选
都可以进行筛选,区别是:切片器不只应用于透视表。
双击可以更改名称:
插入字段
函数
sum函数
新建窗口
冻结窗口
sum特殊
win + 上下左右 /* 任意分屏 */
中间加逗号可以分开来选。
sumif函数
锁定
sumif
sumif( 比对的数据行,标准,要的数据行)
sumifs
sumifs( 要的数据行,对比的数据行1,标准1,对比数据行2,标准2,...)
环比与同比
同比:上一年或者上一月
环比:上一个相邻的
拆解日期
组合日期
如果前一个月没有那一天,就会返回第一天。跨年算的结果是正确的。
不要用Excel的日期格式去存储日期,要用字符串格式。
...
《深入浅出数据分析》
坦白来说,也不是崇洋媚外,只是外国笔者的书籍有时确实比中国学者有趣得多。可能看起来讲的并不深入,但是作为启蒙书,会给你一步步启迪。
为防止后续遗忘,能不断巩固,写下此篇读书笔记。
数据分析引言:分解数据
四个流程:确定–分解–评估–决策
确定
首先,首席执行官或是客户(包括你自己)会给出一个浅薄的目标,比如提高销量。
此时,应该提出问题做深一步的确定问题。
分解
接下来对数据进行分解,确定基准假设。客户确定无疑的信息和你对数据的想法。
评估
加入本人的介入:做出自己的明确假设,以信用为自己的结论负责。写最终报告要提到自己,明确结论出处。
决策
粗略版本:
背景:来自于得到的材料,写下自己和客户的假设
数据解说:数据支持,图表辅助
建议:得出的结论
不是每一次分析结果都是理想的,当决策后出现偏差时候,考虑错误或不完整的信息。
从背景切入,某个客户确信的观点可能只是心智模型。
需要根据数据,对原本确定的目标,进行重新的确定。
可以向客户询问其不知道的事情。例如:
索要更多数据,进行分析和深入挖掘更多数据。
回顾整个模拟流程:
实验,检验你的...
2024.7.22 最终版本(安装软件+数据采集)
收发硬件配置就到这里完成了,这篇不会再改动和新增。
2024.7.15 19:46
想起我之前和朋友留下的誓言,昨天开完会确定了一些东西后,我也开始认真去做了(不过这点不能让老师知道,我是现在才开始想好好认真对待emm哈哈)。估计是个人性格和思想,总有些莫名的叛逆哈哈,只想做自己想做的,不想的都很拖拉,也就难以开始。但是不管是项目组还是这学期的javaweb,我都能感觉到逃避不是一个很好的解决方式,特别是对于你之后一定会要去做的事情上面,这样累积起来的疲惫会成倍,不如踏实好好做完,再毫无负担地开始些新的东西。所以呢,咳咳,我的总结就是:对于不想且之后一定不做的,一丁点心思也不花;对于不想但之后还是要做的(这种事嘛,多半是还蛮重要的)就去按部就班做完。
ok,不想说这么多了,开始正文。主要讲kernel的配置和安装。
搭建硬件平台
搭建的是Ubuntu version of Atheros CSI tool,主要用于收发CSI信号,用于后续实验收集数据做支撑来使用。
购买网卡
安装网卡和Ubuntu
由于这步的内容是组...
数据分析思维
数据分析过程
观测
(1)采集数据
解析系统日志
埋点获取新数据
通过传感器采集
爬虫解析网站
API获取数据
(2)存储数据
数据库
连接数据库取数
(3)展示数据
可视化高效传达信息
测量
设定标准
发现异常
应用数据创造价值
数据不断迭代产品和业务策略
明确目标
拆解目标
得到标准值
MECE:满足相互独立、且能够穷尽。
比较常见的拆解方法:
时间流程法
漏斗模型:AARRR,用户的流程
PDCA:质量管理,先规划再进行,定期检查过程问题
精益创业:根据想法快速建产品,并根据数据快速更改想法
模型框架法
优劣势比较
投入产出比
SWOT
量化公式法
穷尽要素法
整体分为各部分
是什么-为什么-怎么做-做什么
拆解方法的记录
拆解方法:
首先,需要符合MECE(无重复,无遗漏)
流程拆解法:流程分析进行拆解,适用于流程较长,环节较多,随着环节的进行,留存率越来越少的场景。
二分法:把事物分成A和非A两个部分。
象限拆解法:
(1)可用于找到问题的共性原因,将有...
写在这里
今天是2024年7月11日,准备继续开始学习数据分析的必要知识。
未接触的时候,我以为Python处理就算可以了甚至加分项,后来发现市面上更多使用Excel和MySql,看似很简单很枯燥是不是,但是当我前几天尝试学习Excel高级知识时候发现它的潜力远不止平常所用的功能。
该暑假学习完整个内容,如果能花时间做几个项目就更好了。
总路线
接下来将根据该学习路线,先试着进行:戴师兄数据分析自学路线
2024/7/28 修改路线
① 处理数据:Excel、Python、SQL
② BI工具:Tableau、PowerBI
③ 分析思维
④ 大数据知识
⑤ Python进阶
⑥ 数学知识
决定根据个人的学习情况,适当修改学习路线和进度:
已完成:
Excel
Tableau
SQL
改为先学FinBI,然后就先不用学习更多BI工具的使用,而是就Tableau和FinBI来更熟练掌握。
特此鸣谢!
建立数据分析思维
Excel 功能学习
BI 工具
SQL
其他了解:数仓、统计学知识、高数等
实操做项目
制作专属博客
用到的
hexo
Twikoo
MongoDB Atlas
vscode
由于最近一直在值班,没太多时间学些东西,第一篇就写写这篇博客的制作。
这里,主要是讲hexo的使用和后续基于Twikoo论坛的使用,由于前期所需工具大部分还未做博客之前就已经下载好了,具体如何安装已不太记得,大家自行网上查找相关教程。前期工具安装不在本节博客范围内。
需要的前期工具
PowerShell
其实就类似电脑终端,忘记是电脑自带的还是需要自己下载的。
Node.js
中文官网
大家网上自行搜素安装教程即可
检查是否安装完成
打开powershell
输入指令
显示如上,则已经按照完成。
安装目录下(即Node.js安装在的地方)
建立图上所框取的两个文件夹
Powershell里输入指令
环境变量配置
这一步一定不可缺少,否则将造成后续一些ERROR(亲测结果qwq)
我的电脑—右键属性—高级系统设置–环境变量
系统变量
(1)先新建一个Nodepath,如下图
(2)添加到path中
注意:有些路径需要改为自己的
...
欢迎大家来到我的博客
序言
首先,十分感谢大家点进我的博客。这是最近制作的个人博客,采用hexo的方式,本身是没有包含太多个人技术含量之说。但我很高兴,这样的开源时代,让一切都有迹可循和可以star、folk。
初心
这个博客主要是用于记录我的个人学习历程,包括但不限于:课程学习、项目研究、个人爱好琢磨。大部分是和编程计算机相关的学习内容。以及记录一些日常生活。
欢迎给我留言,如果你们也想创建个人的博客,十分乐意与你们进行交流,也期待你们将博客与我分享。期待一起进步!
互勉
成为天才的方法是什么?一以贯之的努力,不敢懈怠的人生,每天的微小积累会决定最终结果。这就是答案。
世界上大多数事情都没有太大的意义,真理与热爱除外。
如果你想要什么,就应该努力争取,不管用说的也好,用做的也罢,一定要努力争取才对。因为畏惧成人或者害怕失败,而把真实愿望藏在心里,直至腐败,成为一个自欺欺人的人,是非常不正确的做法。