当前位置: 首页 > news >正文

【Python机器学习入门1】VSCode环境配置与Python基础

课程概述

欢迎来到Python机器学习世界!

亲爱的学习者,欢迎开启你的机器学习之旅!这是一套专为零基础初学者设计的完整课程,通过24个精心设计的课时,带你从完全不懂编程到能够独立完成机器学习项目。

课程设计理念

为什么选择机器学习? 机器学习是当今最具影响力的技术之一,它正在改变我们的生活:

  • 🛍️ 智能推荐:淘宝、抖音的个性化推荐系统

  • 🗣️ 语音助手:小爱同学、Siri的语音识别

  • 🏥 医疗诊断:AI辅助疾病诊断

  • 🚗 自动驾驶:特斯拉、百度的自动驾驶技术

  • 💳 金融风控:银行欺诈检测系统

我们的教学理念

  • 从零开始:不需要任何编程基础

  • 实战驱动:每个概念都配有可运行的代码示例

  • 工具友好:使用完全免费的VSCode工具

  • 项目导向:通过真实项目串联所有知识点

  • 循序渐进:精心设计的学习路径,步步为营

学习路径规划

我们的24课时课程分为四个阶段:

第一阶段:基础准备(第1-6课时)
  • Python编程基础

  • 数据处理与可视化

  • 开发环境配置

第二阶段:核心概念(第7-12课时)
  • 机器学习基础概念

  • 数据预处理技术

  • 模型评估方法

第三阶段:算法实战(第13-18课时)
  • 常用机器学习算法

  • 模型训练与调优

  • 无监督学习技术

第四阶段:项目实战(第19-24课时)
  • 端到端项目开发

  • 模型部署基础

  • 成果展示与总结

工具选择:为什么是VSCode?

VSCode的优势

  • 🆓 完全免费:无需担心许可证问题

  • 🔧 功能强大:提供专业级的开发体验

  • 📚 生态丰富:海量扩展插件

  • 🌐 跨平台:Windows、macOS、Linux全支持

  • 🤖 AI智能:内置AI代码补全功能

VSCode + Jupyter扩展 = 完美组合 我们将使用VSCode的Jupyter扩展,它结合了代码编辑器和交互式笔记本的优点,让你既能享受专业的代码编辑功能,又能进行交互式数据探索。

学习目标

完成本课程后,你将能够:

  • ✅ 熟练使用Python进行数据处理和分析

  • ✅ 理解并实现常见的机器学习算法

  • ✅ 使用VSCode进行专业的项目开发

  • ✅ 完成端到端的机器学习项目

  • ✅ 具备继续学习深度学习的基础

所需基础

  • 数学基础:高中数学水平即可

  • 编程基础:零基础开始,我们会手把手教学

  • 英语基础:能够阅读简单英文文档

  • 学习态度:保持好奇心和坚持学习的决心

学习建议

  1. 动手实践:编程是技能,只看不练很难掌握

  2. 循序渐进:不要跳课,每个课时都是后续内容的基础

  3. 多问多查:遇到问题先尝试自己解决,再寻求帮助

  4. 坚持练习:每天进步一点点,比一次性学很多更有效

现在,让我们开始第一课时的学习!


第一课时:VSCode环境配置与Python基础

课时概览

学习目标:完成VSCode环境配置,掌握Python和Jupyter Notebook基础操作
预计时长:2-3小时(可按自己的节奏学习)
核心工具:VSCode + Jupyter扩展
学习成果:能够独立创建和运行Python程序,理解基本编程概念

本课时的重要性

第一课时就像建房子的地基,虽然可能有些枯燥,但这是成为机器学习工程师的重要第一步。正确的环境配置和基础概念理解,可以避免后续学习中的很多问题。


一、开发环境配置

1.1 为什么选择这个工具组合?

详细讲解

在学习编程的初期,选择一个合适的开发工具非常重要。我们选择VSCode + Jupyter扩展的组合,原因如下:

VSCode的优势

  • 智能代码补全:输入代码时自动提示,减少拼写错误

  • 实时错误检查:立即发现代码中的问题

  • 强大的调试功能:像侦探一样追踪代码执行过程

  • 丰富的扩展生态:可以通过插件扩展各种功能

  • 完全免费:不用担心许可证问题

Jupyter扩展的优势

  • 交互式编程:可以分块运行代码,立即看到结果

  • 混合文档:代码和说明文字可以写在一起

  • 数据探索友好:特别适合数据分析和机器学习

  • 可视化支持:图表可以直接在笔记本中显示

