AI中涉及到的算法汇总(精华)
转载请标明出处:
https://dujinyang.blog.csdn.net/
本文出自:【奥特曼超人的博客】
优化方面可参考:《人工智能AI的优化与实际应用(Optimization)》
在人工智能(AI)领域,涉及的算法种类非常多,涵盖了不同的任务和应用。以下是一些常见的AI算法类型,仅供参考学习:
涵盖的算法
1. 监督学习算法
这些算法在有标签的数据上进行训练,目标是根据输入数据预测输出标签。常见的监督学习算法包括:
- 线性回归(Linear Regression)
#KARL-DUJINYANG
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, random_state=42)
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出结果
print("模型的权重:", model.coef_)
print("模型的截距:", model.intercept_)
- 逻辑回归(Logistic Regression)
#KARL-DUJINYANG
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.preprocessing import LabelBinarizer
# 加载数据集
iris = load_iris()
X = iris.data
y = LabelBinarizer().fit_transform(iris.target)[:, 0] # 转为二分类问题
# 切分数据集
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)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
- 支持向量机(SVM, Support Vector Machine)
#KARL-DUJINYANG
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
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(kernel='linear')
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
- 决策树(Decision Trees)
#KARL-DUJINYANG
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
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)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
- 随机森林(Random Forest)
#KARL-DUJINYANG
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
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()
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
- k近邻算法(K-Nearest Neighbors, KNN)
#KARL-DUJINYANG
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
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)
# 创建k近邻算法模型
model = KNeighborsClassifier(n_neighbors=3)
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
- 神经网络(Neural Networks)
#KARL-DUJINYANG
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
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 = MLPClassifier(hidden_layer_sizes=(10,))
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 输出准确率
print("模型准确率:", model.score(X_test, y_test))
2. 无监督学习算法
这些算法用于没有标签的数据集,目标是从数据中发现模式或结构。
常见的无监督学习算法包括:
- k均值聚类(K-Means Clustering)
#KARL-DUJINYANG
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
# 生成示例数据
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
# 创建K均值模型,指定聚类的个数为4
kmeans = KMeans(n_clusters=4, random_state=42)
# 训练模型
kmeans.fit(X)
# 获取聚类的标签
y_kmeans = kmeans.predict(X)
# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
# 绘制聚类中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.show()
- 主成分分析(PCA, Principal Component Analysis)
#KARL-DUJINYANG
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 创建PCA模型,减少到2个主成分
pca = PCA(n_components=2)
# 进行PCA降维
X_pca = pca.fit_transform(X)
# 绘制PCA降维后的数据
plt.figure(figsize=(8,6))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
# 添加图例
plt.legend(handles=scatter.legend_elements()[0], labels=iris.target_names)
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('PCA of Iris Dataset')
plt.show()
- 高斯混合模型(GMM, Gaussian Mixture Models)
#KARL-DUJINYANG
from sklearn.mixture import GaussianMixture
from sklearn.datasets import make_blobs
import numpy as np
import matplotlib.pyplot as plt
# 生成示例数据
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
# 创建高斯混合模型,假设有4个组件
gmm = GaussianMixture(n_components=4, random_state=42)
# 训练模型
gmm.fit(X)
# 获取聚类标签
y_gmm = gmm.predict(X)
# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_gmm, s=50, cmap='viridis')
# 绘制高斯混合模型的均值
means = gmm.means_
plt.scatter(means[:, 0], means[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title('Gaussian Mixture Model Clustering')
plt.show()
- 自编码器(Autoencoders)
#KARL-DUJINYANG
import numpy as np
from keras.layers import Input, Dense
from keras.models import Model
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# 加载数据集
digits = load_digits()
X = digits.data
y = digits.target
# 标准化数据-
X = X / 255.0
# 切分数据集
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# 自编码器的网络结构
input_dim = X.shape[1]
encoding_dim = 32 # 压缩后的维度
# 定义编码器
input_layer = Input(shape=(input_dim,))
encoded = Dense(encoding_dim, activation='relu')(input_layer)
# 定义解码器
decoded = Dense(input_dim, activation='sigmoid')(encoded)
# 定义自编码器模型
autoencoder = Model(input_layer, decoded)
# 编译模型
autoencoder.compile(optimizer='adam', loss='mean_squared_error')
# 训练自编码器
autoencoder.fit(X_train, X_train, epochs=50, batch_size=256, shuffle=True, validation_data=(X_test, X_test))
# 使用自编码器进行预测
decoded_imgs = autoencoder.predict(X_test)
# 绘制原始图片与重建后的图片进行比较
n = 10 # 显示前10个测试图片
plt.figure(figsize=(20, 4))
for i in range(n):
ax = plt.subplot(2, n, i + 1)
plt.imshow(X_test[i].reshape(8, 8), cmap='gray')
plt.gray()
ax.set_axis_off()
ax = plt.subplot(2, n, i + 1 + n)
plt.imshow(decoded_imgs[i].reshape(8, 8), cmap='gray')
plt.gray()
ax.set_axis_off()
plt.show()
3. 强化学习算法
强化学习(Reinforcement Learning, RL)通过奖励和惩罚机制来训练智能体,在动态环境中采取最优行动。常见的强化学习算法包括:
- Q学习(Q-learning)
- 深度Q网络(DQN, Deep Q Networks)
- 策略梯度方法(Policy Gradient Methods)
- 蒙特卡罗树搜索(MCTS, Monte Carlo Tree Search)
4. 深度学习算法
深度学习是基于神经网络的一个子领域,特别强调层次化的数据表示。常见的深度学习算法包括:
- 卷积神经网络(CNN, Convolutional Neural Networks)——常用于图像识别和视频分析。
- 循环神经网络(RNN, Recurrent Neural Networks)——用于处理序列数据,如自然语言处理。
- 长短时记忆网络(LSTM, Long Short-Term Memory)——RNN的一种改进,用于更好地处理长序列数据。
- 生成对抗网络(GAN, Generative Adversarial Networks)——用于生成数据,如图像、音频或文本。
5. 自然语言处理(NLP)算法
自然语言处理是AI的一个重要领域,涉及文本和语言的理解和生成。常见的NLP算法包括:
- 词袋模型(Bag of Words, BoW)
- TF-IDF(词频-逆文档频率)(Term Frequency-Inverse Document Frequency)
- Word2Vec 和 GloVe——词嵌入方法
- BERT(Bidirectional Encoder Representations from Transformers)和GPT(Generative Pretrained Transformer)——用于文本生成和理解的预训练模型
6. 图算法
图算法处理与图结构(节点和边)相关的问题,常见的图算法包括:
- Dijkstra算法——求解最短路径问题
- A*搜索算法——启发式搜索算法,常用于路径规划
- PageRank——Google的网页排名算法
- 图卷积网络(GCN, Graph Convolutional Networks)
7. 进化算法
进化算法是基于自然选择的启发式优化算法,常用于求解复杂的优化问题。常见的进化算法包括:
- 遗传算法(Genetic Algorithm)
- 遗传编程(Genetic Programming)
- 差分进化算法(Differential Evolution)
8. 优化算法
这些算法主要用于解决最优化问题,如找到最优解或最小化/最大化某个目标函数。常见的优化算法包括:
- 梯度下降法(Gradient Descent)
- 牛顿法(Newton’s Method)
- 粒子群优化(PSO, Particle Swarm Optimization)
- 模拟退火(Simulated Annealing),此算法有趣
9. 贝叶斯算法
贝叶斯算法利用概率模型进行推理和预测。常见的贝叶斯算法包括:
- 朴素贝叶斯分类器(Naive Bayes Classifier)
- 贝叶斯网络(Bayesian Networks)
10. 其他算法
- Apriori算法——用于关联规则挖掘,如市场篮分析。
- AdaBoost 和 XGBoost——集成学习方法,常用于分类问题。
- 隐马尔可夫模型(HMM, Hidden Markov Model)——常用于时间序列分析。
这些算法是人工智能领域中最基础的构成部分,不同的任务和应用可能需要不同类型的算法组合来解决。
感兴趣的后续可以 关注专栏或者公众号 — 《黑客的世界》
作者:奥特曼超人Dujinyang
来源:CSDN
原文:https://dujinyang.blog.csdn.net/
版权声明:本文为博主杜锦阳原创文章,转载请附上博文链接!