AI人工智能教程:从零构建你的第一个机器学习模型

1次阅读
没有评论

共计 2055 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

机器学习基本概念

机器学习是人工智能的一个分支,它让计算机通过数据学习规律,而不是直接编程。打个比方,就像教小孩认动物:通过反复看猫狗图片(数据),他们自己总结出猫狗特征(模型),见到新动物时能判断种类(预测)。

AI 人工智能教程:从零构建你的第一个机器学习模型

机器学习主要分两类:

  • 监督学习:就像有答案的练习题。数据包含特征(如花朵尺寸)和标签(如品种),目标是建立特征到标签的映射关系。典型应用:房价预测、垃圾邮件分类。

  • 无监督学习:像整理杂乱的文件柜。数据只有特征没有标签,系统自动发现结构。典型应用:客户分群、异常检测。

我们今天要做的鸢尾花分类属于监督学习。


开发环境搭建

推荐使用 Python+Jupyter 组合,就像厨师的刀和砧板:

  1. 安装 Python 3.8+(官网下载勾选 ”Add to PATH”)
  2. 命令行执行 pip install jupyter scikit-learn pandas matplotlib
  3. 启动 Jupyter:jupyter notebook,浏览器会自动打开

小技巧:在 Jupyter 单元格按 Shift+Enter 可以立即执行代码,非常适合分步调试。


实战:鸢尾花分类

数据加载与观察

Scikit-learn 自带了经典数据集,省去找数据的麻烦:

from sklearn.datasets import load_iris
import pandas as pd

# 加载数据
iris = load_iris()
# 转换为 DataFrame 更直观
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target  # 添加目标列

# 查看前 5 行
print(df.head())

输出示例:

   sepal length (cm)  sepal width (cm)  ...  petal width (cm)  target
0                5.1               3.5  ...               0.2       0
1                4.9               3.0  ...               0.2       0

数据预处理

虽然这个数据集已经很干净,但实际项目中常需要:

  1. 处理缺失值:df.fillna()或删除
  2. 特征缩放:from sklearn.preprocessing import StandardScaler
  3. 训练集 / 测试集拆分(关键步骤!):
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    iris.data, 
    iris.target, 
    test_size=0.2,  # 20% 作测试
    random_state=42  # 随机种子保证结果可复现
)

模型训练

选择最易理解的 K 近邻算法(KNN):

from sklearn.neighbors import KNeighborsClassifier

# 创建模型(选择 3 个邻居投票)knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型(就像记笔记)knn.fit(X_train, y_train)

模型评估

测试模型是否真正学会了:

# 在测试集上预测
y_pred = knn.predict(X_test)

# 计算准确率
from sklearn.metrics import accuracy_score
print(f"准确率: {accuracy_score(y_test, y_pred):.2f}")

典型输出:准确率: 0.97 表示 97% 的预测正确。


常见问题解决

错误 1:维度不匹配

报错:ValueError: shapes (a,b) and (c,d) not aligned

解决方法:
– 检查 X_trainX_test的特征数量是否一致
– 使用 X.shape 查看维度

错误 2:过拟合

现象:训练集准确率 99%,测试集只有 60%

对策:
– 增加训练数据
– 减小模型复杂度(如降低 KNN 的 n_neighbors)
– 尝试正则化方法


进阶评估指标

除了准确率,还有更细致的评估方式:

from sklearn.metrics import classification_report

print(classification_report(y_test, y_pred))

输出示例:

              precision    recall  f1-score   support

           0       1.00      1.00      1.00        10
           1       1.00      0.90      0.95        10
           2       0.90      1.00      0.95         9

  • 精确率(precision):预测为正的样本中实际为正的比例
  • 召回率(recall):实际为正的样本中被正确预测的比例
  • F1-score:两者的调和平均数

下一步学习建议

  1. 尝试其他算法:决策树(DecisionTreeClassifier)、SVM 等
  2. 特征工程:尝试组合或创建新特征(如花瓣长宽比)
  3. 部署应用:用 Flask 将模型做成 API
  4. 学习资源
  5. 《Python 机器学习手册》
  6. Kaggle 入门竞赛(如 Titanic)

思考题

如何将这个模型应用到其他分类问题?关键在于:
– 确保新数据有相似的特征结构
– 重新收集和标注目标数据
– 可能需要调整特征预处理方式

举个例子:如果想区分苹果和橙子,可以测量颜色值、重量、直径等作为新特征。

正文完
 0
评论(没有评论)