这个组合为什么适合初学者

  1. 降低学习门槛:不需要记忆复杂的命令行操作

  2. 即时反馈:每写一行代码都能立即看到结果

  3. 错误友好:错误信息清晰,便于理解和修复

  4. 培养好习惯:从一开始就使用专业工具

1.2 安装步骤详解

详细讲解

让我们一步步完成环境配置。请严格按照顺序操作:

步骤1:安装Python

Python是我们的编程语言,就像学英语需要先学字母一样。

安装步骤:
1. 访问Python官网:https://www.python.org/downloads/
2. 点击黄色的"Download Python"按钮
3. 运行下载的安装程序
4. **重要**:在安装向导中,务必勾选"Add Python to PATH"
5. 点击"Install Now"完成安装验证安装:
1. 打开命令行(Windows:按Win+R,输入cmd;macOS:打开终端)
2. 输入:python --version
3. 如果显示Python版本号(如Python 3.9.0),说明安装成功

为什么需要添加到PATH? PATH是系统寻找可执行文件的路径。添加到PATH后,你可以在任何位置运行Python,否则只能在特定目录运行。

步骤2:安装VSCode

VSCode是我们的代码编辑器,就像作家的笔一样。

安装步骤:
1. 访问VSCode官网:https://code.visualstudio.com/
2. 点击蓝色的"Download for ..."按钮
3. 运行安装程序,按照向导完成安装
4. 安装完成后打开VSCode
步骤3:安装必要扩展

扩展就像给VSCode安装插件,让它具备更多功能。

安装步骤:

  1. 打开VSCode

  2. 点击左侧的扩展图标(四个小方块)或按Ctrl+Shift+X

  3. 搜索并安装以下扩展:

    • Python (由Microsoft发布)

    • Jupyter (由Microsoft发布)

    • Chinese (Simplified) Language Pack(可选,中文语言包)

1.3 配置VSCode

详细讲解

让我们配置VSCode,让它更适合Python开发:

# 配置步骤:# 1. 设置Python解释器
#    - 按Ctrl+Shift+P打开命令面板
#    - 输入"Python: Select Interpreter"
#    - 选择刚才安装的Python

# 2. 推荐设置(可选但建议):
#    - 文件 -> 首选项 -> 设置
#    - 搜索"auto save",选择"onFocusChange"
#    - 搜索"word wrap",选择"on"# 3. 测试配置
#    - 新建文件(Ctrl+N)
#    - 输入:print("Hello VSCode!")
#    - 保存为test.py(Ctrl+S)
#    - 按F5运行

二、创建第一个Jupyter Notebook

2.1 什么是Jupyter Notebook?

详细讲解

Jupyter Notebook是一种交互式编程环境,它改变了传统的编程方式:

传统编程方式

  • 写完整的程序

  • 运行整个程序

  • 如果出错,从头开始调试

Jupyter Notebook方式

  • 将程序分成多个"单元格"

  • 可以单独运行每个单元格

  • 立即看到每个步骤的结果

  • 特别适合数据探索和机器学习

类比理解: 把Jupyter Notebook想象成一个科学实验笔记本:

  • 每个单元格是一个实验步骤

  • 你可以记录实验过程(Markdown单元格)

  • 可以执行实验操作(代码单元格)

  • 立即看到实验结果

2.2 在VSCode中创建Notebook

详细讲解

让我们创建第一个Jupyter Notebook:

# 创建步骤:# 1. 打开VSCode
# 2. 按Ctrl+Shift+P打开命令面板
# 3. 输入"Jupyter: Create New Jupyter Notebook"
# 4. 选择"Python"作为内核(Kernel)
# 5. 保存文件:按Ctrl+S,保存为"01_python_basics.ipynb"# 注意:文件扩展名是.ipynb,表示Jupyter Notebook文件

2.3 Jupyter Notebook界面详解

详细讲解

让我们熟悉Jupyter Notebook的界面:

## Notebook界面组成:### 1. 工具栏
- [+ Code]:添加代码单元格
- [+ Markdown]:添加文档单元格
- [运行]:执行当前单元格
- [停止]:停止执行
- [重启内核]:重新开始(清空所有变量)### 2. 单元格类型
- **代码单元格**:灰色背景,用于编写和执行Python代码
- **Markdown单元格**:白色背景,用于写文档和说明### 3. 单元格状态
- [ ]:未执行
- [*]:正在执行
- [1]:已执行,数字表示执行顺序

### 4. 常用快捷键
- Shift+Enter:运行当前单元格并跳到下一个
- Ctrl+Enter:运行当前单元格并停留在当前
- A:在上方插入单元格
- B:在下方插入单元格
- D+D:删除当前单元格
- M:转换为Markdown单元格
- Y:转换为代码单元格

