环境配置:
第一步:安装 Anaconda (Python 的“大管家”)
Anaconda 是一个包含了 Python 和大量科学计算包的发行版,用它来管理环境最省心。
-
下载:
-
前往 Anaconda 官网下载适合 Windows/Mac 的安装包。
-
-
安装时的两个“千万注意”:
-
安装路径不能有中文或空格! 例如,不要装在
C:\Program Files(有空格)或者D:\我的软件(有中文)下。建议直接装在D:\Anaconda3。 -
环境变量选项:安装过程中会有一个高级选项页面。不要勾选“Add Anaconda3 to my PATH environment variable”(除非你很清楚你在做什么),这容易搞坏系统原有的 Python 环境。请勾选“Register Anaconda3 as my default Python”。
-
-
完成安装。
第二步:创建虚拟环境 (建立独立的“沙盒”)
为什么要建虚拟环境?因为不同的项目可能需要不同版本的库,把它们全装在一起容易“打架”。虚拟环境就像是给这个机器学习课专门建一个独立的沙盒。
-
打开命令行:
-
点击电脑左下角的 Windows 开始菜单,搜索并打开 Anaconda Prompt(一个黑色的命令行窗口)。你会看到命令行最前面有个
(base),代表你现在在默认的基础环境里。
-
-
创建环境:
-
在黑框框里输入以下命令并回车(
Bashml_env是我们给这个沙盒起的名字,python=3.10是指定 Python 版本):conda create -n ml_env python=3.10 -y
-
-
激活(进入)环境:
-
安装完成后,输入命令进入这个沙盒:
Bashconda activate ml_env -
此时,命令行最前面的
(base)会变成(ml_env),说明你进来了。
-
-
安装机器学习必备工具包:
-
在带有
Bash(ml_env)的命令行中输入以下命令。(注:为了防止下载过慢或报错,这里加入了清华大学的镜像源加速):pip install numpy pandas scikit-learn matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple -
等待进度条跑完,提示 Successfully installed 即为成功。可以关闭黑框框了。
-
第三步:安装 PyCharm (写代码的“笔记本”)
-
下载:
-
前往 JetBrains 官网下载 PyCharm。
-
注意:一定要下载 Community Edition(社区版),这个版本是免费的,对大一学生来说功能完全够用。不要下错成 Professional(专业版,需要付费或学校邮箱验证)。
-
-
安装:
-
一路“下一步”即可,安装路径同样建议避开中文。
-
第四步:将 PyCharm 与 Anaconda 连接起来 (最关键的一步)
现在我们有了写代码的软件 (PyCharm) 和运行代码的沙盒 (ml_env),需要把它们连起来。
-
新建项目:
-
打开 PyCharm,点击 New Project。
-
Location(位置):选择一个存放代码的文件夹,例如
D:\ML_Practice。
-
-
配置解释器 (Python Interpreter):
-
在新建项目界面,找到 Python Interpreter(或 Project Interpreter)选项卡并展开。
-
选中 Previously configured interpreter(使用之前配置的解释器),然后点击右侧的 Add Local Interpreter(添加本地解释器)。
-
-
选择 Conda 环境:
-
在弹出的窗口左侧菜单中,选择 Conda Environment。
-
右侧的 Conda executable(Conda 可执行文件路径):通常 PyCharm 会自动找到它。如果没有,你需要点击文件夹图标,手动找到你安装 Anaconda 的目录下的
Scripts\conda.exe(例如D:\Anaconda3\Scripts\conda.exe)。点击 Load Environments。 -
在 Use existing environment(使用现有环境)的下拉菜单中,找到并选中我们刚才创建的 ml_env。
-
点击 OK,然后再点击底部的 Create 创建项目。
-
第五步:终极测试 (Hello World)
为了验证环境是不是真的配置好了,我们可以写三行代码测试一下。
-
在 PyCharm 的左侧项目目录栏,右键点击你的项目文件夹 -> New -> Python File,命名为
test.py。 -
在空白处输入以下代码:
Pythonimport sklearn import matplotlib.pyplot as plt print("恭喜!机器学习环境配置成功!版本号为:", sklearn.__version__) -
右键点击代码编辑区,选择 Run 'test'(或者点击右上角的绿色播放小三角)。
-
如果下方控制台成功打印出了文字和版本号(例如 1.3.0 等),并且没有报红色的错误,那么环境配置大功告成,可以开始做那两个课题了。
以下使用jupyter Notebook
课题一:加州房价预测(线性回归)
已经将数据打包好了。请把数据包放到对应的文件夹。然后运行以下代码进行数据加载:
import pandas as pd
from sklearn.datasets import fetch_california_housing
print("正在加载数据...")
# 这次它会直接发现你放好的文件,不再去联网了
california = fetch_california_housing()
print("加载成功!")
X = pd.DataFrame(california.data, columns=california.feature_names)
X.head()

