{"id":20040780,"url":"https://github.com/simonblanke/surrogate-models","last_synced_at":"2025-08-09T05:20:52.392Z","repository":{"id":98631224,"uuid":"342184487","full_name":"SimonBlanke/surrogate-models","owner":"SimonBlanke","description":"A collection of surrogate models for sequence model based optimization techniques","archived":false,"fork":false,"pushed_at":"2021-05-03T18:52:38.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-12T19:21:14.393Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SimonBlanke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-25T09:05:48.000Z","updated_at":"2021-05-03T18:52:40.000Z","dependencies_parsed_at":"2023-03-07T10:30:22.883Z","dependency_job_id":null,"html_url":"https://github.com/SimonBlanke/surrogate-models","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimonBlanke%2Fsurrogate-models","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimonBlanke%2Fsurrogate-models/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimonBlanke%2Fsurrogate-models/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimonBlanke%2Fsurrogate-models/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SimonBlanke","download_url":"https://codeload.github.com/SimonBlanke/surrogate-models/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241470363,"owners_count":19968041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T10:43:48.896Z","updated_at":"2025-03-02T06:46:52.690Z","avatar_url":"https://github.com/SimonBlanke.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e \n  Surrogate Models\n\u003c/h1\u003e\n\n\nA collection of surrogate models (wrapper classes) for sequence model based optimization techniques used in Hyperactive and Gradient-Free-Optimizers.\n\n\n\u003cbr\u003e\n\n## Bayesian Optimization Surrogate Models\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e GPy \u003c/b\u003e\u003c/summary\u003e\n\n```python\nimport GPy\nimport numpy as np\n\n\nclass GPySurrogateModel:\n    def __init__(self):\n        self.kernel = GPy.kern.RBF(input_dim=1)\n\n    def fit(self, X, y):\n        self.m = GPy.models.GPRegression(X, y, self.kernel)\n        self.m.optimize(messages=False)\n\n    def predict(self, X, return_std=False):\n        mean, std = self.m.predict(X)\n\n        if return_std:\n            return mean, std\n        return mean\n```\n\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e GPflow \u003c/b\u003e\u003c/summary\u003e\n\n```python\nimport gpflow\nimport numpy as np\n\n\nclass GPflowSurrogateModel:\n    def __init__(self):\n        self.kernel = gpflow.kernels.Matern52()\n\n    def fit(self, X, y):\n        X = X.astype(np.float64)\n\n        self.m = gpflow.models.GPR(data=(X, y), kernel=self.kernel)\n        opt = gpflow.optimizers.Scipy()\n        opt.minimize(\n            self.m.training_loss, self.m.trainable_variables, options=dict(maxiter=100)\n        )\n\n    def predict(self, X, return_std=False):\n        X = X.astype(np.float64)\n        mean, std = self.m.predict_f(X)\n\n        mean = np.array(mean)\n        std = np.array(std)\n\n        if return_std:\n            return mean, std\n        return mean\n```\n\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e Decision Tree Ensemble \u003c/b\u003e\u003c/summary\u003e\n\n```python\nfrom sklearn.ensemble import ExtraTreesRegressor as _ExtraTreesRegressor_\n\ndef _return_std(X, trees, predictions, min_variance):\n    \"\"\"\n    used from: \n    https://github.com/scikit-optimize/scikit-optimize/blob/master/skopt/learning/forest.py\n    \"\"\"\n    std = np.zeros(len(X))\n    trees = list(trees)\n\n    for tree in trees:\n        if isinstance(tree, np.ndarray):\n            tree = tree[0]\n\n        var_tree = tree.tree_.impurity[tree.apply(X)]\n        var_tree[var_tree \u003c min_variance] = min_variance\n        mean_tree = tree.predict(X)\n        std += var_tree + mean_tree ** 2\n\n    std /= len(trees)\n    std -= predictions ** 2.0\n    std[std \u003c 0.0] = 0.0\n    std = std ** 0.5\n    return std\n\n\nclass ExtraTreesRegressor(_ExtraTreesRegressor_):\n    def __init__(self, min_variance=0.001, **kwargs):\n        self.min_variance = min_variance\n        super().__init__(**kwargs)\n\n    def fit(self, X, y):\n        super().fit(X, np.ravel(y))\n\n    def predict(self, X, return_std=False):\n        mean = super().predict(X)\n\n        if return_std:\n            std = _return_std(X, self.estimators_, mean, self.min_variance)\n\n            return mean, std\n        return mean\n```\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonblanke%2Fsurrogate-models","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonblanke%2Fsurrogate-models","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonblanke%2Fsurrogate-models/lists"}