社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

超强总结,必会的8大机器学习算法!

学姐带你玩AI • 6 月前 • 203 次点击  

来源:投稿  作者:恒心
编辑:学姐

机器学习是人工智能的一个重要分支,它让计算机通过数据学习并进行预测。对于初学者来说,了解常用的机器学习算法及其实现方式是非常重要的。本篇文章将总结几种常见的机器学习算法,并提供相应的Python代码示例和详细的解释,希望能帮助小白更好地理解这些算法。

unsetunset1. 线性回归unsetunset

线性回归是一种用于预测数值型结果的算法。其基本思想是通过拟合一条直线来描述自变量与因变量之间的关系。如果我们有一组数据点,我们希望通过这些数据点来找到最优的线性方程。

数学模型

线性回归的数学模型为:

img

其中:

  • yy 是预测值
  • ww 是权重(斜率)
  • xx 是输入特征
  • bb 是偏置项(截距)

Python 实现

下面是使用 scikit-learn 库实现线性回归的示例代码:

pythonCopy Codeimport numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 生成样本数据
np.random.seed(0)
x = 2.5 * np.random.rand(100)  # 自变量
y = 1 + 2 * x + np.random.randn(100)  # 因变量,加上一些随机噪声

# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x.reshape(-1, 1), y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()
model.fit(x_train, y_train)  # 训练模型

# 进行预测
y_pred = model.predict(x_test)

# 可视化
plt.scatter(x_test, y_test, color='blue', label='真实值')
plt.scatter(x_test, y_pred, color='red', label='预测值')
plt.xlabel('自变量 x')
plt.ylabel('因变量 y')
plt.title('线性回归')
plt.legend()
plt.show()

解释

  1. 生成样本数据:我们生成了一些随机数据点,其中 yy 与 xx 存在一定的线性关系。
  2. 划分数据集:使用 train_test_split 将数据随机划分为训练集和测试集,80%的数据用于训练,20%用于测试。
  3. 创建模型:使用 LinearRegression() 创建线性回归模型,并使用训练数据进行训练。
  4. 进行预测:用测试数据进行预测,并可视化真实值与预测值的关系。

unsetunset2. 逻辑回归unsetunset

逻辑回归主要用于二分类问题。尽管名字中有“回归”,但它实际上是用于分类的。逻辑回归通过使用 Sigmoid 函数将输出映射到 (0, 1) 的范围内,从而得到概率值。

数学模型

逻辑回归的模型为:

img

其中 z=wx+bz=w**x+b,pp 是事件发生的概率。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data[:100, :2]  # 选择前100个样本(两个类别)
y = iris.target[:100]     # 目标值

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, 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:.2f}')

解释

  1. 加载数据集:我们使用鸢尾花数据集,其中只有前100个样本用于二分类(Setosa 和 Versicolour)。
  2. 划分数据集:同样使用 train_test_split 划分数据集。
  3. 创建模型:使用 LogisticRegression() 创建逻辑回归模型,并训练。
  4. 进行预测:对测试集进行预测,并计算模型的准确率。

unset unset3. 决策树unsetunset

决策树是一种简单易懂的分类和回归方法。它通过逐步询问问题,将数据分成不同的类别。每个节点代表一个特征,每条边代表一个特征的取值,叶子节点代表最终的决策。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)  # 训练模型

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'准确率: {accuracy:.2f}')
print(classification_report(y_test, y_pred))

解释

  1. 加载数据集:使用鸢尾花数据集,包括三个类别的样本。
  2. 划分数据集:划分为训练集和测试集。
  3. 创建模型:使用 DecisionTreeClassifier() 创建决策树模型,并训练。
  4. 进行预测:对测试集进行预测,输出准确率和分类报告,以评估模型性能。

unsetunset4. K近邻算法(KNN)unsetunset

K近邻算法是一种基于实例的学习方法,用于分类和回归。KNN的基本思想是,对于一个待分类的样本,通过查看其最近的K个邻居的类别,来决定该样本的类别。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建KNN模型,设定K=3
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)  # 训练模型

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'准确率: {accuracy:.2f}')

解释

  1. 加载数据集:同样使用鸢尾花数据集。
  2. 划分数据集:划分为训练集和测试集。
  3. 创建模型:选择K=3的KNN模型,并训练。
  4. 进行预测:对测试集进行预测,输出准确率。

unsetunset5. 支持向量机(SVM)unsetunset

支持向量机是一种强大的分类算法,它通过寻找最佳超平面来分割不同类别的数据。SVM在高维空间中表现良好,适用于线性和非线性分类问题。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建SVM模型
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:.2f}')

解释

  1. 加载数据集:使用鸢尾花数据集。
  2. 划分数据集:划分为训练集和测试集。
  3. 创建模型:选择线性核的SVM模型,并训练。
  4. 进行预测:对测试集进行预测,输出准确率。

unsetunset6. 随机森林unsetunset

随机森林是一种集成学习算法,由多个决策树组成。它通过结合多个树的预测结果来提高分类的准确性,并降低过拟合的风险。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100)  # 100棵树
model.fit(X_train, y_train)  # 训练模型

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'准确率: {accuracy:.2f}')

解释

  1. 加载数据集:使用鸢尾花数据集。
  2. 划分数据集:划分为训练集和测试集。
  3. 创建模型:创建一个有100棵树的随机森林模型并训练。
  4. 进行预测:对测试集进行预测,输出准确率。

unsetunset 7. 梯度提升树(Gradient Boosting)unsetunset

梯度提升树是一种集成学习算法,通过逐步构建树来优化模型。每一棵树都是在前一棵树的基础上建立的,重点关注之前模型中错误的样本。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建梯度提升树模型
model = GradientBoostingClassifier(n_estimators=100)  # 100棵树
model.fit(X_train, y_train)  # 训练模型

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'准确率: {accuracy:.2f}')

解释

  1. 加载数据集:使用鸢尾花数据集。
  2. 划分数据集:划分为训练集和测试集。
  3. 创建模型:创建一个有100棵树的梯度提升树模型并训练。
  4. 进行预测:对测试集进行预测,输出准确率。

unset unset8. 聚类算法(K均值)unsetunset

K均值聚类是一种无监督学习算法,旨在将数据分成K个簇。它通过迭代的方法将每个点分配到最近的簇中,并更新簇的中心位置。

Python 实现

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data

# 创建K均值模型,设定K=3
model = KMeans(n_clusters=3, random_state=42)
model.fit(X)  # 训练模型

# 预测簇标签
labels = model.labels_

# 可视化前两个特征
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='rainbow')
plt.xlabel('特征 1')
plt.ylabel('特征 2')
plt.title('K均值聚类')
plt.show()

解释

  1. 加载数据集:使用鸢尾花数据集。
  2. 创建模型:设置K=3的K均值模型并训练。
  3. 进行预测:获取每个样本的簇标签,并可视化前两个特征的聚类结果。

本文总结了多种常用的机器学习算法,包括线性回归、逻辑回归、决策树、K近邻、支持向量机、随机森林、梯度提升树和K均值聚类。通过简单的Python代码示例,我们展示了如何使用scikit-learn库实现这些算法。希望这篇文章能够帮助初学者理解机器学习的基本概念和算法,为进一步学习打下坚实的基础。

-- END --

关注“学姐带你玩AI”公众号,回复“聚类改进

领取机器学习聚类算法最新改进方案&代码

往期精彩阅读

👉kaggle比赛baseline合集

👉经典论文推荐合集

👉人工智能必读书籍

👉本专科硕博学习经验

评论区留言参与讨论嗷

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/175271
 
203 次点击