我有一系列功能来处理.csv文件(由DNA序列集组成)中的一些输入数据。 我打开输入文件,将DNA序列提取到字典中(在此示例中称为folder_contents),然后将每个DNA序列由所有功能处理。 结果通过以下代码存储在Pandas数据框中:
def data_assembler(folder_contents):
df= DataFrame(columns= ['Column1','Column2','Column3])
for candidate in folder_contents.keys()[:50]:
score1= calculate_complex_mfe(folder_contents[candidate][3])
score2= calculate_complex_ensemble_defect(folder_contents[candidate][3])
score3= calculate_GC_content(folder_contents[candidate][1])
df.loc[candidate]= [score1, score2, score3]
df= df.sort(['score3'], ascending=False)
df.to_csv(path.join(output,"DNAScoring.csv"))
组装完此输出数据后,我想运行PCA,以便计算每个评分参数的特征值,并将参数对它们的数据的影响进行相互比较。 我尝试通过执行以下操作来做到这一点:
from matplotlib import mlab
###data assembler function
pca= mlab.PCA(df, standardize=True)
df= df.sort(['score3'], ascending=False)
df.to_csv(path.join(output,"DNAScoring.csv"))
尽管创建了PCA对象,但我似乎无法查看其内容,也无法使其在Pandas数据框中的新列中打印值。 我知道有几个软件包可以对数据帧执行PCA,因此我试图找到哪种方法最适合我的数据帧。
我通常使用scikit-learn附带的PCA实现进行PCA重投影,因此我对matplotlib的PCA不熟悉,但是我认为您的问题很简单:您将PCA重投影的数据保存在pca变量中,但是 您将原始的df DataFrame保存到csv ...
检查pca是否仍然是DataFrame并继续
pca.to_csv(path.join(output,"DNAScoring.csv"))
编辑:
在阅读这些文档时,我担心您会滥用该类:您需要一个数据矩阵作为输入,并且由于您在执行pca= mlab.PCA(df, standardize=True)时正在构造PCA对象,因此在pca变量中有一个PCA对象。 尝试阅读这些文档,以更好地了解您是否可以使用此PCA类做您想做的事情。
如果您不能做自己想做的事情,建议您访问http://scikit-learn.org上的scikit-learn(sklearn)库。
特别是,请参阅sklearn.decomposition.PCA的文档
我已经尝试实现您的想法,但是随后出现错误AttributeError: PCA instance has no attribute S。 所以我的pca对象必须以不同的方式投影
您是否检查过pca仍然是数据帧? 它可能是一个numpy的数据矩阵,也许...
我研究了实际上可以与PCA对象一起使用的不同属性,但仍然很难确定我需要获取哪些值。 我想要得到的是特征值,或者所有权重的总和乘以它们对应的数据点。 是否可以从matlab包中获取此类数据? 可以在14:50看到此类数字的详细说明:youtube.com/watch?v=_UVHneBUBW0&t=784s