oii*_*iio 1 python pca scikit-learn
我有一个像这样的数组:
sampleA 1 2 2 1
sampleB 1 3 2 1
sampleC 2 3 1 2
Run Code Online (Sandbox Code Playgroud)
我的目标是在样本中运行 PCA 并查看它们的聚类。但是,我需要在行标题中保留样本名称。有什么办法可以做到这一点吗?所需的 PCA 结果包括行标题:
sampleA 0.13 0.1
sampleB 0.1 0.4
sampleC 0.1 0.1
Run Code Online (Sandbox Code Playgroud)
目前只运行这两个简单的行:
my_pca = PCA(n_components=8)
trans = my_pca.fit_transform(in_array)
Run Code Online (Sandbox Code Playgroud)
根据来源,您的输入将np.array()在进行 PCA 之前进行转换。因此,PCA.fit_transform(X)即使您使用结构化数组或 Pandas DataFrame,您也会丢失行索引。但是,数据的顺序会被保留,这意味着您可以根据需要附加索引:
import io
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
s = """sampleA 1 2 2 1
sampleB 1 3 2 1
sampleC 2 3 1 2"""
in_array = pd.read_table(io.StringIO(s), sep=' ', header=None, index_col=0)
my_pca = PCA(n_components=2)
trans = my_pca.fit_transform(in_array)
df = pd.DataFrame(trans, index=in_array.index)
print(df)
# 0 1
# 0
# sampleA -0.773866 -0.422976
# sampleB -0.424531 0.514022
# sampleC 1.198397 -0.091046
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |