当前位置: 首页 > article >正文

用Python开启人工智能之旅(三)常用的机器学习算法与实现

第三部分:常用的机器学习算法与实现

在这里插入图片描述
用Python开启人工智能之旅(一)Python简介与安装

用Python开启人工智能之旅(二)Python基础

用Python开启人工智能之旅(三)常用的机器学习算法与实现

用Python开启人工智能之旅(四)常用的机器学习算法与实现

用Python开启人工智能之旅(五)AI项目实战中Python基础

机器学习是人工智能的核心技术之一,涉及从数据中学习模型并做出预测或决策。对于初学者而言,了解常见的机器学习算法及其实现方法是掌握这一领域的基础。本节将介绍常用的机器学习算法,并展示如何使用Python实现这些算法。

我们将涵盖以下几类主要的机器学习算法:

  1. 监督学习算法

    • 线性回归(Linear Regression)
    • 逻辑回归(Logistic Regression)
    • K最近邻(K-Nearest Neighbors, KNN)
    • 支持向量机(Support Vector Machine, SVM)
    • 决策树(Decision Tree)
  2. 无监督学习算法

    • K-means聚类(K-means Clustering)
    • 主成分分析(Principal Component Analysis, PCA)
  3. 模型评估与选择

    • 交叉验证(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是一种简单的监督学习算法,主要用于分类和回归任务。它通过计算新数据点与训练数据中各点的距离来进行预测。

  • 算法步骤:

    1. 计算待预测样本与训练集中每个样本的距离。
    2. 找到最近的K个邻居。
    3. 对于分类任务,根据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实现

本文为原创内容,未经许可不得转载。


http://www.kler.cn/a/450838.html

相关文章:

  • 【时间之外】IT人求职和创业应知【74】-运维机器人
  • 搭建Elastic search群集
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
  • vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题
  • 【ROS2】坐标TF变换工具-tf2_ros
  • WebRTC服务质量(08)- 重传机制(05) RTX机制
  • 网络安全攻防演练中的常见计策
  • 青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
  • 数据冷热分离详解
  • MySql---进阶篇(1)---存储引擎的介绍与选择
  • html固定头和第一列简单例子
  • MySQL purged gtid是如何生成和维护的
  • Websocket客户端从Openai Realtime api Sever只收到部分数据问题分析
  • [OpenGL]使用TransformFeedback实现粒子效果
  • web-view在指定区域打开,不自动全屏
  • 天水月亮圈圈:舌尖上的历史与传承
  • 深度学习中,用损失的均值或者总和反向传播的区别
  • C# Main方法 和顶级语句详解
  • 【全网首发】台湾省模型数据“去水印“说明(3Dtiles和osgb格式),全台湾省的模型数据,全域无水印AI处理,支持所有模型格式
  • Android Framework 中的 AV/Camera 技术架构详解
  • Web 代理、爬行器和爬虫
  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍09基于布尔值的SQL注入(Boolean-Based SQL Injection)
  • tryhackme-Cyber Security 101-Linux Shells(linux命令框)
  • Windows 11 安装 Dify 完整指南 非docker环境
  • 计算机网络——练习题
  • Windows 11 Web 项目常见问题解决方案