Files
mixly3/boards/default_src/python_mixpy/generators/sklearn.js
2024-07-19 10:16:00 +08:00

238 lines
16 KiB
JavaScript

export const sklearn_make_classification = function (_, generator) {
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '20';
var value_n_informative = generator.valueToCode(this, 'n_informative', generator.ORDER_ATOMIC) || '2';
var value_n_redundant = generator.valueToCode(this, 'n_redundant', generator.ORDER_ATOMIC) || '2';
var value_n_repeated = generator.valueToCode(this, 'n_repeated', generator.ORDER_ATOMIC) || '0';
var value_n_classes = generator.valueToCode(this, 'n_classes', generator.ORDER_ATOMIC) || '2';
var value_n_clusters_per_class = generator.valueToCode(this, 'n_clusters_per_class', generator.ORDER_ATOMIC) || '2';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_make_classification'] = 'from sklearn.datasets import make_classification';
var code = 'make_classification(n_samples=' + value_n_samples + ',n_features=' + value_n_features + ',n_informative=' + value_n_informative + ',n_redundant=' + value_n_redundant + ',n_repeated=' + value_n_repeated + ',n_classes=' + value_n_classes + ',n_clusters_per_class=' + value_n_clusters_per_class + ',random_state=' + value_random_state + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 生成回归样本
export const sklearn_make_regression = function (_, generator) {
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '100';
var value_n_informative = generator.valueToCode(this, 'n_informative', generator.ORDER_ATOMIC) || '10';
var value_n_targets = generator.valueToCode(this, 'n_targets', generator.ORDER_ATOMIC) || '1';
var value_bias = generator.valueToCode(this, 'bias', generator.ORDER_ATOMIC) || '0.0';
var value_noise = generator.valueToCode(this, 'noise', generator.ORDER_ATOMIC) || '0.0';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_make_regression'] = 'from sklearn.datasets import make_regression';
var code = 'make_regression(n_samples=' + value_n_samples + ',n_features=' + value_n_features + ',n_informative=' + value_n_informative + ',n_targets=' + value_n_targets + ',bias=' + value_bias + ',noise=' + value_noise + ',random_state=' + value_random_state + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 生成聚类样本
export const sklearn_make_blobs = function (_, generator) {
var value_n_samples = generator.valueToCode(this, 'n_samples', generator.ORDER_ATOMIC) || '100';
var value_n_features = generator.valueToCode(this, 'n_features', generator.ORDER_ATOMIC) || '2';
var value_centers = generator.valueToCode(this, 'centers', generator.ORDER_ATOMIC) || 'None';
var value_cluster_std = generator.valueToCode(this, 'cluster_std', generator.ORDER_ATOMIC) || '1.0';
var value_center_box = generator.valueToCode(this, 'center_box', generator.ORDER_ATOMIC) || '(-10.0,10.0)';
var value_shuffle = generator.valueToCode(this, 'shuffle', generator.ORDER_ATOMIC) || 'True';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_make_blobs'] = 'from sklearn.datasets import make_blobs';
var code = 'make_blobs(n_samples=' + value_n_samples + ',n_features=' + value_n_features + ',centers=' + value_centers + ',cluster_std=' + value_cluster_std + ',center_box=' + value_center_box + ',shuffle=' + value_shuffle + ',random_state=' + value_random_state + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 加载数据集
export const sklearn_load = function (_, generator) {
var dropdown_type = this.getFieldValue('type');
var text_name = this.getFieldValue('name');
generator.definitions_['import_sklearn_datasets'] = 'from sklearn import datasets';
var code = text_name + ' = datasets.' + dropdown_type + '()\n';
return code;
}
// sklearn 获取特征值/标签值/标签/特征
export const sklearn_data_target = function (_, generator) {
var value_name = generator.valueToCode(this, 'name', generator.ORDER_ATOMIC) || 'iris';
var dropdown_type = this.getFieldValue('type');
var code = value_name + '.' + dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
// sklearn 数据集分割
export const sklearn_train_test_split = function (_, generator) {
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'iris_X';
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'iris_y';
var value_test_size = generator.valueToCode(this, 'test_size', generator.ORDER_ATOMIC) || '0.3';
var value_rondom_state = generator.valueToCode(this, 'rondom_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_train_test_split'] = 'from sklearn.model_selection import train_test_split';
if (value_train_target == 'None')
var code = 'train_test_split(' + value_train_data + ',test_size = ' + value_test_size + ',random_state = ' + value_rondom_state + ')';
else
var code = 'train_test_split(' + value_train_data + ',' + value_train_target + ',test_size = ' + value_test_size + ',random_state = ' + value_rondom_state + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 数据集分割-无标签值
export const sklearn_train_test_split_no_target = function (_, generator) {
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'iris_X';
var value_test_size = generator.valueToCode(this, 'test_size', generator.ORDER_ATOMIC) || '0.3';
var value_rondom_state = generator.valueToCode(this, 'rondom_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_train_test_split'] = 'from sklearn.model_selection import train_test_split';
var code = 'train_test_split(' + value_train_data + ',test_size = ' + value_test_size + ',random_state = ' + value_rondom_state + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 初始化线性回归
export const sklearn_LinearRegression = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
var value_normalize = generator.valueToCode(this, 'normalize', generator.ORDER_ATOMIC) || 'False';
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import LinearRegression';
var code = value_model_name + ' = LinearRegression(fit_intercept = ' + value_fit_intercept + ',normalize = ' + value_normalize + ',n_jobs = ' + value_n_jobs + ')\n';
return code;
}
// sklearn 初始化岭回归
export const sklearn_Ridge = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_alpha = generator.valueToCode(this, 'alpha', generator.ORDER_ATOMIC) || '1.0';
var value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
var value_normalize = generator.valueToCode(this, 'normalize', generator.ORDER_ATOMIC) || 'False';
var value_max_iter = generator.valueToCode(this, 'max_iter', generator.ORDER_ATOMIC) || '300';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import Ridge';
var code = value_model_name + ' = Ridge(alpha = ' + value_alpha + ',fit_intercept = ' + value_fit_intercept + ',normalize = ' + value_normalize + ',max_iter = ' + value_max_iter + ',random_state = ' + value_random_state + ')\n';
return code;
}
// sklearn 初始化决策树 分类/回归算法
export const sklearn_DecisionTreeClassifier_Regressor = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var dropdown_type = this.getFieldValue('type');
var value_max_depth = generator.valueToCode(this, 'max_depth', generator.ORDER_ATOMIC) || 'None';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.tree import ' + dropdown_type;
var code = value_model_name + ' = ' + dropdown_type + '(max_depth = ' + value_max_depth + ',random_state = ' + value_random_state + ')\n';
return code;
}
export const sklearn_RandomForestClassifier_Regressor = function (_, generator) {
var dropdown_type = this.getFieldValue('type');
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'Model';
var value_n_estimators = generator.valueToCode(this, 'n_estimators', generator.ORDER_ATOMIC) || '100';
var value_max_depth = generator.valueToCode(this, 'max_depth', generator.ORDER_ATOMIC) || 'None';
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.ensemble import ' + dropdown_type;
var code = value_model_name + ' = ' + dropdown_type + '(n_estimators = ' + value_n_estimators + ',max_depth = ' + value_max_depth + ',n_jobs = ' + value_n_jobs + ',random_state = ' + value_random_state + ')\n';
return code;
}
// sklearn 初始化K近邻 分类/回归算法
export const sklearn_KNeighborsClassifier_Regressor = function (_, generator) {
var dropdown_type = this.getFieldValue('type');
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_K = generator.valueToCode(this, 'K', generator.ORDER_ATOMIC) || '5';
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_' + dropdown_type] = 'from sklearn.neighbors import ' + dropdown_type;
var code = value_model_name + ' = ' + dropdown_type + '(n_neighbors = ' + value_K + ',n_jobs = ' + value_n_jobs + ')\n';
return code;
}
// sklearn 初始化高斯贝叶斯分类算法
export const sklearn_GaussianNB = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
generator.definitions_['import_sklearn_GaussianNB'] = 'from sklearn.naive_bayes import GaussianNB';
var code = value_model_name + ' = GaussianNB()\n';
return code;
}
// sklearn 初始K-均值聚类
export const sklearn_KMeans = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_n_clusters = generator.valueToCode(this, 'n_clusters', generator.ORDER_ATOMIC) || '8';
var value_max_iter = generator.valueToCode(this, 'max_iter', generator.ORDER_ATOMIC) || '300';
var value_random_state = generator.valueToCode(this, 'random_state', generator.ORDER_ATOMIC) || 'None';
var value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_KMeans'] = 'from sklearn.cluster import KMeans';
var code = value_model_name + ' = KMeans(n_clusters = ' + value_n_clusters + ',max_iter = ' + value_max_iter + ',random_state = ' + value_random_state + ',n_jobs = ' + value_n_jobs + ')\n';
return code;
}
// sklearn 训练模型
export const sklearn_fit = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'y_train';
if (value_train_target == 'None')
var code = value_model_name + '.fit(' + value_train_data + ')\n';
else
var code = value_model_name + '.fit(' + value_train_data + ',' + value_train_target + ')\n';
return code;
}
// sklearn 训练模型-无标签值
export const sklearn_fit_no_target = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
var code = value_model_name + '.fit(' + value_train_data + ')\n';
return code;
}
// sklearn 模型预测
export const sklearn_predict = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_test';
var code = value_model_name + '.predict(' + value_train_data + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 计算模型得分
export const sklearn_score = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
var value_train_target = generator.valueToCode(this, 'train_target', generator.ORDER_ATOMIC) || 'y_train';
if (value_train_target == 'None')
var code = value_model_name + '.score(' + value_train_data + ')';
else
var code = value_model_name + '.score(' + value_train_data + ',' + value_train_target + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 计算模型得分-无标签值
export const sklearn_score_no_target = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var value_train_data = generator.valueToCode(this, 'train_data', generator.ORDER_ATOMIC) || 'X_train';
var code = value_model_name + '.score(' + value_train_data + ')';
return [code, generator.ORDER_ATOMIC];
}
// sklearn 线性回归 模型获取 斜率/截距
export const sklearn_coef_intercept = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var dropdown_type = this.getFieldValue('type');
var code = value_model_name + '.' + dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
// sklearn K-均值聚类 模型获取 簇中心坐标/聚类后的标签/所有点到对应簇中心的距离平方和
export const sklearn_cluster_centers_labels_inertia = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var dropdown_type = this.getFieldValue('type');
var code = value_model_name + '.' + dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
// sklearn 保存/加载模型
export const sklearn_save_load_model = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
var dropdown_type = this.getFieldValue('type');
var value_address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC) || 'D:/mixly/test.pkl';
generator.definitions_['import_sklearn_joblib'] = 'import joblib';
var code = '';
if (dropdown_type == 'dump')
code = 'joblib.dump(' + value_model_name + ',' + value_address + ')\n';
else
code = value_model_name + ' = joblib.load(' + value_address + ')\n';
return code;
}