增加“机器学习”和“数据分析”的块

This commit is contained in:
13880560530
2024-11-29 08:53:29 +08:00
parent 28552b0a22
commit ead77c4b89
8 changed files with 141 additions and 28 deletions

View File

@@ -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 = {

View File

@@ -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);

View File

@@ -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];
}

View File

@@ -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';

View File

@@ -2527,12 +2527,6 @@
<field name="VAR">df</field>
</shadow>
</value>
<value name="COLUMNS">
<shadow type="variables_get">
<field name="VAR">columns</field>
</shadow>
</value>
<field name="AXIS">0</field>
</block>
<block type="variables_set">
<field name="VAR">x</field>
@@ -2727,6 +2721,13 @@
</shadow>
</value>
</block>
<block type="pylab_imshow">
<value name="ARRAY">
<shadow type="variables_get">
<field name="VAR">myArray</field>
</shadow>
</value>
</block>
<block type="series_create">
<value name="SER">
<shadow type="variables_get">