chore(boards): 调整mixpy下sklearn模块
This commit is contained in:
@@ -168,7 +168,12 @@ export const sklearn_data_target = {
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_GET)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.EIGENVALUES, "data"], [Blockly.Msg.LABEL_VALUE, "target"], [Blockly.Msg.FEATURE, "feature_names"], [Blockly.Msg.mixpy_PYLAB_TICKS_TAG, "target_names"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.EIGENVALUES, "data"],
|
||||
[Blockly.Msg.LABEL_VALUE, "target"],
|
||||
[Blockly.Msg.FEATURE, "feature_names"],
|
||||
[Blockly.Msg.mixpy_PYLAB_TICKS_TAG, "target_names"]
|
||||
]), "type");
|
||||
this.setOutput(true, null);
|
||||
this.setColour(SKLEARN_HUE);
|
||||
this.setTooltip("");
|
||||
@@ -303,7 +308,10 @@ export const sklearn_DecisionTreeClassifier_Regressor = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField("sklearn " + Blockly.Msg.SKLEARN_DECISIONTREE_INIT)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "DecisionTreeClassifier"], [Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "DecisionTreeRegressor"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "DecisionTreeClassifier"],
|
||||
[Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "DecisionTreeRegressor"]
|
||||
]), "type");
|
||||
this.appendValueInput("model_name")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
@@ -330,7 +338,10 @@ export const sklearn_RandomForestClassifier_Regressor = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField("sklearn " + Blockly.Msg.SKLEARN_RANDOMFOREST_INIT)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "RandomForestClassifier"], [Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "RandomForestRegressor"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "RandomForestClassifier"],
|
||||
[Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "RandomForestRegressor"]
|
||||
]), "type");
|
||||
this.appendValueInput("model_name")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
@@ -365,7 +376,10 @@ export const sklearn_KNeighborsClassifier_Regressor = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField("sklearn " + Blockly.Msg.SKLEARN_KNN_INIT)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "KNeighborsClassifier"], [Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "KNeighborsRegressor"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_CLASSIFICATION_ALGORITHM, "KNeighborsClassifier"],
|
||||
[Blockly.Msg.SKLEARN_REGRESSION_ALGORITHM, "KNeighborsRegressor"]
|
||||
]), "type");
|
||||
this.appendValueInput("model_name")
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
@@ -627,7 +641,10 @@ export const sklearn_coef_intercept = {
|
||||
this.appendDummyInput()
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.MIXLY_GET)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_COEF, "coef_"], [Blockly.Msg.SKLEARN_INTERCEPT, "intercept_"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_COEF, "coef_"],
|
||||
[Blockly.Msg.SKLEARN_INTERCEPT, "intercept_"]
|
||||
]), "type");
|
||||
this.setOutput(true, null);
|
||||
this.setColour(SKLEARN_HUE);
|
||||
this.setTooltip("");
|
||||
@@ -646,7 +663,11 @@ export const sklearn_cluster_centers_labels_inertia = {
|
||||
.appendField(Blockly.Msg.MODEL_NAME);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_GET)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_CLUSTER_CENTER, "cluster_centers_"], [Blockly.Msg.SKLEARN_LABELS_AFTER_CLUSTERING, "labels_"], [Blockly.Msg.SKLEARN_CLUSTERING_SUM_OF_SQUARED_DISTANCES, "inertia_"]]), "type");
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_CLUSTER_CENTER, "cluster_centers_"],
|
||||
[Blockly.Msg.SKLEARN_LABELS_AFTER_CLUSTERING, "labels_"],
|
||||
[Blockly.Msg.SKLEARN_CLUSTERING_SUM_OF_SQUARED_DISTANCES, "inertia_"]
|
||||
]), "type");
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true, null);
|
||||
this.setColour(SKLEARN_HUE);
|
||||
@@ -662,7 +683,10 @@ export const sklearn_save_load_model = {
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField("sklearn")
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.SKLEARN_SAVE_MODEL, "dump"], [Blockly.Msg.SKLEARN_LOAD_MODEL, "load"]]), "type")
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.SKLEARN_SAVE_MODEL, "dump"],
|
||||
[Blockly.Msg.SKLEARN_LOAD_MODEL, "load"]
|
||||
]), "type")
|
||||
.appendField(" " + Blockly.Msg.MODEL_NAME);
|
||||
this.appendValueInput("address")
|
||||
.setCheck(null)
|
||||
|
||||
@@ -8,7 +8,7 @@ export const sklearn_make_classification = function (_, generator) {
|
||||
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 + ')';
|
||||
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];
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export const sklearn_make_regression = function (_, generator) {
|
||||
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 + ')';
|
||||
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];
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ export const sklearn_make_blobs = function (_, generator) {
|
||||
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 + ')';
|
||||
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];
|
||||
}
|
||||
|
||||
@@ -64,10 +64,11 @@ export const sklearn_train_test_split = function (_, generator) {
|
||||
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 + ')';
|
||||
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];
|
||||
}
|
||||
|
||||
@@ -77,7 +78,7 @@ export const sklearn_train_test_split_no_target = function (_, generator) {
|
||||
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 + ')';
|
||||
var code = 'train_test_split(' + value_train_data + ', test_size=' + value_test_size + ', random_state=' + value_rondom_state + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
@@ -88,7 +89,7 @@ export const sklearn_LinearRegression = function (_, generator) {
|
||||
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';
|
||||
var code = value_model_name + ' = LinearRegression(fit_intercept=' + value_fit_intercept + ', normalize=' + value_normalize + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -101,7 +102,7 @@ export const sklearn_Ridge = function (_, generator) {
|
||||
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';
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -112,7 +113,7 @@ export const sklearn_DecisionTreeClassifier_Regressor = function (_, generator)
|
||||
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';
|
||||
var code = value_model_name + ' = ' + dropdown_type + '(max_depth=' + value_max_depth + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -124,7 +125,7 @@ export const sklearn_RandomForestClassifier_Regressor = function (_, generator)
|
||||
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';
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -135,7 +136,7 @@ export const sklearn_KNeighborsClassifier_Regressor = function (_, generator) {
|
||||
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';
|
||||
var code = value_model_name + ' = ' + dropdown_type + '(n_neighbors=' + value_K + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -170,7 +171,7 @@ export const sklearn_KMeans = function (_, generator) {
|
||||
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_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';
|
||||
var code = value_model_name + ' = KMeans(n_clusters=' + value_n_clusters + ', max_iter=' + value_max_iter + ', random_state=' + value_random_state + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -186,10 +187,11 @@ 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')
|
||||
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';
|
||||
} else {
|
||||
var code = value_model_name + '.fit(' + value_train_data + ', ' + value_train_target + ')\n';
|
||||
}
|
||||
return code;
|
||||
}
|
||||
|
||||
@@ -214,10 +216,11 @@ 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')
|
||||
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 + ')';
|
||||
} else {
|
||||
var code = value_model_name + '.score(' + value_train_data + ', ' + value_train_target + ')';
|
||||
}
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
@@ -252,9 +255,10 @@ export const sklearn_save_load_model = function (_, generator) {
|
||||
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
|
||||
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;
|
||||
}
|
||||
@@ -3502,7 +3502,7 @@
|
||||
<block type="sklearn_train_test_split">
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">iris_X</field>
|
||||
<field name="VAR">iris_x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3623,7 +3623,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X</field>
|
||||
<field name="VAR">x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
@@ -3680,7 +3680,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X</field>
|
||||
<field name="VAR">x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
@@ -3692,7 +3692,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_train</field>
|
||||
<field name="VAR">x_train</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3709,7 +3709,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_test</field>
|
||||
<field name="VAR">x_test</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3726,7 +3726,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_test</field>
|
||||
<field name="VAR">x_test</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
|
||||
36
boards/default_src/python_pyodide/blocks/sklearn.js
Normal file
36
boards/default_src/python_pyodide/blocks/sklearn.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @typedef {import('@mixly/python-mixpy').PythonMixpySKLearnBlocks} PythonMixpySKLearnBlocks
|
||||
*/
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
const SKLEARN_HUE = 80;
|
||||
|
||||
|
||||
/**
|
||||
* @override Override {@link PythonMixpySKLearnBlocks.sklearn_LinearRegression}
|
||||
*/
|
||||
//sklearn 初始化线性回归
|
||||
export const sklearn_LinearRegression = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField('sklearn ' + Blockly.Msg.SKLEARN_LINEARREGRESSION_INIT);
|
||||
this.appendValueInput('model_name')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.MODEL_NAME);
|
||||
this.appendValueInput('fit_intercept')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.SKLEARN_CALCULATE_MODEL_INTERRUPT);
|
||||
this.appendValueInput('n_jobs')
|
||||
.setCheck(null)
|
||||
.setAlign(Blockly.inputs.Align.RIGHT)
|
||||
.appendField(Blockly.Msg.SKLEARN_THREADS);
|
||||
this.setInputsInline(false);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(SKLEARN_HUE);
|
||||
this.setTooltip('');
|
||||
this.setHelpUrl('');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as PythonPyodideSKLearnBlocks from './blocks/sklearn';
|
||||
import * as PythonPyodideSKLearnGenerators from './generators/sklearn';
|
||||
|
||||
export {
|
||||
PythonPyodideSKLearnBlocks,
|
||||
PythonPyodideSKLearnGenerators
|
||||
};
|
||||
13
boards/default_src/python_pyodide/generators/sklearn.js
Normal file
13
boards/default_src/python_pyodide/generators/sklearn.js
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @typedef {import('@mixly/python-mixpy').PythonMixpySKLearnGenerators} PythonMixpySKLearnGenerators
|
||||
*/
|
||||
|
||||
// sklearn 初始化线性回归
|
||||
export const sklearn_LinearRegression = function (_, generator) {
|
||||
const value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
|
||||
const value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
|
||||
const value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
|
||||
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import LinearRegression';
|
||||
const code = value_model_name + ' = LinearRegression(fit_intercept=' + value_fit_intercept + ', n_jobs=' + value_n_jobs + ')\n';
|
||||
return code;
|
||||
}
|
||||
@@ -67,6 +67,11 @@ import {
|
||||
PythonMixpyTurtleGenerators
|
||||
} from '@mixly/python-mixpy';
|
||||
|
||||
import {
|
||||
PythonPyodideSKLearnBlocks,
|
||||
PythonPyodideSKLearnGenerators
|
||||
} from './';
|
||||
|
||||
import './others/loader';
|
||||
|
||||
import './css/color_mixpy_python_advance.css';
|
||||
@@ -108,6 +113,7 @@ Object.assign(
|
||||
PythonMixpySKLearnBlocks,
|
||||
PythonMixpySystemBlocks,
|
||||
PythonMixpyTurtleBlocks,
|
||||
PythonPyodideSKLearnBlocks
|
||||
);
|
||||
|
||||
Object.assign(
|
||||
@@ -139,5 +145,6 @@ Object.assign(
|
||||
PythonMixpySerialGenerators,
|
||||
PythonMixpySKLearnGenerators,
|
||||
PythonMixpySystemGenerators,
|
||||
PythonMixpyTurtleGenerators
|
||||
PythonMixpyTurtleGenerators,
|
||||
PythonPyodideSKLearnGenerators
|
||||
);
|
||||
@@ -3467,7 +3467,7 @@
|
||||
<block type="sklearn_train_test_split">
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">iris_X</field>
|
||||
<field name="VAR">iris_x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3495,11 +3495,6 @@
|
||||
<field name="BOOL">TRUE</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="normalize">
|
||||
<shadow type="logic_boolean">
|
||||
<field name="BOOL">FALSE</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="n_jobs">
|
||||
<shadow type="logic_null"></shadow>
|
||||
</value>
|
||||
@@ -3588,7 +3583,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X</field>
|
||||
<field name="VAR">x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
@@ -3645,7 +3640,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X</field>
|
||||
<field name="VAR">x</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
@@ -3657,7 +3652,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_train</field>
|
||||
<field name="VAR">x_train</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3674,7 +3669,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_test</field>
|
||||
<field name="VAR">x_test</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="train_target">
|
||||
@@ -3691,7 +3686,7 @@
|
||||
</value>
|
||||
<value name="train_data">
|
||||
<shadow type="variables_get">
|
||||
<field name="VAR">X_test</field>
|
||||
<field name="VAR">x_test</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
@@ -3717,7 +3712,7 @@
|
||||
</value>
|
||||
<value name="address">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">D:/mixly/test.pkl</field>
|
||||
<field name="TEXT">/test.pkl</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
|
||||
Reference in New Issue
Block a user