三、Python基础语法

3.1 第一个Python程序

详细讲解

让我们编写第一个Python程序,理解基本的编程概念:
(%% [markdown] 表示markdown单元格, %%表示Python单元格)

# 在VSCode的Notebook中创建第一个单元格# %% [markdown]
# # 我的第一个Python程序
# 
# 在这个Notebook中,我将学习Python的基础语法

# %%
# 单元格1:打印语句
print("Hello, Machine Learning!")
print("欢迎来到机器学习课程!")# 打印语句的作用:向屏幕输出信息
# print()是Python的内置函数,用于输出内容
# 引号内的内容会原样输出

# %%
# 单元格2:变量和基本运算
# 变量就像数学中的未知数,用于存储数据
a = 10      # 将数字10存储在变量a中
b = 3       # 将数字3存储在变量b中# 基本数学运算
print(f"{a} + {b} = {a + b}")    # 加法
print(f"{a} - {b} = {a - b}")    # 减法  
print(f"{a} * {b} = {a * b}")    # 乘法
print(f"{a} / {b} = {a / b:.2f}") # 除法,保留2位小数
print(f"{a} 的平方是 {a ** 2}")   # 平方运算# 注意:f"..."是f-string,可以在字符串中嵌入变量

重要概念解释

  1. 变量:就像数学中的x、y,用于存储数据

  2. 赋值=不是相等,而是"赋值给"

  3. 函数print()是一个函数,用于输出内容

  4. 注释#后面的内容不会被执行,用于解释代码

3.2 数据类型

详细讲解

Python有多种数据类型,就像现实世界有不同种类的东西:

# %% [markdown]
# ## Python数据类型
# 
# 数据类型决定了数据可以做什么操作
# %%
# 单元格3:基本数据类型
# 整数 (int) - 没有小数点的数字
age = 25
students_count = 30# 浮点数 (float) - 有小数点的数字
price = 19.99
temperature = 36.6# 字符串 (str) - 文本数据,用引号包围
name = "张三"
course = "机器学习"
message = 'Hello World'# 布尔值 (bool) - 只有两个值:True或False
is_student = True
has_graduated = False# 查看数据类型
print(f"年龄: {age} (类型: {type(age)})")
print(f"价格: {price} (类型: {type(price)})")
print(f"姓名: {name} (类型: {type(name)})")
print(f"是否学生: {is_student} (类型: {type(is_student)})")

# %%
# 单元格4:数据结构
# 列表 (List) - 有序的元素集合,用方括号[]
fruits = ["苹果", "香蕉", "橙子", "草莓"]
numbers = [1, 2, 3, 4, 5]print("水果列表:", fruits)
print("数字列表:", numbers)# 访问列表元素(索引从0开始)
print("第一个水果:", fruits[0])      # 索引0表示第一个元素
print("最后一个数字:", numbers[-1])   # 索引-1表示最后一个元素# 列表操作
fruits.append("葡萄")  # 在末尾添加元素
print("添加葡萄后:", fruits)numbers.remove(3)      # 删除元素3
print("删除3后:", numbers)# %%
# 单元格5:字典 (Dictionary)
# 字典存储键值对,用花括号{}
student = {"姓名": "李四","年龄": 20,"专业": "计算机科学","成绩": 85.5,"选修课程": ["机器学习", "深度学习", "自然语言处理"]
}print("学生信息:")
# 遍历字典的键值对
for key, value in student.items():print(f"  {key}: {value}")# 访问特定值
print(f"学生姓名: {student['姓名']}")
print(f"选修课程: {student['选修课程']}")

数据类型总结

数据类型例子用途
int25, -10整数计算
float3.14, -2.5小数计算
str"hello", 'Python'文本处理
boolTrue, False逻辑判断
list[1, 2, 3], ['a', 'b']有序集合
dict{'name': 'John', 'age': 20}键值对存储

3.3 控制流

详细讲解

控制流让程序能够根据不同情况执行不同的代码:

# %% [markdown]
# ## 控制流
# 
# 控制程序执行的流程
# %%
# 单元格6:条件判断 - if语句
score = 88# if-elif-else结构
if score >= 90:grade = "优秀"print("🎉 成绩优秀!")
elif score >= 80:grade = "良好"print("👍 成绩良好!")  # 这个会被执行
elif score >= 70:grade = "中等"print("✅ 成绩中等")
elif score >= 60:grade = "及格"print("⚠️ 刚刚及格")
else:grade = "不及格"print("❌ 需要补考")print(f"分数: {score}, 等级: {grade}")# %%
# 单元格7:循环 - for循环
# 遍历数字序列
print("数字1-5的平方:")
for i in range(1, 6):  # range(1,6)生成1,2,3,4,5square = i ** 2print(f"{i}² = {square}")# 遍历列表
print("\n水果列表:")
# enumerate同时获取索引和值
for index, fruit in enumerate(fruits):print(f"{index + 1}. {fruit}")

