共计 2711 个字符,预计需要花费 7 分钟才能阅读完成。
欢迎来到 Python 基础入门 Day36!今天,我们将深入探讨 机器学习基础 ,特别是 监督学习 中的常用算法,包括线性回归、逻辑回归以及支持向量机(SVM)。你将学习如何使用 Scikit-learn,这是 Python 中最常用的机器学习库,帮助你快速实现模型的训练和评估。
目录
- 机器学习简介
- 监督学习算法概述
- 线性回归
- 逻辑回归
- 支持向量机(SVM)
- 小结与练习
一、机器学习简介
机器学习是一种利用数据和算法来模拟人类学习的过程,从而使得计算机能够通过经验(数据)来进行预测或决策。机器学习分为三大类:
- 监督学习:通过已有标签的数据来训练模型,进行分类或回归任务。
- 无监督学习:通过无标签数据来训练模型,进行聚类或降维等任务。
- 强化学习:通过与环境的交互来进行学习,以最大化长期回报。
今天我们重点讲解 监督学习 中的回归和分类问题。
二、监督学习算法概述
在 监督学习 中,我们使用标记的数据集进行训练。监督学习算法分为两大类:
- 回归算法:用于预测数值型输出(如预测房价、股票价格等)。
- 分类算法:用于预测类别型输出(如垃圾邮件分类、图像分类等)。
我们将介绍以下三种常用的监督学习算法:
- 线性回归:用于预测连续数值。
- 逻辑回归:用于分类任务,尤其是二分类问题。
- 支持向量机(SVM):用于分类和回归任务,尤其适用于高维空间中的分类问题。
三、线性回归
线性回归 是最基本的回归算法,用于预测一个连续变量。它假设因变量与自变量之间存在线性关系。
3.1 线性回归模型
我们使用 Scikit-learn 实现线性回归模型。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 示例数据:房价预测数据集
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv"
data = pd.read_csv(url, header=None)
X = data.iloc[:, :-1] # 特征
y = data.iloc[:, -1] # 目标值(房价)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
3.2 评估模型
评估线性回归模型的常见指标包括 均方误差(MSE) 和 决定系数(R²)。它们帮助我们了解模型的拟合程度。
# R²决定系数
r2 = model.score(X_test, y_test)
print(f"R²: {r2}")
四、逻辑回归
逻辑回归 是一种分类算法,主要用于二分类问题。它基于线性回归,并使用 Sigmoid 函数将输出映射到 [0,1] 之间,用于概率预测。
4.1 逻辑回归模型
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
# 示例数据:鸢尾花数据集(用于分类)from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# 使用前两类数据进行二分类
X = X[y != 2]
y = y[y != 2]
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print(f"Confusion Matrix:\n{conf_matrix}")
4.2 评估分类模型
逻辑回归模型的评估通常使用 准确率(Accuracy) 和 混淆矩阵。混淆矩阵展示了预测类别与实际类别的关系,有助于更好地理解模型的分类性能。
五、支持向量机(SVM)
支持向量机(SVM) 是一种强大的分类算法,适用于高维数据,尤其是在数据线性不可分的情况下。SVM 会通过寻找最优超平面来最大化类别间的间隔。
5.1 SVM 模型
from sklearn.svm import SVC
# 训练支持向量机分类模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)
# 预测与评估
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print(f"Confusion Matrix:\n{conf_matrix}")
5.2 核函数
SVM 的强大之处在于其使用 核函数(Kernel),使得模型能够在高维空间中找到最优超平面。常用的核函数包括 线性核 、 多项式核 和 RBF 核(径向基函数核)。
# 使用 RBF 核函数的 SVM
model_rbf = SVC(kernel='rbf')
model_rbf.fit(X_train, y_train)
六、小结与练习
今天我们学习了 监督学习 中的三种常见算法: 线性回归 、 逻辑回归 和 支持向量机(SVM)。这些算法在实际应用中非常重要,能够帮助我们处理回归问题和分类问题。
今日练习:
- 使用 线性回归 预测房价数据集中的房价,并评估模型性能。
- 使用 逻辑回归 对 鸢尾花数据集 进行分类,并计算准确率。
- 使用 SVM 对鸢尾花数据集进行分类,比较线性核和 RBF 核的效果。