Esempio n. 1
0
if score=="r2_score":
    score_f = r2_score
    scoring = "r2"
else:
    score_f = mean_squared_error
    scoring = "mean_squared_error"

verbose = True


###compute ranking

weights_data = results.extract_weights()
index_mse = len(weights_data) - 1
weights_data = weights_data[index_mse]
weights = assign_weights(weights_data.copy())

keys_ = np.array(list(dict_.keys())).astype("int64")
original_features = len(keys_)
final_weights = np.zeros(original_features)

for key in keys_:
    final_weights[key] += np.sum(weights_data[dict_.get(key).astype("int64")])

ordered_final_weights = np.argsort(final_weights)[::-1]
if verbose:
    print("-------------")
    print("ranking of the featues:", ordered_final_weights)
    print("-------------")
ordered_indexes = np.argsort(weights_data)[::-1]
losses = []
index_mse = len(weights_data)-1
weights_data = weights_data[index_mse]

ordered_final_weights = np.argsort(weights_data)[::-1]
if verbose:
    print("-------------")
    print("ranking of the featues:", ordered_final_weights)
    print("-------------")

###compute LASSO
#resultsData = Result(file_data,"lasso")
ordered_indexes = ordered_final_weights

indexes = ordered_final_weights[:iter].astype("int64")

weights = assign_weights(weights_data[indexes].copy())
XTrain_current, XTest_current = get_current_data(XTrain, XTest,indexes)


###compute LASSO
if compute_lasso_current:
    new_loss, beta = compute_lasso(XTrain_current, YTrain, XTest_current, YTest, score=score)
    beta = np.abs(beta[:, 0])
    beta_indexes,beta_ordered = get_beta_div_zeros(beta)

    print("loss insieme ridotto", new_loss)
    print(indexes[beta_indexes])


model = Shooting(weights)
lasso = LASSOEstimator(model)
values_TM = np.array([[24,281], [24,214]])
#new_loss, beta = compute_lasso(XTrain, YTrain, XTest, YTest, score = score,values_TM = values_TM)
#beta = np.abs(beta[:, 0])
#beta_indexes,beta_ordered = get_beta_div_zeros(beta)

#real_indexes = []

#if verbose:
 #   print("loss LASSO test", new_loss)
  #  print("------------------")


###recompute weights
if weights_all:
    weights = assign_weights(weights_data.copy())
    weights = weights[indexes_beta]
else:
    weights = assign_weights(weights_data.copy()[indexes_beta])

XTrain_current, XTest_current = get_current_data(XTrain, XTest,indexes_beta)
###compute LASSO
print("-------------")
new_loss, beta = compute_lasso(XTrain_current, YTrain, XTest_current, YTest, score=score,values_TM = values_TM)
beta = np.abs(beta[:, 0])
beta_indexes,beta_ordered = get_beta_div_zeros(beta)

print("loss insieme ridotto", new_loss)
print(indexes_beta[beta_indexes])

print(weights_level[beta_indexes])
    print("-------------")
    print("ranking of the features:")
    pprint(weights_level)
    print("-------------")

losses = []
ordered_indexes = ordered_final_weights


losses = []
indexes_tot = []
n_features = len(ordered_final_weights)
values_TM = np.array([])

if weights_all:
    weights = assign_weights(weights_data.copy())

beta_div_zeros = []
for i in range(n_features):

        indexes = ordered_final_weights[:i+1].astype("int64")
        indexes_tot.append(indexes)

        XTrain_current, XTest_current = get_current_data(XTrain, XVal, indexes)

        print("----------------------------")
        print("iteration ", i)

        if not weights_all:
            weights_ = assign_weights(weights_data.copy()[indexes])
        else:
beta_div_zeros = []
indexes_to_extract = []
ordered_indexes_div_zeros = []
current_informatives = []

alphas = np.linspace(0.0000001, end, 100)
parameters = {"alpha": alphas}

for active_set in active_sets:

    ordered_values = np.sort(weights_data)[::-1][:active_set]
    ordered_indexes = np.argsort(weights_data)[::-1][:active_set]

    #active_indexes = extract_results(file)

    weights = assign_weights(ordered_values.copy())
    #weights[:70]= 0.0
    #ordered_values = ordered_values[:len(weights)]
    #ordered_indexes = ordered_indexes[:len(weights)]
    #weights = assign_weights_ordered(ordered_values.copy())

    #min_ = np.min(ordered_values)
    #max_ = np.max(ordered_values)

    #weights_std = (ordered_values -  min_)/ (max_ - min_)
    #weights = weights_std

    #norm = Normalizer(norm = "max")
    #weights_std = norm.fit_transform(ordered_values)[0]
    #weights = 1-weights_std