# %%
# 单元格8:while循环
# while在条件为真时重复执行
count = 1
print("使用while循环计数:")
while count <= 5:print(f"计数: {count}")count += 1  # 相当于 count = count + 1

控制流要点

  1. 条件判断:让程序根据不同情况做出决策

  2. 循环:重复执行相似的操作

  3. 缩进:Python用缩进表示代码块,必须一致

  4. 条件表达式>=, <=, ==, != 等比较运算符

3.4 函数定义

详细讲解

函数让代码可以重复使用,就像数学中的函数一样:

# %% [markdown]
# ## 函数定义
# 
# 函数是组织代码的基本单元
# %%
# 单元格9:自定义函数
def calculate_circle_area(radius):"""计算圆的面积参数:radius: 圆的半径返回:圆的面积"""pi = 3.14159area = pi * (radius ** 2)return areadef greet(name, time_of_day="早上"):"""问候函数参数:name: 姓名time_of_day: 时间,默认为"早上""""return f"{time_of_day}好,{name}!"# 使用函数
radius = 5
area = calculate_circle_area(radius)
print(f"半径为{radius}的圆面积: {area:.2f}")print(greet("张三"))
print(greet("李四", "下午"))
# %%
# 单元格10:带条件判断的函数
def evaluate_performance(score):"""根据分数评估表现"""if score >= 90:return "优秀", "🎉"elif score >= 80:return "良好", "👍"elif score >= 70:return "中等", "✅"elif score >= 60:return "及格", "⚠️"else:return "不及格", "❌"# 测试多个分数
test_scores = [85, 92, 78, 65, 55]
for score in test_scores:grade, emoji = evaluate_performance(score)print(f"分数 {score}: {grade} {emoji}")

函数要点

  1. def关键字:用于定义函数

  2. 参数:函数接收的输入

  3. 返回值:函数计算的结果

  4. 文档字符串"""..."""用于说明函数用途

  5. 默认参数:可以为参数指定默认值


四、NumPy基础入门

4.1 为什么需要NumPy?

详细讲解

NumPy是Python科学计算的基础库,对于机器学习至关重要:

Python列表的局限性

  • 数学运算不方便

  • 处理大量数据时速度慢

  • 缺少科学计算函数

NumPy的优势

  • 提供多维数组对象

  • 高效的数学运算

  • 丰富的科学计算函数

  • 很多机器学习库基于NumPy

类比理解: 把NumPy想象成一个专业的数学工具箱,而Python列表就像普通的工具箱。

4.2 NumPy数组操作

详细讲解

让我们学习NumPy的基本操作:
创建新的Notebook:02_numpy_basics.ipynb

接着在终端安装numpy库: pip3 install numpy

你也可以使用国内镜像源: pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

# %% [markdown]
# # NumPy基础入门
# 
# NumPy是Python科学计算的基础库
# %%
# 单元格1:导入NumPy
import numpy as np# 惯例:将numpy重命名为np,这是社区标准做法
print("NumPy版本:", np.__version__)

# %%
# 单元格2:创建数组
# 从列表创建数组
arr1 = np.array([1, 2, 3, 4, 5])          # 一维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])   # 二维数组print("一维数组:")
print(arr1)
print("形状:", arr1.shape)  # 数组的维度print("\n二维数组:")
print(arr2)
print("形状:", arr2.shape)  # (2,3)表示2行3列

  • 在NumPy中,形状(shape) 描述的是数组的维度结构。它告诉我们数组在每个维度上有多少个元素。

  • (5,) 表示这是一个包含一个元素的元组。逗号是为了区分 (5,)(元组)和 5(整数)。

  • (2, 3) 表示:"有2行,每行有3列"

# %%
# 单元格3:创建特殊数组
# 全零数组
zeros = np.zeros((3, 4))  # 3行4列的全零数组
print("3x4全零数组:")
print(zeros)# 全一数组
ones = np.ones((2, 3))    # 2行3列的全一数组
print("\n2x3全一数组:")
print(ones)# 单位矩阵
identity = np.eye(3)      # 3x3单位矩阵
print("\n3x3单位矩阵:")
print(identity)# 范围数组
range_arr = np.arange(0, 10, 2)  # 从0到10(不含),步长2
print("\n0到10的数组(步长2):")
print(range_arr)

