diff --git a/visualpython/css/m_ml/gridSearch.css b/visualpython/css/m_ml/gridSearch.css index dbe53854..a5579206 100644 --- a/visualpython/css/m_ml/gridSearch.css +++ b/visualpython/css/m_ml/gridSearch.css @@ -40,6 +40,7 @@ } .vp-param-set-add { cursor: pointer; + margin-bottom: 5px; } .vp-param-item > label { align-self: center; diff --git a/visualpython/css/m_ml/pipeline.css b/visualpython/css/m_ml/pipeline.css index 0bbe46c7..7e670421 100644 --- a/visualpython/css/m_ml/pipeline.css +++ b/visualpython/css/m_ml/pipeline.css @@ -15,7 +15,7 @@ } .vp-pp-right-box { display: grid; - grid-template-rows: 35px 10px calc(100% - 45px); + grid-template-rows: 35px 10px calc(100% - 80px) 35px; padding-left: 5px; overflow: auto; } @@ -45,7 +45,13 @@ position: absolute; transition: all 0.5s ease-in-out; } -.vp-pp-item:not(:last-child):before { +.vp-pp-item:last-child:before, +.vp-pp-item:last-child:after, +.vp-pp-item.vp-last-visible:before, +.vp-pp-item.vp-last-visible:after { + display: none; +} +.vp-pp-item:before { border: 0.25px solid var(--vp-gray-color); border-width: 0 4px 4px 0; display: inline-block; @@ -55,7 +61,7 @@ top: 47px; left: 100px; } -.vp-pp-item:not(:last-child):after { +.vp-pp-item:after { border: 0.25px solid var(--vp-gray-color); border-width: 0 4px 0 0; height: 15px; @@ -129,4 +135,48 @@ } .vp-pp-step-content:empty::after { content: 'Select the template and Follow the pipeline to generate simple ML code.' +} +.vp-pp-step-footer { + border-top: 0.25px solid var(--vp-border-gray-color); + width: 100%; + height: 35px; +} +.vp-pp-step-move-btn { + width: 70px; + height: 30px; + background-color: var(--vp-background-color); + border: 0.25px solid var(--vp-border-gray-color); + box-sizing: border-box; + box-shadow: 0.5px 0.5px 0.5px rgb(0 0 0 / 10%); + border-radius: 3px; + line-height: 30px; + vertical-align: middle; + font-family: 'AppleSDGothicNeo'; + font-size: 13px; + text-align: center; + color: var(--vp-font-primary); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + display: inline-block; + position: absolute; + bottom: 10px; +} +.vp-pp-step-move-btn:hover { + background-color: var(--vp-light-gray-color); +} +.vp-pp-step-move-btn.disabled { + background-color: var(--vp-gray-color); + cursor: not-allowed; +} +.vp-pp-step-prev { + left: 270px; +} +.vp-pp-step-next{ + right: 15px; } \ No newline at end of file diff --git a/visualpython/data/m_library/pandasLibrary.js b/visualpython/data/m_library/pandasLibrary.js index 8491177b..7ae4eb7e 100644 --- a/visualpython/data/m_library/pandasLibrary.js +++ b/visualpython/data/m_library/pandasLibrary.js @@ -1916,7 +1916,10 @@ define([ { "name": "by", "label": "Sort By", - "usePair": true + "usePair": true, + "component": [ + "col_multi" + ] }, { "name": "axis", @@ -2437,7 +2440,7 @@ define([ "name": "get data counts", "library": "pandas", "description": "get data value counts", - "code": "${o0} = ${i0}.value_counts()", + "code": "${o0} = ${i0}.value_counts(${bins}${sort}${ascending}${dropna}${etc})", "options": [ { "name": "i0", @@ -2454,7 +2457,39 @@ define([ "component": [ "input" ] - } + }, + { + "name": "bins", + "component": [ + "input_number" + ], + "help": "Only for Series object", + "usePair": true, + }, + { + "name": "sort", + "component": [ + "bool_select" + ], + "default": "True", + "usePair": true, + }, + { + "name": "ascending", + "component": [ + "bool_select" + ], + "default": "False", + "usePair": true, + }, + { + "name": "dropna", + "component": [ + "bool_select" + ], + "default": "True", + "usePair": true, + }, ] }, "pdIdt_info": { diff --git a/visualpython/data/m_ml/mlLibrary.js b/visualpython/data/m_ml/mlLibrary.js index 78528fed..e5bf2205 100644 --- a/visualpython/data/m_ml/mlLibrary.js +++ b/visualpython/data/m_ml/mlLibrary.js @@ -129,6 +129,7 @@ define([ name: 'OneHotEncoder', import: 'from sklearn.preprocessing import OneHotEncoder', code: 'OneHotEncoder(${sparse}${handle_unknown}${etc})', + returnType: 'OneHotEncoder', options: [ { name: 'sparse', component: ['bool_select'], default: 'False', usePair: true }, { name: 'handle_unknown', component: ['option_suggest'], usePair: true, @@ -139,6 +140,7 @@ define([ name: 'LabelEncoder', import: 'from sklearn.preprocessing import LabelEncoder', code: 'LabelEncoder()', + returnType: 'LabelEncoder', options: [ ] @@ -147,6 +149,7 @@ define([ name: 'OrdinalEncoder', import: 'from sklearn.preprocessing import OrdinalEncoder', code: 'OrdinalEncoder(${handle_unknown}${unknown_values}${etc})', + returnType: 'OrdinalEncoder', options: [ { name: 'handle_unknown', component: ['option_suggest'], usePair: true, options: ['error', 'use_encoded_value'], default: 'error' }, @@ -158,6 +161,7 @@ define([ install: '!pip install category_encoders', import: 'from category_encoders.target_encoder import TargetEncoder', code: 'TargetEncoder(${cols}${handle_missing}${handle_unknown}${smoothing}${etc})', + returnType: 'TargetEncoder', options: [ { name: 'cols', component: ['var_suggest', '1darr'], usePair: true }, { name: 'handle_missing', component: ['option_suggest'], usePair: true, @@ -172,6 +176,7 @@ define([ install: '!pip install imblearn', import: 'from imblearn.over_sampling import SMOTE', code: 'SMOTE(${random_state}${k_neighbors}${etc})', + returnType: 'SMOTE', options: [ { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true }, { name: 'k_neighbors', component: ['input_number'], default: 5, usePair: true } @@ -182,6 +187,7 @@ define([ name: 'StandardScaler', import: 'from sklearn.preprocessing import StandardScaler', code: 'StandardScaler(${with_mean}${with_std}${etc})', + returnType: 'StandardScaler', options: [ { name: 'with_mean', component: ['bool_select'], default: 'True', usePair: true }, { name: 'with_std', component: ['bool_select'], default: 'True', usePair: true } @@ -191,6 +197,7 @@ define([ name: 'RobustScaler', import: 'from sklearn.preprocessing import RobustScaler', code: 'RobustScaler(${with_centering}${with_scaling}${etc})', + returnType: 'RobustScaler', options: [ { name: 'with_centering', component: ['bool_select'], default: 'True', usePair: true }, { name: 'with_scaling', component: ['bool_select'], default: 'True', usePair: true } @@ -200,6 +207,7 @@ define([ name: 'MinMaxScaler', import: 'from sklearn.preprocessing import MinMaxScaler', code: 'MinMaxScaler(${feature_range}${etc})', + returnType: 'MinMaxScaler', options: [ { name: 'feature_range', component: ['input'], placeholder: '(min, max)', default: '(0, 1)', usePair: true } ] @@ -208,6 +216,7 @@ define([ name: 'Normalizer', import: 'from sklearn.preprocessing import Normalizer', code: 'Normalizer(${norm}${etc})', + returnType: 'Normalizer', options: [ { name: 'norm', component: ['option_suggest'], usePair: true, options: ['l1', 'l2', 'max'], default: 'l2' }, @@ -217,6 +226,7 @@ define([ name: 'Log Scaling', import: 'from sklearn.preprocessing import FunctionTransformer', code: 'FunctionTransformer(np.log1p${etc})', + returnType: 'FunctionTransformer', options: [ ] @@ -225,6 +235,7 @@ define([ name: 'Exponential Scaling', import: 'from sklearn.preprocessing import FunctionTransformer', code: 'FunctionTransformer(np.expm1${etc})', + returnType: 'FunctionTransformer', options: [ ] @@ -233,6 +244,7 @@ define([ name: 'Polynomial Features', import: 'from sklearn.preprocessing import PolynomialFeatures', code: 'PolynomialFeatures(${etc})', + returnType: 'PolynomialFeatures', options: [ ] @@ -241,6 +253,7 @@ define([ name: 'KBins Discretizer', import: 'from sklearn.preprocessing import KBinsDiscretizer', code: 'KBinsDiscretizer(${n_bins}${strategy}${encode}${etc})', + returnType: 'KBinsDiscretizer', options: [ { name: 'n_bins', component: ['input_number'], default: 5, usePair: true }, { name: 'strategy', component: ['option_select'], type: 'text', default: 'quantile', usePair: true, @@ -253,6 +266,7 @@ define([ name: 'SimpleImputer', import: 'from sklearn.impute import SimpleImputer', code: 'SimpleImputer(${missing_values}${strategy}${fill_value}${copy}${add_indicator}${etc})', + returnType: 'SimpleImputer', options: [ { name: 'missing_values', component: ['input'], placeholder: 'np.nan', usePair: true }, { name: 'strategy', component: ['option_select'], type: 'text', default: 'quantile', usePair: true, @@ -266,6 +280,7 @@ define([ name: 'MakeColumnTransformer', import: 'from sklearn.compose import make_column_transformer', code: 'make_column_transformer(${mct_code})', + returnType: 'ColumnTransformer', options: [ ] @@ -275,6 +290,7 @@ define([ name: 'LinearRegression', import: 'from sklearn.linear_model import LinearRegression', code: 'LinearRegression(${fit_intercept}${etc})', + returnType: 'LinearRegression', options: [ { name: 'fit_intercept', component: ['bool_select'], default: 'True', usePair: true } ] @@ -283,6 +299,7 @@ define([ name: 'Ridge', import: 'from sklearn.linear_model import Ridge', code: 'Ridge(${alpha}${etc})', + returnType: 'Ridge', options: [ { name: 'alpha', component: ['input_number'], default: 1.0, usePair: true } ] @@ -291,6 +308,7 @@ define([ name: 'Lasso', import: 'from sklearn.linear_model import Lasso', code: 'Lasso(${alpha}${etc})', + returnType: 'Lasso', options: [ { name: 'alpha', component: ['input_number'], default: 1.0, usePair: true } ] @@ -299,6 +317,7 @@ define([ name: 'ElasticNet', import: 'from sklearn.linear_model import ElasticNet', code: 'ElasticNet(${alpha}${l1_ratio}${etc})', + returnType: 'ElasticNet', options: [ { name: 'alpha', component: ['input_number'], default: 1.0, usePair: true }, { name: 'l1_ratio', component: ['input_number'], default: 0.5, usePair: true } @@ -308,6 +327,7 @@ define([ name: 'SVR', import: 'from sklearn.svm import SVR', code: 'SVR(${C}${kernel}${degree}${gamma}${coef0}${random_state}${etc})', + returnType: 'SVR', options: [ { name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true, step: 0.1, min: 0 }, { name: 'kernel', component: ['option_select'], type: 'text', usePair: true, @@ -323,6 +343,7 @@ define([ name: 'DecisionTreeRegressor', import: 'from sklearn.tree import DecisionTreeRegressor', code: 'DecisionTreeRegressor(${criterion}${max_depth}${min_samples_split}${random_state}${etc})', + returnType: 'DecisionTreeRegressor', options: [ { name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', options: ['squared_error', 'friedman_mse', 'absolute_error', 'poisson'] }, @@ -335,6 +356,7 @@ define([ name: 'RandomForestRegressor', import: 'from sklearn.ensemble import RandomForestRegressor', code: 'RandomForestRegressor(${n_estimators}${criterion}${max_depth}${min_samples_split}${n_jobs}${random_state}${etc})', + returnType: 'RandomForestRegressor', options: [ { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', usePair: true, @@ -349,6 +371,7 @@ define([ name: 'GradientBoostingRegressor', import: 'from sklearn.ensemble import GradientBoostingRegressor', code: 'GradientBoostingRegressor(${loss}${learning_rate}${n_estimators}${criterion}${random_state}${etc})', + returnType: 'GradientBoostingRegressor', options: [ { name: 'loss', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', usePair: true, options: ['squared_error', 'absolute_error', 'huber', 'quantile'] }, @@ -364,6 +387,7 @@ define([ install: '!pip install xgboost', import: 'from xgboost import XGBRegressor', code: 'XGBRegressor(${n_estimators}${max_depth}${learning_rate}${gamma}${random_state}${etc})', + returnType: 'XGBRegressor', options: [ { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true }, @@ -377,6 +401,7 @@ define([ install: '!pip install lightgbm', import: 'from lightgbm import LGBMRegressor', code: 'LGBMRegressor(${boosting_type}${max_depth}${learning_rate}${n_estimators}${random_state}${etc})', + returnType: 'LGBMRegressor', options: [ { name: 'boosting_type', component: ['option_select'], type: 'text', default: 'gbdt', type: 'text', usePair: true, options: ['gbdt', 'dart', 'goss', 'rf']}, @@ -391,6 +416,7 @@ define([ install: '!pip install catboost', import: 'from catboost import CatBoostRegressor', code: 'CatBoostRegressor(${learning_rate}${loss_function}${task_type}${max_depth}${n_estimators}${random_state}${etc})', + returnType: 'CatBoostRegressor', options: [ { name: 'learning_rate', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'loss_function', component: ['option_select'], type: 'text', default: 'RMSE', type:'text', usePair: true, @@ -407,6 +433,7 @@ define([ name: 'LogisticRegression', import: 'from sklearn.linear_model import LogisticRegression', code: 'LogisticRegression(${penalty}${C}${random_state}${etc})', + returnType: 'LogisticRegression', options: [ { name: 'penalty', component: ['option_select'], type: 'text', default: 'l2', usePair: true, options: ['l1', 'l2', 'elasticnet', 'none']}, { name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true, step: 0.1, min: 0 }, @@ -417,6 +444,7 @@ define([ name: 'BernoulliNB', import: 'from sklearn.naive_bayes import BernoulliNB', code: 'BernoulliNB(${etc})', + returnType: 'BernoulliNB', options: [ //TODO: ] @@ -425,6 +453,7 @@ define([ name: 'MultinomialNB', import: 'from sklearn.naive_bayes import MultinomialNB', code: 'MultinomialNB(${etc})', + returnType: 'MultinomialNB', options: [ //TODO: ] @@ -433,6 +462,7 @@ define([ name: 'GaussianNB', import: 'from sklearn.naive_bayes import GaussianNB', code: 'GaussianNB(${etc})', + returnType: 'GaussianNB', options: [ //TODO: ] @@ -441,6 +471,7 @@ define([ name: 'SVC', import: 'from sklearn.svm import SVC', code: 'SVC(${C}${kernel}${degree}${gamma}${coef0}${random_state}${etc})', + returnType: 'SVC', options: [ { name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true, step: 0.1, min: 0 }, { name: 'kernel', component: ['option_select'], type: 'text', usePair: true, @@ -456,6 +487,7 @@ define([ name: 'DecisionTreeClassifier', import: 'from sklearn.tree import DecisionTreeClassifier', code: 'DecisionTreeClassifier(${criterion}${max_depth}${min_samples_split}${random_state}${etc})', + returnType: 'DecisionTreeClassifier', options: [ { name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', options: ['squared_error', 'friedman_mse', 'absolute_error', 'poisson'], usePair: true }, @@ -468,6 +500,7 @@ define([ name: 'RandomForestClassifier', import: 'from sklearn.ensemble import RandomForestClassifier', code: 'RandomForestClassifier(${n_estimators}${criterion}${max_depth}${min_samples_split}${n_jobs}${random_state}${etc})', + returnType: 'RandomForestClassifier', options: [ { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'criterion', component: ['option_select'], type: 'text', default: 'gini', type:'text', usePair: true, @@ -482,6 +515,7 @@ define([ name: 'GradientBoostingClassifier', import: 'from sklearn.ensemble import GradientBoostingClassifier', code: 'GradientBoostingClassifier(${loss}${learning_rate}${n_estimators}${criterion}${random_state}${etc})', + returnType: 'GradientBoostingClassifier', options: [ { name: 'loss', component: ['option_select'], type: 'text', default: 'deviance', type: 'text', usePair: true, options: ['deviance', 'exponential'] }, @@ -497,6 +531,7 @@ define([ install: '!pip install xgboost', import: 'from xgboost import XGBClassifier', code: 'XGBClassifier(${n_estimators}${max_depth}${learning_rate}${gamma}${random_state}${etc})', + returnType: 'XGBClassifier', options: [ { name: 'n_estimators', component: ['input_number'], default: 100, usePair: true }, { name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true }, @@ -510,6 +545,7 @@ define([ install: '!pip install lightgbm', import: 'from lightgbm import LGBMClassifier', code: 'LGBMClassifier(${boosting_type}${max_depth}${learning_rate}${n_estimators}${random_state}${etc})', + returnType: 'LGBMClassifier', options: [ { name: 'boosting_type', component: ['option_select'], type: 'text', default: 'gbdt', type: 'text', usePair: true, options: ['gbdt', 'dart', 'goss', 'rf']}, @@ -524,6 +560,7 @@ define([ install: '!pip install catboost', import: 'from catboost import CatBoostClassifier', code: 'CatBoostClassifier(${learning_rate}${loss_function}${task_type}${max_depth}${n_estimators}${random_state}${etc})', + returnType: 'CatBoostClassifier', options: [ { name: 'learning_rate', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'loss_function', component: ['option_select'], type: 'text', default: 'RMSE', type:'text', usePair: true, @@ -542,6 +579,7 @@ define([ import: 'from autosklearn.regression import AutoSklearnRegressor', link: 'https://automl.github.io/auto-sklearn/master/api.html#regression', code: 'AutoSklearnRegressor(${etc})', + returnType: 'AutoSklearnRegressor', options: [ ] @@ -551,6 +589,7 @@ define([ install: '!pip install tpot', import: 'from tpot import TPOTRegressor', code: 'TPOTRegressor(${generation}${population_size}${cv}${random_state}${etc})', + returnType: 'TPOTRegressor', options: [ { name: 'generation', component: ['input_number'], default: 100, usePair: true }, { name: 'population_size', component: ['input_number'], default: 100, usePair: true }, @@ -564,6 +603,7 @@ define([ import: 'from autosklearn.classification import AutoSklearnClassifier', link: 'https://automl.github.io/auto-sklearn/master/api.html#classification', code: 'AutoSklearnClassifier(${etc})', + returnType: 'AutoSklearnClassifier', options: [ ] @@ -573,6 +613,7 @@ define([ install: '!pip install tpot', import: 'from tpot import TPOTClassifier', code: 'TPOTClassifier(${generation}${population_size}${cv}${random_state}${etc})', + returnType: 'TPOTClassifier', options: [ { name: 'generation', component: ['input_number'], default: 100, usePair: true }, { name: 'population_size', component: ['input_number'], default: 100, usePair: true }, @@ -585,6 +626,7 @@ define([ name: 'KMeans', import: 'from sklearn.cluster import KMeans', code: 'KMeans(${n_clusters}${random_state}${etc})', + returnType: 'KMeans', options: [ { name: 'n_clusters', component: ['input_number'], default: 8, usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -594,6 +636,7 @@ define([ name: 'AgglomerativeClustering', import: 'from sklearn.cluster import AgglomerativeClustering', code: 'AgglomerativeClustering(${n_clusters}${random_state}${etc})', + returnType: 'AgglomerativeClustering', options: [ { name: 'n_clusters', component: ['input_number'], default: 2, usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -603,6 +646,7 @@ define([ name: 'GaussianMixture', import: 'from sklearn.mixture import GaussianMixture', code: 'GaussianMixture(${n_components}${random_state}${etc})', + returnType: 'GaussianMixture', options: [ { name: 'n_components', component: ['input_number'], default: 1, usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -612,6 +656,7 @@ define([ name: 'DBSCAN', import: 'from sklearn.cluster import DBSCAN', code: 'DBSCAN(${eps}${min_samples}${etc})', + returnType: 'DBSCAN', options: [ { name: 'eps', component: ['input_number'], default: 0.5, usePair: true }, { name: 'min_samples', component: ['input_number'], default: 5, usePair: true } @@ -622,6 +667,7 @@ define([ name: 'PCA(Principal Component Analysis)', import: 'from sklearn.decomposition import PCA', code: 'PCA(${n_components}${random_state}${etc})', + returnType: 'PCA', options: [ { name: 'n_components', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -631,6 +677,7 @@ define([ name: 'LDA(Linear Discriminant Analysis)', import: 'from sklearn.discriminant_analysis import LinearDiscriminantAnalysis', code: 'LinearDiscriminantAnalysis(${n_components}${etc})', + returnType: 'LinearDiscriminantAnalysis', options: [ { name: 'n_components', component: ['input_number'], placeholder: 'None', usePair: true } ] @@ -639,6 +686,7 @@ define([ name: 'Truncated SVD', import: 'from sklearn.decomposition import TruncatedSVD', code: 'TruncatedSVD(${n_components}${random_state}${etc})', + returnType: 'TruncatedSVD', options: [ { name: 'n_components', component: ['input_number'], default: 2, usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -648,6 +696,7 @@ define([ name: 'NMF(Non-Negative Matrix Factorization)', import: 'from sklearn.decomposition import NMF', code: 'NMF(${n_components}${random_state}${etc})', + returnType: 'NMF', options: [ { name: 'n_components', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true } @@ -657,6 +706,7 @@ define([ name: 'TSNE(T-distributed Stochastic Neighbor Embedding)', import: 'from sklearn.manifold import TSNE', code: 'TSNE(${n_components}${learning_rate}${random_state}${etc})', + returnType: 'TSNE', options: [ { name: 'n_components', component: ['input_number'], placeholder: 'None', usePair: true }, { name: 'learning_rate', component: ['input_number'], default: 200.0, usePair: true }, @@ -667,10 +717,12 @@ define([ 'grid-search': { name: 'GridSearch', import: 'from sklearn.model_selection import GridSearchCV', - code: 'GridSearchCV(${estimator}, ${param_grid}${n_jobs}${cv}${verbose}${etc})', + code: 'GridSearchCV(${estimator}, ${param_grid}${scoring}${n_jobs}${cv}${verbose}${etc})', + returnType: 'GridSearchCV', options: [ { name: 'estimator', component: ['data_select'], placeholder: 'Select model'}, { name: 'param_grid', component: ['input'], placeholder: 'Enter parameters'}, + { name: 'scoring', component: ['input'], placeholder: 'None', usePair: true }, // https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter { name: 'n_jobs', component: ['input'], placeholder: 'None', usePair: true }, { name: 'cv', component: ['input'], placeholder: 'None', usePair: true }, { name: 'verbose', component: ['input_number'], placeholder: 'Input number', usePair: true } @@ -680,19 +732,19 @@ define([ 'model_save': { name: 'Save model', import: 'import joblib', - code: "joblib.dump(${target}, ${savePath}${etc})", + code: "joblib.dump(${target}, ${save_path}${etc})", options: [ - { name: 'target', component: ['data_select'], placeholder: 'Select model'}, - { name: 'savePath', component: ['file-save'], placeholder: 'Select path'} + { name: 'target', component: ['data_select'], comp_type: 'ml', placeholder: 'Select model'}, + { name: 'save_path', component: ['file-save'], placeholder: 'Select path'} ] }, 'model_load': { name: 'Load model', import: 'import joblib', - code: "${allocateTo} = joblib.load(${loadPath}${etc})", + code: "${allocate_to} = joblib.load(${load_path}${etc})", options: [ - { name: 'loadPath', component: ['file-open'], placeholder: 'Select path'}, - { name: 'allocateTo', component: ['data_select'], placeholder: 'New variable to load'} + { name: 'load_path', component: ['file-open'], placeholder: 'Select path'}, + { name: 'allocate_to', component: ['input'], placeholder: 'New variable to load'} ] } } diff --git a/visualpython/data/m_stats/statsLibrary.js b/visualpython/data/m_stats/statsLibrary.js index e43e6695..891953e9 100644 --- a/visualpython/data/m_stats/statsLibrary.js +++ b/visualpython/data/m_stats/statsLibrary.js @@ -35,6 +35,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.binom(${n}${p})', description: 'A binomial discrete random variable.', + help: '_vp_stats.binom', options: [ { name: 'n', component: ['input_number'], value: 10, required: true, usePair: true }, { name: 'p', component: ['input_number'], value: 0.6, required: true, usePair: true }, @@ -45,6 +46,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.multinomial(${n}${p})', description: 'A multinomial random variable.', + help: '_vp_stats.multinomial', options: [ { name: 'n', component: ['input_number'], value: 10, required: true, usePair: true }, { name: 'p', component: ['data_select'], value: '[0.4, 0.6]', required: true, usePair: true }, @@ -56,6 +58,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.uniform()', description: 'A uniform continuous random variable.', + help: '_vp_stats.uniform', options: [ ] }, @@ -64,6 +67,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.norm(${loc}${scale})', description: 'A normal continuous random variable.', + help: '_vp_stats.norm', options: [ { name: 'loc', component: ['input_number'], value: 0, usePair: true }, { name: 'scale', component: ['input_number'], value: 1, usePair: true }, @@ -74,6 +78,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.beta(${a}${b})', description: 'A beta continuous random variable.', + help: '_vp_stats.beta', options: [ { name: 'a', component: ['input_number'], required: true, usePair: true }, { name: 'b', component: ['input_number'], required: true, usePair: true }, @@ -84,6 +89,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.gamma(${a})', description: 'A gamma continuous random variable.', + help: '_vp_stats.gamma', options: [ { name: 'a', component: ['input_number'], required: true, usePair: true }, ] @@ -93,6 +99,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.t(${df})', description: "A Student's t continuous random variable.", + help: '_vp_stats.t', options: [ { name: 'df', component: ['input_number'], required: true, usePair: true }, ] @@ -102,6 +109,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.chi2(${df})', description: 'A chi-squared continuous random variable.', + help: '_vp_stats.chi2', options: [ { name: 'df', component: ['input_number'], required: true, usePair: true }, ] @@ -111,6 +119,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.f(${dfn}${dfd})', description: 'An F continuous random variable.', + help: '_vp_stats.f', options: [ { name: 'dfn', component: ['input_number'], required: true, usePair: true }, { name: 'dfd', component: ['input_number'], required: true, usePair: true }, @@ -121,8 +130,9 @@ define([ import: 'from scipy import stats', code: '_rv = stats.dirichlet(${alpha}${seed})', description: 'A Dirichlet random variable.', + help: '_vp_stats.dirichlet', options: [ - { name: 'alpha', component: ['input_number'], required: true, usePair: true }, + { name: 'alpha', component: ['input'], required: true, usePair: true, value: '(3,5,2)', placeholder: '(x, y, z)' }, { name: 'seed', component: ['input_number'], usePair: true }, ] }, @@ -131,6 +141,7 @@ define([ import: 'from scipy import stats', code: '_rv = stats.multivariate_normal(${mean}${cov}${allow_singular})', description: 'A multivariate normal random variable.', + help: '_vp_stats.multivariate_normal', options: [ { name: 'mean', component: ['data_select'], value: '[0]', usePair: true }, { name: 'cov', component: ['data_select'], value: '[1]', usePair: true }, diff --git a/visualpython/html/component/popupComponent.html b/visualpython/html/component/popupComponent.html index 825a51c9..4c1ddec2 100644 --- a/visualpython/html/component/popupComponent.html +++ b/visualpython/html/component/popupComponent.html @@ -91,11 +91,11 @@