def apply(self): learner = self.learner predictor = None if self.data is not None: if self.learner is None: learner = LinearRegressionLearner( preprocessors=self.preprocessors) attributes = self.x_var_model[self.x_var_index] class_var = self.y_var_model[self.y_var_index] data_table = Table(Domain([attributes], class_vars=[class_var]), self.data) degree = int(self.polynomialexpansion) learner = PolynomialLearner(learner, degree=degree) learner.name = self.learner_name predictor = learner(data_table) x = data_table.X.ravel() y = data_table.Y.ravel() linspace = np.linspace(min(x), max(x), 1000).reshape(-1, 1) values = predictor(linspace, predictor.Value) self.plot_scatter_points(x, y) self.plot_regression_line(linspace.ravel(), values.ravel()) x_label = self.x_var_model[self.x_var_index] axis = self.plot.getAxis("bottom") axis.setLabel(x_label) y_label = self.y_var_model[self.y_var_index] axis = self.plot.getAxis("left") axis.setLabel(y_label) self.set_range(x, y) self.send("Learner", learner) self.send("Predictor", predictor) model = None if predictor is not None: model = predictor.model if hasattr(model, "model"): model = model.model elif hasattr(model, "skl_model"): model = model.skl_model if model is not None and hasattr(model, "coef_"): domain = Domain([ContinuousVariable("coef", number_of_decimals=7)], metas=[StringVariable("name")]) coefs = [model.intercept_ + model.coef_[0]] + list(model.coef_[1:]) names = ["1", x_label] + \ ["{}^{}".format(x_label, i) for i in range(2, degree + 1)] coef_table = Table(domain, list(zip(coefs, names))) self.send("Coefficients", coef_table) else: self.send("Coefficients", None)
def apply(self): learner = self.learner predictor = None if self.data is not None: if self.learner is None: learner = self.LEARNER(preprocessors=self.preprocessors) attributes = self.x_var_model[self.x_var_index] class_var = self.y_var_model[self.y_var_index] data_table = Table(Domain([attributes], class_vars=[class_var]), self.data) degree = int(self.polynomialexpansion) learner = PolynomialLearner(learner, degree=degree) learner.name = self.learner_name predictor = learner(data_table) x = data_table.X.ravel() y = data_table.Y.ravel() linspace = np.linspace(min(x), max(x), 1000).reshape(-1, 1) values = predictor(linspace, predictor.Value) self.plot_scatter_points(x, y) self.plot_regression_line(linspace.ravel(), values.ravel()) x_label = self.x_var_model[self.x_var_index] axis = self.plot.getAxis("bottom") axis.setLabel(x_label) y_label = self.y_var_model[self.y_var_index] axis = self.plot.getAxis("left") axis.setLabel(y_label) self.set_range(x, y) self.send("Learner", learner) self.send("Predictor", predictor)
def apply(self): learner = self.learner predictor = None if self.data is not None: if self.learner is None: learner = self.LEARNER(preprocessors=self.preprocessors) attributes = self.x_var_model[self.x_var_index] class_var = self.y_var_model[self.y_var_index] data_table = Table(Domain([attributes], class_vars=[class_var]), self.data) degree = int(self.polynomialexpansion) learner = PolynomialLearner(learner, degree=degree) learner.name = self.learner_name predictor = learner(data_table) x = data_table.X.ravel() y = data_table.Y.ravel() linspace = np.linspace(min(x), max(x), 1000).reshape(-1,1) values = predictor(linspace, predictor.Value) self.plot_scatter_points(x, y) self.plot_regression_line(linspace.ravel(), values.ravel()) x_label = self.x_var_model[self.x_var_index] axis = self.plot.getAxis("bottom") axis.setLabel(x_label) y_label = self.y_var_model[self.y_var_index] axis = self.plot.getAxis("left") axis.setLabel(y_label) self.set_range(x, y) self.send("Learner", learner) self.send("Predictor", predictor)
if hasattr(model, "model"): model = model.model elif hasattr(model, "skl_model"): model = model.skl_model if model is not None and hasattr(model, "coef_"): domain = Domain([ContinuousVariable("coef", number_of_decimals=7)], metas=[StringVariable("name")]) coefs = [model.intercept_ + model.coef_[0]] + list(model.coef_[1:]) names = ["1", x_label] + \ ["{}^{}".format(x_label, i) for i in range(2, degree + 1)] coef_table = Table(domain, list(zip(coefs, names))) self.send("Coefficients", coef_table) else: self.send("Coefficients", None) if __name__ == "__main__": import sys from AnyQt.QtWidgets import QApplication a = QApplication(sys.argv) ow = OWUnivariateRegression() learner = RidgeRegressionLearner(alpha=1.0) polylearner = PolynomialLearner(learner, degree=2) d = Table('iris') ow.set_data(d) ow.set_learner(learner) ow.show() a.exec_() ow.saveSettings()