diff --git a/boards/default_src/python_mixpy/blocks/data.js b/boards/default_src/python_mixpy/blocks/data.js
index 24062587..68b9ab7e 100644
--- a/boards/default_src/python_mixpy/blocks/data.js
+++ b/boards/default_src/python_mixpy/blocks/data.js
@@ -1247,16 +1247,12 @@ export const pandas_drop_columns = {
this.appendValueInput('DATAFRAME')
.appendField('从数据集');
this.appendValueInput('COLUMNS')
- .appendField('中删除列');
- this.appendDummyInput()
- .appendField('沿着axis')
- .appendField(new Blockly.FieldDropdown([
- ['行', '0'],
- ['列', '1']
- ]), 'AXIS');
+ .appendField('中删除列')
+ .setCheck(String);
+ this.setInputsInline(true);
this.setOutput(true);
- this.setTooltip('Drops columns from dataframe.');
- }
+ this.setTooltip('从数据框中删除指定的列。用逗号分隔多个列名。');
+ },
};
export const numpy_ones = {
diff --git a/boards/default_src/python_mixpy/blocks/sklearn.js b/boards/default_src/python_mixpy/blocks/sklearn.js
index 2f2bbf91..97c8db1a 100644
--- a/boards/default_src/python_mixpy/blocks/sklearn.js
+++ b/boards/default_src/python_mixpy/blocks/sklearn.js
@@ -405,6 +405,49 @@ export const sklearn_GaussianNB = {
}
};
+//sklearn 初始化PCA降维
+export const sklearn_pca = {
+ init: function () {
+ this.appendDummyInput()
+ .appendField("sklearn 初始化 PCA 算法");
+ this.appendValueInput("model_name")
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.MODEL_NAME);
+ this.appendValueInput("n_components")
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.SKLEARN_PCA_N_COMPONENTS);
+ this.setInputsInline(false);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setColour(SKLEARN_HUE);
+ this.setTooltip("");
+ this.setHelpUrl("");
+ }
+};
+
+//sklearn PCA拟合并转换数据
+export const sklearn_pca_fit_transform = {
+ init: function () {
+ this.appendDummyInput()
+ .appendField("sklearn PCA 降维");
+ this.appendValueInput("model_name")
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.MODEL_NAME);
+ this.appendValueInput("train_data")
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.EIGENVALUES);
+ this.setInputsInline(true);
+ this.setOutput(true, null);
+ this.setColour(SKLEARN_HUE);
+ this.setTooltip("");
+ this.setHelpUrl("");
+ }
+};
+
//sklearn 初始化K-均值聚类
export const sklearn_KMeans = {
init: function () {
@@ -426,11 +469,29 @@ export const sklearn_KMeans = {
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.RANDOM_SEED);
- this.appendValueInput("n_jobs")
+ this.setInputsInline(false);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setColour(SKLEARN_HUE);
+ this.setTooltip("");
+ this.setHelpUrl("");
+ }
+};
+
+//sklearn KMeans拟合数据
+export const sklearn_KMeans_fit = {
+ init: function () {
+ this.appendDummyInput()
+ .appendField("sklearn K-均值聚类");
+ this.appendValueInput("model_name")
.setCheck(null)
.setAlign(Blockly.inputs.Align.RIGHT)
- .appendField(Blockly.Msg.SKLEARN_THREADS);
- this.setInputsInline(false);
+ .appendField(Blockly.Msg.MODEL_NAME);
+ this.appendValueInput("train_data")
+ .setCheck(null)
+ .setAlign(Blockly.inputs.Align.RIGHT)
+ .appendField(Blockly.Msg.EIGENVALUES);
+ this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(SKLEARN_HUE);
diff --git a/boards/default_src/python_mixpy/generators/data.js b/boards/default_src/python_mixpy/generators/data.js
index 98cc8ed0..6729365e 100644
--- a/boards/default_src/python_mixpy/generators/data.js
+++ b/boards/default_src/python_mixpy/generators/data.js
@@ -519,8 +519,7 @@ export const pandas_drop_columns = function (block, generator) {
generator.definitions_.import_pandas = "import pandas";
var dataframe = generator.valueToCode(block, 'DATAFRAME', generator.ORDER_ATOMIC) || 'df';
var columns = generator.valueToCode(block, 'COLUMNS', generator.ORDER_ATOMIC) || '[]';
- var axis = block.getFieldValue('AXIS') || '0';
- var code = dataframe + '.drop(columns=' + columns + ', axis=' + axis + ')';
+ var code = dataframe + '.drop(columns=' + columns + ', axis=1)';
return [code, generator.ORDER_ATOMIC];
}
diff --git a/boards/default_src/python_mixpy/generators/sklearn.js b/boards/default_src/python_mixpy/generators/sklearn.js
index 1edb5fea..61617a9d 100644
--- a/boards/default_src/python_mixpy/generators/sklearn.js
+++ b/boards/default_src/python_mixpy/generators/sklearn.js
@@ -147,18 +147,40 @@ export const sklearn_GaussianNB = function (_, generator) {
return code;
}
+// sklearn 初始化PCA降维
+export const sklearn_pca = function (_, generator) {
+ var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'pca';
+ var value_n_components = generator.valueToCode(this, 'n_components', generator.ORDER_ATOMIC) || '2';
+ generator.definitions_['import_sklearn_pca'] = 'from sklearn.decomposition import PCA';
+ var code = value_model_name + ' = PCA(n_components=' + value_n_components + ')\n';
+ return code;
+}
+
+export const sklearn_pca_fit_transform = function(block, generator) {
+ var value_model_name = generator.valueToCode(block, 'model_name', generator.ORDER_ATOMIC);
+ var value_train_data = generator.valueToCode(block, 'train_data', generator.ORDER_ATOMIC);
+ var code = value_model_name + '.fit_transform(' + value_train_data + ')';
+ return [code, generator.ORDER_ATOMIC];
+};
+
// 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';
+ var code = value_model_name + ' = KMeans(n_clusters = ' + value_n_clusters + ',max_iter = ' + value_max_iter + ',random_state = ' + value_random_state + ')\n';
return code;
}
+export const sklearn_KMeans_fit = function(block, generator) {
+ var value_model_name = generator.valueToCode(block, 'model_name', generator.ORDER_ATOMIC);
+ var value_train_data = generator.valueToCode(block, 'train_data', generator.ORDER_ATOMIC);
+ var code = value_model_name + '.fit(' + value_train_data + ')\n';
+ return code;
+};
+
// sklearn 训练模型
export const sklearn_fit = function (_, generator) {
var value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
diff --git a/boards/default_src/python_mixpy/template.xml b/boards/default_src/python_mixpy/template.xml
index dbc0db8c..9d3eda1d 100644
--- a/boards/default_src/python_mixpy/template.xml
+++ b/boards/default_src/python_mixpy/template.xml
@@ -2527,12 +2527,6 @@
df
-
-
- columns
-
-
- 0
x
@@ -2727,6 +2721,13 @@
+
+
+
+ myArray
+
+
+
diff --git a/boards/default_src/python_pyodide/template.xml b/boards/default_src/python_pyodide/template.xml
index 202ac2c5..0a7d2f43 100644
--- a/boards/default_src/python_pyodide/template.xml
+++ b/boards/default_src/python_pyodide/template.xml
@@ -2581,11 +2581,10 @@
-
- columns
+
+ 列名
- 0
x
@@ -3575,6 +3574,30 @@
+
+
+
+ pca
+
+
+
+
+ 2
+
+
+
+
+
+
+ pca
+
+
+
+
+ X
+
+
+
@@ -3586,9 +3609,6 @@
5
-
-
-
@@ -3620,6 +3640,18 @@
+
+
+
+ model
+
+
+
+
+ X
+
+
+
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index 3f768015..5ccb6ce1 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -2964,6 +2964,7 @@ ZhHans.SKLEARN_LABELS_AFTER_CLUSTERING = "聚类后标签";
ZhHans.SKLEARN_CLUSTERING_SUM_OF_SQUARED_DISTANCES = "所有点到对应簇中心的距离平方和";
ZhHans.SKLEARN_SAVE_MODEL = "保存模型";
ZhHans.SKLEARN_LOAD_MODEL = "加载模型";
+ZhHans.SKLEARN_PCA_N_COMPONENTS = "主成分个数";
ZhHans.MATH_ROUND = '四舍五入';
ZhHans.MATH_ROUND_NEW_TOOLTIP = '将数值四舍五入保留小数点后指定的位数';
ZhHans.PY_STORAGE_FILE_OBJECT = ",并返回文件对象";
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index e5c2aa13..21073e95 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -2943,6 +2943,7 @@ ZhHant.SKLEARN_LABELS_AFTER_CLUSTERING = "聚類後標籤";
ZhHant.SKLEARN_CLUSTERING_SUM_OF_SQUARED_DISTANCES = "所有點到對應簇中心的距離平方和";
ZhHant.SKLEARN_SAVE_MODEL = "保存模型";
ZhHant.SKLEARN_LOAD_MODEL = "加載模型";
+ZhHant.SKLEARN_PCA_N_COMPONENTS = "主成分个数";
ZhHant.MATH_ROUND = '四捨五入';
ZhHant.MATH_ROUND_NEW_TOOLTIP = '將數值四捨五入保留小數點後指定的位數';
ZhHant.PY_STORAGE_FILE_OBJECT = ",並返回文件對象";