# %%
# 单元格4:数组属性
arr = np.array([[1, 2, 3], [4, 5, 6]])print("数组:")
print(arr)
print("形状 (shape):", arr.shape)      # 数组维度 (2,3)
print("大小 (size):", arr.size)        # 元素总数 6
print("维度 (ndim):", arr.ndim)        # 轴数 2
print("数据类型 (dtype):", arr.dtype)  # 元素类型 int64

# %%
# 单元格5:数组索引和切片
# 一维数组索引
arr1d = np.array([10, 20, 30, 40, 50, 60])
print("一维数组:", arr1d)
print("第一个元素:", arr1d[0])        # 索引从0开始
print("最后一个元素:", arr1d[-1])     # 负数索引从末尾开始
print("切片[1:4]:", arr1d[1:4])      # 索引1到3(不含4)
print("切片[::2]:", arr1d[::2])      # 步长为2的切片

# %%
# 单元格6:二维数组索引
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")
print(arr2d)
print("第一行:", arr2d[0, :])        # 第一行所有元素
print("第二列:", arr2d[:, 1])        # 第二列所有元素
print("元素[1,2]:", arr2d[1, 2])     # 第二行第三列的元素# 布尔索引
print("大于5的元素:", arr2d[arr2d > 5])

# %%
# 单元格7:数组运算
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])print("数组a:", a)
print("数组b:", b)
print("a + b =", a + b)      # 对应元素相加
print("a - b =", a - b)      # 对应元素相减
print("a * b =", a * b)      # 对应元素相乘
print("a / b =", a / b)      # 对应元素相除
print("a ** 2 =", a ** 2)    # 每个元素平方# 向量化运算的优势:不需要循环,代码简洁高效

# %%
# 单元格8:统计函数
data = np.array([23, 45, 67, 34, 89, 56, 72, 41])print("数据:", data)
print("平均值:", np.mean(data))
print("中位数:", np.median(data))
print("标准差:", np.std(data))
print("方差:", np.var(data))
print("最小值:", np.min(data))
print("最大值:", np.max(data))
print("总和:", np.sum(data))

# %%
# 单元格9:形状操作
# 创建数组
arr = np.arange(12)  # 0到11的数组
print("原始数组:", arr)# 改变形状
reshaped = arr.reshape(3, 4)  # 改为3行4列
print("重塑为3x4:")
print(reshaped)# 转置
transposed = reshaped.T
print("转置:")
print(transposed)# 展平
flattened = reshaped.flatten()
print("展平:", flattened)

NumPy核心概念

  1. 数组:NumPy的核心数据结构

  2. 向量化运算:对整个数组进行运算,不需要循环

  3. 广播:对不同形状的数组进行运算的机制

  4. 通用函数:对数组元素进行操作的函数


五、项目实战:学生成绩分析系统

5.1 项目目标

详细讲解

现在让我们综合运用所学知识,完成一个实际项目:学生成绩分析系统。

项目功能

  1. 存储学生成绩数据

  2. 计算各种统计信息

  3. 分析成绩分布

  4. 可视化展示结果

5.2 项目实现

创建新的Notebook:03_student_analysis.ipynb

