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

2.3 监督学习算法

在Python机器学习的基础教程中,深入理解监督学习算法是掌握机器学习核心的关键一步。监督学习是机器学习领域中最常见且应用最广泛的一类算法,其核心在于利用一组已知标签(或称为“答案”)的数据集来训练模型,使模型能够学习到输入数据与输出标签之间的映射关系,进而对新的、未见过的数据进行预测或分类。本章节将详细介绍几种基础的监督学习算法,包括线性回归、逻辑回归、决策树和K近邻算法,并探讨它们在Python中的实现与应用。

2.3.1 线性回归

概念解析
线性回归是一种预测数值型数据的监督学习算法。它试图找到一个最佳的线性方程(或称为模型),以最小化实际值与预测值之间的误差平方和。线性回归模型可以表示为 y = wx + b,其中 y 是预测值,x 是输入特征,w 是权重(斜率),b 是偏置项(截距)。

Python实现
在Python中,我们可以使用scikit-learn库来轻松实现线性回归。首先,需要安装scikit-learn库(如果尚未安装):

  1. pip install scikit-learn

然后,可以使用以下代码示例来演示线性回归的应用:

  1. from sklearn.model_selection import train_test_split
  2. from sklearn.linear_model import LinearRegression
  3. from sklearn.datasets import make_regression
  4. # 生成模拟数据
  5. X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
  6. # 划分训练集和测试集
  7. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  8. # 创建线性回归模型
  9. model = LinearRegression()
  10. # 训练模型
  11. model.fit(X_train, y_train)
  12. # 预测测试集
  13. y_pred = model.predict(X_test)
  14. # 评估模型(此处省略具体评估代码,通常使用均方误差等指标)

2.3.2 逻辑回归

概念解析
尽管名字中包含“回归”,逻辑回归实际上是一种广泛用于分类问题的监督学习算法,特别是二分类问题。它通过Sigmoid函数将线性模型的输出映射到(0, 1)区间,从而得到属于某个类别的概率。

Python实现
同样使用scikit-learn库,逻辑回归的实现非常直接:

  1. from sklearn.linear_model import LogisticRegression
  2. from sklearn.datasets import make_classification
  3. # 生成模拟数据
  4. X, y = make_classification(n_samples=100, n_features=2, n_classes=2, random_state=42)
  5. # 划分训练集和测试集
  6. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  7. # 创建逻辑回归模型
  8. model = LogisticRegression()
  9. # 训练模型
  10. model.fit(X_train, y_train)
  11. # 预测测试集
  12. y_pred = model.predict(X_test)
  13. # 评估模型(此处省略具体评估代码)

2.3.3 决策树

概念解析
决策树是一种通过树状结构进行决策的分类与回归方法。它根据数据特征进行递归地划分数据集,每次划分都选择最优的划分属性,直到满足停止条件(如所有样本属于同一类、达到预设的树深度等)。决策树易于理解和解释,是机器学习中的经典算法之一。

Python实现
scikit-learn中,DecisionTreeClassifier用于分类任务,DecisionTreeRegressor用于回归任务:

  1. from sklearn.tree import DecisionTreeClassifier
  2. # 使用之前的分类数据集
  3. # 划分训练集和测试集(此处省略,与上例相同)
  4. # 创建决策树分类模型
  5. model = DecisionTreeClassifier()
  6. # 训练模型
  7. model.fit(X_train, y_train)
  8. # 预测测试集
  9. y_pred = model.predict(X_test)
  10. # 评估模型(此处省略具体评估代码)

2.3.4 K近邻算法(K-NN)

概念解析
K近邻算法是一种基于实例的学习方法,或者说是“懒惰学习”的代表。它不需要显式地训练模型,而是将训练数据集存储在内存中,当有新样本需要预测时,算法会计算新样本与所有训练样本之间的距离,找出距离最近的K个样本,然后根据这K个样本的标签进行投票(对于分类问题)或平均(对于回归问题),以决定新样本的类别或预测值。

Python实现
scikit-learn中,K近邻算法通过KNeighborsClassifier(分类)和KNeighborsRegressor(回归)实现:

  1. from sklearn.neighbors import KNeighborsClassifier
  2. # 使用之前的分类数据集
  3. # 划分训练集和测试集(此处省略,与上例相同)
  4. # 创建K近邻分类模型
  5. model = KNeighborsClassifier(n_neighbors=3) # 假设选择3个最近邻
  6. # 训练模型(K-NN通常不需要显式训练过程,这里只是调用fit方法以符合scikit-learn的API)
  7. model.fit(X_train, y_train)
  8. # 预测测试集
  9. y_pred = model.predict(X_test)
  10. # 评估模型(此处省略具体评估代码)

总结

本章介绍了四种基础的监督学习算法:线性回归、逻辑回归、决策树和K近邻算法。每种算法都有其独特的适用场景和优缺点,例如线性回归适用于连续值的预测,逻辑回归适用于二分类问题,决策树易于理解和解释,而K近邻算法则对异常值敏感且计算成本较高。通过Python的scikit-learn库,我们可以轻松地实现这些算法,并应用于实际的数据分析和机器学习项目中。掌握这些基础算法,将为后续学习更复杂的机器学习模型打下坚实的基础。


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