コード例 #1
0
from d3m.container import DataFrame
from pyglrm_d3m.huber_pca import HuberPCA

A = DataFrame([[1, 2, 3, 4], [2, 4, 6, 8], [4, 5, 6, 7]])

model = HuberPCA(hyperparams={'k': 2})  #create a class for Huber PCA
model.set_training_data(inputs=A)
model.fit()

#get parameter
parameter = model.get_params()
print("Initial parameter (Y): {}".format(parameter['Y'].values))

#modify parameter
print(
    "Now we change the (0,0) entry of Y to 0, and set the modified Y as parameter of the Huber PCA class."
)
parameter['Y'].values[0, 0] = 0
model.set_params(params={'Y': parameter['Y']})

#check if parameter has been modified
parameter = model.get_params()
print("Modified parameter (Y): {}".format(parameter['Y'].values))
コード例 #2
0
from pyglrm_d3m.huber_pca import HuberPCA
from d3m.container import DataFrame

A = DataFrame([[1, 2, 3, 4], [2, 4, 6, 8], [4, 5, 6, 7]],
              generate_metadata=True)

model = HuberPCA(hyperparams={'k': 2})  #create a class for Huber PCA
model.set_training_data(inputs=A)
model.fit()
a_new = DataFrame([[6, 7, 8, 9]])  #initialize a new row to be tested
x = model.produce(
    inputs=a_new).value.values  #get the latent representation of a_new

print(x)
コード例 #3
0
        B = np.random.randn(r, n)
        X_org = np.append(X_org, np.dot(A, B), axis=1)

# mask a fraction of entries randomly
X_incomplete = X_org.copy()
m, n = X_org.shape
for i in range(n):
    idx = np.random.choice(m, int(np.round(m * missing_rate)), replace=False)
    X_incomplete[idx, i] = np.nan

# recover the missing entries
# hp= hrmc_sf.Hyperparams.defaults()
hp = high_rank_imputer.Hyperparams({
    'd': 0,
    'alpha': 1,
    'beta': 1,
    'tol': 1e-4,
    'maxiter': 500
})
# if d=0, d will be automatically estimated; otherwise (d>=1), the value of d will be applied
sf = high_rank_imputer.HighRankImputer(hyperparams=hp)
df_incomplete = DataFrame(X_incomplete.T)
# the missing entries in the matrix must be noted by NaN
df_recovered = sf.produce(inputs=df_incomplete).value

X_recovered = df_recovered.values.T

# compute the recovery error (relative mean squared error, within [0,1], the smaller the better)
RMSE = np.square(X_recovered - X_org).sum() / np.square(X_org).sum()
print("RMSE:", RMSE)