栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

R和Python主成分分析(PCA)线性判别分析(LDA)及其K-最近邻分类器和病理预测

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

R和Python主成分分析(PCA)线性判别分析(LDA)及其K-最近邻分类器和病理预测

R主成分分析(PCA)和线性判别分析(LDA) R主成分分析(PCA)

在此,我们将使用此机器学习存储库中的数据集作为我们的数据。如下,加载:

wdbc <- read.csv("wdbc.csv", header = F)
features <- c("radius", "texture", "perimeter", "area", "smoothness", "compactness", "concavity", "concave_points", "symmetry", "fractal_dimension")
names(wdbc) <- c("id", "diagnosis", paste0(features,"_mean"), paste0(features,"_se"), paste0(features,"_worst"))

上面的代码将简单地加载数据并命名所有 32 个变量。 ID、诊断和十个不同 (30) 特征。

现在我们已经加载了我们的数据并发现自己有 30 个变量(不包括我们的响应“诊断”和不相关的 ID 变量)。

当我们尝试使用 PCA 的线性组合来描述数据中的差异时,我们发现“良性”和“恶性”病理之间存在一些非常明显的聚类和分离! 这为基于我们的特征开发分类模型提供了一个很好的案例!PCA 的另一个主要“功能”,是它实际上可以直接提高模型的性能。

PCA工作原理

PCA 的主要目的不是删除! 事实上,它可以降低维度,但不会减少数据中的特征/变量的数量。 这意味着您可能会发现仅使用 3 个主成分就可以解释 1000 个特征数据集中 99% 的方差,但您仍然需要这 1000 个特征来构建这 3 个主成分,这也意味着对于未来的数据的预测,您仍然需要在新观察中使用相同的 1000 个特征来构建相应的主成分。

简而言之,其特点是:

  • 标准化数据(中心和比例)
  • 从协方差矩阵或相关矩阵计算特征向量和特征值(也可以使用奇异向量分解)。
  • 按降序对特征值进行排序,并选择 K 个最大的特征向量(其中 K 是新特征子空间 k ≤ d 的所需维数)。
  • 从选定的 K 个特征向量构造投影矩阵 W。
  • 通过W对原始数据集X进行变换,得到一个K维特征子空间Y。
R编程PCA
wdbc.pr <- prcomp(wdbc[c(3:32)], center = TRUE, scale = TRUE)
summary(wdbc.pr)

绘图

screeplot(wdbc.pr, type = "l", npcs = 15, main = "Screeplot of the first 10 PCs")
abline(h = 1, col="red", lty=5)
legend("topright", legend=c("Eigenvalue = 1"),
       col=c("red"), lty=5, cex=0.6)
cumpro <- cumsum(wdbc.pr$sdev^2 / sum(wdbc.pr$sdev^2))
plot(cumpro[0:15], xlab = "PC #", ylab = "Amount of explained variance", main = "Cumulative variance plot")
abline(v = 6, col="blue", lty=5)
abline(h = 0.88759, col="blue", lty=5)
legend("topleft", legend=c("Cut-off @ PC6"),
       col=c("blue"), lty=5, cex=0.6)
R线性判别分析(LDA) 项目:病理预测 源代码 Python主成分分析(PCA)和线性判别分析(LDA) 主成分分析(PCA) 线性判别分析(LDA)

使用 LDA 进行降维:

# input and output variables
X = dataset.data
y = dataset.target
target_names = dataset.target_names

# importing the requried module
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

# initializing the model with 2 components
lda = LinearDiscriminantAnalysis(n_components=2)

# fitting the dataset
X_r2 = lda.fit(X, y).transform(X)

绘制数据集:

# importing the required module
import matplotlib.pyplot as plt

# plot size
plt.figure(figsize=(15, 8))

# plotting the graph
plt.scatter(X_r2[:,0],X_r2[:,1],  c=dataset.target)
plt.show()
项目:K-最邻近分类器 源代码

详情参阅 - 亚图跨际

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947728.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号