Newer
Older
from Packages import *
from Class_Mod.Miscellaneous import *
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class LWPLSR:
"""
The UMAP dimension reduction algorithm from scikit learn
"""
def __init__(self, x_train, x_test, y_train, y_test):
"""Initiate the LWPLSR and prepare data for Julia computing."""
self.x_train, self.y_train, self.x_test, self.y_test = x_train, x_test, y_train, y_test
# prepare to send dataframes to julia and Jchemo
self.Main.x_train,self.Main.y_train,self.Main.x_test,self.Main.y_test = self.x_train, self.y_train, self.x_test, self.y_test
def Jchemo_lwplsr(self):
"""Send data to Julia to compute lwplsr.
Args:
self.Main.x_train (DataFrame):
self.Main.y_train (DataFrame):
self.Main.x_test (DataFrame):
self.Main.y_test (DataFrame):
Returns:
self.scores (DataFrame): various metrics and scores
self.predicted_results_on_test (DataFrame):
"""
# launch Julia Jchemo lwplsr
Main.eval("""
#convert python pd.dataframes to julia dataframes
x_train_j = self.Main.x_train |> Pandas.DataFrame|> DataFrames.DataFrame;
y_train_j = self.Main.y_train |> Pandas.DataFrame|> DataFrames.DataFrame;
x_test_j = self.Main.x_test |> Pandas.DataFrame|> DataFrames.DataFrame;
y_test_j = self.Main.y_test |> Pandas.DataFrame|> DataFrames.DataFrame;
# Compute model
nlvdis = 5 ; metric = :mah
h = 1 ; k = 200 ; nlv = 15 #; scal = true
mod = Main.Jchemo.model(Main.Jchemo.lwplsr; nlvdis, metric, h, k, nlv)
Main.Jchemo.fit!(mod, X_train_j, y_train_j)
# predictions on test data calculation
res = Main.Jchemo.predict(mod, X_test_j) ;
scores = Main.Jchemo.mse(res.pred, y_test_j)
scoresjp = Pandas.DataFrame(scores);
resjp = Pandas.DataFrame(res.pred);
""")
self.scores = self.Main.scoresjp
self.predicted_results_on_test = pd.DataFrame(self.Main.resjp)
@property
def scores_(self):
return self.scores, self.predicted_results_on_test