利用中间特征和初始数据线性拟合
import scipy.io as sio
import numpy as np
from sklearn.linear_model import ElasticNet
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error, r2_score
source_save = '/要存储的路径/'
source='/初始数据地址/'
img=np.load(source+"初始数据")
path = '/生成的中间特征地址/'
hidden_mat = sio.loadmat(path + 'hidden_RNN.mat')
a = hidden_mat['hidden']
a = a.squeeze(1)
l = a.shape[0]
ids = 0
for i in range(0,l,47):
x=img[i*47:(i+1)*47,:]
y=a[i*47:(i+1)*47,:]
print(x.shape,y.shape)
clf = ElasticNet(alpha=0.007, l1_ratio=0.05)
clf.fit(x,y)
np.save(source_save + "/%d.npy"%ids,clf.coef_)
print("clf:",np.min(clf.coef_),np.max(clf.coef_))
ids += 1