Archived
第一次作业
This commit is contained in:
1 parent
198c94c4f0
commit
f054364b97
2 files changed
+176
No files matched your search
@@ -0,0 +1,2 @@
|
||||
.ipynb_checkpoints/
|
||||
.idea/
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "2d079df5-f984-4616-b4f1-44eff727e9bb",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 提示词\n",
|
||||
"\n",
|
||||
"``` \n",
|
||||
"任务:绘制学习曲线。给我Python代码,以实现绘制学习曲线的功能。学习曲线的形状是先平缓(代表投入很多学习但进度很慢),然后快速增加,然后又开始趋于平缓的S型曲线。下面是该学习曲线图上的文字:\n",
|
||||
"Learning curve\n",
|
||||
"Plateau\n",
|
||||
"you did it!\n",
|
||||
"Performance\n",
|
||||
"Steep acceleration\n",
|
||||
"Slow beginning\n",
|
||||
"Number of trials or attempts at learning\n",
|
||||
"注意:“Number of trials or attempts at learning”应当从0开始,而“Performance”要以百分比表示,适当调整图片上文字的位置(尤其是“Slow beginning”),避免被曲线遮挡\n",
|
||||
"```\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a1676dca-9ef4-4e4a-a2f9-02103e1fb5c1",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## LLM输出代码与绘制结果"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "8a943ea5-843c-4c92-8586-f85e19d30cf6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA98AAAKyCAYAAADM7m2AAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA3D1JREFUeJzs3Qd4FFUXBuAvhSTUhN5771XEQhEQFERAioJUKYqKFGn+FkAFpKOgKAgoiHQEBVFQqgWQpvTeO4RAKCEhyf+cGTYFNpA+Z3a/93mWzM5md+/slw05e+/c6xEZGRkJIiIiIiIiIkoxnin30EREREREREQkWHwTERERERERpTAW30REREREREQpjMU3ERERERERUQpj8U1ERERERESUwlh8ExEREREREaUwFt9EREREREREKYzFNxEREREREVEKY/FNRERERERElMJYfBMRkcHDw8O4uIM6derY5lj379+Pli1bIkuWLEifPr3R9vXr11vdLCIiIkog74TegYiIiFLHtm3bULt2bdy+fRutWrVChgwZsHTpUtSrVw8//PADnnvuOaubSERERPHkERkZGRnfbyYiItfl6Al2h/8WTpw4gZs3b6JUqVLQKiwsDOXKlcPBgwexbNkyNGrUyNh/9OhRY7+/vz+OHTsGHx8fq5tKRERE8cBh50RE5HYKFCiguvAWS5YswYEDB/Dss89GFd6icOHCaN68Oc6ePYu1a9da2kYiIiKKPxbfRERECv3000/G18aNG993m+ODg927d6d6u4iIiChxWHwTEVGih0WPHDnSGALt5+eHbNmy4eWXX8bx48edfu+ECRNQoUIF47zl3LlzG0Xl9u3b7/te6c2VIfBDhgwxrs+fPx9169Y1Hv/ff/+N+j4Zci3f16lTJ1y9ehU9evQwHjdjxoyoVasWduzYkegJ1woVKmRcZAj+mDFjUKxYMaRLlw5ly5Y12nOvGzduoHfv3kaPeubMmY1jW7VqldFDLff75ptvkFCOYy1duvR9t7Vu3RqzZs3C008/bVyXx5fjcfY88vrIbfJ6JfQ1njx5svF9X3311X2P63jO8ePHx9p/+PBhdOjQwchChsSXKFHC+DkJDw9P8GtARETkSlh8ExFRgkkxLcOhBw0ahKxZs+LNN980JgabN28eatSogXPnzt1XAPbp0wdp0qTBq6++akwUtmHDBuM+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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1000x700 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from scipy.special import expit # Sigmoid函数\n",
|
||||
"\n",
|
||||
"# 设置中文字体支持(如果需要)\n",
|
||||
"plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']\n",
|
||||
"plt.rcParams['axes.unicode_minus'] = False\n",
|
||||
"\n",
|
||||
"def generate_learning_curve():\n",
|
||||
" \"\"\"\n",
|
||||
" 生成模拟的学习曲线数据\n",
|
||||
" \"\"\"\n",
|
||||
" # x轴:学习尝试次数或时间点 (从0开始)\n",
|
||||
" x = np.linspace(0, 20, 400) # 调整范围从0到20,更符合\"trials/attempts\"的含义\n",
|
||||
" \n",
|
||||
" # 使用调整后的Sigmoid函数来模拟学习曲线\n",
|
||||
" # 将x进行缩放和平移,使其适合sigmoid函数的输入范围\n",
|
||||
" # Sigmoid函数输入通常在[-6, 6]左右变化较大,我们将其映射到[0, 20]\n",
|
||||
" x_scaled = (x - 10) * 0.6 # 中心在10,缩放0.6倍,使曲线在中间陡峭\n",
|
||||
" \n",
|
||||
" y = expit(x_scaled) # y值在[0, 1]之间\n",
|
||||
" \n",
|
||||
" # 将y值转换为百分比 [0%, 100%]\n",
|
||||
" y_percentage = y * 100\n",
|
||||
"\n",
|
||||
" return x, y_percentage\n",
|
||||
"\n",
|
||||
"def plot_learning_curve():\n",
|
||||
" \"\"\"\n",
|
||||
" 绘制学习曲线,并添加标注\n",
|
||||
" \"\"\"\n",
|
||||
" x, y = generate_learning_curve()\n",
|
||||
" \n",
|
||||
" fig, ax = plt.subplots(figsize=(10, 7))\n",
|
||||
" \n",
|
||||
" ax.plot(x, y, label='Learning Curve', color='blue', linewidth=2)\n",
|
||||
" \n",
|
||||
" # 添加标题和轴标签\n",
|
||||
" ax.set_title('Learning Curve', fontsize=16, fontweight='bold')\n",
|
||||
" ax.set_xlabel('Number of trials or attempts at learning', fontsize=12)\n",
|
||||
" ax.set_ylabel('Performance (%)', fontsize=12) # 修改Y轴标签为百分比\n",
|
||||
" \n",
|
||||
" # 设置网格\n",
|
||||
" ax.grid(True, linestyle='--', alpha=0.6)\n",
|
||||
" \n",
|
||||
" # Y轴设置为百分比格式\n",
|
||||
" ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda y, _: '{:.0f}%'.format(y)))\n",
|
||||
" ax.set_ylim(0, 100) # Y轴范围从0%到100%\n",
|
||||
" ax.set_xlim(0, max(x)) # X轴范围从0开始\n",
|
||||
" \n",
|
||||
" # 添加标注 - 调整位置避免遮挡\n",
|
||||
" # 1. Slow beginning (左下部分,x接近0,文字放在曲线起点的右侧上方,完全避开曲线)\n",
|
||||
" # 选择x轴较早但y值仍很低的点\n",
|
||||
" slow_begin_idx = 10 # x[10]大约在0.5,y值非常低\n",
|
||||
" ax.annotate('Slow beginning', xy=(x[slow_begin_idx], y[slow_begin_idx]), \n",
|
||||
" xytext=(x[slow_begin_idx]+3, y[slow_begin_idx]+20), # 大幅向右上偏移\n",
|
||||
" arrowprops=dict(arrowstyle='->', color='red', lw=1.5),\n",
|
||||
" fontsize=10, color='red', fontweight='bold')\n",
|
||||
"\n",
|
||||
" # 2. Steep acceleration (中间陡峭部分,x接近10)\n",
|
||||
" steep_idx = len(x) // 2 # 大约在x=10的位置\n",
|
||||
" ax.annotate('Steep acceleration', xy=(x[steep_idx], y[steep_idx]), \n",
|
||||
" xytext=(x[steep_idx]-4, y[steep_idx]+20), # 向左上偏移更多\n",
|
||||
" arrowprops=dict(arrowstyle='->', color='green', lw=1.5),\n",
|
||||
" fontsize=10, color='green', fontweight='bold')\n",
|
||||
"\n",
|
||||
" # 3. Plateau (右上部分,x接近最大值)\n",
|
||||
" plateau_idx = -40 # 接近末尾但不是最末端\n",
|
||||
" ax.annotate('Plateau', xy=(x[plateau_idx], y[plateau_idx]), \n",
|
||||
" xytext=(x[plateau_idx]-4, y[plateau_idx]-15), # 向左下偏移\n",
|
||||
" arrowprops=dict(arrowstyle='->', color='orange', lw=1.5),\n",
|
||||
" fontsize=10, color='orange', fontweight='bold')\n",
|
||||
"\n",
|
||||
" # 4. \"you did it!\" (接近最大值的地方,y接近100%)\n",
|
||||
" success_idx = -20 # 不在最末端,避免与Plateau重叠\n",
|
||||
" ax.annotate('you did it!', xy=(x[success_idx], y[success_idx]), \n",
|
||||
" xytext=(x[success_idx]+2, y[success_idx]-20), # 向右下偏移\n",
|
||||
" bbox=dict(boxstyle=\"round,pad=0.3\", facecolor=\"lightgreen\", alpha=0.8),\n",
|
||||
" arrowprops=dict(arrowstyle='->', color='darkgreen', lw=1.5),\n",
|
||||
" fontsize=10, color='darkgreen', fontweight='bold')\n",
|
||||
"\n",
|
||||
" # 调整布局以避免标签重叠\n",
|
||||
" plt.tight_layout()\n",
|
||||
" \n",
|
||||
" # 显示图形\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
"# 执行绘图\n",
|
||||
"plot_learning_curve()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6636f291-9488-4444-bef5-74cd40d5f4d2",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 我的思考\n",
|
||||
"\n",
|
||||
"- 通义千问的编程能力有很大提升,下次作业换Claude来对比一下(如果还能用AI的话\n",
|
||||
"- AI编码的时候真的很热衷于给一大堆注释\n",
|
||||
"- 我没装Anaconda Navigator,我还是习惯拿Pycharms配环境,能避免很大麻烦"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in new issue
Block a user