深圳住房和建设管理局官方网站,网页设计手机版app下载,卷帘门怎么做网站,在线A视频做爰网站知其然知其所以然【写在前面】主成分分析#xff08;PCA#xff09;原理部分代码部分可视化部分线性判别分析#xff08;LDA#xff09;原理部分代码部分可视化部分独立成分分析#xff08;ICA#xff09;原理部分代码部分可视化部分t-SNE降维算法原理部分代码部分可视化…
知其然知其所以然【写在前面】主成分分析PCA原理部分代码部分可视化部分线性判别分析LDA原理部分代码部分可视化部分独立成分分析ICA原理部分代码部分可视化部分t-SNE降维算法原理部分代码部分可视化部分【写在前面】
【以下使用的数据量很少很少因此在散点图中展示不出具体算法特点请读者自行实验。】 常用的降维算法有主成分分析PCA、线性判别分析LDA、独立成分分析ICA、t-SNE等。以下是这些算法的Python代码示例分享一下我对降维的理解 对一个样本矩阵,一是换特征,找一组新的特征来重新表示;二是减少特征,新特征的数目要远小于原特征的数目。这样一来就可以得到数量少且比较好的几个变量一构建模型。但是降维也可能会导致信息的损失和模型的过拟合因此需要谨慎使用。 创建数据创建模型对象拟合数据转换数据输出数据
主成分分析PCA
原理部分
通常把转化生成的综合指标称之为主成分每个主成分都是原始变量的线性组合且每个主成分之间互不相干主成分分析PCA是一种常用的数据降维技术它通过线性变换将高维数据转换为低维数据同时保留原始数据的主要特征。PCA的基本思想是将原始数据映射到一个新的坐标系中使得新坐标系下数据的方差最大化。这个新坐标系的轴称为主成分每个主成分都是原始数据中的线性组合。PCA的应用广泛例如在图像处理、信号处理、模式识别、数据挖掘等领域中都有广泛应用。在数据分析中PCA可以用于降低数据的维度减少数据冗余提高数据处理效率同时也可以帮助我们发现数据的内在结构和规律从而更好地理解数据。在实际应用中PCA的步骤主要包括数据标准化、计算协方差矩阵、求解特征值和特征向量、选取主成分和投影数据等。通过PCA我们可以得到一些重要的结果例如主成分的贡献率、主成分的方差解释比例、主成分的系数等。这些结果可以帮助我们更好地理解数据的结构和特征从而为后续的数据分析和建模提供更好的基础。
代码部分
from sklearn.decomposition import PCA
import numpy as np# 创建数据
X np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建PCA对象
pca PCA(n_components2)# 拟合数据
pca.fit(X)# 转换数据
X_new pca.transform(X)print(X_new)可视化部分 线性判别分析LDA
原理部分
线性判别分析Linear Discriminant Analysis简称LDA是一种经典的监督学习算法它既可以作为分类器也可以作为降维技术。LDA的主要思想是将数据投影到一个低维空间中使得不同类别之间的距离最大化同一类别内部的距离最小化。这样可以在保留尽量多的信息的同时将数据进行有效的分类。LDA的主要步骤包括
计算每个类别的均值向量和整个数据集的均值向量。计算类内散度矩阵within-class scatter matrix和类间散度矩阵between-class scatter matrix。计算投影矩阵将数据投影到低维空间中。使用投影矩阵将数据进行降维或分类。
LDA的优点包括
在保留尽量多信息的同时可以将数据进行有效分类。可以用于降维减少数据维度便于可视化和处理。适用于高维数据集。
LDA的缺点包括
对于非线性可分的数据集LDA的效果会受到影响。对于不平衡的数据集可能会导致分类结果出现偏差。在计算类内散度矩阵时需要计算每个类别的协方差矩阵如果数据维度很高计算量会很大。
代码部分
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import numpy as np# 创建数据
X np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])
y np.array([0, 1, 0])# 创建LDA对象
lda LinearDiscriminantAnalysis(n_components1)# 拟合数据
lda.fit(X, y)# 转换数据
X_new lda.transform(X)print(X_new)可视化部分 独立成分分析ICA
原理部分
在机器学习中ICA被广泛应用于信号处理、图像处理、语音识别等领域。ICA的基本思想是假设存在一组独立的成分它们通过线性组合形成了观测信号。通过对观测信号进行分解可以得到独立的成分。ICA的目标是找到一组线性变换使得变换后的信号成分之间相互独立。ICA的应用场景包括语音信号分离、图像分离、生物信号分析等。例如ICA可以用于将多个人说话的混合语音信号分离成单独的语音信号或者将一张复杂的图像分解为不同的成分。
代码部分
from sklearn.decomposition import FastICA
import numpy as np# 创建数据
X np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建ICA对象
ica FastICA(n_components2)# 拟合数据
ica.fit(X)# 转换数据
X_new ica.transform(X)print(X_new)可视化部分 t-SNE降维算法
原理部分
TSNEt-Distributed Stochastic Neighbor Embedding是一种非线性降维算法用于将高维数据降至二维或三维以便于可视化。该算法的基本思想是将高维数据映射到低维空间中使得在原始空间中相似的数据点在低维空间中也保持相似而不相似的数据点在低维空间中则距离较远。TSNE算法主要分为两个步骤首先通过高斯核函数计算每个数据点与其它数据点之间的相似度然后将这些相似度转化为概率分布。接着在低维空间中通过KL散度最小化的方法将这些概率分布转化为新的低维空间中的概率分布。最终通过梯度下降算法将低维空间中的数据点的位置不断调整使得其与高维空间中的数据点的相似度尽可能地保持一致。TSNE算法的优点是能够在保持数据点之间的相对距离的同时有效地将高维数据映射到低维空间中从而便于可视化和分析。但是该算法的计算复杂度较高需要较长的计算时间和计算资源。
代码部分
from sklearn.manifold import TSNE
import numpy as np# 创建数据
X np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建t-SNE对象
tsne TSNE(n_components2)# 转换数据
X_new tsne.fit_transform(X)print(X_new)可视化部分