第一步:准备“考试题”——数据拆分
机器学习的核心逻辑是:通过一部分数据“学习”规律,再用另一部分没见过的数据“考试”。
在 Jupyter 中新建一个 Cell,输入并运行:
from sklearn.model_selection import train_test_split
# 定义目标变量 y
y = california.target
# 划分数据集:80% 训练,20% 测试
# random_state=42 保证每次运行的结果都一致
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f"训练集大小: {X_train.shape}")
print(f"测试集大小: {X_test.shape}")
第二步:让模型“学习”——模型训练我们使用最经典的“线性回归”,让模型去寻找房屋特征与价格之间的 关系。
from sklearn.linear_model import LinearRegression
# 实例化模型
model = LinearRegression()
# 训练模型(这就是模型“学习”的过程)
model.fit(X_train, y_train)
print("模型训练完成!")
![]()
第三步:让模型“考试”——预测与评估
模型训练好后,我们用测试集(没见过的数据)来考核它的水平。
from sklearn.metrics import mean_squared_error, r2_score
# 在测试集上预测
y_pred = model.predict(X_test)
# 计算指标
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方误差 (MSE): {mse:.4f}")
print(f"R2 决定系数: {r2:.4f}")

第四步:直观展示——可视化结果
最后,通过图表直观地对比“真实价格”和“预测价格”。
import matplotlib.pyplot as plt
# 修正后的代码:直接使用 y_test[:50]
plt.figure(figsize=(10, 5))
plt.plot(y_test[:50], label='True Prices', marker='o', linestyle='-')
plt.plot(y_pred[:50], label='Predicted Prices', marker='x', linestyle='--')
plt.title("California Housing Price Prediction (First 50 Samples)")
plt.xlabel("Sample Index")
plt.ylabel("Price (in $100,000s)")
plt.legend()
plt.grid(True)
plt.show()

课题二:基于 SVM 的人脸识别(进阶版)
0.安装和更新依赖
!python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install --upgrade scikit-learn pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.metrics import classification_report
print("库加载完成")
加载本地数据(把路径换成你自己的)
# 注意:在路径前面加一个 'r',可以避免 Windows 反斜杠引起的转义错误
local_data_path = r'C:\Users\ShiYa\scikit_learn_data'
faces = fetch_lfw_people(
data_home=local_data_path, # 告诉函数去这里找 lfw_home 文件夹
min_faces_per_person=60,
resize=0.4
)
# 打印一下确认是否加载成功
print(f"成功从 {local_data_path} 加载数据")
print(f"数据总样本数: {faces.images.shape[0]}")

# 随机显示 4 张图片
fig, ax = plt.subplots(1, 4, figsize=(10, 3))
for i, axi in enumerate(ax.flat):
axi.imshow(faces.images[i], cmap='bone')
axi.set(xticks=[], yticks=[], xlabel=faces.target_names[faces.target[i]])
plt.show()
(↑这是随机显示的,跟这个不一样也没关系)
模型训练准备
# 1. PCA:将像素矩阵压缩到 150 个主成分(Eigenfaces)
pca = PCA(n_components=150, whiten=True, random_state=42)
# 2. SVM:分类器,class_weight='balanced' 解决图片数量不平衡的问题
svc = SVC(kernel='rbf', class_weight='balanced')
# 3. 使用 Pipeline:把这两步串联成一条流水线
model = make_pipeline(pca, svc)
print("模型构建完成,准备开始训练")
模型开始训练
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(faces.data, faces.target, random_state=42)
# 训练
model.fit(X_train, y_train)
print("模型训练结束!")
评价指标打印
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred, target_names=faces.target_names))
效果可视化
fig, ax = plt.subplots(3, 5, figsize=(12, 9))
for i, axi in enumerate(ax.flat):
axi.imshow(X_test[i].reshape(faces.images[0].shape), cmap='bone')
axi.set(xticks=[], yticks=[])
# 获取预测的名字
pred_name = faces.target_names[y_pred[i]].split()[-1]
# 如果预测对了标黑,错了标红
color = 'black' if y_pred[i] == y_test[i] else 'red'
axi.set_ylabel(pred_name, color=color)
fig.suptitle('Predicted Names; Incorrect Labels in Red', size=16)
plt.show()






1406



被折叠的 条评论
为什么被折叠?



