Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0817
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 今天 不言自明的 日心说
- 经历的 很多前辈的流血 甚至 牺牲
- 我们今天都知道
- 一个太阳回归年
- 随着 时间往前
- 一年四季 春夏秋冬
- 符合这个 规律 回归
- 那 有没有 不随着时间 回归
- 而是 指数级爆炸的呢?🤔
- 1965 年
- 英特尔联合创始人戈登・摩尔
- 统计了 1958 年集成电路发明后至 1965 年的晶体管数量数据
- 他发现
集成电路上的晶体管数量每年都在翻倍
基于这个指数增长的历史趋势
- 1975 年
- 摩尔结合行业发展速度
将预测修正为每 18-24 个月 翻倍
# 摩尔定律验证 - 三张独立图片(无SimHei字体警告,实验楼专用)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# --------------------------
# 第一步:实验楼环境初始化配置(移除不存在的SimHei,彻底消除警告)
# --------------------------
plt.switch_backend('Agg') # 无GUI后端,仅保存图片
warnings.filterwarnings('ignore', category=UserWarning) # 屏蔽剩余无关警告
# 仅保留实验楼预装字体:优先文泉驿微米黑,其次DejaVu Sans(彻底移除SimHei)
plt.rcParams["font.family"] = ['WenQuanYi Micro Hei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
plt.rcParams['figure.dpi'] = 300 # 高清分辨率
plt.rcParams["font.size"] = 11
SAVE_DIR = "/home/project/" # 固定保存路径
# --------------------------
# 第二步:内置芯片数据集
# --------------------------
chip_data = {
"year": [1971, 1974, 1978, 1982, 1985, 1989, 1993, 1997, 2000, 2003, 2006, 2009, 2012, 2015, 2018, 2022],
"transistors": [
2300, 6000, 29000, 134000, 275000, 1180000, 3100000, 7500000,
42000000, 178000000, 291000000, 731000000, 1400000000, 1750000000,
8200000000, 80000000000
]
}
df = pd.DataFrame(chip_data)
# --------------------------
# 第三步:数据预处理与模型训练
# --------------------------
df["log2_transistors"] = np.log2(df["transistors"])
X = df["year"].values.reshape(-1, 1)
y = df["log2_transistors"].values
lr_model = LinearRegression()
lr_model.fit(X, y)
y_pred = lr_model.predict(X)
r2_score_val = r2_score(y, y_pred)
doubling_time_months = (1 / lr_model.coef_[0]) * 12
# --------------------------
# 第四步:生成第一张图 - 原始坐标系趋势图
# --------------------------
fig1 = plt.figure(figsize=(10, 6))
plt.scatter(df["year"], df["transistors"], color="#1f77b4", s=70, label="实际芯片数据")
plt.plot(df["year"], 2**y_pred, color="#ff4444", linewidth=2.5,
label=f"拟合线(R²={r2_score_val:.3f},翻倍周期={doubling_time_months:.1f}个月)")
plt.xlabel("年份", fontsize=12)
plt.ylabel("晶体管数量(个)", fontsize=12)
plt.title("摩尔定律验证:原始坐标系下晶体管数量增长", fontsize=14)
plt.legend(loc="upper left")
plt.grid(True, alpha=0.3)
plt.savefig(f"{SAVE_DIR}moores_law_original_coords.png", bbox_inches='tight')
plt.close(fig1)
# --------------------------
# 第五步:生成第二张图 - 对数坐标系趋势图
# --------------------------
fig2 = plt.figure(figsize=(10, 6))
plt.scatter(df["year"], df["transistors"], color="#1f77b4", s=70, label="实际芯片数据")
plt.plot(df["year"], 2**y_pred, color="#ff4444", linewidth=2.5,
label=f"线性拟合线(R²={r2_score_val:.3f},翻倍周期={doubling_time_months:.1f}个月)")
plt.yscale("log")
plt.xlabel("年份", fontsize=12)
plt.ylabel("晶体管数量(对数尺度)", fontsize=12)
plt.title("摩尔定律验证:对数坐标系下晶体管数量线性增长", fontsize=14)
plt.legend(loc="upper left")
plt.grid(True, alpha=0.3)
plt.savefig(f"{SAVE_DIR}moores_law_log_coords.png", bbox_inches='tight')
plt.close(fig2)
# --------------------------
# 第六步:生成第三张图 - 残差分析图
# --------------------------
fig3 = plt.figure(figsize=(10, 6))
residuals = y - y_pred
plt.scatter(df["year"], residuals, color="#2ecc71", s=70)
plt.axhline(y=0, color="#ff4444", linestyle="--", linewidth=2.5)
plt.xlabel("年份", fontsize=12)
plt.ylabel("残差(log2 晶体管数)", fontsize=12)
plt.title("摩尔定律验证:残差分析(随机分布=拟合有效)", fontsize=14)
plt.grid(True, alpha=0.3)
plt.savefig(f"{SAVE_DIR}moores_law_residual_analysis.png", bbox_inches='tight')
plt.close(fig3)
# --------------------------
# 第七步:终端输出保存提示
# --------------------------
print("="*80)
print("✅ 三张图片已全部生成(无字体警告),保存至实验楼项目目录!")
print("="*80)
print(f"1. 原始坐标系图:{SAVE_DIR}moores_law_original_coords.png")
print(f"2. 对数坐标系图:{SAVE_DIR}moores_law_log_coords.png")
print(f"3. 残差分析图:{SAVE_DIR}moores_law_residual_analysis.png")
print("="*80)
print(f"📊 核心验证结果:拟合优度R²={r2_score_val:.3f},翻倍周期={doubling_time_months:.1f}个月")
- 上面是原始坐标系
- 下面是指数坐标系
- 怎么体现残差呢?
- 现在总共多少种回归类型了?
- 回归模型 我们已经学过了 这样几种
- 线性
- 二(多)阶多项式回归
- 幂律回归
| 回归类型 | 对应场景 | 核心数学关系 |
|---|---|---|
| 线性回归 | 伽利略斜面实验(sinθ) | |
| 二阶多项式回归 | 单摆周期平方(T²) | |
| 幂律回归 | 伽利略斜面路程(√L) |
- 这里面
- 有匀速
- 有加速
- 有减速
- 那么现在ai的token发展属于哪种回归呢?
-
下次再说!👋
-
有没有爆炸式增长呢?🤔
-
我们下次再说👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。







