分类 学习笔记 下的文章

前段时间尝试用各种笔记软件,最后决定还是自己搭建一个独立的博客,用来沉淀学到的知识。

在使用了一段时间后,我发现“记录”和“理解”是两回事。以下是近期关于知识管理的三点反思:

  1. 不要做收藏家,要做加工者
    以前看到好文章就点收藏,结果收藏夹吃灰。现在强制自己看完了必须写三句话总结,哪怕写得不好,也是经过大脑加工的内容。
  2. 建立目录树(树状结构)
    人的大脑是网状发散的,但文字展示需要逻辑。像树状图一样的分类(比如:编程开发、认知心理学),能强迫你在记录时去思考:这个知识点属于哪个主分支?它和周围的节点有什么联系?
  3. 输出倒逼输入
    当你尝试把“认知行为疗法”或者“Python 算法”写成一篇别人能看懂的文章时,你会发现很多你以为懂了的地方,其实概念还很模糊。写文章的过程,就是查漏补缺的过程。

这个网站将作为我的线上笔记本,记录学习轨迹,持续更新。

今天重温了一下高等数学里关于“导数”的基础概念。离开学校多年,很多公式忘了,但导数的物理意义——“瞬时变化率”,在很多领域都非常有用。

一阶导数:速度
一阶导数描述了函数值改变的快慢。
如果我们在一个二维坐标系里画一条曲线,一阶导数大于0,说明曲线在上升;小于0,说明在下降。

在实际应用中,我们通常看到的是离散的数据点(比如每天的数据)。这时候,一阶导数就可以近似用“今天的数据减去昨天的数据”(差分)来表示。

二阶导数:加速度
二阶导数,就是对一阶导数再求一次导。
它描述的不是改变的速度,而是改变速度的“速度”。

如果一阶导数在增加,说明在加速。

如果一阶导数还在大于0,但二阶导数变小了(小于0),说明虽然还在增长,但增长的势头在减弱。

在分析复杂的趋势时,仅仅看数值大小是不够的。结合一阶导数看方向,结合二阶导数看力度的变化,往往能提前发现拐点。这也是数学算法在现实问题中的一种直观映射。

最近在读认知行为疗法(CBT)相关的书,里面提到的“情绪ABC理论”让我印象很深。

简单来说:

A (Activating event):发生的事情。

B (Belief):我们对这件事情的看法和信念。

C (Consequence):我们产生的情绪和行为结果。

以前我总以为是“发生的事情(A)”直接导致了“结果(C)”。比如遇到突发状况,我觉得烦躁是理所当然的。但ABC理论指出,真正决定结果的,是我们内在的信念(B)。

举个例子:
同样是面对一次考试的失利(A)。

如果信念是“我真是个废物”(B1),结果就是极度沮丧,甚至放弃学习(C1)。

如果信念是“这说明我这一章没掌握好”(B2),结果就是查漏补缺,继续复习(C2)。

反思:
很多时候,我们在面对复杂信息时产生的焦虑,往往是因为潜意识里带有“必须完美”、“非黑即白”的不合理信念。觉察到这些自动思维,并尝试用更客观的视角去替代它,情绪状态就会平稳很多。

记录一下,作为后续思维记录表练习的基础。

在处理历史数据时,最头疼的就是时间轴对不齐。今天复习了一下 Pandas 处理时间序列的几个基础操作,做个备忘。

  1. 转换为 Datetime 对象
    从 CSV 里读出来的时间通常是字符串,必须转换格式,否则无法进行时间相关的计算。
# 假设原始数据有一列叫 'datetime_str'
import pandas as pd
df['datetime'] = pd.to_datetime(df['datetime_str'])
df.set_index('datetime', inplace=True) # 设为索引,方便后续切片

2.按时间范围切片
用 loc 提取某一段时间的数据非常方便。

# 提取 2024年1月 到 2024年3月 的数据
subset = df.loc['2024-01-01':'2024-03-31']

3。时间重采样 (Resample)
如果我想把分钟级别的数据,汇总成小时级别的数据:

# 按 1 小时重采样
ohlc = df.resample('1H').agg({
    'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last',
}).dropna()

注意这里必须用 .agg() 指定每一列的聚合方式,否则默认只会算平均值。

写代码处理数据,最怕的就是差之毫厘。尤其是时间对齐,一旦错位,后面算出来的所有结果都是错的。