# %% [markdown]
# # 学生成绩分析系统
# 
# 综合运用Python和NumPy分析学生成绩数据
# %%
# 单元格1:导入库
import numpy as np
import matplotlib.pyplot as plt# 设置中文字体(确保图表能显示中文)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号print("库导入成功!")
# %%
# 单元格2:准备数据
# 创建学生数据
students = ['张三', '李四', '王五', '赵六', '钱七']
math_scores = np.array([85, 92, 78, 65, 88])
english_scores = np.array([79, 85, 92, 70, 81])
programming_scores = np.array([90, 88, 76, 82, 95])print("学生成绩数据:")
for i, name in enumerate(students):print(f"{name}: 数学{math_scores[i]}, 英语{english_scores[i]}, 编程{programming_scores[i]}")
# %%
# 单元格3:计算基本统计信息
# 各科目平均分
math_avg = np.mean(math_scores)
english_avg = np.mean(english_scores)
programming_avg = np.mean(programming_scores)print("各科目平均分:")
print(f"数学: {math_avg:.1f}分")
print(f"英语: {english_avg:.1f}分")
print(f"编程: {programming_avg:.1f}分")# 各科目最高分和最低分
print(f"\n数学最高分: {np.max(math_scores)}分")
print(f"英语最低分: {np.min(english_scores)}分")
# %%
# 单元格4:计算学生总分和平均分
total_scores = math_scores + english_scores + programming_scores
average_scores = total_scores / 3print("\n学生总分和平均分:")
for i, name in enumerate(students):print(f"{name}: 总分{total_scores[i]}, 平均分{average_scores[i]:.1f}")
# %%
# 单元格5:成绩排名
# 按平均分排序
sorted_indices = np.argsort(average_scores)[::-1]  # 从高到低排序print("\n成绩排名:")
for rank, idx in enumerate(sorted_indices):print(f"第{rank + 1}名: {students[idx]}, 平均分{average_scores[idx]:.1f}")
# %%
# 单元格6:成绩等级分析
def assign_grade(score):"""根据分数分配等级"""if score >= 90:return "优秀"elif score >= 80:return "良好"elif score >= 70:return "中等"elif score >= 60:return "及格"else:return "不及格"print("\n学生成绩等级:")
for i, name in enumerate(students):grade = assign_grade(average_scores[i])print(f"{name}: {grade}")
# %%
# 单元格7:成绩分布统计
def analyze_score_distribution(scores, subject):"""分析成绩分布"""excellent = np.sum(scores >= 90)good = np.sum((scores >= 80) & (scores < 90))medium = np.sum((scores >= 70) & (scores < 80))pass_grade = np.sum((scores >= 60) & (scores < 70))fail = np.sum(scores < 60)print(f"\n{subject}成绩分布:")print(f"优秀(90+): {excellent}人")print(f"良好(80-89): {good}人")print(f"中等(70-79): {medium}人")print(f"及格(60-69): {pass_grade}人")print(f"不及格: {fail}人")analyze_score_distribution(math_scores, "数学")
analyze_score_distribution(english_scores, "英语")
analyze_score_distribution(programming_scores, "编程")
# %%
# 单元格8:数据可视化
# 创建学生成绩对比图
plt.figure(figsize=(12, 6))# 设置位置
x = np.arange(len(students))
width = 0.25# 创建柱状图
plt.bar(x - width, math_scores, width, label='数学', alpha=0.8, color='skyblue')
plt.bar(x, english_scores, width, label='英语', alpha=0.8, color='lightgreen')
plt.bar(x + width, programming_scores, width, label='编程', alpha=0.8, color='lightcoral')# 设置图表属性
plt.xlabel('学生', fontsize=12)
plt.ylabel('分数', fontsize=12)
plt.title('学生各科成绩对比', fontsize=14)
plt.xticks(x, students)
plt.legend()# 添加网格
plt.grid(True, alpha=0.3, axis='y')# 显示图表
plt.tight_layout()
plt.show()
# %%
# 单元格9:平均分可视化
plt.figure(figsize=(10, 6))# 创建平均分柱状图
bars = plt.bar(students, average_scores, color='gold', alpha=0.7)# 在每个柱子上显示数值
for bar, score in zip(bars, average_scores):plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.5, f'{score:.1f}', ha='center', va='bottom')plt.xlabel('学生', fontsize=12)
plt.ylabel('平均分', fontsize=12)
plt.title('学生平均分对比', fontsize=14)
plt.ylim(0, 100)
plt.grid(True, alpha=0.3, axis='y')plt.tight_layout()
plt.show()
# %%
# 单元格10:项目总结
print("=" * 50)
print("项目总结")
print("=" * 50)# 找出最高分学生
top_student_index = np.argmax(average_scores)
top_student = students[top_student_index]
top_score = average_scores[top_student_index]print(f"最高分学生: {top_student} (平均分: {top_score:.1f})")# 总体统计
total_avg = np.mean(average_scores)
print(f"班级平均分: {total_avg:.1f}")# 各科目表现分析
best_subject = ""
best_avg = 0subjects = ['数学', '英语', '编程']
subject_scores = [math_scores, english_scores, programming_scores]for subject, scores in zip(subjects, subject_scores):avg = np.mean(scores)if avg > best_avg:best_avg = avgbest_subject = subjectprint(f"表现最好的科目: {best_subject} (平均分: {best_avg:.1f})")print("=" * 50)

六、VSCode高级功能

6.1 调试功能

详细讲解

调试是编程中最重要的技能之一。VSCode提供了强大的调试工具:

