当前位置:  首页>> 技术小册>> Python机器学习基础教程(上)

2.1 分类与回归:Python机器学习基础教程(上)

在机器学习领域,分类与回归是两种最基础且广泛应用的预测任务。它们旨在根据给定的数据集,学习一个模型,以便对未来未见过的数据进行预测。分类问题涉及预测数据点的类别或标签,而回归问题则关注于预测一个或多个连续值。本章节将深入探讨这两种任务的基本概念、应用场景、常用算法及其在Python中的实现。

2.1.1 分类问题

2.1.1.1 定义与概述

分类是机器学习中的一种监督学习任务,其目标是将数据集中的每个样本分配到一个或多个预定义的类别中。这些类别通常是离散的、有限的集合,如“是/否”、“疾病类型A/B/C”等。分类算法通过学习训练数据中的特征与类别之间的关系,来构建分类模型。

2.1.1.2 常用分类算法

  1. 逻辑回归:尽管名字中含有“回归”,但逻辑回归实际上是一种广泛使用的分类算法,特别是用于二分类问题。它通过Sigmoid函数将线性回归的预测值映射到(0,1)区间,表示属于某一类的概率。

  2. 决策树:决策树是一种直观的分类和回归方法。它通过递归地选择最优特征来划分数据集,形成树状结构。在分类问题中,每个叶子节点代表一个类别。

  3. 随机森林:随机森林是决策树的集成学习方法,通过构建多个决策树并输出它们的分类模式的众数(对于分类问题)或平均值(对于回归问题)来改进预测性能。

  4. 支持向量机(SVM):SVM是一种强大的分类技术,尤其在高维空间中表现优异。它基于结构风险最小化原则,寻找一个超平面来最大化不同类别之间的间隔。

  5. K近邻(KNN):KNN是一种基于实例的学习方法,通过测量不同数据点之间的距离进行分类。对于新的数据点,KNN算法会找到最近的K个已知类别数据点,并基于这K个点的多数投票来预测新点的类别。

2.1.1.3 Python实现示例

以逻辑回归为例,使用scikit-learn库在Python中实现分类模型:

  1. from sklearn.datasets import load_iris
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LogisticRegression
  4. from sklearn.metrics import accuracy_score
  5. # 加载数据
  6. iris = load_iris()
  7. X = iris.data
  8. y = iris.target
  9. # 划分训练集和测试集
  10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  11. # 创建逻辑回归模型
  12. model = LogisticRegression(max_iter=200)
  13. # 训练模型
  14. model.fit(X_train, y_train)
  15. # 预测测试集
  16. y_pred = model.predict(X_test)
  17. # 评估模型
  18. print("Accuracy:", accuracy_score(y_test, y_pred))

2.1.2 回归问题

2.1.2.1 定义与概述

回归是另一种重要的监督学习任务,其目标是预测一个或多个连续值。与分类问题不同,回归问题的输出不是离散的类别标签,而是可以取任意实数值的连续量,如房价、温度等。

2.1.2.2 常用回归算法

  1. 线性回归:线性回归是最简单的回归算法,它假设特征与目标变量之间存在线性关系。通过最小化预测值与真实值之间的平方误差来训练模型。

  2. 多项式回归:当线性关系不足以描述数据时,可以使用多项式回归。它通过在特征变量上添加非线性项(如平方、立方等)来扩展线性模型。

  3. 岭回归(Ridge Regression):岭回归是线性回归的一种扩展,通过引入正则化项(L2范数)来解决过拟合问题,使得模型的系数更加平滑。

  4. 套索回归(Lasso Regression):与岭回归类似,套索回归也使用正则化项来防止过拟合,但不同的是它使用L1范数作为正则化项,这有助于实现特征的稀疏性。

  5. 决策树回归:决策树不仅可以用于分类问题,也可以用于回归问题。它通过构建树状结构来预测连续值。

2.1.2.3 Python实现示例

以线性回归为例,使用scikit-learn库在Python中实现回归模型:

  1. from sklearn.datasets import make_regression
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LinearRegression
  4. from sklearn.metrics import mean_squared_error
  5. # 生成模拟数据
  6. X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
  7. # 划分训练集和测试集
  8. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  9. # 创建线性回归模型
  10. model = LinearRegression()
  11. # 训练模型
  12. model.fit(X_train, y_train)
  13. # 预测测试集
  14. y_pred = model.predict(X_test)
  15. # 评估模型
  16. mse = mean_squared_error(y_test, y_pred)
  17. print("Mean Squared Error:", mse)

2.1.3 分类与回归的对比

  • 目标变量:分类问题的目标变量是离散的类别标签,而回归问题的目标变量是连续的数值。
  • 评估指标:分类问题常用准确率、精确率、召回率、F1分数等指标评估;回归问题则常用均方误差(MSE)、均方根误差(RMSE)等指标。
  • 应用场景:分类适用于预测类别标签的场景,如垃圾邮件识别、疾病诊断等;回归适用于预测连续值的场景,如房价预测、温度预测等。

结语

分类与回归作为机器学习的两大基石,在各个领域都发挥着重要作用。通过选择合适的算法和合适的评估指标,可以有效地解决实际应用中的问题。在Python中,借助scikit-learn等强大的机器学习库,我们可以轻松地实现和部署这些算法。希望本章内容能为你后续的机器学习之旅打下坚实的基础。


该分类下的相关小册推荐: