Newer
Older
from Packages import *
from Class_Mod.Miscellaneous import *
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
jl.x_train,jl.y_train,jl.x_test,jl.y_test = self.x_train, self.y_train, self.x_test, self.y_test
self.scores = pd.DataFrame
self.predicted_results_on_test = pd.DataFrame
def Jchemo_lwplsr(self):
"""Send data to Julia to compute lwplsr.
Args:
self.jl.x_train (DataFrame):
self.jl.y_train (DataFrame):
self.jl.x_test (DataFrame):
self.jl.y_test (DataFrame):
Returns:
self.scores (DataFrame): various metrics and scores
self.predicted_results_on_test (DataFrame):
"""
# launch Julia Jchemo lwplsr
jl.eval("""
using Pandas
using DataFrames
using Jchemo
nlvdis = 5 ; metric = :mah
h = 1 ; k = 200 ; nlv = 15 #; scal = true
mod = Jchemo.model(Jchemo.lwplsr; nlvdis, metric, h, k, nlv)
Jchemo.fit!(mod, X_train, y_train)
# Jchemo.pnames(mod)
# Jchemo.pnames(mod.fm)
res = Jchemo.predict(mod, X_test)
# Jchemo.pnames(res)
resjp = jl.seval("""
Pandas.DataFrame(res.pred)
""")
scoresjp = jl.seval("""
Jchemo.mse(res.pred, y_test)
""")
self.scores = pd.Dataframe(scoresjp)
self.predicted_results_on_test = pd.Dataframe(resjp)
@property
def pred_data_(self):
return self.predicted_results_on_test, self.predicted_results_on_test, self.predicted_results_on_test
# @property
# def model_(self):
# return self.trained
def metrics_(self):
# self.scores = pd.DataFrame(self.scores, index=['test'])
return self.scores