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)
  • Word2VecGloVe——词嵌入方法
  • 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算法——用于关联规则挖掘,如市场篮分析。
  • AdaBoostXGBoost——集成学习方法,常用于分类问题。
  • 隐马尔可夫模型(HMM, Hidden Markov Model)——常用于时间序列分析。

这些算法是人工智能领域中最基础的构成部分,不同的任务和应用可能需要不同类型的算法组合来解决。


感兴趣的后续可以 关注专栏或者公众号 — 《黑客的世界》
python2048微信公众号

作者:奥特曼超人Dujinyang

来源:CSDN

原文:https://dujinyang.blog.csdn.net/

版权声明:本文为博主杜锦阳原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值