true时才创建属性
白化:白化数据矩阵(通常表示为k)
混合:混合矩阵估计
缩放对象:从sprm.robcent缩放对象
方法适合(x,*args,**kwargs):适合型号
预测(x):根据拟合进行预测
转换(x):将x投影到潜在空间上
getattr():获取属性列表
setattr(*kwargs):设置SPRM对象的单个属性
函数接受几个可选的输入参数。这些是旗帜
通常不需要交叉验证。它们是:y,numpy向量或1d矩阵,直接作为arg或作为kwarg
h,int.覆盖n_components的单个调用fit。小心使用。
dmetric,内部使用str.距离度量。默认为'euclidean'
混合,布尔。返回混合矩阵?
回归方法的进一步参数可以在这里传递
作为附加kwargs
辅助功能dicomo(类):(共-)矩
capi(类):共矩分析投影索引
示例
加载和准备数据
运行玩具示例:源包和数据:# Load data
import pandas as ps
import numpy as np
data = ps.read_csv("./data/Returns_shares.csv")
columns = data.columns[2:8]
(n,p) = data.shape
datav = np.matrix(data.values[:,2:8].astype('float64'))
y = datav[:,0]
X = datav[:,1:5]
# Scale data
from sprm import robcent
centring = robcent()
Xs = centring.fit(X)
pp估计值与scikit learn的比较
让我们首先运行ppdre来生成
PCA和PLS。这样可以很容易地验证算法是否正确。投影寻踪作为一种计算主成分分析的缓慢、近似的方法。比较:# PCA ex Scikit-Learn
import sklearn.decomposition as skd
skpca = skd.PCA(n_components=4)
skpca.fit(Xs)
skpca.components_.T # sklearn outputs loadings as rows !
# PP-PCA
from ppdire import dicomo, ppdire
pppca = ppdire(projection_index = dicomo, pi_arguments = {'mode' : 'var'}, n_components=4)
pppca.fit(X)
pppca.x_loadings_
同样,投影追踪作为计算pls的一种缓慢、近似的方法。比较:# PLS ex Scikit-Learn
skpls = skc.PLSRegression(n_components=4)
skpls.fit(Xs,(y-np.mean(y))/np.std(y))
skpls.x_scores_
skpls.coef_
Xs*skpls.coef_*np.std(y) + np.mean(y)
# PP-PLS
pppls = ppdire(projection_index = dicomo, pi_arguments = {'mode' : 'cov'}, n_components=4, square_pi=True)
pppls.fit(X,y)
pppls.x_scores_
pppls.coef_scaled_ # Column 4 should agree with skpls.coef_
pppls.fitted_
注:基于潜在变量投影的降维技术,
如pca、pls和ica等,都是与分量相关的不确定符号。
因此,不同算法的估计符号可能是相反的,但是
绝对值应与算法精度相同。这里,这意味着
sklearn和ppdre'sx嫒scores嫒u和x嫒loadings可能有相反的迹象,
然而,系数和拟合响应应该是相同的。
稳健投影寻踪估计基于中值绝对偏差(mad)的稳健主成分分析[3]。lcpca = ppdire(projection_index = dicomo, pi_arguments = {'mode' : 'var', 'center': 'median'}, n_components=4)
lcpca.fit(X)
lcpca.x_loadings_
# To extend to Robust PCR, just add y
lcpca.fit(X,y,ndir=1000,regopt='robust')
基于修剪(co)方差的稳健连续回归[4]rcr = ppdire(projection_index = dicomo, pi_arguments = {'mode' : 'continuum'}, n_components=4, trimming=.1, alpha=.5)
rcr.fit(X,y=y,ndir=1000,regopt='robust')
rcr.x_loadings_
rcr.x_scores_
rcr.coef_scaled_
rcr.predict(X)
备注:对于rcr,continuum参数alpha调整多个
通过PLS(alpha->;0)回归到PCR(alpha=1)。当然,
robust pls选项也可以通过pi_arguments={'mode':'cov'},trimming=.1
投影寻踪广义betas
使用
共矩分析投影指数(capi)[2]。from ppdire import capi
est = ppdire(projection_index = capi, pi_arguments = {'max_degree' : 3,'projection_index': dicomo, 'scaling': False}, n_components=1, trimming=0,center_data=True,scale_data=True)
est.fit(X,y=y,ndir=200)
est.x_weights_
# These data aren't the greatest illustration. Evaluating CAPI
# projections, makes more sense if y is a market index, e.g. SPX
通过scikit learn进行交叉验证
from sklearn.model_selection import GridSearchCV
rcr_cv = GridSearchCV(ppdire(projection_index=dicomo,
pi_arguments = {'mode' : 'continuum'}),
cv=10,
param_grid={"n_components": [1, 2, 3],
"alpha": np.arange(.1,3,.3).tolist(),
"trimming": [0, .15]
}
)
rcr_cv.fit(X[:2666],y[:2666])
rcr_cv.best_params_
rcr_cv.predict(X[2666:])
数据压缩
而ppdre非常灵活,可以根据非常广泛的种类进行投影
对于投影索引,它可能需要计算。对于平面数据表,
已内置解决方案。# Load flat data
datan = ps.read_csv("./ppdire/data/Glass_df.csv")
X = datan.values[:,100:300]
y = datan.values[:,2]
# Now compare
rcr = ppdire(projection_index = dicomo,
pi_arguments = {'mode' : 'continuum'},
n_components=4,
trimming=.1,
alpha=.5,
compression = False)
rcr.coef_
rcr = ppdire(projection_index = dicomo,
pi_arguments = {'mode' : 'continuum'},
n_components=4,
trimming=.1,
alpha=.5,
compression = True)
rcr.coef_
但是,如果数据包含几个低比例,压缩将无法正常工作
可变值。在本例中,它不适用于x=datan.values[:,8:751]。这个
将发出警告,并且ppdre将在不压缩的情况下继续。
独立调用投影索引
dicomo和capi都可以作为调用矩的一致框架
它们本身,或它们的线性组合。让我们从
数据:pip install ppdire0
现在计算一些力矩,并将它们与