第(六)篇:奇异值分析

该博客通过奇异值分解(SVD)对申万一级行业指数进行分析,展示了如何导入和处理数据,然后使用TruncatedSVD模型进行拟合。结果显示,28个变量中的两个主要成分占据了99.9%的方差,揭示了行业指数间的关联性和主要驱动因素。
摘要由CSDN通过智能技术生成

前言:本篇用奇异值分解的方式分析一下申万行指。

首先还是导入数据

# 设置申万一级行业指数
shenwan_code="801010.SWI,801020.SWI,801030.SWI,801040.SWI,801050.SWI,801080.SWI,801110.SWI,801120.SWI,801130.SWI,801140.SWI,801150.SWI,801160.SWI,801170.SWI,801180.SWI,801200.SWI,801210.SWI,801230.SWI,801710.SWI,801720.SWI,801730.SWI,801740.SWI,801750.SWI,801760.SWI,801770.SWI,801780.SWI,801790.SWI,801880.SWI,801890.SWI,851231.SWI,000016.SH,000300.SH,000905.SH,000852.SH"

# 设置时间,从2015年到今日
today=datetime.date.today()
today.strftime("%Y-%m-%d")
start_date='2015-01-01'
end_date=today.strftime("%Y-%m-%d")

# 获取数据
shenwan=c.csd(shenwan_code,"CLOSE",start_date,end_date,"period=1,adjustflag=1,curtype=1,order=1,market=CNSESH")
# 简单的数据处理
d1=shenwan.Data
name=c.css(shenwan_code,"CODE,NAME","")
name=pd.DataFrame(name.Data)
for i in d1.keys():
    d1[i]=d1[i][0]
d1=pd.DataFrame(d1)
d1.columns=name.loc[1]
d1.index=shenwan.Dates
d1=d1.dropna()

现在我们就得到了如图所示的数据
在这里插入图片描述接着进行svd分析。

# 准备数据
x = d1.values

# 模型构建
from sklearn.decomposition import TruncatedSVD
drx = TruncatedSVD(3)

#拟合模型
drx.fit(x)

import numpy as np
# 这一步是发现设置使用小数表示,而不是用科学计数法表示
np.set_printoptions(suppress=True)

# 输出可解释的方差占比
print('\npca',drx.explained_variance_ratio_)

结果展示为:在这里插入图片描述
svd分析可见,28个变量中,两个种主成分的方差占到了99.9%。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值