人机协同的基本原则(合规前提)
根据 CSDN 规范第 2、9 条,科研中使用 AI 必须遵守以下原则:
- 责任主体不可转移:AI 生成的内容必须经过人工审查、调试和注释,最终的代码和结论由作者负责。
- 不替代科研本质工作:实验设计、假设提出、误差分析和论文撰写逻辑仍然需要研究人员主导。
- 规避版权风险:不得生成受版权保护的教材课后题答案;不得复现未开源论文的核心算法细节;不得爬取付费数据库内容。
- 数据安全第一:敏感实验数据仅在本地环境中处理,避免上传到不可控的第三方平台。
AI 擅长环节 × 人类主导环节:四类科研任务的高效组合
1. 编程环节:AI 补全模板,人类把控逻辑
需求理解:
- 无法理解未明确表述的科研目标。
- 明确输入/输出、约束条件和评价指标。
伪代码/注释撰写:
- 根据自然语言注释生成初稿。
- 用精确的技术语言描述任务(例如:“用 IQR 剔除异常值”)。
API 调用:
- 补全 pandas/sklearn/matplotlib 常用函数调用。
- 选择合适的方法(例如:t 检验 vs Mann-Whitney U)。
边界测试:
- 容易忽略 corner case。
- 设计测试用例(空输入、NaN、极端值)。
注释与文档:
- 生成基础 docstring。
- 补充原理说明、引用文献和局限性分析。
合规实践示例:数据标准化模块生成
人类撰写需求注释(关键输入):
# 需求:对 DataFrame 中数值列做标准化
# 要求:
# 1. 仅处理 float64/int64 类型列
# 2. 使用 sklearn StandardScaler(保留均值/标准差以便反变换)
# 3. 返回新 DataFrame + scaler 对象(供后续反变换用)
# 4. 不修改原始数据
AI 生成初稿 + 人类优化后:
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np
def standardize_numeric(df: pd.DataFrame):
"""标准化数值列(保留 scaler 用于反变换)
Args:
df: 输入 DataFrame
Returns:
standardized_df: 新 DataFrame(含标准化数值列 + 原始非数值列)
scaler: 拟合后的 StandardScaler,可调用 scaler.inverse_transform()
numeric_cols: 被标准化的列名列表
"""
# 识别数值列(避免 object/bool 类型误处理)
numeric_cols = df.select_dtypes(include=[np.number]).columns.tolist()
if not numeric_cols:
raise ValueError("未找到数值型列")
# 拟合 scaler 并转换
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df[numeric_cols])
# 构建新 DataFrame(保留原索引与非数值列)
result_df = df.copy()
result_df[numeric_cols] = scaled_data
return result_df, scaler, numeric_cols
# 使用示例(人类补充)
# df_std, scaler, cols = standardize_numeric(raw_df)
# origin = pd.DataFrame(scaler.inverse_transform(df_std[cols]), columns=cols)
合规点:使用
sklearn(PyPI 开源库,BSD 许可);无硬编码路径/隐私数据;注释含参数/返回值说明,符合 PEP257。
2. 绘图环节:AI 生成模板,人类定制风格
科研图表核心需求:准确 > 美观 > 期刊适配。
人机分工策略:
- 图类型选择:基于统计特性判断(散点图 vs 箱线图 vs 小提琴图)。
- 基础代码生成:根据描述生成 matplotlib/seaborn 模板;检查坐标轴标签、单位和尺度的合理性。
- 多子图布局:生成 subplot 代码框架;调整间距
和对齐。plt.tight_layout() - 期刊格式适配:仅提供基础设置;按 Nature/IEEE 要求调整字体、线宽和颜色。
合规实践:生成符合出版要求的箱线图
人类 Prompt(精准描述):
利用 seaborn 绘制箱形图:x轴为‘group’(分为3类),y轴为‘score’;增加透明度为0.6的散点;图表标题为‘Performance Comparison’;y轴标签为‘Accuracy (%)’;采用 IEEE 建议的蓝色调色板;以 600 dpi 的 TIFF 格式(不压缩)保存图像。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 创建示例数据集(在实际应用中应替换为真实的实验数据)
np.random.seed(42)
dataset = pd.DataFrame({
'分类': ['组A']*100 + ['组B']*100 + ['组C']*100,
'得分': np.concatenate([
np.random.normal(0.85, 0.05, 100),
np.random.normal(0.78, 0.08, 100),
np.random.normal(0.82, 0.06, 100)
])
})
# 设置 IEEE 推荐的蓝色调色板:#0072BD(可根据需求调整)
sns.set_theme(style="whitegrid")
plt.figure(figsize=(6, 4))
# 绘制箱形图及散点图
axis = sns.boxplot(data=dataset, x='分类', y='得分',
palette=['#0072BD']*3, # 使用单色调色板
width=0.5)
sns.stripplot(data=dataset, x='分类', y='得分',
color='black', alpha=0.6, size=3, jitter=0.2)
axis.set_title('性能对比', fontsize=12)
axis.set_xlabel('方法', fontsize=10)
axis.set_ylabel('准确率 (%)', fontsize=10)
axis.tick_params(labelsize=9)
# 配置字体以适应出版物要求(解决中文显示问题)
plt.rcParams['font.family'] = 'DejaVu Sans'
plt.tight_layout()
plt.savefig('boxplot.tiff', dpi=600,
pil_kwargs={"compression": "tiff_lzw"}) # 采用无损压缩
plt.show()
合规性检查: 使用开源工具
seaborn
/
matplotlib
确保输出格式为 TIFF(广泛用于科学研究出版);
避免依赖任何商业软件;
颜色选择符合学术标准,避免使用过于鲜艳或俗气的颜色。
实验设计部分:AI 负责设计流程,人类确定评估标准 高效协作模式:参数搜索 + 自动化记录 参数组合生成 利用
itertools.product
创建所有可能的参数组合
确定参数范围和步长(依据先前的知识)
编写实验脚本框架
生成主循环、异常处理机制以及结果记录模块
插入实际模型训练和评估逻辑
结果汇总
构建 DataFrame 表格汇总结果
标注统计显著性标志(例如 * p<0.05)
遵守最佳实践:实现超参数实验的自动化脚本
import itertools
import pandas as pd
import numpy as np
from scipy import stats
def simulate_evaluation(model_type, parameters):
"""模拟评估函数(实际应用时由人类提供真正的训练过程)"""
if model_type == "随机森林":
base = 0.75 + 0.1 * np.log(parameters['最大深度']) - 0.002 * parameters['最大深度']
else: # 支持向量机
base = 0.70 + 0.05 * np.log(parameters['C'])
return np.random.normal(base, 0.03, 5) # 进行五次重复测试
# 定义参数空间
param_space = {
"随机森林": [{'最大深度': depth} for depth in [5, 10, 20]],
"支持向量机": [{'C': c_value} for c_value in [0.1, 1, 10]]
}
evaluation_results = []
for model, param_options in param_space.items():
for option in param_options:
scores = simulate_evaluation(model, option)
evaluation_results.append({
'模型': model,
'参数': option,
'平均得分': np.mean(scores),
'标准差': np.std(scores),
'p值': stats.ttest_1samp(scores, 0.7).pvalue
})
results_df = pd.DataFrame(evaluation_results)
print(results_df)
model': model,
**param,
'mean_acc': np.mean(scores),
'std_acc': np.std(scores),
'n': len(scores)
})
df_results = pd.DataFrame(results)
# 人类主导:添加统计检验(如 RF_depth=20 vs SVM_C=10)
idx1 = (df_results['model'] == 'RF') & (df_results['max_depth'] == 20)
idx2 = (df_results['model'] == 'SVM') & (df_results['C'] == 10)
t_stat, p_val = stats.ttest_ind_from_stats(
mean1=df_results.loc[idx1, 'mean_acc'].values[0],
std1=df_results.loc[idx1, 'std_acc'].values[0],
nobs1=df_results.loc[idx1, 'n'].values[0],
mean2=df_results.loc[idx2, 'mean_acc'].values[0],
std2=df_results.loc[idx2, 'std_acc'].values[0],
nobs2=df_results.loc[idx2, 'n'].values[0],
equal_var=False
)
print(f"RF (depth=20) vs SVM (C=10): p = {p_val:.4f}")
df_results = df_results.round(4)
优点:
- 避免了手动记录可能产生的错误;
- 结果以结构化形式呈现,方便后续生成LaTeX表格;
- 统计检验的代码具有良好的复用性。
数据处理阶段:AI编写清洗脚本,人类审核逻辑
常见场景: 多源异构数据的整合
人类设定规则:
- 缺失值处理:传感器数据采用线性插值填补;问卷数据使用众数填充;
- 异常值处理:物理量超出合理范围的数据点(如温度超过1000°C)应被移除;
- 单位转换:所有数据统一转换为国际单位制(SI单位),如米(m)、千克(kg)、秒(s)。
AI根据上述规则生成的数据清洗函数:
def clean_sensor_data(df):
"""数据清洗函数,遵循人类设定的规则由AI实现"""
# 温度列('temp_K')中的异常值剔除(物理上限设为1500K)
df = df[(df['temp_K'] > 0) & (df['temp_K'] < 1500)]
# 压力列缺失值使用前后5个数据点进行线性插值
df['pressure_Pa'] = df['pressure_Pa'].interpolate(limit=5, limit_direction='both')
# 问卷类列('q1', 'q2', 'q3')的缺失值用众数填充
q_cols = ['q1', 'q2', 'q3']
for col in q_cols:
if col in df.columns:
mode_val = df[col].mode()
fill_val = mode_val.iloc[0] if not mode_val.empty else 0
df[col].fillna(fill_val, inplace=True)
return df.reset_index(drop=True)
合规性:
- 不依赖于“一键式”数据清洗黑箱;
- 每一操作步骤均有清晰的依据;
- 易于在学术论文的Methods部分进行描述。
三、2025年科研友好的推荐工具组合
- 代码生成: VS Code + 通义灵码(开源插件)- 完全本地运行,确保数据安全。
- 文档辅助: Obsidian + Copilot 插件 - 笔记本地保存,AI辅助撰写。
- 实验管理: MLflow(开源)+ GitHub Actions(CI/CD)- 自动记录实验参数与指标,增强可复现性。
- 公式处理: Mathpix Snip(OCR转LaTeX)+ Overleaf - 免费版功能充足,输出符合标准的LaTeX文档。
- 模型调试: Jupyter + Explainable AI (SHAP/LIME) - 利用开源库提高模型解释性和结果的可信度。
流程标准化:
明确需求 → 人工写注释 → AI 生成初稿 → 人工精修 → 单元测试 → 归档
工具轻量化:
- 优先选择可以在本地环境部署的开源工具(例如,使用Ollama运行Qwen),以减少数据泄露的风险。成果可追溯:
- 在代码中加入关键决策的注释,例如:
# 选用Mann-Whitney U检验的理由:数据不符合正态分布,Shapiro-Wilk检验的p值=0.012
持续迭代:
为了提高生成的质量,建议定期更新提示技巧,例如添加“请使用 pandas 2.0 的新 API”这样的内容。


雷达卡


京公网安备 11010802022788号