# 在VSCode中调试Notebook:# 1. 设置断点:在代码行号左侧点击,出现红点
# 2. 开始调试:按F5或点击调试按钮
# 3. 单步执行:使用调试控制栏的按钮
# 4. 查看变量:在调试面板查看变量值# 调试示例:
def find_problematic_student(scores, threshold=60):"""找出需要特别关注的学生"""problematic = []for i, score in enumerate(scores):# 在这里设置断点if score < threshold:problematic.append(i)return problematic# 测试数据
test_scores = [85, 45, 92, 58, 78]# 调用函数进行调试
problem_indices = find_problematic_student(test_scores)
print(f"需要关注的学生索引: {problem_indices}")

调试技巧

  • 设置断点:在关键位置暂停执行

  • 单步执行:一步步执行代码,观察变化

  • 变量监视:跟踪重要变量的值

  • 条件断点:只有满足条件时才暂停

6.2 代码补全和智能提示

详细讲解

VSCode的智能功能可以大大提高编程效率:

## VSCode的智能功能:### 1. 代码补全
- 输入时自动显示可用函数和变量
- 按Tab键快速补全
- 减少拼写错误### 2. 参数提示
- 显示函数的参数信息
- 帮助理解函数用法### 3. 错误检查
- 实时检查语法错误
- 用红色波浪线标记问题### 4. 快速修复
- 自动导入缺失的库
- 代码格式优化建议### 5. 代码导航
- Ctrl+点击:跳转到函数定义
- Ctrl+Shift+O:快速跳转到符号

七、课后练习

7.1 基础练习

详细讲解

现在轮到你自己动手了!完成以下练习来巩固所学知识:

创建新的Notebook:exercises.ipynb

# %% [markdown]
# # 课后练习
# 
# 完成以下练习来巩固第一课时的知识
# %% [markdown]
# ## 练习1:员工工资分析
# 
# 创建一个员工工资数据分析系统:
# 
# 要求:
# 1. 创建5个员工的工资数据(姓名、基本工资、奖金)
# 2. 计算每个员工的实发工资(基本工资+奖金)
# 3. 找出工资最高的员工
# 4. 计算平均工资和工资标准差
# %% [markdown]
# ## 练习2:数组操作挑战
# 
# 使用NumPy完成以下任务:
# 1. 创建5x5的随机矩阵(范围1-100)
# 2. 计算每行的平均值和每列的总和
# 3. 找出矩阵中所有大于50的元素及其位置
# 4. 对矩阵进行转置并计算特征值
# %% [markdown]
# ## 练习3:函数编写
# 
# 编写一个函数,接受学生成绩列表,返回:
# - 平均分
# - 最高分和最低分
# - 及格率(60分以上)
# - 成绩分布(优秀、良好、中等、及格、不及格的人数)
# %% [markdown]
# ## 挑战练习(可选)
# 
# 创建一个简单的数据可视化:
# 1. 生成正弦波数据
# 2. 添加随机噪声
# 3. 绘制原始正弦波和带噪声的正弦波
# 4. 计算信噪比

7.2 学习检查清单

完成第一课时后,检查你的掌握情况:

# 第一课时学习检查清单## 环境配置
- [ ] 成功安装Python 3.8+
- [ ] 成功安装VSCode
- [ ] 安装必要的扩展(Python、Jupyter)
- [ ] 能够创建和运行Jupyter Notebook## Python基础
- [ ] 理解变量和数据类型(int, float, str, bool)
- [ ] 掌握列表和字典的基本操作
- [ ] 能够使用条件判断(if-elif-else)
- [ ] 能够使用循环(for, while)
- [ ] 能够定义和调用函数## NumPy基础
- [ ] 能够创建NumPy数组
- [ ] 理解数组的索引和切片
- [ ] 掌握数组的基本运算
- [ ] 能够使用统计函数(mean, max, min等)## 项目实践
- [ ] 完成学生成绩分析项目
- [ ] 理解数据分析的基本流程
- [ ] 能够创建简单的数据可视化## 工具使用
- [ ] 掌握VSCode的基本操作
- [ ] 能够使用调试功能
- [ ] 理解代码补全和智能提示## 问题解决
- [ ] 知道如何阅读错误信息
- [ ] 能够使用搜索引擎解决问题
- [ ] 知道在学习群中如何提问

八、常见问题解答

8.1 安装问题

## 常见问题及解决方案### 1. Python安装问题
**问题**:命令行中输入`python`显示"不是内部或外部命令"
**解决**:
- 重新安装Python,确保勾选"Add Python to PATH"
- 或手动添加Python安装目录到系统PATH### 2. VSCode扩展安装失败
**问题**:无法安装Python或Jupyter扩展
**解决**:
- 检查网络连接
- 重启VSCode重试
- 手动下载扩展文件安装### 3. Jupyter Notebook无法运行
**问题**:单元格显示[*]但不执行
**解决**:
- 检查Python解释器选择是否正确
- 重启内核(点击工具栏的重启按钮)
- 重新安装jupyter包:`pip install jupyter --upgrade`### 4. 中文显示问题
**问题**:图表中中文显示为方框
**解决**:
- 安装中文字体
- 使用代码中的字体设置
- 或者使用英文标签

