如何用Scikit-learn的PCA计算第一主成分?附实现代码
计算数据最大主成分的实用代码
我之前做金融时间序列分析的时候,写过一段经过验证的代码,用来计算数据的最大主成分,亲测可以正常运行,你可以直接参考:
import pandas as pd from sklearn.decomposition import PCA # 定义数据列名(包含日期和各类技术指标) feature_columns = ['date', 'MA(1,9)', 'MA(1,12)', 'MA(2,9)', 'MA(2,12)', 'MA(3,9)', 'MA(3,12)', 'MOM(9)', 'MOM(12)', 'VOL(1,9)', 'VOL(1,12)', 'VOL(2,9)', 'VOL(2,12)', 'VOL(3,9)', 'VOL(3,12)'] # 从Excel读取数据,指定工作表、表头和自定义列名 df = pd.read_excel(filename, sheet_name='daily', header=0, names=feature_columns) # 将日期列设置为DataFrame的索引,方便时间范围筛选 df = df.set_index('date') # 截取指定时间区间内的数据 df = df.loc[start_date:end_date] # 初始化PCA模型并拟合数据 pca = PCA() pca.fit(df) # 输出所有主成分结果,第一个元素就是方差贡献最大的主成分 print(pca.components_) # 如果需要查看最大主成分的解释方差,取消下面的注释即可 # print(pca.explained_variance_[0])
几个关键点说明:
- 记得提前导入
pandas和sklearn的PCA模块,不然会报错 - 自定义列名是为了确保Excel里的列和我们的分析对齐,避免列名混乱
- 把日期设为索引后,用
loc切片筛选时间范围非常方便 - 拟合完成后,
pca.components_[0]就是你要的最大主成分,对应的pca.explained_variance_[0]是这个主成分能解释的方差量,能帮你判断这个主成分的重要性
内容的提问来源于stack exchange,提问作者Évariste Galois
相关产品推荐
相关产品推荐

