如何解决Scikitlearn PCA 计算不正确的最后一行 y 值
我正在 Python3 中使用 Scikitlearn 执行 PCA。
但是,在我运行我的代码后,最后一行的主成分有一个“关闭”值。我知道最后一行是正确的。
我绘制了三个 PCA 来可视化问题。第一个图(完整数据集)您可以看到预测的“样本”图,但是,在第二个和第三个图中,如果我删除总体(完整数据集的一部分),样本图“很奇怪”。
具有计算主成分的数据框(见最后一行):
principal_component_1 principal_component_2 Sample_name Population
0 3.279363 -0.288892 HG02291 American_Ancestry
1 3.625035 -0.296081 HG02275 American_Ancestry
2 3.870248 -0.264558 HG02272 American_Ancestry
3 3.118460 -0.272594 HG02271 American_Ancestry
4 2.811992 -0.376418 HG02259 American_Ancestry
... ... ... ... ...
1590 1.849372 -0.167314 HGDP00555 Oceanian_Ancestry
1591 1.666233 -0.224749 HGDP00556 Oceanian_Ancestry
1592 1.983947 -0.202254 HGDP00552 Oceanian_Ancestry
1593 2.202948 -0.210858 HGDP00554 Oceanian_Ancestry
1594 -4.693172 126.672265 Sample Sample
我使用的代码:
def do_pca(pca_data,sample_name,pops):
"""
This function plots the PCA data from the sample and dataset in a PCA plot
"""
# initiliaze variabeles for the PCA plot
pops = pops + ["Sample"]
pca_df = pd.read_csv(pca_data,sep=";")
pca_df = pca_df[pca_df["Population"].isin(pops)].reset_index()
features = list(pca_df.columns.values)
features.remove("Population")
features.remove("Sample_name")
x = pca_df.loc[:,features].values # Separating out the features
y = pca_df.loc[:,["Population","Sample_name"]] # Separating out the target
x = StandardScaler().fit_transform(x) # Standardizing the features
# initiliaze PCA plot
dot_size = 20
pca = PCA(n_components=2)
pc = pca.fit_transform(x)
pc_df = pd.DataFrame(data=pc,columns=["principal_component_%s" % (x + 1) for x in range(2)])
pc_df["Sample_name"] = y["Sample_name"]
pc_df["Population"] = y["Population"]
return pc_df
有人可以向我解释我做错了什么吗?我的代码关闭了吗?
我在 StackOverflow 上发现了一个类似的问题,但没有答案:link
解决方法
尝试将其关闭再打开:/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。