8.2 学习建议

详细讲解

对于初学者,我建议:

  1. 不要怕犯错:每个程序员都会犯错,错误是学习的机会

  2. 多动手实践:只看不练很难真正掌握

  3. 从小项目开始:完成小项目获得成就感

  4. 学会求助:遇到问题先自己尝试,再寻求帮助

  5. 定期复习:编程技能需要不断练习巩固


下一课时预告

第二课时:Pandas数据处理与可视化

学习内容

  1. Pandas DataFrame基础操作

  2. 数据读取和清洗技术

  3. 数据筛选和分组聚合

  4. 使用Matplotlib和Seaborn进行高级可视化

课前准备

  • 完成第一课时的所有练习

  • 确保环境配置正确

  • 准备好问题在课前提问


结束语

恭喜你完成了第一课时的学习!这是你机器学习之旅的重要里程碑。

学习回顾

在这一课时中,你学习了:

  • 如何配置专业的Python开发环境

  • Python编程的基础语法和概念

  • NumPy数组操作和科学计算

  • 使用VSCode进行项目开发

  • 完成了一个完整的学生成绩分析项目

学习成就

你已经从零开始,掌握了:

  • ✅ 编程环境的配置和使用

  • ✅ Python基础编程技能

  • ✅ NumPy科学计算基础

  • ✅ 数据分析和可视化入门

  • ✅ 问题解决和调试技能

继续学习建议

  1. 巩固基础:如果有些概念还不够清晰,可以重新运行代码示例

  2. 完成练习:课后练习是检验学习成果的重要方式

  3. 探索扩展:尝试修改代码,看看不同的参数会有什么效果

  4. 加入社区:参与学习群讨论,与其他学习者交流

重要提醒

记住编程学习的几个关键点:

  • 实践比理论更重要:多写代码,少只看不练

  • 错误是朋友:从错误中学习比避免错误更重要

  • 持续学习:每天进步一点点,比一次性学很多更有效

  • 享受过程:编程是创造性的活动,享受解决问题的乐趣

你已经迈出了成为机器学习工程师的第一步!保持热情,继续前进!

在第二课时中,我们将学习更强大的数据处理工具Pandas,让你的数据分析能力更上一层楼。

Happy Coding! 🚀


备注:如果在学习过程中遇到任何问题,请保存错误信息像博主交流。建议将遇到的问题和解决方案记录下来,建立自己的知识库。

http://www.dtcms.com/a/509097.html

相关文章:

  • 网站建设的主要职责网站开发 接口还是ajax
  • 外贸独立站SEO技术架构深度优化指南
  • phython 做的网站怎样做网络营销推广
  • 旅游自媒体网站怎么做主页制作语言缩写
  • 金乡县网站开发中信建设有限责任公司历任董事长
  • 猿辅导Java面试真实经历与深度总结(二)
  • 株洲seo网站优化项目计划书图片
  • 网站赚钱苏州手工活外发加工网
  • 大文件传输
  • 莒南县建设局网站网站建好了 怎么建后台
  • 哪个网站有老外教做蛋糕wordpress 插件角色
  • 地方网站如何做竞价网站备案代理公司
  • 做网站为什么要用php框架计算机专业论文网站开发
  • 【云测试平台 LamdbaTest】LamdbaTest vs { Selenium TestCafe}
  • 大连模板建站代理热点事件舆情分析报告
  • 网站建设丨下拉找金手指信誉最新做做网站
  • docker desktop创建ollama容器端口绑定失败
  • AD怎么把选中的器件放到一起
  • Kubernetes (四)网络插件详解:Flannel 与 Calico 的原理、数据流向与实战对比
  • 专业网站搭建定做网上购物商城排名
  • 中国文化网站建设策划书城阳做网站找哪家好
  • js前端this指向规则
  • 怎样申请免费网站wordpress 360收录
  • 深圳网站制作公司排名网站建设报班
  • 算命网站开发电话汉服网站的建设
  • 前端-Vue3项目创建以及初始化
  • 网站建设用户登录源码科技小发明小制作
  • 网站设计的大公司上海it驻场服务外包
  • C++:STL--》 mapset以及multsetmultmap的使用
  • 织梦网站建设实训心得黄金网站软件入口免费