| @@ -7,10 +7,21 @@ import { | |||||
| autoMLTaskTypeOptions, | autoMLTaskTypeOptions, | ||||
| } from '@/enums'; | } from '@/enums'; | ||||
| import { useComputingResource } from '@/hooks/useComputingResource'; | import { useComputingResource } from '@/hooks/useComputingResource'; | ||||
| import { | |||||
| classificationAlgorithms, | |||||
| featureAlgorithms, | |||||
| regressorAlgorithms, | |||||
| } from '@/pages/AutoML/components/CreateForm/utils'; | |||||
| import { AutoMLData } from '@/pages/AutoML/types'; | import { AutoMLData } from '@/pages/AutoML/types'; | ||||
| import { type NodeStatus } from '@/types'; | import { type NodeStatus } from '@/types'; | ||||
| import { parseJsonText } from '@/utils'; | import { parseJsonText } from '@/utils'; | ||||
| import { formatBoolean, formatDataset, formatDate, formatEnum } from '@/utils/format'; | |||||
| import { | |||||
| formatBoolean, | |||||
| formatDataset, | |||||
| formatDate, | |||||
| formatEnum, | |||||
| type EnumOptions, | |||||
| } from '@/utils/format'; | |||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||
| import { useMemo } from 'react'; | import { useMemo } from 'react'; | ||||
| import ExperimentRunBasic from '../ExperimentRunBasic'; | import ExperimentRunBasic from '../ExperimentRunBasic'; | ||||
| @@ -21,6 +32,7 @@ const formatOptimizeMode = (value: boolean) => { | |||||
| return value ? '越大越好' : '越小越好'; | return value ? '越大越好' : '越小越好'; | ||||
| }; | }; | ||||
| // 格式化权重 | |||||
| const formatMetricsWeight = (value: string) => { | const formatMetricsWeight = (value: string) => { | ||||
| if (!value) { | if (!value) { | ||||
| return '--'; | return '--'; | ||||
| @@ -34,6 +46,20 @@ const formatMetricsWeight = (value: string) => { | |||||
| .join('\n'); | .join('\n'); | ||||
| }; | }; | ||||
| // 格式化算法 | |||||
| const formatAlgorithm = (algorithms: EnumOptions[]) => { | |||||
| return (value: string) => { | |||||
| if (!value) { | |||||
| return '--'; | |||||
| } | |||||
| const list = value | |||||
| .split(',') | |||||
| .filter((v) => v !== '') | |||||
| .map((v) => v.trim()); | |||||
| return list.map((v) => formatEnum(algorithms)(v)).join(','); | |||||
| }; | |||||
| }; | |||||
| type AutoMLBasicProps = { | type AutoMLBasicProps = { | ||||
| info?: AutoMLData; | info?: AutoMLData; | ||||
| className?: string; | className?: string; | ||||
| @@ -96,10 +122,12 @@ function AutoMLBasic({ | |||||
| { | { | ||||
| label: '特征预处理算法', | label: '特征预处理算法', | ||||
| value: info.include_feature_preprocessor, | value: info.include_feature_preprocessor, | ||||
| format: formatAlgorithm(featureAlgorithms), | |||||
| }, | }, | ||||
| { | { | ||||
| label: '排除的特征预处理算法', | label: '排除的特征预处理算法', | ||||
| value: info.exclude_feature_preprocessor, | value: info.exclude_feature_preprocessor, | ||||
| format: formatAlgorithm(featureAlgorithms), | |||||
| }, | }, | ||||
| { | { | ||||
| label: info.task_type === AutoMLTaskType.Regression ? '回归算法' : '分类算法', | label: info.task_type === AutoMLTaskType.Regression ? '回归算法' : '分类算法', | ||||
| @@ -107,6 +135,11 @@ function AutoMLBasic({ | |||||
| info.task_type === AutoMLTaskType.Regression | info.task_type === AutoMLTaskType.Regression | ||||
| ? info.include_regressor | ? info.include_regressor | ||||
| : info.include_classifier, | : info.include_classifier, | ||||
| format: formatAlgorithm( | |||||
| info.task_type === AutoMLTaskType.Regression | |||||
| ? regressorAlgorithms | |||||
| : classificationAlgorithms, | |||||
| ), | |||||
| }, | }, | ||||
| { | { | ||||
| label: info.task_type === AutoMLTaskType.Regression ? '排除的回归算法' : '排除的分类算法', | label: info.task_type === AutoMLTaskType.Regression ? '排除的回归算法' : '排除的分类算法', | ||||
| @@ -114,6 +147,11 @@ function AutoMLBasic({ | |||||
| info.task_type === AutoMLTaskType.Regression | info.task_type === AutoMLTaskType.Regression | ||||
| ? info.exclude_regressor | ? info.exclude_regressor | ||||
| : info.exclude_classifier, | : info.exclude_classifier, | ||||
| format: formatAlgorithm( | |||||
| info.task_type === AutoMLTaskType.Regression | |||||
| ? regressorAlgorithms | |||||
| : classificationAlgorithms, | |||||
| ), | |||||
| }, | }, | ||||
| { | { | ||||
| label: '集成方式', | label: '集成方式', | ||||
| @@ -8,70 +8,7 @@ import { | |||||
| autoMLTaskTypeOptions, | autoMLTaskTypeOptions, | ||||
| } from '@/enums'; | } from '@/enums'; | ||||
| import { Col, Form, InputNumber, Radio, Row, Select, Switch } from 'antd'; | import { Col, Form, InputNumber, Radio, Row, Select, Switch } from 'antd'; | ||||
| // 分类算法 | |||||
| const classificationAlgorithms = [ | |||||
| 'adaboost', | |||||
| 'bernoulli_nb', | |||||
| 'decision_tree', | |||||
| 'extra_trees', | |||||
| 'gaussian_nb', | |||||
| 'gradient_boosting', | |||||
| 'k_nearest_neighbors', | |||||
| 'lda', | |||||
| 'liblinear_svc', | |||||
| 'libsvm_svc', | |||||
| 'tablenet', | |||||
| 'mlp', | |||||
| 'multinomial_nb', | |||||
| 'passive_aggressive', | |||||
| 'qda', | |||||
| 'random_forest', | |||||
| 'sgd', | |||||
| 'LightGBMClassification', | |||||
| 'XGBoostClassification', | |||||
| 'StackingClassification', | |||||
| ].map((name) => ({ label: name, value: name })); | |||||
| // 回归算法 | |||||
| const regressorAlgorithms = [ | |||||
| 'adaboost', | |||||
| 'ard_regression', | |||||
| 'decision_tree', | |||||
| 'extra_trees', | |||||
| 'gaussian_process', | |||||
| 'gradient_boosting', | |||||
| 'k_nearest_neighbors', | |||||
| 'liblinear_svr', | |||||
| 'libsvm_svr', | |||||
| 'mlp', | |||||
| 'random_forest', | |||||
| 'sgd', | |||||
| 'LightGBMRegression', | |||||
| 'XGBoostRegression', | |||||
| ].map((name) => ({ label: name, value: name })); | |||||
| // 特征预处理算法 | |||||
| const featureAlgorithms = [ | |||||
| 'densifier', | |||||
| 'extra_trees_preproc_for_classification', | |||||
| 'extra_trees_preproc_for_regression', | |||||
| 'fast_ica', | |||||
| 'feature_agglomeration', | |||||
| 'kernel_pca', | |||||
| 'kitchen_sinks', | |||||
| 'liblinear_svc_preprocessor', | |||||
| 'no_preprocessing', | |||||
| 'nystroem_sampler', | |||||
| 'pca', | |||||
| 'polynomial', | |||||
| 'random_trees_embedding', | |||||
| 'select_percentile_classification', | |||||
| 'select_percentile_regression', | |||||
| 'select_rates_classification', | |||||
| 'select_rates_regression', | |||||
| 'truncatedSVD', | |||||
| ].map((name) => ({ label: name, value: name })); | |||||
| import { classificationAlgorithms, featureAlgorithms, regressorAlgorithms } from './utils'; | |||||
| // 分类指标 | // 分类指标 | ||||
| export const classificationMetrics = [ | export const classificationMetrics = [ | ||||
| @@ -0,0 +1,78 @@ | |||||
| // 分类算法 | |||||
| export const classificationAlgorithms = [ | |||||
| { label: 'adaboost (自适应提升算法)', value: 'adaboost' }, | |||||
| { label: 'bernoulli_nb (伯努利朴素贝叶斯)', value: 'bernoulli_nb' }, | |||||
| { label: 'decision_tree (决策树)', value: 'decision_tree' }, | |||||
| { label: 'extra_trees (极端随机树)', value: 'extra_trees' }, | |||||
| { label: 'gaussian_nb (高斯朴素贝叶斯)', value: 'gaussian_nb' }, | |||||
| { label: 'gradient_boosting (梯度提升)', value: 'gradient_boosting' }, | |||||
| { label: 'k_nearest_neighbors (k近邻)', value: 'k_nearest_neighbors' }, | |||||
| { label: 'lda (线性判别分析)', value: 'lda' }, | |||||
| { label: 'liblinear_svc (liblinear支持向量分类)', value: 'liblinear_svc' }, | |||||
| { label: 'libsvm_svc (libsvm支持向量分类)', value: 'libsvm_svc' }, | |||||
| { label: 'mlp (多层感知器)', value: 'mlp' }, | |||||
| { label: 'multinomial_nb (多项式朴素贝叶斯)', value: 'multinomial_nb' }, | |||||
| { label: 'passive_aggressive (被动攻击算法)', value: 'passive_aggressive' }, | |||||
| { label: 'qda (二次判别式分析)', value: 'qda' }, | |||||
| { label: 'random_forest (随机森林)', value: 'random_forest' }, | |||||
| { label: 'sgd (随机梯度下降)', value: 'sgd' }, | |||||
| { label: 'tablenet (表格网络)', value: 'tablenet' }, | |||||
| { label: 'LightGBMClassification (轻量梯度提升机分类)', value: 'LightGBMClassification' }, | |||||
| { label: 'XGBoostClassification (极端梯度提升机分类)', value: 'XGBoostClassification' }, | |||||
| { label: 'StackingClassification (堆叠泛化)', value: 'StackingClassification' }, | |||||
| ]; | |||||
| // 回归算法 | |||||
| export const regressorAlgorithms = [ | |||||
| { label: 'adaboost (自适应提升算法)', value: 'adaboost' }, | |||||
| { label: 'ard_regression (自动相关性确定回归)', value: 'ard_regression' }, | |||||
| { label: 'decision_tree (决策树)', value: 'decision_tree' }, | |||||
| { label: 'extra_trees (极端随机树)', value: 'extra_trees' }, | |||||
| { label: 'gaussian_process (高斯过程回归)', value: 'gaussian_process' }, | |||||
| { label: 'gradient_boosting (梯度提升)', value: 'gradient_boosting' }, | |||||
| { label: 'k_nearest_neighbors (梯度提升)', value: 'k_nearest_neighbors' }, | |||||
| { label: 'liblinear_svr (liblinear支持向量回归)', value: 'liblinear_svr' }, | |||||
| { label: 'libsvm_svr (libsvm支持向量回归)', value: 'libsvm_svr' }, | |||||
| { label: 'mlp (多层感知器)', value: 'mlp' }, | |||||
| { label: 'random_forest (随机森林)', value: 'random_forest' }, | |||||
| { label: 'sgd (随机梯度下降)', value: 'sgd' }, | |||||
| { label: 'LightGBMRegression (轻量梯度提升机回归)', value: 'LightGBMRegression' }, | |||||
| { label: 'XGBoostRegression (极端梯度提升机回归)', value: 'XGBoostRegression' }, | |||||
| ]; | |||||
| // 特征预处理算法 | |||||
| export const featureAlgorithms = [ | |||||
| { label: 'densifier (数据增稠)', value: 'densifier' }, | |||||
| { | |||||
| label: 'extra_trees_preproc_for_classification (分类任务极端随机树)', | |||||
| value: 'extra_trees_preproc_for_classification', | |||||
| }, | |||||
| { | |||||
| label: 'extra_trees_preproc_for_regression (回归任务极端随机树)', | |||||
| value: 'extra_trees_preproc_for_regression', | |||||
| }, | |||||
| { label: 'fast_ica (快速独立成分分析)', value: 'fast_ica' }, | |||||
| { label: 'feature_agglomeration (特征聚合)', value: 'feature_agglomeration' }, | |||||
| { label: 'kernel_pca (核主成分分析)', value: 'kernel_pca' }, | |||||
| { label: 'kitchen_sinks (随机特征映射)', value: 'kitchen_sinks' }, | |||||
| { label: 'liblinear_svc_preprocessor (线性svc预处理器)', value: 'liblinear_svc_preprocessor' }, | |||||
| { label: 'no_preprocessing (无预处理)', value: 'no_preprocessing' }, | |||||
| { label: 'nystroem_sampler (尼斯特罗姆采样器)', value: 'nystroem_sampler' }, | |||||
| { label: 'pca (主成分分析)', value: 'pca' }, | |||||
| { label: 'polynomial (多项式特征扩展)', value: 'polynomial' }, | |||||
| { label: 'random_trees_embedding (随机森林特征嵌入)', value: 'random_trees_embedding' }, | |||||
| { | |||||
| label: 'select_percentile_classification (基于百分位的分类特征选择)', | |||||
| value: 'select_percentile_classification', | |||||
| }, | |||||
| { | |||||
| label: 'select_percentile_regression (基于百分位的回归特征选择)', | |||||
| value: 'select_percentile_regression', | |||||
| }, | |||||
| { | |||||
| label: 'select_rates_classification (基于比率的分类特征选择)', | |||||
| value: 'select_rates_classification', | |||||
| }, | |||||
| { label: 'select_rates_regression (基于比率的回归特征选择)', value: 'select_rates_regression' }, | |||||
| { label: 'truncatedSVD (截断奇异值分解)', value: 'truncatedSVD' }, | |||||
| ]; | |||||