大家好~
在学习机器学习之后,你认为最重要的算法模型有哪些?
今儿的内容涉及到~
-
线性回归
-
逻辑回归
-
决策树
-
支持向量机
-
朴素贝叶斯
-
K近邻算法
-
聚类算法
-
神经网络
-
集成方法
-
降维算法
-
主成分分析
-
支持向量回归
-
核方法
-
最近邻算法
-
随机森林
-
梯度提升
-
AdaBoost
-
深度学习
我把每种算法模型的核心公式和代码也列举了出来,如果有其他比较重要的算法,大家可以在评论区给出~
这20种算法模型,大家可以作为复习,补充对于整个算法的框架。
好了,咱们下面对每种算法进行介绍~
今天的内容非常干,建议大家收藏转发~
以下是对这些算法模型的简要介绍、核心公式的详细解释以及相关的 Python 代码案例。
1. 线性回归(Linear Regression)
用于建立自变量(特征)和因变量(目标)之间的线性关系。
核心公式:
简单线性回归的公式为: 其中 是预测值, 是截距, 是斜率, 是自变量。
代码案例:
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建一些随机数据
X = np.array([[1], [2], [3], [4]])
y = np.array([2, 4, 6, 8])
# 拟合模型
model = LinearRegression().fit(X, y)
# 预测
y_pred = model.predict(X)
print("预测值:", y_pred)
2. 逻辑回归(Logistic Regression)
用于处理分类问题,通过一个 S 形的函数将输入映射到 0 到 1 之间的概率。
核心公式:
逻辑回归的公式为: 其中 是给定输入 下预测 为 1 的概率,是截距, 是权重, 是自然常数。
代码案例:
from sklearn.linear_model import LogisticRegression
import numpy as np
# 创建一些随机数据
X = np.array([[1], [2], [3], [4]])
y = np.array([0, 0, 1, 1])
# 拟合模型
model = LogisticRegression().fit(X, y)
# 预测
y_pred = model.predict(X)
print("预测值:", y_pred)
3. 决策树(Decision Tree)
通过一系列决策来学习数据的分类规则或者数值预测规则,可解释性强。
核心公式:
决策树的核心在于树的构建和节点分裂的规则,其本身没有明确的数学公式。
代码案例:
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = DecisionTreeClassifier()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
4. 支持向量机(Support Vector Machine,SVM)
用于分类和回归分析的监督学习模型,能够在高维空间中构造超平面或超平面集合,实现对数据的有效分类。
核心公式:
SVM 的目标是找到一个最优超平面,使得两个类别的间隔最大化。分类器的决策函数为: 其中 是要分类的样本, 是支持向量, 是对应支持向量的系数, 是支持向量的标签, 是核函数, 是偏置。
代码案例:
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = SVC()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
5. 朴素贝叶斯(Naive Bayes)
基于贝叶斯定理和特征条件独立假设的分类算法,常用于文本分类和垃圾邮件过滤。
核心公式:
朴素贝叶斯分类器基于贝叶斯定理计算后验概率,其公式为:$ P(y|x_1, x_2, …, x_n) = \fracP(y) \prod_{i=1}^{n} P(x_iy){P(x_1, x_2, …, x_n)} 其中P(y|x_1, x_2, …, x_n)是给定特征x_1, x_2, …, x_n下类别y的后验概率,P(y)是类别y的先验概率,P(x_i|y)是在类别y下特征x_i的条件概率,P(x_1, x_2, …, x_n)是特征x_1, x_2, …, x_n$ 的联合概率。
代码案例:
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = GaussianNB()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
6. K近邻算法(K-Nearest Neighbors,KNN)
一种基本的分类和回归方法,它的基本假设是“相似的样本具有相似的输出”。
核心公式:
KNN 的核心思想是根据输入样本的特征,在训练集中找到与之最接近的 个样本,然后根据这 个样本的标签来预测输入样本的标签。没有明确的数学公式,其预测公式可以简单表示为投票机制。
代码案例:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = KNeighborsClassifier()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
7. 聚类算法(Clustering)
聚类是一种无监督学习方法,将数据集中的样本划分为若干组,使得同一组内的样本相似度较高,不同组之间的样本相似度较低。
核心公式:
常见的聚类算法包括 K 均值聚类和层次聚类等,它们的核心在于距离计算和簇的更新规则。
代码案例:
这里以 K 均值聚类为例。
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 创建一些随机数据
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
# 训练模型
model = KMeans(n_clusters=4)
model.fit(X)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, s=50, cmap='viridis')
centers = model.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.5)
plt.show()
8. 神经网络(Neural Networks)
神经网络是一种模拟人脑神经元网络的计算模型,通过调整神经元之间的连接权重来学习数据的复杂关系。
核心公式:
神经网络的核心在于前向传播和反向传播过程,其中涉及到激活函数、损失函数等。
代码案例:
这里以使用 TensorFlow 实现一个简单的全连接神经网络为例。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 创建一些随机数据
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建神经网络模型
model = Sequential([
Dense(64, activation='relu', input_shape=(20,)),
Dense(64, activation='relu'),
Dense(1, activation='sigmoid')
])
# 编译模型
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))
# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print("准确率:", accuracy)
9. 集成方法(Ensemble Methods)
集成方法通过组合多个基分类器(或回归器)的预测结果来改善泛化能力和准确性。
核心公式:
集成方法的核心在于不同的组合方式,常见的包括 Bagging、Boosting 和随机森林等。
代码案例:
这里以随机森林为例。
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
10. 降维算法(Dimensionality Reduction)
降维算法用于减少数据集的维度,保留数据集的重要特征,可以用于数据可视化和提高模型性能。
核心公式:
主成分分析(PCA)是一种常用的降维算法,其核心是通过线性变换将原始数据映射到一个新的坐标系中,选择新坐标系上方差最大的方向作为主要特征。
代码案例:
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 载入数据
iris = load_iris()
X = iris.data
# 使用 PCA 进行降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print("降维后的数据维度:", X_pca.shape)
11. 主成分分析(Principal Component Analysis,PCA)
主成分分析是一种常用的降维算法,用于发现数据中的主要特征。
核心公式:
PCA 的核心是特征值分解,将原始数据的协方差矩阵分解为特征向量和特征值,通过选取特征值较大的特征向量进行降维。
代码案例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 载入数据
iris = load_iris()
X = iris.data
y = iris.target
# 使用 PCA 进行降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 可视化降维结果
plt.figure(figsize=(8, 6))
for i in range(len(np.unique(y))):
plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], label=iris.target_names[i])
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of IRIS dataset')
plt.legend()
plt.show()
12. 支持向量回归(Support Vector Regression,SVR)
SVR 是一种使用支持向量机(SVM)进行回归分析的方法,能够有效处理线性和非线性回归问题。
核心公式:
SVR 的核心在于损失函数的定义和对偶问题的求解,其目标是最小化预测值与真实值之间的误差,同时保持预测值尽可能接近真实值。具体公式比较复杂,无法简单表示。
代码案例:
from sklearn.svm import SVR
import numpy as np
import matplotlib.pyplot as plt
# 创建一些随机数据
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
# 添加噪声
y[::5] += 3 * (0.5 - np.random.rand(20))
# 训练模型
model = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=.1)
model.fit(X, y)
# 预测
X_test = np.linspace(0, 5, 100)[:, np.newaxis]
y_pred = model.predict(X_test)
# 可视化结果
plt.scatter(X, y, color='darkorange', label='data')
plt.plot(X_test, y_pred, color='navy', lw=2, label='prediction')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
13. 核方法(Kernel Methods)
核方法是一种通过在原始特征空间中应用核函数来学习非线性模型的方法,常用于支持向量机等算法。
核心公式:
核方法的核心在于核函数的选择和应用,常见的核函数包括线性核、多项式核和高斯核等,其具体形式取决于核函数的选择。
代码案例:
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import numpy as np
# 创建一些随机数据
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义一个高斯核支持向量机模型
model = SVC(kernel='rbf', gamma='scale', random_state=42)
# 训练模型
model.fit(X_train, y_train)
# 可视化决策边界
plt.figure(figsize=(8, 6))
h = .02
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title('SVM with RBF Kernel')
plt.show()
14. 最近邻算法(K-Nearest Neighbors,KNN)
KNN 是一种基本的分类和回归方法,其基本思想是如果一个样本在特征空间中的 k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
核心公式:
KNN 的核心是距离度量和投票机制,对于分类问题,可以使用欧氏距离等距离度量方式,对于回归问题,通常使用平均值等方式进行预测。
代码案例:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = KNeighborsClassifier()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
15. 随机森林(Random Forest)
随机森林是一种集成学习方法,通过构建多个决策树来提高分类性能,具有良好的抗过拟合能力和稳定性。
核心公式:
随机森林的核心在于决策树的集成方式和随机性的引入,具体公式比较复杂,涉及到决策树的建立和集成规则。
代码案例:
from 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, random_state=42)
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
16. 梯度提升(Gradient Boosting)
梯度提升是一种集成学习方法,通过逐步训练新模型来改善已有模型的预测能力,通常使用决策树作为基础模型。
核心公式:
梯度提升的核心在于损失函数的优化和模型的更新规则,其核心思想是在每一步迭代中拟合一个新模型来拟合之前模型的残差,从而逐步减小残差。
代码案例:
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
17. AdaBoost(Adaptive Boosting)
AdaBoost 是一种集成学习方法,通过串行训练多个弱分类器,并加大误分类样本的权重来提高分类性能。
核心公式:
AdaBoost 的核心在于样本权重的更新规则和基分类器的组合方式,具体公式涉及到样本权重的调整和分类器权重的更新。
代码案例:
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = AdaBoostClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
18. 深度学习(Deep Learning)
深度学习是一种基于人工神经网络的机器学习方法,其核心思想是通过多层非线性变换来学习数据的表示。
核心公式:
深度学习涉及到多层神经网络的构建和优化,其中包括前向传播和反向传播等过程,具体公式和算法较为复杂。
代码案例:
这里以使用 TensorFlow 实现一个简单的深度神经网络(多层感知器)为例。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 创建一些随机数据
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建深度神经网络模型
model = Sequential([
Dense(64, activation='relu', input_shape=(20,)),
Dense(64, activation='relu'),
Dense(1, activation='sigmoid')
])
# 编译模型
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test))
# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print("准确率:", accuracy)
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