|
@@ -1,579 +1,2132 @@
|
|
|
<template>
|
|
|
- <el-dialog
|
|
|
- :title="title"
|
|
|
- :visible.sync="dialogOpen"
|
|
|
- width="900px"
|
|
|
- :close-on-click-modal="false"
|
|
|
- append-to-body
|
|
|
- @opened="initData"
|
|
|
- @close="handleCancel"
|
|
|
- >
|
|
|
- <div>
|
|
|
- <!-- 步骤导航 -->
|
|
|
- <el-steps align-center :active="activeStep">
|
|
|
- <el-step title="步骤 1"></el-step>
|
|
|
- <el-step title="步骤 2"></el-step>
|
|
|
- <el-step title="步骤 3" description="这是一段很长很长很长的描述性文字" class="step-description"></el-step>
|
|
|
- </el-steps>
|
|
|
-
|
|
|
- <!-- 表单区域 -->
|
|
|
- <el-form ref="form" :model="formData" :rules="rules" label-width="100px" >
|
|
|
- <!-- 步骤1内容 -->
|
|
|
- <div v-if="activeStep === 1">
|
|
|
- <el-form-item label="任务名称">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- v-model="formData.name"
|
|
|
- placeholder="请输入任务名称"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="物理模型">
|
|
|
- <el-select
|
|
|
- v-model="formData.modelId"
|
|
|
- placeholder="请选择数据生成模型"
|
|
|
- @change="onModelChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in faultPhysicalOptions"
|
|
|
- :key="item.modelId"
|
|
|
- :label="item.modelName"
|
|
|
- :value="item.modelId"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 模型参数区域(类型1) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.modelType === '3'"
|
|
|
- label="模型参数"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="formData.modelDataParams"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入模型参数(JSON格式)"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 参数组管理(类型1) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.modelType === '1'"
|
|
|
- label="模型参数"
|
|
|
- >
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :xs="8" :sm="6" :md="4" :lg="3" :xl="1" :offset="22">
|
|
|
- <el-button
|
|
|
- icon="el-icon-plus"
|
|
|
- @click="addModelDataParams"
|
|
|
- size="mini"
|
|
|
- circle
|
|
|
- title="添加参数组"
|
|
|
- />
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-collapse
|
|
|
- class="collapse"
|
|
|
- :gutter="20"
|
|
|
- v-for="(paramGroup, groupIndex) in modelDataParams"
|
|
|
- :key="groupIndex"
|
|
|
- >
|
|
|
- <el-collapse-item
|
|
|
- :title="'参数组' + (groupIndex + 1)"
|
|
|
- :name="groupIndex"
|
|
|
- >
|
|
|
- <el-row
|
|
|
- :xl="4"
|
|
|
- v-for="(value, key) in paramGroup"
|
|
|
- :key="key"
|
|
|
- :gutter="20"
|
|
|
- >
|
|
|
- <el-col>
|
|
|
- <el-form-item
|
|
|
- :label="key"
|
|
|
- :prop="`modelDataParams.${groupIndex}.${key}`"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="paramGroup[key]"
|
|
|
- :placeholder="'请输入' + key + '的值'"
|
|
|
- style="width: 200px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-collapse-item>
|
|
|
- </el-collapse>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 文件来源选择(类型2) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.modelType === '2'"
|
|
|
- label="文件来源"
|
|
|
- prop="dataGenName"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="formData.dataSource"
|
|
|
- placeholder="请选择文件来源"
|
|
|
- @change="onDataSourceChange"
|
|
|
- >
|
|
|
- <el-option key="1" label="文件上传" value="1"></el-option>
|
|
|
- <el-option key="2" label="文件管理" value="2"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 文件显示(类型2) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.modelType === '2'"
|
|
|
- label="选择文件"
|
|
|
- prop="dataGenName"
|
|
|
- >
|
|
|
- <span>{{ rowData.fileName }}</span>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 文件上传组件(数据源1) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.dataSource === '1'"
|
|
|
- label="文件上传"
|
|
|
- prop="filePath"
|
|
|
- >
|
|
|
- <file-upload
|
|
|
- :fileType="uploadFileType"
|
|
|
- @child-event="handleChildData"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <div class="text-right">
|
|
|
- <el-button type="primary" @click="nextStep">下一步</el-button>
|
|
|
+ <div class="dashboard-container">
|
|
|
+ <!-- 标题栏 -->
|
|
|
+
|
|
|
+ <div class="header">
|
|
|
+ <dv-border-box-11 title="机器学习模型评估综合看板">
|
|
|
+ <!-- <div class="time-display">-->
|
|
|
+ <!-- <span>当前时间:</span>-->
|
|
|
+ <!-- <span>{{ currentTime }}</span>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- 筛选控制区 -->
|
|
|
+ <div class="control-panel">
|
|
|
+ <div class="filter-group">
|
|
|
+ <label>选择文件:</label>
|
|
|
+ <select v-model="selectedFilename" @change="filterData">
|
|
|
+ <option v-for="item in uniqueFilenames" :key="item" :value="item">{{ item }}</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ <div class="filter-group">
|
|
|
+ <label>选择模型:</label>
|
|
|
+ <select v-model="selectedModel" @change="filterData">
|
|
|
+ <option value="">全部模型</option>
|
|
|
+ <option v-for="item in uniqueModels" :key="item" :value="item">{{ item }}</option>
|
|
|
+ </select>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </dv-border-box-11>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- <!-- 步骤2内容 -->
|
|
|
- <div v-if="activeStep === 2">
|
|
|
- <el-switch
|
|
|
- style="display: block"
|
|
|
- v-model="formData.ifs"
|
|
|
- active-color="#13ce66"
|
|
|
- inactive-color="#ff4949"
|
|
|
- active-text="加噪"
|
|
|
- inactive-text="不加加噪"
|
|
|
- >
|
|
|
- </el-switch>
|
|
|
- <el-form-item v-if="formData.ifs" label="物理模型">
|
|
|
-
|
|
|
- <el-select
|
|
|
- v-model="formData.modelId"
|
|
|
- placeholder="请选择数据生成模型"
|
|
|
- @change="onModelChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in faultPhysicalOptions"
|
|
|
- :key="item.modelId"
|
|
|
- :label="item.modelName"
|
|
|
- :value="item.modelId"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 模型参数区域(类型1) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.modelType === '3'"
|
|
|
- label="模型参数"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="formData.modelDataParams"
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入模型参数(JSON格式)"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 参数组管理(类型1) -->
|
|
|
- <el-form-item
|
|
|
- v-if="formData.ifs"
|
|
|
- label="模型参数"
|
|
|
- >
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :xs="8" :sm="6" :md="4" :lg="3" :xl="1" :offset="22">
|
|
|
- <el-button
|
|
|
- icon="el-icon-plus"
|
|
|
- @click="addModelDataParams"
|
|
|
- size="mini"
|
|
|
- circle
|
|
|
- title="添加参数组"
|
|
|
- />
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-collapse class="collapse"
|
|
|
- :gutter="20"
|
|
|
- v-for="(paramGroup, groupIndex) in modelDataParams"
|
|
|
- :key="groupIndex"
|
|
|
- >
|
|
|
- <el-collapse-item
|
|
|
- :title="'参数组' + (groupIndex + 1)"
|
|
|
- :name="groupIndex"
|
|
|
- >
|
|
|
- <el-row
|
|
|
- :xl="4"
|
|
|
- v-for="(value, key) in paramGroup"
|
|
|
- :key="key"
|
|
|
- :gutter="20"
|
|
|
- >
|
|
|
- <el-col>
|
|
|
- <el-form-item
|
|
|
- :label="key"
|
|
|
- :prop="`modelDataParams.${groupIndex}.${key}`"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="paramGroup[key]"
|
|
|
- :placeholder="'请输入' + key + '的值'"
|
|
|
- style="width: 200px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-collapse-item>
|
|
|
- </el-collapse>
|
|
|
- </el-form-item>
|
|
|
- <div class="text-right">
|
|
|
- <el-button @click="prevStep">上一步</el-button>
|
|
|
- <el-button type="primary" @click="nextStep">下一步</el-button>
|
|
|
+ <!-- 关键指标卡片 -->
|
|
|
+ <div class="metric-cards">
|
|
|
+ <dv-border-box-8 class="card" v-for="(metric, index) in keyMetrics" :key="index">
|
|
|
+ <div class="card-header">
|
|
|
+ <h3 style="color: #3375F6">{{ metric.name }}</h3>
|
|
|
+ <div class="metric-icon">{{ metric.icon }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="card-body">
|
|
|
+ <div class="metric-value" :class="metric.class">{{ metric.value }}</div>
|
|
|
+ <div class="metric-trend" :class="metric.trendClass">
|
|
|
+ <span>{{ metric.trendText }}</span>
|
|
|
+ <i :class="'trend-icon ' + metric.trendIcon"></i>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </dv-border-box-8>
|
|
|
+ </div>
|
|
|
|
|
|
- <!-- 步骤3内容 -->
|
|
|
- <div v-if="activeStep === 3">
|
|
|
- <el-form-item label="诊断模型">
|
|
|
- <el-select
|
|
|
- v-model="formData.diagModelId"
|
|
|
- placeholder="请选择诊断模型"
|
|
|
- @change="onModeldiagChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in faultOptions"
|
|
|
- :key="item.modelId"
|
|
|
- :label="item.modelName"
|
|
|
- :value="item.modelId"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <div class="text-right">
|
|
|
- <el-button @click="prevStep">上一步</el-button>
|
|
|
+ <!-- 图表展示区 -->
|
|
|
+ <div class="chart-container">
|
|
|
+ <div class="chart-row">
|
|
|
+ <dv-border-box-13 class="chart-col">
|
|
|
+ <div class="chart-card">
|
|
|
+ <h3 class="chart-title" style="color: #3375F6">模型准确率对比(排序折线图)</h3>
|
|
|
+ <div class="chart-wrapper" ref="accuracyChart"></div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
+ </dv-border-box-13>
|
|
|
+ <dv-border-box-13 class="chart-col">
|
|
|
+ <div class="chart-card">
|
|
|
+ <h3 class="chart-title" style="color: #3375F6">精确率与召回率分析</h3>
|
|
|
+ <div class="chart-wrapper" ref="precisionRecallChart"></div>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-13>
|
|
|
+ </div>
|
|
|
+ <div class="chart-row">
|
|
|
+ <dv-border-box-13 class="chart-col">
|
|
|
+ <div class="chart-card">
|
|
|
+ <h3 class="chart-title" style="color: #3375F6">模型性能雷达图</h3>
|
|
|
+ <div class="chart-wrapper" ref="radarChart"></div>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-13>
|
|
|
+ <dv-border-box-13 class="chart-col">
|
|
|
+ <div class="chart-card">
|
|
|
+ <h3 class="chart-title" style="color: #3375F6">测试时间对比</h3>
|
|
|
+ <div class="chart-wrapper" ref="timeChart"></div>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-13>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 对话框底部操作 -->
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- @click="handleSubmit"
|
|
|
- :disabled="activeStep!== 3"
|
|
|
- >确 定
|
|
|
- </el-button>
|
|
|
- <el-button @click="handleCancel">取 消</el-button>
|
|
|
+ <!-- 数据表格 -->
|
|
|
+ <div class="data-table-container">
|
|
|
+ <h3 class="table-title" style="color: #3375F6">模型评估详细数据</h3>
|
|
|
+ <div class="table-wrapper">
|
|
|
+ <dv-scroll-board class="data-table" :config="config" style="width:100%;height:100%" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 文件管理子组件 -->
|
|
|
- <file-table
|
|
|
- v-model="fileManagementDialogVisible"
|
|
|
- @callback="handleRowData"
|
|
|
- />
|
|
|
- </el-dialog>
|
|
|
+ <!-- 指标说明区 -->
|
|
|
+ <div class="metric-explanation">
|
|
|
+ <h3>精度评估指标说明</h3>
|
|
|
+ <div class="explanation-table">
|
|
|
+ <table>
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>指标名称</th>
|
|
|
+ <th>公式</th>
|
|
|
+ <th>说明</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>准确率 (Accuracy)</td>
|
|
|
+ <td>(TP+TN)/(TP+TN+FP+FN)</td>
|
|
|
+ <td>正确预测的样本占总样本的比例</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>精确率 (Precision)</td>
|
|
|
+ <td>TP/(TP+FP)</td>
|
|
|
+ <td>正类预测中实际为正类的比例</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>召回率 (Recall)</td>
|
|
|
+ <td>TP/(TP+FN)</td>
|
|
|
+ <td>实际正类中被正确预测的比例</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>特异度 (Specificity)</td>
|
|
|
+ <td>TN/(TN+FP)</td>
|
|
|
+ <td>实际负类中被正确预测的比例</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>F1分数 (F-measure)</td>
|
|
|
+ <td>2*(Precision*Recall)/(Precision+Recall)</td>
|
|
|
+ <td>精确率和召回率的加权平均</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>ROC曲线</td>
|
|
|
+ <td>横坐标: FPR, 纵坐标: TPR</td>
|
|
|
+ <td>45度线为参照线,曲线偏离越远结果越准确</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>AUC</td>
|
|
|
+ <td>ROC曲线下面积</td>
|
|
|
+ <td>参考线面积为0.5,AUC越大分类效果越好</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>基尼系数</td>
|
|
|
+ <td>2*AUC-1</td>
|
|
|
+ <td>评估模型区分不同类别的能力</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>K-S值</td>
|
|
|
+ <td>max(TPR-FPR)</td>
|
|
|
+ <td>评判模型区分正负样本的能力,一般0.3以上效果较好</td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {
|
|
|
- addWorkflow,
|
|
|
- updateWorkflow
|
|
|
-} from '@/api/workflow/workflow'
|
|
|
-import FileTable from './fileTable.vue'
|
|
|
-import { getDataOptions } from '@/api/data/data'
|
|
|
-import { getFaultPhysicalOptions, listFaultPhysical } from '@/api/model/faultPhysical' // 修正组件命名
|
|
|
+import * as echarts from 'echarts'
|
|
|
+import 'echarts/lib/chart/bar'
|
|
|
+import 'echarts/lib/chart/line'
|
|
|
+import 'echarts/lib/chart/radar'
|
|
|
+import 'echarts/lib/component/tooltip'
|
|
|
+import 'echarts/lib/component/legend'
|
|
|
|
|
|
export default {
|
|
|
- components: { FileTable }, // 注册组件列表
|
|
|
- props: {
|
|
|
- value: {
|
|
|
- type: Boolean,
|
|
|
- default: false,
|
|
|
- description: '控制对话框显示的双向绑定属性'
|
|
|
- },
|
|
|
- dataInfo: {
|
|
|
- type: Object,
|
|
|
- default: null,
|
|
|
- description: '编辑时传入的原始数据信息'
|
|
|
- },
|
|
|
- options: {
|
|
|
- type: String,
|
|
|
- default: 'add',
|
|
|
- description: '操作类型(add/edit)'
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- dicts: ['sys_job_status', 'data_type'], // 字典数据标识
|
|
|
+ name: 'ModelEvaluationDashboard',
|
|
|
data() {
|
|
|
return {
|
|
|
-
|
|
|
- uploadFileType: ['csv', 'xls', 'xlsx'], // 允许的上传文件类型
|
|
|
- modelDataParams: [], // 参数组数据(类型1)
|
|
|
- dataOptions: [], // 数据选项(预留扩展)
|
|
|
- faultPhysicalOptions: [], // 物理模型选项
|
|
|
- faultOptions: [], // 诊断模型选项
|
|
|
- topOneForm:{},
|
|
|
- topTwoForm:{},
|
|
|
- formData: {
|
|
|
- ifs: Boolean,
|
|
|
- // 基础信息
|
|
|
- outputPath: null,
|
|
|
- newFileName: null,
|
|
|
- name: null,
|
|
|
- modelId: null,
|
|
|
- modelType: null,
|
|
|
- dataId: null,
|
|
|
- startTime: null,
|
|
|
- endTime: null,
|
|
|
- remark: null,
|
|
|
- diagModelId: null,
|
|
|
- // 扩展信息
|
|
|
- modelDataParams: [],
|
|
|
- modelPath: null,
|
|
|
- modelName: null,
|
|
|
- step2Field: null,
|
|
|
- step3Field: null,
|
|
|
- dataSource: null // 文件来源(类型2)
|
|
|
+ config: {
|
|
|
+ headerBGC:'#6275BF',
|
|
|
+ oddRowBGC:'#182D40',
|
|
|
+ header: ['模型', '准确率(%)', '精确率', '召回率', 'F1分数', '测试时间(ms)'],
|
|
|
+ data: [],
|
|
|
+ index: true,
|
|
|
+ columnWidth: [100, 100, 100, 100, 100, 120],
|
|
|
+ align: ['center', 'center', 'center', 'center', 'center', 'center']
|
|
|
},
|
|
|
- rules: {
|
|
|
- name: [{ required: true, message: '请输入任务名称', trigger: 'blur' }],
|
|
|
- modelId: [{ required: true, message: '请选择数据生成模型', trigger: 'blur' }]
|
|
|
- },
|
|
|
- dialogOpen: false, // 对话框显示状态
|
|
|
- workflowNodeList: [], // 工作流节点列表
|
|
|
- checkedWorkflowNode: [], // 选中的工作流节点
|
|
|
- activeStep: 1, // 当前步骤
|
|
|
- fileManagementDialogVisible: false, // 文件管理对话框状态
|
|
|
- rowData: {} // 选中的文件行数据
|
|
|
- }
|
|
|
- },
|
|
|
- model: {
|
|
|
- prop: 'value', // 双向绑定属性名
|
|
|
- event: 'callback' // 触发更新的事件名
|
|
|
- },
|
|
|
- watch: {
|
|
|
- // 监听父组件值变化同步对话框状态
|
|
|
- value(newVal) {
|
|
|
- this.dialogOpen = newVal
|
|
|
+ dataSource: [
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_1.00.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396401455804,
|
|
|
+ "accuracy":80,
|
|
|
+ "precision":0.8,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2486.2886999999996,
|
|
|
+ "uncertainty":0.41201367035372666
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_1.00.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396401455804,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":1073.6752000000001,
|
|
|
+ "uncertainty":0.41201367035372666
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_1.00.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396401455804,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.91619047619047622,
|
|
|
+ "f1_score":0.89074074074074072,
|
|
|
+ "test_time_ms":267.8794,
|
|
|
+ "uncertainty":0.41201367035372666
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_1.00.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396401455804,
|
|
|
+ "accuracy":63.333333333333329,
|
|
|
+ "precision":0.6333333333333333,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":142.8386,
|
|
|
+ "uncertainty":0.41201367035372666
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_1.00.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396401455804,
|
|
|
+ "accuracy":90,
|
|
|
+ "precision":0.9,
|
|
|
+ "recall":0.93587301587301586,
|
|
|
+ "f1_score":0.91758602801314193,
|
|
|
+ "test_time_ms":782.4678,
|
|
|
+ "uncertainty":0.41201367035372666
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_100.00.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406634592,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":41.7871,
|
|
|
+ "uncertainty":0.42742873237078854
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_100.00.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406634592,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":75.6011,
|
|
|
+ "uncertainty":0.42742873237078854
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_100.00.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406634592,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":9.353,
|
|
|
+ "uncertainty":0.42742873237078854
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_100.00.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406634592,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":8.4045,
|
|
|
+ "uncertainty":0.42742873237078854
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_100.00.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406634592,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":399.35929999999996,
|
|
|
+ "uncertainty":0.42742873237078854
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_11.42.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396407271358,
|
|
|
+ "accuracy":85,
|
|
|
+ "precision":0.85,
|
|
|
+ "recall":0.90476190476190466,
|
|
|
+ "f1_score":0.87652645861601075,
|
|
|
+ "test_time_ms":36.99,
|
|
|
+ "uncertainty":0.41202020276730172
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_11.42.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396407271358,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":68.9644,
|
|
|
+ "uncertainty":0.41202020276730172
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_11.42.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396407271358,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.9136507936507936,
|
|
|
+ "f1_score":0.8895387541607227,
|
|
|
+ "test_time_ms":5.7428,
|
|
|
+ "uncertainty":0.41202020276730172
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_11.42.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396407271358,
|
|
|
+ "accuracy":66.666666666666657,
|
|
|
+ "precision":0.66666666666666663,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.0893,
|
|
|
+ "uncertainty":0.41202020276730172
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_11.42.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396407271358,
|
|
|
+ "accuracy":88.333333333333329,
|
|
|
+ "precision":0.8833333333333333,
|
|
|
+ "recall":0.92952380952380953,
|
|
|
+ "f1_score":0.90584011907888984,
|
|
|
+ "test_time_ms":419.28159999999997,
|
|
|
+ "uncertainty":0.41202020276730172
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_16.63.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406077661,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":19.777099999999997,
|
|
|
+ "uncertainty":0.42144761969693911
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_16.63.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406077661,
|
|
|
+ "accuracy":71.666666666666671,
|
|
|
+ "precision":0.71666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":63.4744,
|
|
|
+ "uncertainty":0.42144761969693911
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_16.63.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406077661,
|
|
|
+ "accuracy":90,
|
|
|
+ "precision":0.9,
|
|
|
+ "recall":0.9280952380952382,
|
|
|
+ "f1_score":0.9138317270122428,
|
|
|
+ "test_time_ms":5.1798,
|
|
|
+ "uncertainty":0.42144761969693911
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_16.63.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406077661,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":5.0863000000000005,
|
|
|
+ "uncertainty":0.42144761969693911
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_16.63.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406077661,
|
|
|
+ "accuracy":91.666666666666657,
|
|
|
+ "precision":0.91666666666666663,
|
|
|
+ "recall":0.94476190476190469,
|
|
|
+ "f1_score":0.93050225974247458,
|
|
|
+ "test_time_ms":462.91929999999996,
|
|
|
+ "uncertainty":0.42144761969693911
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_21.84.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406624971,
|
|
|
+ "accuracy":81.666666666666671,
|
|
|
+ "precision":0.81666666666666665,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":88.6958,
|
|
|
+ "uncertainty":0.42350796072708741
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_21.84.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406624971,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":72.697,
|
|
|
+ "uncertainty":0.42350796072708741
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_21.84.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406624971,
|
|
|
+ "accuracy":90,
|
|
|
+ "precision":0.9,
|
|
|
+ "recall":0.92888888888888876,
|
|
|
+ "f1_score":0.91421628189550419,
|
|
|
+ "test_time_ms":18.23,
|
|
|
+ "uncertainty":0.42350796072708741
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_21.84.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406624971,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":3.4444,
|
|
|
+ "uncertainty":0.42350796072708741
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_21.84.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406624971,
|
|
|
+ "accuracy":90,
|
|
|
+ "precision":0.9,
|
|
|
+ "recall":0.93587301587301586,
|
|
|
+ "f1_score":0.91758602801314193,
|
|
|
+ "test_time_ms":377.88460000000003,
|
|
|
+ "uncertainty":0.42350796072708741
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_27.05.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406088237,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":10.032499999999999,
|
|
|
+ "uncertainty":0.42876071639002106
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_27.05.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406088237,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":62.590499999999992,
|
|
|
+ "uncertainty":0.42876071639002106
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_27.05.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406088237,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":3.7783,
|
|
|
+ "uncertainty":0.42876071639002106
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_27.05.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406088237,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.5383,
|
|
|
+ "uncertainty":0.42876071639002106
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_27.05.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406088237,
|
|
|
+ "accuracy":88.333333333333329,
|
|
|
+ "precision":0.8833333333333333,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":368.7852,
|
|
|
+ "uncertainty":0.42876071639002106
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_32.26.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406740396,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.241,
|
|
|
+ "uncertainty":0.42813351916682568
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_32.26.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406740396,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":60.1406,
|
|
|
+ "uncertainty":0.42813351916682568
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_32.26.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406740396,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90587301587301583,
|
|
|
+ "f1_score":0.885836243694218,
|
|
|
+ "test_time_ms":2.8131,
|
|
|
+ "uncertainty":0.42813351916682568
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_32.26.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406740396,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4332999999999996,
|
|
|
+ "uncertainty":0.42813351916682568
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_32.26.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406740396,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":377.7456,
|
|
|
+ "uncertainty":0.42813351916682568
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_37.47.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406676914,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.0408,
|
|
|
+ "uncertainty":0.42753124160742728
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_37.47.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406676914,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":58.839099999999995,
|
|
|
+ "uncertainty":0.42753124160742728
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_37.47.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406676914,
|
|
|
+ "accuracy":88.333333333333329,
|
|
|
+ "precision":0.8833333333333333,
|
|
|
+ "recall":0.91222222222222216,
|
|
|
+ "f1_score":0.89754537953795377,
|
|
|
+ "test_time_ms":2.7571000000000003,
|
|
|
+ "uncertainty":0.42753124160742728
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_37.47.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406676914,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4524999999999997,
|
|
|
+ "uncertainty":0.42753124160742728
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_37.47.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406676914,
|
|
|
+ "accuracy":88.333333333333329,
|
|
|
+ "precision":0.8833333333333333,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":399.38259999999997,
|
|
|
+ "uncertainty":0.42753124160742728
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_42.68.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406726931,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.1888999999999994,
|
|
|
+ "uncertainty":0.42773693617842218
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_42.68.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406726931,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":56.644600000000004,
|
|
|
+ "uncertainty":0.42773693617842218
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_42.68.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406726931,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90587301587301583,
|
|
|
+ "f1_score":0.885836243694218,
|
|
|
+ "test_time_ms":2.9903,
|
|
|
+ "uncertainty":0.42773693617842218
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_42.68.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406726931,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4774,
|
|
|
+ "uncertainty":0.42773693617842218
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_42.68.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406726931,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":356.4385,
|
|
|
+ "uncertainty":0.42773693617842218
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_47.89.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406652865,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.4369,
|
|
|
+ "uncertainty":0.42731479939032957
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_47.89.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406652865,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":61.4023,
|
|
|
+ "uncertainty":0.42731479939032957
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_47.89.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406652865,
|
|
|
+ "accuracy":85,
|
|
|
+ "precision":0.85,
|
|
|
+ "recall":0.89698412698412688,
|
|
|
+ "f1_score":0.87286025804106848,
|
|
|
+ "test_time_ms":2.8238,
|
|
|
+ "uncertainty":0.42731479939032957
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_47.89.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406652865,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.5237,
|
|
|
+ "uncertainty":0.42731479939032957
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_47.89.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406652865,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":351.17150000000004,
|
|
|
+ "uncertainty":0.42731479939032957
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_53.11.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406666332,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.4612,
|
|
|
+ "uncertainty":0.42744314963619751
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_53.11.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406666332,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":54.4327,
|
|
|
+ "uncertainty":0.42744314963619751
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_53.11.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406666332,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":4.7555999999999994,
|
|
|
+ "uncertainty":0.42744314963619751
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_53.11.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406666332,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4724,
|
|
|
+ "uncertainty":0.42744314963619751
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_53.11.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406666332,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":356.8287,
|
|
|
+ "uncertainty":0.42744314963619751
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_58.32.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.2105,
|
|
|
+ "uncertainty":0.42743673471779642
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_58.32.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":55.406499999999994,
|
|
|
+ "uncertainty":0.42743673471779642
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_58.32.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":2.8093,
|
|
|
+ "uncertainty":0.42743673471779642
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_58.32.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.8398,
|
|
|
+ "uncertainty":0.42743673471779642
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_58.32.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":379.2527,
|
|
|
+ "uncertainty":0.42743673471779642
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_6.21.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406706729,
|
|
|
+ "accuracy":81.666666666666671,
|
|
|
+ "precision":0.81666666666666665,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.1225999999999994,
|
|
|
+ "uncertainty":0.42213351544796035
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_6.21.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406706729,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":51.9919,
|
|
|
+ "uncertainty":0.42213351544796035
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_6.21.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406706729,
|
|
|
+ "accuracy":93.333333333333329,
|
|
|
+ "precision":0.93333333333333335,
|
|
|
+ "recall":0.951111111111111,
|
|
|
+ "f1_score":0.94213836477987423,
|
|
|
+ "test_time_ms":2.9112,
|
|
|
+ "uncertainty":0.42213351544796035
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_6.21.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406706729,
|
|
|
+ "accuracy":70,
|
|
|
+ "precision":0.7,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4137999999999997,
|
|
|
+ "uncertainty":0.42213351544796035
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_6.21.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406706729,
|
|
|
+ "accuracy":90,
|
|
|
+ "precision":0.9,
|
|
|
+ "recall":0.93587301587301586,
|
|
|
+ "f1_score":0.91758602801314193,
|
|
|
+ "test_time_ms":394.5106,
|
|
|
+ "uncertainty":0.42213351544796035
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_63.53.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406647094,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.5912999999999995,
|
|
|
+ "uncertainty":0.42741867307330794
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_63.53.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406647094,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":57.782199999999996,
|
|
|
+ "uncertainty":0.42741867307330794
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_63.53.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406647094,
|
|
|
+ "accuracy":85,
|
|
|
+ "precision":0.85,
|
|
|
+ "recall":0.89698412698412688,
|
|
|
+ "f1_score":0.87286025804106848,
|
|
|
+ "test_time_ms":3.077,
|
|
|
+ "uncertainty":0.42741867307330794
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_63.53.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406647094,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.411,
|
|
|
+ "uncertainty":0.42741867307330794
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_63.53.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406647094,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":373.80150000000003,
|
|
|
+ "uncertainty":0.42741867307330794
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_68.74.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.2715000000000005,
|
|
|
+ "uncertainty":0.42743457320823247
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_68.74.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":51.863800000000005,
|
|
|
+ "uncertainty":0.42743457320823247
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_68.74.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":2.7483999999999997,
|
|
|
+ "uncertainty":0.42743457320823247
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_68.74.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4041,
|
|
|
+ "uncertainty":0.42743457320823247
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_68.74.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":384.2894,
|
|
|
+ "uncertainty":0.42743457320823247
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_73.95.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.7259,
|
|
|
+ "uncertainty":0.42742806717607207
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_73.95.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":61.925399999999996,
|
|
|
+ "uncertainty":0.42742806717607207
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_73.95.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":3.0171,
|
|
|
+ "uncertainty":0.42742806717607207
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_73.95.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":3.1433,
|
|
|
+ "uncertainty":0.42742806717607207
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_73.95.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":376.5345,
|
|
|
+ "uncertainty":0.42742806717607207
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_79.16.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.4754000000000005,
|
|
|
+ "uncertainty":0.42743104271278681
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_79.16.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":56.619299999999996,
|
|
|
+ "uncertainty":0.42743104271278681
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_79.16.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":4.2401,
|
|
|
+ "uncertainty":0.42743104271278681
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_79.16.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.4480999999999997,
|
|
|
+ "uncertainty":0.42743104271278681
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_79.16.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":366.267,
|
|
|
+ "uncertainty":0.42743104271278681
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_84.37.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.4242,
|
|
|
+ "uncertainty":0.42743080780864723
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_84.37.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":54.6466,
|
|
|
+ "uncertainty":0.42743080780864723
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_84.37.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":3.1586000000000003,
|
|
|
+ "uncertainty":0.42743080780864723
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_84.37.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.6017,
|
|
|
+ "uncertainty":0.42743080780864723
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_84.37.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":355.7289,
|
|
|
+ "uncertainty":0.42743080780864723
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_89.58.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":6.9338999999999995,
|
|
|
+ "uncertainty":0.42742858038128234
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_89.58.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":50.595,
|
|
|
+ "uncertainty":0.42742858038128234
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_89.58.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":2.766,
|
|
|
+ "uncertainty":0.42742858038128234
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_89.58.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.6202,
|
|
|
+ "uncertainty":0.42742858038128234
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_89.58.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406635551,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":432.9171,
|
|
|
+ "uncertainty":0.42742858038128234
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_94.79.mat",
|
|
|
+ "model":"BP",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":83.333333333333343,
|
|
|
+ "precision":0.83333333333333337,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":7.4331,
|
|
|
+ "uncertainty":0.42742799889015454
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_94.79.mat",
|
|
|
+ "model":"SVM",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":73.333333333333329,
|
|
|
+ "precision":0.73333333333333328,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":54.8536,
|
|
|
+ "uncertainty":0.42742799889015454
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_94.79.mat",
|
|
|
+ "model":"KNN",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0.90333333333333321,
|
|
|
+ "f1_score":0.88462021343377273,
|
|
|
+ "test_time_ms":2.7032,
|
|
|
+ "uncertainty":0.42742799889015454
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_94.79.mat",
|
|
|
+ "model":"DecisionTree",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":68.333333333333329,
|
|
|
+ "precision":0.68333333333333335,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":2.6024,
|
|
|
+ "uncertainty":0.42742799889015454
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "filename":"fea_all_20250627141916A001_94.79.mat",
|
|
|
+ "model":"RandomForest",
|
|
|
+ "snr":0.011016396406637475,
|
|
|
+ "accuracy":86.666666666666671,
|
|
|
+ "precision":0.8666666666666667,
|
|
|
+ "recall":0,
|
|
|
+ "f1_score":0,
|
|
|
+ "test_time_ms":398.2675,
|
|
|
+ "uncertainty":0.42742799889015454
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ selectedFilename: '',
|
|
|
+ selectedModel: '',
|
|
|
+ currentTime: '',
|
|
|
+ keyMetrics: [
|
|
|
+ {
|
|
|
+ name: '平均准确率',
|
|
|
+ icon: '🔢',
|
|
|
+ value: '80.5%',
|
|
|
+ trendText: '较上周 +2.3%',
|
|
|
+ trendClass: 'trend-up',
|
|
|
+ trendIcon: 'fa-arrow-up'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '最高精确率',
|
|
|
+ icon: '🎯',
|
|
|
+ value: '0.88',
|
|
|
+ trendText: '较上周 +0.03',
|
|
|
+ trendClass: 'trend-up',
|
|
|
+ trendIcon: 'fa-arrow-up'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '平均召回率',
|
|
|
+ icon: '🔄',
|
|
|
+ value: '0.65',
|
|
|
+ trendText: '较上周 -0.01',
|
|
|
+ trendClass: 'trend-down',
|
|
|
+ trendIcon: 'fa-arrow-down'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '平均F1分数',
|
|
|
+ icon: '📊',
|
|
|
+ value: '0.62',
|
|
|
+ trendText: '较上周 +0.04',
|
|
|
+ trendClass: 'trend-up',
|
|
|
+ trendIcon: 'fa-arrow-up'
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- // 根据操作类型生成标题
|
|
|
- title() {
|
|
|
- return this.options === 'add' ? '添加流程任务' : '修改流程任务'
|
|
|
+ uniqueFilenames() {
|
|
|
+ return [...new Set(this.dataSource.map(item => item.filename))]
|
|
|
+ },
|
|
|
+ uniqueModels() {
|
|
|
+ return [...new Set(this.dataSource.map(item => item.model))]
|
|
|
+ },
|
|
|
+ filteredData() {
|
|
|
+ let filtered = this.dataSource
|
|
|
+ if (this.selectedFilename) {
|
|
|
+ filtered = filtered.filter(item => item.filename === this.selectedFilename)
|
|
|
+ }
|
|
|
+ if (this.selectedModel && this.selectedModel !== '') {
|
|
|
+ filtered = filtered.filter(item => item.model === this.selectedModel)
|
|
|
+ }
|
|
|
+ return filtered
|
|
|
}
|
|
|
},
|
|
|
- methods: {
|
|
|
- // 文件管理组件回调 - 接收选中的文件数据
|
|
|
- handleRowData(row) {
|
|
|
-
|
|
|
- this.$emit('callback', row)
|
|
|
- this.rowData = row
|
|
|
- this.fileManagementDialogVisible = false
|
|
|
- },
|
|
|
+ mounted() {
|
|
|
+ this.updateTime()
|
|
|
+ setInterval(() => {
|
|
|
+ this.updateTime()
|
|
|
+ }, 1000)
|
|
|
|
|
|
- // 文件上传组件回调 - 接收上传文件信息
|
|
|
- handleChildData(datas) {
|
|
|
- console.log('文件上传的内容', datas)
|
|
|
- this.formData.filePath = datas.filelocalPath
|
|
|
- this.formData.fileName = datas.fileName
|
|
|
- this.formData.fileSize = datas.fileSize
|
|
|
- this.formData.fileSizeBytes = datas.fileSizeBytes
|
|
|
- this.formData.fileSuffix = datas.fileSuffix
|
|
|
- this.formData.url = datas.url
|
|
|
+ this.initCharts()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ updateTime() {
|
|
|
+ const now = new Date()
|
|
|
+ this.currentTime = now.toLocaleString()
|
|
|
},
|
|
|
-
|
|
|
- // 诊断模型选择变化处理(预留扩展)
|
|
|
- onModeldiagChange() {
|
|
|
- const selectedModel = this.faultPhysicalOptions.find(
|
|
|
- item => item.modelId === this.formData.diagModelId
|
|
|
- )
|
|
|
- console.log('诊断模型数据', selectedModel)
|
|
|
+ filterData() {
|
|
|
+ this.initCharts()
|
|
|
},
|
|
|
+ initCharts() {
|
|
|
+ // 准确率与不确定性对比图表
|
|
|
+ const accuracyChart = echarts.init(this.$refs.accuracyChart)
|
|
|
+ const accuracyData = this.filteredData
|
|
|
|
|
|
- // 物理模型选择变化处理
|
|
|
- onModelChange() {
|
|
|
- const selectedModel = this.faultPhysicalOptions.find(
|
|
|
- item => item.modelId === this.formData.modelId
|
|
|
- )
|
|
|
- console.log('物理模型数据', selectedModel)
|
|
|
- if (!selectedModel) return
|
|
|
-
|
|
|
- // 同步模型基础信息
|
|
|
- this.formData.modelType = selectedModel.modelType
|
|
|
- this.formData.modelPath = selectedModel.modelPath
|
|
|
-
|
|
|
- // 根据模型类型初始化参数数据
|
|
|
- if (selectedModel.modelType === '2') {
|
|
|
- this.formData.bizParams = selectedModel.modelDataParams || ''
|
|
|
- this.modelDataParams = [] // 类型2不使用参数组
|
|
|
- } else if (selectedModel.modelType === '1') {
|
|
|
- // 解析并初始化参数组(类型1)
|
|
|
- const exampleParams = this.parseParams(selectedModel.modelDataParams || '[]')
|
|
|
- this.modelDataParams = exampleParams.length ? exampleParams : [{}]
|
|
|
- } else {
|
|
|
- this.formData.modelDataParams = selectedModel.modelDataParams
|
|
|
- }
|
|
|
- },
|
|
|
+ // 处理数据:按模型分组并计算每个文件下的准确率和不确定性
|
|
|
+ const modelDataMap = {}
|
|
|
+ const filenames = [...new Set(accuracyData.map(item => item.filename))]
|
|
|
|
|
|
- // 加载基础数据选项
|
|
|
- loadOptions() {
|
|
|
- // 数据选项(示例)
|
|
|
- getDataOptions().then(resp => {
|
|
|
- this.dataOptions = resp.data || []
|
|
|
+ filenames.forEach(filename => {
|
|
|
+ const fileData = accuracyData.filter(item => item.filename === filename)
|
|
|
+ fileData.forEach(item => {
|
|
|
+ if (!modelDataMap[item.model]) {
|
|
|
+ modelDataMap[item.model] = {
|
|
|
+ accuracy: {},
|
|
|
+ uncertainty: {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ modelDataMap[item.model].accuracy[filename] = item.accuracy
|
|
|
+ modelDataMap[item.model].uncertainty[filename] = item.uncertainty
|
|
|
+ })
|
|
|
})
|
|
|
- // 物理模型选项(类型0)
|
|
|
- listFaultPhysical().then(resp => {
|
|
|
- const data = resp.rows || []
|
|
|
- this.faultPhysicalOptions = data.filter(item => item.modelAttribution === '0')
|
|
|
- this.faultOptions = data.filter(item => item.modelAttribution === '1')
|
|
|
+
|
|
|
+ // 提取模型并按平均准确率排序
|
|
|
+ const models = Object.keys(modelDataMap)
|
|
|
+ models.sort((a, b) => {
|
|
|
+ const avgAccuracyA = filenames.length > 0 ?
|
|
|
+ filenames.reduce((sum, filename) => sum + (modelDataMap[a].accuracy[filename] || 0), 0) / filenames.length : 0
|
|
|
+ const avgAccuracyB = filenames.length > 0 ?
|
|
|
+ filenames.reduce((sum, filename) => sum + (modelDataMap[b].accuracy[filename] || 0), 0) / filenames.length : 0
|
|
|
+ return avgAccuracyA - avgAccuracyB
|
|
|
})
|
|
|
- },
|
|
|
|
|
|
- // 对话框打开时初始化数据
|
|
|
- initData() {
|
|
|
- this.loadOptions() // 加载基础数据
|
|
|
+ const accuracyOptions = {
|
|
|
+ backgroundColor: 'rgba(10, 20, 30, 0.7)',
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ },
|
|
|
+ formatter: function(params) {
|
|
|
+ let result = `<div style="font-size:14px;font-weight:bold">${params[0].name}</div>`
|
|
|
+ params.forEach(param => {
|
|
|
+ result += `<div>${param.seriesName}: ${param.value}</div>`
|
|
|
+ })
|
|
|
+ return result
|
|
|
+ }
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: [...filenames, '不确定性'],
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '10%', // 为第二个y轴留出空间
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: 'category',
|
|
|
+ data: models,
|
|
|
+ axisTick: {
|
|
|
+ alignWithLabel: true
|
|
|
+ },
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff',
|
|
|
+ rotate: 45 // 旋转标签避免重叠
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '准确率(%)',
|
|
|
+ min: 0,
|
|
|
+ max: 100,
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ },
|
|
|
+ formatter: '{value}%'
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 245, 255, 0.2)'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '不确定性',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#ff9800' // 橙色表示不确定性
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#ff9800'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ position: 'right'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ // 各文件的准确率系列
|
|
|
+ ...filenames.map(filename => {
|
|
|
+ return {
|
|
|
+ name: filename,
|
|
|
+ type: 'line',
|
|
|
+ smooth: true,
|
|
|
+ symbolSize: 8,
|
|
|
+ data: models.map(model => {
|
|
|
+ return modelDataMap[model].accuracy[filename] || 0
|
|
|
+ }),
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: getLineColor(filename),
|
|
|
+ borderWidth: 2,
|
|
|
+ borderColor: '#0B0E25'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ width: 3,
|
|
|
+ color: getLineColor(filename)
|
|
|
+ },
|
|
|
+ areaStyle: {
|
|
|
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
|
+ { offset: 0, color: getLineColor(filename, 0.3) },
|
|
|
+ { offset: 1, color: getLineColor(filename, 0.05) }
|
|
|
+ ])
|
|
|
+ },
|
|
|
+ yAxisIndex: 0
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ // 不确定性系列
|
|
|
+ {
|
|
|
+ name: '不确定性',
|
|
|
+ type: 'line',
|
|
|
+ smooth: true,
|
|
|
+ symbol: 'diamond',
|
|
|
+ symbolSize: 8,
|
|
|
+ data: models.map(model => {
|
|
|
+ // 计算平均不确定性
|
|
|
+ const uncertainties = filenames.map(filename => modelDataMap[model].uncertainty[filename] || 0)
|
|
|
+ return uncertainties.length > 0 ? uncertainties.reduce((sum, val) => sum + val, 0) / uncertainties.length : 0
|
|
|
+ }),
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: '#ff9800',
|
|
|
+ borderWidth: 2,
|
|
|
+ borderColor: '#0B0E25'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ width: 3,
|
|
|
+ color: '#ff9800'
|
|
|
+ },
|
|
|
+ areaStyle: {
|
|
|
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
|
+ { offset: 0, color: 'rgba(255, 152, 0, 0.3)' },
|
|
|
+ { offset: 1, color: 'rgba(255, 152, 0, 0.05)' }
|
|
|
+ ])
|
|
|
+ },
|
|
|
+ yAxisIndex: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
|
|
|
- // 编辑模式初始化
|
|
|
- if (this.options !== 'add' && this.dataInfo) {
|
|
|
- this.formData = { ...this.dataInfo } // 浅拷贝原始数据
|
|
|
- this.workflowNodeList = this.dataInfo.workflowNodeList // 初始化节点列表
|
|
|
+ // 生成颜色的辅助函数
|
|
|
+ function getLineColor(filename, alpha = 1) {
|
|
|
+ const colors = ['#0074ff', '#00f5ff', '#3375F6', '#4CAF50', '#E91E63', '#673AB7']
|
|
|
+ const index = filenames.indexOf(filename) % colors.length
|
|
|
+ return `rgba(${colors[index].substring(1).split(',').join(',')}, ${alpha})`
|
|
|
}
|
|
|
|
|
|
- this.activeStep = 1 // 重置步骤
|
|
|
- },
|
|
|
+ accuracyChart.setOption(accuracyOptions)
|
|
|
+ window.addEventListener('resize', () => {
|
|
|
+ accuracyChart.resize()
|
|
|
+ })
|
|
|
|
|
|
- // 表单提交处理
|
|
|
- handleSubmit() {
|
|
|
- this.$refs['form'].validate(valid => {
|
|
|
- if (valid) {
|
|
|
- // 处理参数组数据(类型1)
|
|
|
- if (this.formData.modelType !== '2') {
|
|
|
- this.formData.modelDataParams = JSON.stringify(this.modelDataParams)
|
|
|
- this.formData.bizParams = this.formData.modelDataParams // 同步参数
|
|
|
- }
|
|
|
+ // 其他图表保持不变...
|
|
|
+ // 精确率与召回率图表
|
|
|
+ const precisionRecallChart = echarts.init(this.$refs.precisionRecallChart)
|
|
|
+ const prData = this.filteredData.filter(item => item.recall > 0)
|
|
|
|
|
|
- this.formData.workflowNodeList = this.workflowNodeList // 绑定节点数据
|
|
|
+ const prOptions = {
|
|
|
+ backgroundColor: 'rgba(10, 20, 30, 0.7)',
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'cross'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: ['精确率', '召回率'],
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: 'category',
|
|
|
+ data: prData.map(item => item.model),
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '精确率',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 245, 255, 0.2)'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '召回率',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00ff9d'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00ff9d'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ show: false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: '精确率',
|
|
|
+ type: 'line',
|
|
|
+ data: prData.map(item => item.precision),
|
|
|
+ smooth: true,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff',
|
|
|
+ width: 2
|
|
|
+ },
|
|
|
+ areaStyle: {
|
|
|
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
|
+ { offset: 0, color: 'rgba(0, 245, 255, 0.3)' },
|
|
|
+ { offset: 1, color: 'rgba(0, 245, 255, 0.05)' }
|
|
|
+ ])
|
|
|
+ },
|
|
|
+ yAxisIndex: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '召回率',
|
|
|
+ type: 'line',
|
|
|
+ data: prData.map(item => item.recall),
|
|
|
+ smooth: true,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#00ff9d'
|
|
|
+ },
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00ff9d',
|
|
|
+ width: 2
|
|
|
+ },
|
|
|
+ areaStyle: {
|
|
|
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
|
+ { offset: 0, color: 'rgba(0, 255, 157, 0.3)' },
|
|
|
+ { offset: 1, color: 'rgba(0, 255, 157, 0.05)' }
|
|
|
+ ])
|
|
|
+ },
|
|
|
+ yAxisIndex: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
|
|
|
- // 调用接口
|
|
|
- const api = this.options === 'add' ? addWorkflow : updateWorkflow
|
|
|
- api(this.formData).then(response => {
|
|
|
- this.$message.success(`${this.options === 'add' ? '新增' : '修改'}成功`)
|
|
|
- this.dialogOpen = false
|
|
|
- this.$emit('callback', false) // 通知父组件更新
|
|
|
- })
|
|
|
- }
|
|
|
+ precisionRecallChart.setOption(prOptions)
|
|
|
+ window.addEventListener('resize', () => {
|
|
|
+ precisionRecallChart.resize()
|
|
|
})
|
|
|
- },
|
|
|
|
|
|
- // 取消操作处理
|
|
|
- handleCancel() {
|
|
|
- this.dialogOpen = false
|
|
|
- this.$emit('callback', false) // 关闭对话框
|
|
|
- this.reset() // 重置表单数据
|
|
|
- },
|
|
|
+ // 雷达图 - 模型性能综合评估
|
|
|
+ const radarChart = echarts.init(this.$refs.radarChart)
|
|
|
+ const radarData = this.filteredData.filter(item => item.recall > 0)
|
|
|
|
|
|
- // 表单数据重置
|
|
|
- reset() {
|
|
|
- this.formData = {
|
|
|
- // 重置基础字段
|
|
|
- outputPath: null,
|
|
|
- newFileName: null,
|
|
|
- name: null,
|
|
|
- modelId: null,
|
|
|
- modelType: null,
|
|
|
- dataId: null,
|
|
|
- startTime: null,
|
|
|
- endTime: null,
|
|
|
- remark: null,
|
|
|
- // 重置扩展字段
|
|
|
- modelDataParams: [],
|
|
|
- modelPath: null,
|
|
|
- modelName: null,
|
|
|
- step2Field: null,
|
|
|
- step3Field: null,
|
|
|
- dataSource: null
|
|
|
+ const radarOptions = {
|
|
|
+ backgroundColor: 'rgba(10, 20, 30, 0.7)',
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'item'
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: radarData.map(item => item.model),
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ radar: {
|
|
|
+ center: ['50%', '50%'],
|
|
|
+ radius: '80%',
|
|
|
+ indicator: [
|
|
|
+ { name: '准确率(%)', max: 100 },
|
|
|
+ { name: '精确率', max: 1 },
|
|
|
+ { name: '召回率', max: 1 },
|
|
|
+ { name: 'F1分数', max: 1 },
|
|
|
+ { name: '测试时间(ms)', max: 1000, inverse: true }
|
|
|
+ ],
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 245, 255, 0.2)'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ series: radarData.map(item => {
|
|
|
+ return {
|
|
|
+ name: item.model,
|
|
|
+ type: 'radar',
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ value: [
|
|
|
+ item.accuracy,
|
|
|
+ item.precision,
|
|
|
+ item.recall,
|
|
|
+ item.f1_score,
|
|
|
+ item.test_time_ms
|
|
|
+ ],
|
|
|
+ name: item.model
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ lineStyle: {
|
|
|
+ width: 2
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
- // 重置关联数据
|
|
|
- this.modelDataParams = []
|
|
|
- this.workflowNodeList = []
|
|
|
- this.checkedWorkflowNode = []
|
|
|
- this.resetForm('form') // 重置表单验证状态
|
|
|
- this.activeStep = 1 // 回到第一步
|
|
|
- },
|
|
|
+ radarChart.setOption(radarOptions)
|
|
|
+ window.addEventListener('resize', () => {
|
|
|
+ radarChart.resize()
|
|
|
+ })
|
|
|
|
|
|
- // 步骤导航 - 下一步
|
|
|
- nextStep() {
|
|
|
- if (this.activeStep < 3) {
|
|
|
- this.activeStep++
|
|
|
- }
|
|
|
- },
|
|
|
+ // 测试时间对比图表
|
|
|
+ const timeChart = echarts.init(this.$refs.timeChart)
|
|
|
+ const timeData = this.filteredData
|
|
|
|
|
|
- // 步骤导航 - 上一步
|
|
|
- prevStep() {
|
|
|
- if (this.activeStep > 1) {
|
|
|
- this.activeStep--
|
|
|
+ const timeOptions = {
|
|
|
+ backgroundColor: 'rgba(10, 20, 30, 0.7)',
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: ['测试时间(ms)'],
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: 'category',
|
|
|
+ data: timeData.map(item => item.model),
|
|
|
+ axisTick: {
|
|
|
+ alignWithLabel: true
|
|
|
+ },
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ },
|
|
|
+ rotate: 45
|
|
|
+ }
|
|
|
+ },
|
|
|
+ yAxis: {
|
|
|
+ type: 'value',
|
|
|
+ name: '测试时间(ms)',
|
|
|
+ axisLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ textStyle: {
|
|
|
+ color: '#00f5ff'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 245, 255, 0.2)'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: '测试时间(ms)',
|
|
|
+ type: 'bar',
|
|
|
+ data: timeData.map(item => item.test_time_ms),
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
|
+ { offset: 0, color: '#0074ff' },
|
|
|
+ { offset: 1, color: '#00f5ff' }
|
|
|
+ ]),
|
|
|
+ barBorderRadius: 5
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
- },
|
|
|
|
|
|
- // 添加参数组(类型1)
|
|
|
- addModelDataParams() {
|
|
|
- // 基于最后一组参数创建新组(保留字段结构)
|
|
|
- const lastGroup = this.modelDataParams[this.modelDataParams.length - 1] || {}
|
|
|
- const newGroup = Object.fromEntries(
|
|
|
- Object.keys(lastGroup).map(key => [key, ''])
|
|
|
- )
|
|
|
- this.modelDataParams.push(newGroup)
|
|
|
- },
|
|
|
-
|
|
|
- // 参数解析工具方法
|
|
|
- parseParams(params) {
|
|
|
- try {
|
|
|
- const parsed = JSON.parse(params)
|
|
|
- return Array.isArray(parsed) ? parsed : [parsed] // 确保返回数组
|
|
|
- } catch (e) {
|
|
|
- console.error('参数解析错误', e)
|
|
|
- return [] // 解析失败返回空数组
|
|
|
- }
|
|
|
+ timeChart.setOption(timeOptions)
|
|
|
+ window.addEventListener('resize', () => {
|
|
|
+ timeChart.resize()
|
|
|
+ })
|
|
|
+ this.generateTableData()
|
|
|
},
|
|
|
-
|
|
|
- // 文件来源变化处理
|
|
|
- onDataSourceChange(value) {
|
|
|
- if (value === '2') {
|
|
|
- this.fileManagementDialogVisible = true // 打开文件管理对话框
|
|
|
- }
|
|
|
+ generateTableData() {
|
|
|
+ const data = this.filteredData
|
|
|
+ this.config.data = data.map(item => [
|
|
|
+ item.model,
|
|
|
+ item.accuracy.toFixed(2) + '%',
|
|
|
+ item.precision.toFixed(2) + '%',
|
|
|
+ item.recall.toFixed(2) + '%',
|
|
|
+ item.f1_score.toFixed(2) + '%',
|
|
|
+ item.test_time_ms.toFixed(2) + 'ms'
|
|
|
+ ])
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-.el-step__title .is-process {
|
|
|
- color: #FFFFFF;
|
|
|
+.dashboard-container {
|
|
|
+ width: 100%;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: #0B0E25;
|
|
|
+ color: #0B0E25;
|
|
|
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
|
+ padding: 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ overflow-x: hidden;
|
|
|
}
|
|
|
|
|
|
-.text-right {
|
|
|
- text-align: right;
|
|
|
- margin-top: 10px;
|
|
|
+.header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ border-bottom: 2px solid #0B0E25;
|
|
|
}
|
|
|
|
|
|
-/* 步骤描述文字样式优化 */
|
|
|
-.step-description {
|
|
|
- white-space: pre-line; /* 保留换行符 */
|
|
|
+.title {
|
|
|
+ font-size: 28px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #0B0E25;
|
|
|
+ text-shadow: 0 0 10px #0B0E25, 0 0 20px #0B0E25;
|
|
|
+ letter-spacing: 2px;
|
|
|
+}
|
|
|
+
|
|
|
+.time-display {
|
|
|
+ font-size: 18px;
|
|
|
+ color: #00ff9d;
|
|
|
+}
|
|
|
+
|
|
|
+.control-panel {
|
|
|
+ margin-top: 20px;
|
|
|
+ margin-left: 30px;
|
|
|
+ display: flex;
|
|
|
+ gap: 20px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ padding: 15px;
|
|
|
+ border: 1px solid #0B0E25;
|
|
|
+ border-radius: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.filter-group {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.filter-group label {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #3375F6;
|
|
|
+}
|
|
|
+
|
|
|
+.filter-group select {
|
|
|
+ background-color: #0B0E25;
|
|
|
+ color: #3375F6;
|
|
|
+ border: 1px solid #0B0E25;
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 5px 10px;
|
|
|
+ font-size: 14px;
|
|
|
+ outline: none;
|
|
|
+}
|
|
|
+
|
|
|
+.metric-cards {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(4, 1fr);
|
|
|
+ gap: 20px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.dv-border-box-8 {
|
|
|
+ height: 110%;
|
|
|
+}
|
|
|
+
|
|
|
+.card {
|
|
|
+ //background-color: rgba(10, 30, 50, 0.5);
|
|
|
+ //border: 1px solid #0B0E25;
|
|
|
+ //border-radius: 8px;
|
|
|
+ padding: 15px;
|
|
|
+ //box-shadow: 0 0 10px rgb(58, 132, 247);
|
|
|
+ //transition: all 0.3s ease;
|
|
|
+ //position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.card:hover {
|
|
|
+ transform: translateY(-5px);
|
|
|
+ box-shadow: 0 0 20px rgb(58, 132, 247);
|
|
|
+}
|
|
|
+
|
|
|
+.card::before {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 3px;
|
|
|
+ background: linear-gradient(90deg, #0074ff, #00f5ff);
|
|
|
+}
|
|
|
+
|
|
|
+.card-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.card-header h3 {
|
|
|
+ font-size: 16px;
|
|
|
+ margin: 0;
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.metric-icon {
|
|
|
+ font-size: 20px;
|
|
|
+ background-color: rgb(58, 132, 247);
|
|
|
+ width: 30px;
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 50%;
|
|
|
+}
|
|
|
+
|
|
|
+.card-body {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.metric-value {
|
|
|
+ font-size: 28px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #3375F6;
|
|
|
+ text-shadow: 0 0 5px #0B0E25;
|
|
|
+}
|
|
|
+
|
|
|
+.metric-trend {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+
|
|
|
+.trend-up {
|
|
|
+ color: #3375F6;
|
|
|
+}
|
|
|
+
|
|
|
+.trend-down {
|
|
|
+ color: #ff6b6b;
|
|
|
+}
|
|
|
+
|
|
|
+.trend-icon {
|
|
|
+ margin-left: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-container {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-row {
|
|
|
+ display: flex;
|
|
|
+ gap: 20px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-col {
|
|
|
+ flex: 1;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-card {
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-title {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ position: relative;
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-title::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ width: 50px;
|
|
|
+ height: 2px;
|
|
|
+ background-color: #0B0E25;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-wrapper {
|
|
|
+ width: 100%;
|
|
|
+ height: 300px;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table-container {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.table-title {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ position: relative;
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.table-title::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ width: 80px;
|
|
|
+ height: 2px;
|
|
|
+ background-color: #0B0E25;
|
|
|
+}
|
|
|
+
|
|
|
+.table-wrapper {
|
|
|
+ overflow-x: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table {
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ border: 1px solid #0B0E25;
|
|
|
+ border-radius: 8px;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table th,
|
|
|
+.data-table td {
|
|
|
+ padding: 12px 15px;
|
|
|
text-align: center;
|
|
|
- padding-top: 8px;
|
|
|
+ border: 1px solid rgb(58, 132, 247);
|
|
|
+}
|
|
|
+
|
|
|
+.data-table th {
|
|
|
+ background-color: rgb(58, 132, 247);
|
|
|
+ font-weight: bold;
|
|
|
+ color: #0B0E25;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table tr:nth-child(even) {
|
|
|
+ background-color: rgb(58, 132, 247);
|
|
|
+}
|
|
|
+
|
|
|
+.data-table tr:hover {
|
|
|
+ background-color: rgb(58, 132, 247);
|
|
|
}
|
|
|
-.el-collapse{
|
|
|
- background-color: #0b333f !important;
|
|
|
- color: #FFFFFF;
|
|
|
+
|
|
|
+.metric-explanation {
|
|
|
+ background-color: rgba(10, 30, 50, 0.5);
|
|
|
+ border: 1px solid #0B0E25;
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 15px;
|
|
|
+ box-shadow: 0 0 10px rgb(58, 132, 247);
|
|
|
+}
|
|
|
+
|
|
|
+.explanation-table {
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ margin-top: 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.explanation-table th,
|
|
|
+.explanation-table td {
|
|
|
+ padding: 10px 15px;
|
|
|
+ text-align: left;
|
|
|
+ border: 1px solid rgba(0, 245, 255, 0.3);
|
|
|
+}
|
|
|
+
|
|
|
+.explanation-table th {
|
|
|
+ background-color: rgba(0, 245, 255, 0.1);
|
|
|
+ font-weight: bold;
|
|
|
+ color: #0B0E25;
|
|
|
+}
|
|
|
+
|
|
|
+.explanation-table tr:nth-child(even) {
|
|
|
+ background-color: rgba(0, 245, 255, 0.05);
|
|
|
}
|
|
|
</style>
|