早课回顾
今天早课,我们了解了AI如何改变科学研究的方式——从蛋白质折叠到材料设计,从粒子物理到气候模拟。
三个核心要点:
- AI加速发现:传统需要数年的实验,AI可以在几小时内完成预测和筛选
- 跨学科融合:AI不是取代科学家,而是成为科学家的”超级助手”
- 开源生态繁荣:Python科学计算栈(NumPy、Pandas、Scikit-learn)让每个人都能参与AI+科学
今晚的实践课,我们直接上手——用开源Python工具做真实的数据分析和科学发现。
实操一:3分钟搭建科学计算环境
打开你的终端(Windows用户打开PowerShell,Mac/Linux用户打开Terminal),输入以下命令:
`bash
# 创建项目目录
mkdir ai_science && cd ai_science
# 创建虚拟环境
python3 -m venv .venv
# 激活环境(Linux/Mac)
source .venv/bin/activate
# Windows用户用:
# .venvScriptsactivate
# 安装科学计算全家桶
pip install numpy pandas matplotlib scikit-learn scipy jupyter
`
安装完成后,验证一下:
`bash
python3 -c “import numpy, pandas, sklearn; print(‘环境就绪!’)”
`
看到 环境就绪! 就说明你的AI科学实验室已经开张了。
💡 为什么用这些库?
– NumPy:科学计算的”地基”,处理矩阵和数组飞快
– Pandas:数据分析的”Excel加强版”,处理表格数据神器
– Matplotlib:画图工具,把数据变成可视化图表
– Scikit-learn:机器学习”瑞士军刀”,几十种算法开箱即用
实操二:用Pandas探索真实数据集
我们用一个真实的公开数据集——经典的鸢尾花数据集(Iris),这是机器学习入门的”Hello World”。
动手练习
创建文件 iris_analysis.py:
`python
import pandas as pd
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df[‘species’] = iris.target_names[iris.target]
# 基本信息
print(“=== 数据集概览 ===”)
print(f”样本数量: {len(df)}”)
print(f”特征数量: {len(df.columns) – 1}”)
print(f”类别: {df[‘species’].unique()}”)
# 统计描述
print(“n=== 统计摘要 ===”)
print(df.describe().round(2))
# 各类别均值对比
print(“n=== 各类别特征均值 ===”)
print(df.groupby(‘species’).mean().round(2))
`
运行:
`bash
python3 iris_analysis.py
`
你会看到150朵花、4个特征、3个品种的数据。这就是科学家用AI分析数据的第一步——先”看懂”数据。
进阶:可视化数据分布
在上面的代码末尾加上:
`python
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
features = iris.feature_names
for i, ax in enumerate(axes.flat):
for species in iris.target_names:
mask = df[‘species’] == species
ax.hist(df.loc[mask, features[i]], alpha=0.6, label=species)
ax.set_title(features[i])
ax.legend()
plt.tight_layout()
plt.savefig(‘iris_distribution.png’, dpi=150)
print(“图表已保存:iris_distribution.png”)
`
运行后你会得到一张2×2的直方图,清晰看到三个品种在四个特征上的分布差异。可视化是科学发现的眼睛。
实操三:用Scikit-learn做预测
科学家拿到数据后,最常见的任务就是”预测”——根据已知数据预测未知结果。
动手练习:预测鸢尾花品种
创建 predict_iris.py:
`python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 拆分:80%训练,20%测试
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 训练随机森林模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估
print(f”准确率: {accuracy_score(y_test, y_pred):.1%}”)
print(“n详细报告:”)
print(classification_report(y_test, y_pred, target_names=iris.target_names))
# 特征重要性
print(“n特征重要性排序:”)
importance = sorted(zip(iris.feature_names, model.feature_importances_),
key=lambda x: x[1], reverse=True)
for name, score in importance:
print(f” {name}: {score:.3f}”)
`
运行后你会看到准确率通常在95%以上,还能看到哪些特征对预测最重要。
🔑 关键概念:我们把数据分成”训练集”和”测试集”。模型从训练集学习规律,然后在测试集上验证——就像考试一样,不能用原题来考。
实操四:完整项目——用AI发现科学规律
现在我们做一个完整的”科学发现”项目:分析糖尿病进展数据集,找出哪些因素对糖尿病进展影响最大。
项目步骤
创建 diabetes_analysis.py:
`python
import pandas as pd
import numpy as np
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score
from sklearn.inspection import permutation_importance
import matplotlib.pyplot as plt
# === 第一步:加载数据 ===
diabetes = load_diabetes()
df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
df[‘target’] = diabetes.target
print(“=== 糖尿病数据集 ===”)
print(f”样本数: {len(df)}”)
print(f”特征: {list(df.columns[:-1])}”)
print(f”目标值范围: {df[‘target’].min():.0f} ~ {df[‘target’].max():.0f}”)
# === 第二步:特征分析 ===
print(“n=== 特征与目标的相关性 ===”)
corr = df.corr()[‘target’].drop(‘target’).sort_values(ascending=False)
for feat, r in corr.items():
bar = “█” * int(abs(r) * 30)
sign = “+” if r > 0 else “-“
print(f” {feat:>5s}: {sign}{abs(r):.3f} {bar}”)
# === 第三步:建模与验证 ===
X, y = diabetes.data, diabetes.target
model = RandomForestRegressor(n_estimators=200, random_state=42)
# 5折交叉验证
scores = cross_val_score(model, X, y, cv=5, scoring=’r2′)
print(f”n=== 模型性能(5折交叉验证)===”)
print(f”R² 分数: {scores.mean():.3f} ± {scores.std():.3f}”)
# === 第四步:特征重要性(科学发现的核心)===
model.fit(X, y)
perm_importance = permutation_importance(model, X, y, n_repeats=10, random_state=42)
fig, ax = plt.subplots(figsize=(10, 6))
sorted_idx = perm_importance.importances_mean.argsort()
ax.barh(range(len(sorted_idx)),
perm_importance.importances_mean[sorted_idx])
ax.set_yticks(range(len(sorted_idx)))
ax.set_yticklabels([diabetes.feature_names[i] for i in sorted_idx])
ax.set_xlabel(‘Permutation Importance’)
ax.set_title(‘哪些因素对糖尿病进展影响最大?’)
plt.tight_layout()
plt.savefig(‘diabetes_importance.png’, dpi=150)
print(“n图表已保存:diabetes_importance.png”)
`
运行后,你会看到:
- 相关性分析:哪些特征与糖尿病进展正/负相关
- 模型评估:R²分数告诉你模型的预测能力
- 特征重要性图:直观看到哪些因素最关键
🧪 这就是AI+科学的核心工作流:数据 → 探索 → 建模 → 发现规律。科学家用同样的流程,只是数据集更大、模型更复杂。
实操五:用SciPy做统计检验
科学发现需要”统计显著性”——你的发现不是偶然的,而是有统计学支撑的。
创建 stat_test.py:
`python
from scipy import stats
import numpy as np
# 模拟:两种药物的降压效果
np.random.seed(42)
drug_a = np.random.normal(10, 3, 50) # A药平均降压10mmHg
drug_b = np.random.normal(13, 3, 50) # B药平均降压13mmHg
# T检验:两种药物效果是否有显著差异?
t_stat, p_value = stats.ttest_ind(drug_a, drug_b)
print(“=== 药物效果对比 ===”)
print(f”A药平均降压: {drug_a.mean():.1f} mmHg”)
print(f”B药平均降压: {drug_b.mean():.1f} mmHg”)
print(f”nt统计量: {t_stat:.3f}”)
print(f”p值: {p_value:.6f}”)
if p_value < 0.05:
print(“n结论:p < 0.05,两种药物效果有显著差异!")
else:
print(“n结论:p >= 0.05,差异不显著,可能只是随机波动。”)
# 效应量(Cohen’s d)
cohens_d = (drug_b.mean() – drug_a.mean()) / np.sqrt(
(drug_a.std()2 + drug_b.std()2) / 2
)
print(f”效应量 (Cohen’s d): {cohens_d:.2f}”)
if abs(cohens_d) > 0.8:
print(“效应量很大,实际意义也很显著!”)
`
📊 统计检验是科学的”裁判”。AI可以帮你找到模式,但统计检验告诉你这个模式是否可靠。
今日总结
三个关键收获:
- Python科学计算栈是AI+科学的基础工具,NumPy + Pandas + Scikit-learn三件套解决80%的数据分析需求
- 科学发现的标准流程:数据加载 → 探索分析 → 可视化 → 建模预测 → 统计验证
- AI是加速器,不是替代品——它帮科学家更快地筛选假设、发现规律,但科学思维仍然是核心
今日行动项
- 运行代码:把今天5个实操的代码都跑一遍,看看输出结果
- 换数据集:用
sklearn.datasets里的其他数据集(如load_boston、load_wine)重复实操三的流程 - 思考你的领域:你的工作或学习中,有什么数据可以用今天的方法分析?把想法记下来
🚇 地铁深读:AI科学发现的里程碑事件
AlphaFold:解决50年难题
2020年,DeepMind的AlphaFold在CASP14竞赛中以碾压之势解决了蛋白质结构预测问题——这个难题困扰了生物学家50年。
为什么重要?
- 蛋白质的3D结构决定其功能,了解结构就能设计药物
- 传统方法(X射线晶体学)一个蛋白质要几个月到几年
- AlphaFold预测一个蛋白质结构只需几分钟
开源的力量:AlphaFold2的代码完全开源,任何人都可以使用。截至2026年,AlphaFold蛋白质结构数据库已包含超过2亿个预测结构,覆盖几乎所有已知蛋白质。
GNoME:AI发现新材料
2023年,DeepMind的GNoME(Graph Networks for Materials Exploration)发现了220万种新晶体结构,其中38万种被认为具有稳定性,有望用于制造更好的电池、太阳能电池和超导体。
传统材料发现依赖”试错法”——合成一个材料,测试性能,不满意就再试。GNoME用AI预测了数十亿种可能的组合,大幅缩小了搜索范围。
你也能参与
AI+科学不只属于大公司和顶级实验室:
- Kaggle竞赛:参加科学相关的数据科学竞赛,用AI解决真实问题
- Zooniverse:公民科学平台,帮助天文学家、生物学家标注数据
- NASA Open Data:NASA公开了大量科学数据集,等待你去探索
- arXiv:每天有大量AI+科学的论文发布,关注
cs.AI和q-bio分类
推荐学习路径:
- 入门:Coursera《Machine Learning》(Andrew Ng)
- 进阶:fast.ai《Practical Deep Learning for Coders》
- 专业:《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》(Aurélien Géron)
明早8点:Day67——早课 AI+教育:学习革命
今晚我们用代码体验了AI如何加速科学发现。明天早课,我们将探讨AI如何改变教育方式——个性化学习、智能辅导、自动评估,教育正在经历一场静悄悄的革命。
发表回复