【发布时间】:2021-05-28 12:38:34
【问题描述】:
我想保留我的数据框my_df 的Unique_id 列,以便在应用PCA 后进行进一步分析。但是在降维期间,该列将丢失。有没有办法保留专栏?
my_df 看起来像这样:
Unique_id EndValue Peak_val Score f1 f2 f3 f4 f5 f6
0 15 44.5 46.5 377.17 38.366667 17.757471 -0.610802 -1.028477 45.372727 0.150168
1 15 45.0 47.0 1268.37 46.909091 0.090909 -2.846050 6.100000 46.909091 0.090909
2 18 45.0 47.0 373.16 45.030303 0.030303 5.480078 28.031250 45.651685 0.252298
3 18 45.0 47.0 369.68 45.000000 0.000000 0.000000 -3.000000 46.052632 0.052632
4 19 45.0 47.0 1414.97 46.000000 0.000000 0.000000 -3.000000 46.000000 0.000000
我按照this thread建议的方法保留原始数据的索引,并在应用PCA后将其附加到my_df。
在 PCA 期间,我删除了 Unique_id 列,因为它不是一项功能。然后我尝试了:
def pca2(data, n, pc_count = None):
return PCA(n_components = n).fit_transform(data)
results_2d = pca2(my_df, 2)
df_temp = pd.DataFrame(results_2d, index=my_df.index)
df_temp
输出如下所示:
0 1
0 -1.863714e+03 -14.793301
1 -2.754914e+03 -10.330997
2 -1.859704e+03 23.473387
3 -1.856224e+03 5.703049
4 -2.901514e+03 -19.540132
5 -1.786054e+03 17.621220
6 -2.555565e+03 38.636828
7 -1.667134e+03 11.647753
我意识到很难验证索引是否正确。有什么方法可以检查我的结果吗?有没有更好的方法来保存实际的Unique_id?
【问题讨论】:
-
从您编写代码的方式来看,结果应该与原始数据具有相同的顺序。你可以做
df_temp['Unique_id'] = my_df['Unique_id']。 -
@QuangHoang 对吗?:) 谢谢 Quang!
标签: python numpy indexing scikit-learn pca