| @@ -39,11 +39,6 @@ jobs: | |||||
| conda run -n learnware python -m pip install --upgrade pip | conda run -n learnware python -m pip install --upgrade pip | ||||
| conda run -n learnware python -m pip install pytest | conda run -n learnware python -m pip install pytest | ||||
| - name: Install faiss for MacOS | |||||
| if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} | |||||
| run: | | |||||
| conda run -n learnware conda install -c pytorch faiss | |||||
| - name: Install learnware | - name: Install learnware | ||||
| run: | | run: | | ||||
| conda run -n learnware python -m pip install learnware | conda run -n learnware python -m pip install learnware | ||||
| @@ -44,11 +44,6 @@ jobs: | |||||
| # stop the build if there are Python syntax errors or undefined names | # stop the build if there are Python syntax errors or undefined names | ||||
| conda run -n learnware python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | conda run -n learnware python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | ||||
| - name: Install faiss for MacOS | |||||
| if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} | |||||
| run: | | |||||
| conda run -n learnware conda install -c pytorch faiss | |||||
| - name: Install learnware | - name: Install learnware | ||||
| run: | | run: | | ||||
| conda run -n learnware python -m pip install . | conda run -n learnware python -m pip install . | ||||
| @@ -8,7 +8,6 @@ from shutil import copyfile, rmtree | |||||
| import learnware | import learnware | ||||
| from learnware.market import instantiate_learnware_market, BaseUserInfo | from learnware.market import instantiate_learnware_market, BaseUserInfo | ||||
| # from learnware.market import database_ops | |||||
| from learnware.reuse import JobSelectorReuser, AveragingReuser | from learnware.reuse import JobSelectorReuser, AveragingReuser | ||||
| from learnware.specification import generate_rkme_spec | from learnware.specification import generate_rkme_spec | ||||
| from m5 import DataLoader | from m5 import DataLoader | ||||
| @@ -51,6 +50,7 @@ user_semantic = { | |||||
| "Output": output_description, | "Output": output_description, | ||||
| } | } | ||||
| class M5DatasetWorkflow: | class M5DatasetWorkflow: | ||||
| def _init_m5_dataset(self): | def _init_m5_dataset(self): | ||||
| m5 = DataLoader() | m5 = DataLoader() | ||||
| @@ -82,8 +82,6 @@ class M5DatasetWorkflow: | |||||
| easy_market.add_learnware(zip_path, semantic_spec) | easy_market.add_learnware(zip_path, semantic_spec) | ||||
| print("Total Item:", len(easy_market)) | print("Total Item:", len(easy_market)) | ||||
| # curr_inds = easy_market._get_ids() | |||||
| # print("Available ids:", curr_inds) | |||||
| def prepare_learnware(self, regenerate_flag=False): | def prepare_learnware(self, regenerate_flag=False): | ||||
| if regenerate_flag: | if regenerate_flag: | ||||
| @@ -55,7 +55,7 @@ class PFSDatasetWorkflow: | |||||
| pfs = Dataloader() | pfs = Dataloader() | ||||
| pfs.regenerate_data() | pfs.regenerate_data() | ||||
| algo_list = ["ridge"] # "ridge", "lgb" | |||||
| algo_list = ["ridge"] # "ridge", "lgb" | |||||
| for algo in algo_list: | for algo in algo_list: | ||||
| pfs.set_algo(algo) | pfs.set_algo(algo) | ||||
| pfs.retrain_models() | pfs.retrain_models() | ||||
| @@ -79,8 +79,6 @@ class PFSDatasetWorkflow: | |||||
| easy_market.add_learnware(zip_path, semantic_spec) | easy_market.add_learnware(zip_path, semantic_spec) | ||||
| print("Total Item:", len(easy_market)) | print("Total Item:", len(easy_market)) | ||||
| # curr_inds = easy_market._get_ids() | |||||
| # print("Available ids:", curr_inds) | |||||
| def prepare_learnware(self, regenerate_flag=False): | def prepare_learnware(self, regenerate_flag=False): | ||||
| if regenerate_flag: | if regenerate_flag: | ||||
| @@ -8,7 +8,9 @@ def get_data(data_root="./data"): | |||||
| dtest = pd.read_csv(os.path.join(data_root, "test.csv")) | dtest = pd.read_csv(os.path.join(data_root, "test.csv")) | ||||
| # returned X(DataFrame), y(Series) | # returned X(DataFrame), y(Series) | ||||
| return (dtrain[['discourse_text', 'discourse_type']], | |||||
| dtrain["discourse_effectiveness"], | |||||
| dtest[['discourse_text', 'discourse_type']], | |||||
| dtest["discourse_effectiveness"]) | |||||
| return ( | |||||
| dtrain[["discourse_text", "discourse_type"]], | |||||
| dtrain["discourse_effectiveness"], | |||||
| dtest[["discourse_text", "discourse_type"]], | |||||
| dtest["discourse_effectiveness"], | |||||
| ) | |||||
| @@ -78,10 +78,10 @@ def prepare_model(): | |||||
| modelv_save_path = os.path.join(model_save_root, "uploader_v_%d.pth" % (i)) | modelv_save_path = os.path.join(model_save_root, "uploader_v_%d.pth" % (i)) | ||||
| modell_save_path = os.path.join(model_save_root, "uploader_l_%d.pth" % (i)) | modell_save_path = os.path.join(model_save_root, "uploader_l_%d.pth" % (i)) | ||||
| with open(modelv_save_path, 'wb') as f: | |||||
| with open(modelv_save_path, "wb") as f: | |||||
| pickle.dump(vectorizer, f) | pickle.dump(vectorizer, f) | ||||
| with open(modell_save_path, 'wb') as f: | |||||
| with open(modell_save_path, "wb") as f: | |||||
| pickle.dump(lgbm, f) | pickle.dump(lgbm, f) | ||||
| logger.info("Model saved to '%s' and '%s'" % (modelv_save_path, modell_save_path)) | logger.info("Model saved to '%s' and '%s'" % (modelv_save_path, modell_save_path)) | ||||
| @@ -39,11 +39,11 @@ def generate_uploader(data_x: pd.Series, data_y: pd.Series, n_uploaders=50, data | |||||
| return | return | ||||
| os.makedirs(data_save_root, exist_ok=True) | os.makedirs(data_save_root, exist_ok=True) | ||||
| types = data_x['discourse_type'].unique() | |||||
| types = data_x["discourse_type"].unique() | |||||
| for i in range(n_uploaders): | for i in range(n_uploaders): | ||||
| indices = data_x['discourse_type'] == types[i] | |||||
| selected_X = data_x[indices]['discourse_text'].to_list() | |||||
| indices = data_x["discourse_type"] == types[i] | |||||
| selected_X = data_x[indices]["discourse_text"].to_list() | |||||
| selected_y = data_y[indices].to_list() | selected_y = data_y[indices].to_list() | ||||
| X_save_dir = os.path.join(data_save_root, "uploader_%d_X.pkl" % (i)) | X_save_dir = os.path.join(data_save_root, "uploader_%d_X.pkl" % (i)) | ||||
| @@ -61,11 +61,11 @@ def generate_user(data_x, data_y, n_users=50, data_save_root=None): | |||||
| return | return | ||||
| os.makedirs(data_save_root, exist_ok=True) | os.makedirs(data_save_root, exist_ok=True) | ||||
| types = data_x['discourse_type'].unique() | |||||
| types = data_x["discourse_type"].unique() | |||||
| for i in range(n_users): | for i in range(n_users): | ||||
| indices = data_x['discourse_type'] == types[i] | |||||
| selected_X = data_x[indices]['discourse_text'].to_list() | |||||
| indices = data_x["discourse_type"] == types[i] | |||||
| selected_X = data_x[indices]["discourse_text"].to_list() | |||||
| selected_y = data_y[indices].to_list() | selected_y = data_y[indices].to_list() | ||||
| X_save_dir = os.path.join(data_save_root, "user_%d_X.pkl" % (i)) | X_save_dir = os.path.join(data_save_root, "user_%d_X.pkl" % (i)) | ||||
| @@ -80,10 +80,10 @@ def generate_user(data_x, data_y, n_users=50, data_save_root=None): | |||||
| # Train Uploaders' models | # Train Uploaders' models | ||||
| def train(X, y, out_classes): | def train(X, y, out_classes): | ||||
| vectorizer = TfidfVectorizer(stop_words='english') | |||||
| vectorizer = TfidfVectorizer(stop_words="english") | |||||
| X_tfidf = vectorizer.fit_transform(X) | X_tfidf = vectorizer.fit_transform(X) | ||||
| lgbm = LGBMClassifier(boosting_type='dart', n_estimators=500, num_leaves=21) | |||||
| lgbm = LGBMClassifier(boosting_type="dart", n_estimators=500, num_leaves=21) | |||||
| lgbm.fit(X_tfidf, y) | lgbm.fit(X_tfidf, y) | ||||
| return vectorizer, lgbm | return vectorizer, lgbm | ||||
| @@ -116,7 +116,7 @@ class EasyStatChecker(BaseChecker): | |||||
| elif spec_type == "RKMEImageSpecification": | elif spec_type == "RKMEImageSpecification": | ||||
| inputs = np.random.randint(0, 255, size=(10, *input_shape)) | inputs = np.random.randint(0, 255, size=(10, *input_shape)) | ||||
| else: | else: | ||||
| raise ValueError(f"not supported spec type for spec_type = {spec_type}") | |||||
| raise ValueError(f"not supported spec type for spec_type = {spec_type}") | |||||
| # Check output | # Check output | ||||
| try: | try: | ||||
| @@ -1,14 +1,12 @@ | |||||
| from __future__ import annotations | from __future__ import annotations | ||||
| import os | import os | ||||
| import copy | import copy | ||||
| import torch | import torch | ||||
| import json | import json | ||||
| import codecs | import codecs | ||||
| import random | import random | ||||
| import numpy as np | import numpy as np | ||||
| # from cvxopt import solvers, matrix | |||||
| from qpsolvers import solve_qp, Problem, solve_problem | from qpsolvers import solve_qp, Problem, solve_problem | ||||
| from collections import Counter | from collections import Counter | ||||
| from typing import Tuple, Any, List, Union, Dict | from typing import Tuple, Any, List, Union, Dict | ||||
| @@ -20,6 +18,7 @@ from ....logger import get_module_logger | |||||
| logger = get_module_logger("rkme") | logger = get_module_logger("rkme") | ||||
| class RKMETableSpecification(RegularStatsSpecification): | class RKMETableSpecification(RegularStatsSpecification): | ||||
| """Reduced Kernel Mean Embedding (RKME) Specification""" | """Reduced Kernel Mean Embedding (RKME) Specification""" | ||||
| @@ -137,7 +136,7 @@ class RKMETableSpecification(RegularStatsSpecification): | |||||
| Size of the construced reduced set. | Size of the construced reduced set. | ||||
| """ | """ | ||||
| X = X.astype("float32") | X = X.astype("float32") | ||||
| kmeans = MiniBatchKMeans(n_clusters=K, max_iter=100, verbose=False, n_init='auto') | |||||
| kmeans = MiniBatchKMeans(n_clusters=K, max_iter=100, verbose=False, n_init="auto") | |||||
| kmeans.fit(X) | kmeans.fit(X) | ||||
| center = torch.from_numpy(kmeans.cluster_centers_).double() | center = torch.from_numpy(kmeans.cluster_centers_).double() | ||||
| self.z = center | self.z = center | ||||
| @@ -54,12 +54,6 @@ REQUIRED = [ | |||||
| "numpy>=1.20.0", | "numpy>=1.20.0", | ||||
| "pandas>=0.25.1", | "pandas>=0.25.1", | ||||
| "scipy>=1.0.0", | "scipy>=1.0.0", | ||||
| <<<<<<< HEAD | |||||
| "matplotlib>=3.1.3", | |||||
| "torch>=1.11.0", | |||||
| ======= | |||||
| "cvxopt>=1.3.0", | |||||
| >>>>>>> 93df27b2a16a169ecfb93e3a2e149b6c1ea56902 | |||||
| "tqdm>=4.65.0", | "tqdm>=4.65.0", | ||||
| "scikit-learn>=0.22", | "scikit-learn>=0.22", | ||||
| "joblib>=1.2.0", | "joblib>=1.2.0", | ||||
| @@ -76,9 +70,6 @@ REQUIRED = [ | |||||
| "qpsolvers[clarabel]>=4.0.1", | "qpsolvers[clarabel]>=4.0.1", | ||||
| ] | ] | ||||
| # if get_platform() != MACOS: | |||||
| # REQUIRED.append("faiss-cpu>=1.7.1") | |||||
| here = os.path.abspath(os.path.dirname(__file__)) | here = os.path.abspath(os.path.dirname(__file__)) | ||||
| with open(os.path.join(here, "README.md"), encoding="utf-8") as f: | with open(os.path.join(here, "README.md"), encoding="utf-8") as f: | ||||
| long_description = f.read() | long_description = f.read() | ||||
| @@ -32,4 +32,3 @@ class TestCheckLearnware(unittest.TestCase): | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| unittest.main() | unittest.main() | ||||