第三部分:常用的机器学习算法与实现
用Python开启人工智能之旅(一)Python简介与安装
用Python开启人工智能之旅(二)Python基础
用Python开启人工智能之旅(三)常用的机器学习算法与实现
用Python开启人工智能之旅(四)常用的机器学习算法与实现
用Python开启人工智能之旅(五)AI项目实战中Python基础
机器学习是人工智能的核心技术之一,涉及从数据中学习模型并做出预测或决策。对于初学者而言,了解常见的机器学习算法及其实现方法是掌握这一领域的基础。本节将介绍常用的机器学习算法,并展示如何使用Python实现这些算法。
我们将涵盖以下几类主要的机器学习算法:
-
监督学习算法
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression)
- K最近邻(K-Nearest Neighbors, KNN)
- 支持向量机(Support Vector Machine, SVM)
- 决策树(Decision Tree)
-
无监督学习算法
- K-means聚类(K-means Clustering)
- 主成分分析(Principal Component Analysis, PCA)
-
模型评估与选择
- 交叉验证(Cross-validation)
- 性能度量:准确率、精确率、召回率、F1-score
3.1 监督学习算法
监督学习算法用于根据已有标签的训练数据来预测新数据的标签。以下是几种常用的监督学习算法。
3.1.1 线性回归(Linear Regression)
线性回归是最简单的回归算法,用于预测一个连续变量与一个或多个自变量之间的关系。假设自变量和因变量之间存在线性关系,模型通过拟合一条直线来进行预测。
-
数学表达式:
[
y = w_1x_1 + w_2x_2 + … + w_nx_n + b
]
其中,(x_1, x_2, …, x_n)是特征变量,(w_1, w_2, …, w_n)是模型的系数,(b)是偏置项,(y)是预测结果。 -
Python实现:
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.datasets import make_regression # 创建数据集 X, y = make_regression(n_samples=100, n_features=1, noise=0.1) # 拆分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建线性回归模型 model = LinearRegression() # 训练模型 model.fit(X_train, y_train) # 预测 y_pred = model.predict(X_test) # 输出结果 print("Coefficients:", model.coef_) print("Intercept:", model.intercept_)
3.1.2 逻辑回归(Logistic Regression)
逻辑回归是一种用于分类问题的回归算法,特别适用于二分类问题。它通过将线性回归的输出通过Sigmoid函数转换为概率值来进行分类。
-
数学表达式:
[
P(y=1 | X) = \frac{1}{1 + e^{-(w_1x_1 + w_2x_2 + … + w_nx_n + b)}}
] -
Python实现:
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification # 创建数据集 X, y = make_classification(n_samples=100, n_features=2, n_classes=2) # 拆分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建逻辑回归模型 model = LogisticRegression() # 训练模型 model.fit(X_train, y_train) # 预测 y_pred = model.predict(X_test) # 输出结果 print("Accuracy:", model.score(X_test, y_test))
3.1.3 K最近邻(K-Nearest Neighbors, KNN)
KNN是一种简单的监督学习算法,主要用于分类和回归任务。它通过计算新数据点与训练数据中各点的距离来进行预测。
-
算法步骤:
- 计算待预测样本与训练集中每个样本的距离。
- 找到最近的K个邻居。
- 对于分类任务,根据K个邻居中多数的类别进行预测;对于回归任务,返回K个邻居的平均值。
-
Python实现:
from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification # 创建数据集 X, y = make_classification(n_samples=100, n_features=2, n_classes=2) # 拆分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建KNN模型 model = KNeighborsClassifier(n_neighbors=3) # 训练模型 model.fit(X_train, y_train) # 预测 y_pred = model.predict(X_test) # 输出结果 print("Accuracy:", model.score(X_test, y_test))
3.1.4 支持向量机(Support Vector Machine, SVM)
支持向量机是一种强大的分类算法,特别适用于高维数据。它通过寻找一个最大化类别间隔的超平面来进行分类。
- Python实现:
from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification # 创建数据集 X, y = make_classification(n_samples=100, n_features=2, n_classes=2) # 拆分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建SVM模型 model = SVC(kernel='linear') # 训练模型 model.fit(X_train, y_train) # 预测 y_pred = model.predict(X_test) # 输出结果 print("Accuracy:", model.score(X_test, y_test))
3.1.5 决策树(Decision Tree)
决策树是一种通过树形结构进行决策的算法。每个节点表示一个特征,每条边表示一个判断条件,叶子节点表示分类结果。
- Python实现:
from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification # 创建数据集 X, y = make_classification(n_samples=100, n_features=2, n_classes=2) # 拆分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建决策树模型 model = DecisionTreeClassifier() # 训练模型 model.fit(X_train, y_train) # 预测 y_pred = model.predict(X_test) # 输出结果 print("Accuracy:", model.score(X_test, y_test))
3.2 无监督学习算法
无监督学习算法用于从无标签的数据中学习模式,常见的应用包括聚类和降维。
3.2.1 K-means聚类(K-means Clustering)
K-means是一种常用的聚类算法,旨在将数据划分为K个不同的组(或簇),使得每个组内部的数据点之间尽量相似。
- Python实现:
from sklearn.cluster import KMeans from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # 创建数据集 X, _ = make_blobs(n_samples=300, centers=4, random_state=42) # 创建K-means模型 kmeans = KMeans(n_clusters=4) # 训练模型 kmeans.fit(X) # 预测簇标签 y_pred = kmeans.predict(X) # 可视化结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis') plt.show()
3.2.2 主成分分析(Principal Component Analysis, PCA)
PCA是一种常用的降维方法,它通过寻找数据中最重要的方向(主成分)来减少特征空间的维度,同时尽量保留数据的主要信息。
- Python实现:
from sklearn.decomposition import PCA from sklearn.datasets import make_classification import matplotlib.pyplot as plt # 创建数据集 X, _ = make_classification(n_samples=100, n_features=5, random_state=42) # 创建PCA模型 pca = PCA(n_components=2) # 进行降维 X_pca = pca.fit_transform(X) # 可视化
降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.show()
#### 3.3 模型评估与选择
机器学习模型的效果评估至关重要。以下是常见的模型评估方法。
##### 3.3.1 交叉验证(Cross-validation)
交叉验证是一种常用的模型评估方法,它通过将数据集分成多个子集,使用不同的训练集和测试集来评估模型的稳定性和泛化能力。
- **Python实现:**
```python
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# 加载数据
X, y = load_iris(return_X_y=True)
# 创建模型
model = SVC(kernel='linear')
# 进行交叉验证
scores = cross_val_score(model, X, y, cv=5)
# 输出结果
print("Cross-validation scores:", scores)
print("Mean accuracy:", scores.mean())
3.3.2 性能度量:准确率、精确率、召回率、F1-score
-
准确率(Accuracy): 测试集预测正确的样本所占的比例。
-
精确率(Precision): 被模型预测为正类的样本中,实际为正类的比例。
-
召回率(Recall): 实际为正类的样本中,被模型正确预测为正类的比例。
-
F1-score: 精确率和召回率的调和平均数。
-
Python实现:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 真实标签与预测标签 y_true = [1, 0, 1, 1, 0, 1, 0, 1] y_pred = [1, 0, 1, 0, 0, 1, 0, 1] # 计算性能度量 print("Accuracy:", accuracy_score(y_true, y_pred)) print("Precision:", precision_score(y_true, y_pred)) print("Recall:", recall_score(y_true, y_pred)) print("F1-score:", f1_score(y_true, y_pred))
总结
本部分介绍了常见的机器学习算法及其在Python中的实现方法。掌握这些算法和技术对于学习机器学习至关重要。通过实践和不断深入了解,你将能够更好地理解机器学习的工作原理,并将其应用到实际问题中。
思维导图说明
监督学习算法(B):
线性回归:回归问题中的基础算法,用于预测一个连续变量。
逻辑回归:二分类问题的基础算法,用于预测类别概率。
K-近邻算法(KNN):基于距离度量的分类与回归算法。
支持向量机(SVM):高效的分类算法,寻找最大间隔的超平面。
决策树与随机森林:树状结构的分类和回归算法,随机森林是决策树的集成。
无监督学习算法(C):
K-means 聚类:常用的聚类算法,将数据划分为K个簇。
主成分分析(PCA):数据降维的算法,提取数据的主要特征。
DBSCAN 聚类:基于密度的聚类算法,适用于发现形状复杂的簇。
模型评估与选择(D):
交叉验证:用于评估模型的表现,减少过拟合。
评估指标:包括准确率、精确率、召回率、F1分数等,用于评估模型的好坏。
用Python开启人工智能之旅(一)Python简介与安装
用Python开启人工智能之旅(二)Python基础
用Python开启人工智能之旅(三)常用的机器学习算法与实现
用Python开启人工智能之旅(四)常用的机器学习算法与实现
用Python开启人工智能之旅(五)AI项目实战中Python基础
了解更多关于AI算法Python实现文章,欢迎关注这个专栏! 点击进入:AI算法Python实现
本文为原创内容,未经许可不得转载。