Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-bi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-bi
Commits
2bb9afe4
提交
2bb9afe4
authored
4月 17, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
d92065e4
显示空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
198 行增加
和
1003 行删除
+198
-1003
api.ts
src/ai/api.ts
+3
-1
Chart.tsx
src/components/chart/Chart.tsx
+24
-11
prompt.ts
src/modules/data/digging/apriori/prompt.ts
+3
-99
prompt.ts
src/modules/data/digging/forest/prompt.ts
+9
-113
prompt.ts
src/modules/data/digging/fpgrowth/prompt.ts
+3
-97
prompt.ts
src/modules/data/digging/hierarchical/prompt.ts
+4
-118
prompt.ts
src/modules/data/digging/holtwinters/prompt.ts
+5
-94
prompt.ts
src/modules/data/digging/kmeans/prompt.ts
+4
-118
prompt.ts
src/modules/data/digging/linear/prompt.ts
+5
-67
prompt.ts
src/modules/data/digging/logistic/prompt.ts
+7
-62
prompt.ts
src/modules/data/digging/svm/prompt.ts
+9
-115
prompt.ts
src/modules/data/digging/tree/prompt.ts
+8
-108
chart.tsx
src/modules/demo/chart.tsx
+110
-0
routes.tsx
src/modules/demo/routes.tsx
+4
-0
没有找到文件。
src/ai/api.ts
浏览文件 @
2bb9afe4
...
@@ -3,6 +3,7 @@ import md5 from 'blueimp-md5'
...
@@ -3,6 +3,7 @@ import md5 from 'blueimp-md5'
import
{
fetchEventSource
,
FetchEventSourceInit
}
from
'@fortaine/fetch-event-source'
import
{
fetchEventSource
,
FetchEventSourceInit
}
from
'@fortaine/fetch-event-source'
import
{
AIData
,
AIMessage
,
InitOptions
}
from
'./types'
import
{
AIData
,
AIMessage
,
InitOptions
}
from
'./types'
import
{
extractJSON
}
from
'@/utils/helper'
import
{
extractJSON
}
from
'@/utils/helper'
import
{
message
}
from
'antd'
export
async
function
fetchAIEventSource
(
url
:
string
,
options
:
FetchEventSourceInit
)
{
export
async
function
fetchAIEventSource
(
url
:
string
,
options
:
FetchEventSourceInit
)
{
await
fetchEventSource
(
url
,
{
await
fetchEventSource
(
url
,
{
...
@@ -166,9 +167,10 @@ export async function openAI(data: AIData, options: InitOptions): Promise<void>
...
@@ -166,9 +167,10 @@ export async function openAI(data: AIData, options: InitOptions): Promise<void>
}
}
options
.
onMessage
?.(
message
)
options
.
onMessage
?.(
message
)
options
.
onclose
?.()
options
.
onclose
?.()
}
catch
(
error
)
{
}
catch
(
error
:
any
)
{
console
.
error
(
error
)
console
.
error
(
error
)
options
.
onerror
?.(
error
)
options
.
onerror
?.(
error
)
message
.
error
(
error
.
response
.
data
.
error
)
}
}
}
}
...
...
src/components/chart/Chart.tsx
浏览文件 @
2bb9afe4
...
@@ -47,41 +47,54 @@ const usePattern = (type = 'horizontal', color = '#5470C6') => {
...
@@ -47,41 +47,54 @@ const usePattern = (type = 'horizontal', color = '#5470C6') => {
}
}
}
}
const
transformData
=
(
data
:
any
[],
yField
:
string
[],
yRule
:
string
,
ySort
:
string
)
=>
{
const
transformData
=
(
data
:
any
[],
yField
:
string
[],
yRule
:
string
,
ySort
:
string
,
xField
:
string
=
''
)
=>
{
let
transformedData
=
[...
data
]
let
transformedData
=
[...
data
]
// Apply calculation rule
// Apply calculation rule
if
(
yRule
)
{
if
(
yRule
)
{
transformedData
=
transformedData
.
map
((
item
)
=>
{
// Group data by xField if it exists
const
newItem
=
{
...
item
}
const
groupedData
=
xField
?
transformedData
.
reduce
((
acc
:
Record
<
string
,
any
[]
>
,
item
)
=>
{
const
key
=
item
[
xField
]
if
(
!
acc
[
key
])
{
acc
[
key
]
=
[]
}
acc
[
key
].
push
(
item
)
return
acc
},
{})
:
{
all
:
transformedData
}
// Calculate results for each group
transformedData
=
Object
.
entries
(
groupedData
).
map
(([
_
,
group
])
=>
{
const
newItem
=
{
...
group
[
0
]
}
yField
.
forEach
((
field
)
=>
{
yField
.
forEach
((
field
)
=>
{
const
values
=
data
.
map
((
d
)
=>
parseFloat
(
d
[
field
])
||
0
)
const
values
=
group
.
map
((
d
)
=>
parseFloat
(
d
[
field
])
||
0
)
let
result
=
0
let
result
=
0
switch
(
yRule
)
{
switch
(
yRule
)
{
case
'sum'
:
case
'sum'
:
result
=
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
)
result
=
Number
(
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
).
toFixed
(
2
)
)
break
break
case
'avg'
:
case
'avg'
:
result
=
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
)
/
values
.
length
result
=
Number
((
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
)
/
values
.
length
).
toFixed
(
2
))
break
break
case
'count'
:
case
'count'
:
result
=
values
.
length
result
=
values
.
length
break
break
case
'max'
:
case
'max'
:
result
=
Math
.
max
(...
values
)
result
=
Number
(
Math
.
max
(...
values
).
toFixed
(
2
)
)
break
break
case
'min'
:
case
'min'
:
result
=
Math
.
min
(...
values
)
result
=
Number
(
Math
.
min
(...
values
).
toFixed
(
2
)
)
break
break
case
'median'
:
{
case
'median'
:
{
const
sorted
=
[...
values
].
sort
((
a
,
b
)
=>
a
-
b
)
const
sorted
=
[...
values
].
sort
((
a
,
b
)
=>
a
-
b
)
const
mid
=
Math
.
floor
(
sorted
.
length
/
2
)
const
mid
=
Math
.
floor
(
sorted
.
length
/
2
)
result
=
sorted
.
length
%
2
===
0
?
(
sorted
[
mid
-
1
]
+
sorted
[
mid
])
/
2
:
sorted
[
mid
]
result
=
Number
((
sorted
.
length
%
2
===
0
?
(
sorted
[
mid
-
1
]
+
sorted
[
mid
])
/
2
:
sorted
[
mid
]).
toFixed
(
2
))
break
break
}
}
case
'variance'
:
{
case
'variance'
:
{
const
mean
=
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
)
/
values
.
length
const
mean
=
values
.
reduce
((
a
,
b
)
=>
a
+
b
,
0
)
/
values
.
length
result
=
values
.
reduce
((
a
,
b
)
=>
a
+
Math
.
pow
(
b
-
mean
,
2
),
0
)
/
values
.
length
result
=
Number
((
values
.
reduce
((
a
,
b
)
=>
a
+
Math
.
pow
(
b
-
mean
,
2
),
0
)
/
values
.
length
).
toFixed
(
2
))
break
break
}
}
}
}
...
@@ -131,7 +144,7 @@ export default function Chart({
...
@@ -131,7 +144,7 @@ export default function Chart({
return
null
return
null
}
}
const
datalist
=
transformData
(
data
.
list
,
yField
,
yRule
,
ySort
)
const
datalist
=
transformData
(
data
.
list
,
yField
,
yRule
,
ySort
,
xField
)
const
dataset
=
{
dimensions
:
[
xField
,
...
yField
].
filter
(
Boolean
),
source
:
datalist
}
const
dataset
=
{
dimensions
:
[
xField
,
...
yField
].
filter
(
Boolean
),
source
:
datalist
}
let
defaultOptions
:
any
=
{
let
defaultOptions
:
any
=
{
...
...
src/modules/data/digging/apriori/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -15,48 +15,7 @@ Apriori算法设计需求说明,结构化分析和建模建议
...
@@ -15,48 +15,7 @@ Apriori算法设计需求说明,结构化分析和建模建议
- 业务价值目标(如"提升交叉销售转化率10%")
- 业务价值目标(如"提升交叉销售转化率10%")
2. 特征工程与事务准备
2. 模型输入设计
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| 商品名称 | 转为事务列表 | 核心交易项,用于挖掘关联规则 |
| 品类 | 转为事务列表 | 分析品类间的共现模式 |
| 用户ID(可选) | 分组分析 按用户挖掘个性化购买模式 |
排除字段:
| 字段名 | 排除原因 |
| 订单时间 | 无直接关联规则挖掘价值 |
| 物流信息 | 与购买行为无关 |
(2) 特征处理建议:
事务格式要求:
- 数据需转换为\`[[事务1商品列表], [事务2商品列表], ...]\`格式
- 示例:\`[["T恤", "牛仔裤"], ["连衣裙", "帆布鞋"]]\`
缺失值处理:
- 策略:删除空值或填充(如"其他"类别)
数据降维:
- 是否需要合并商品层级?[是/否及理由](如"合并到品类层级以减少项数量")
3. 模型输入设计
事务数据格式:
事务数据格式:
订单ID | 购买项列表
订单ID | 购买项列表
...
@@ -65,66 +24,11 @@ Apriori算法设计需求说明,结构化分析和建模建议
...
@@ -65,66 +24,11 @@ Apriori算法设计需求说明,结构化分析和建模建议
A456 | [连衣裙, 氨纶材质]
A456 | [连衣裙, 氨纶材质]
参数配置建议:
3. 输出格式要求
\`min_support\`:[建议值及理由](如"设置为0.05以筛选高频项集")
\`min_confidence\`:[建议值及理由](如"设置为0.6以保证规则实用性")
4. 算法实现建议
模型适配性:
是否适合Apriori?[是/否及理由]
若否,推荐调整:
尝试FP-Growth(如"数据规模过大时更高效")
关键参数建议:
\`min_support\`:0.03-0.1(高频商品组合筛选)
\`min_confidence\`:0.5+(保证规则可信度)
\`max_length\`:5(限制规则复杂度)
业务规则过滤:
推荐设置\`min_lift>1.5\`以筛选强关联规则(如"购买T恤的用户更可能购买配套裤子")
计算资源建议:
特征维度>100时,建议先进行商品聚类降维
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述业务问题及目标]
1. 问题定义:[一句话描述业务问题及目标]
2. 事务构建建议:
2. 事务构建建议:
- 保留字段:[字段列表及处理方式和理由]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
3. 关键特征分析:
高频项集:
强关联规则:
4. 模型建议:
参数配置:
\`min_support=0.05\`(筛选高频商品组合)
\`min_confidence=0.6\`(保证业务价值)
业务验证方式:
推荐验证方法:人工审核规则合理性(如"是否符合业务常识")
关键评估指标:lift值、置信度、支持度 `
src/modules/data/digging/forest/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -8,107 +8,19 @@ export const prompt = `任务目标
...
@@ -8,107 +8,19 @@ export const prompt = `任务目标
请明确回答以下问题:
请明确回答以下问题:
1.
1.
核心问题 :该数据集拟解决的业务问题是什么?(例如
:预测用户购买品类、识别高价值客户流失风险
等)
核心问题 :该数据集拟解决的业务问题是什么?(例如
预测销售额、分析用户行为影响因素
等)
2.
2.
因变量(目标)选择 :
因变量(目标)选择 :根据业务目标,选择最适合作为因变量(Y)的字段,并说明选择依据。
字段名:[目标变量字段名]
2. 模型输入设计
- 选择依据:
- 业务相关性说明(如"直接关联用户购买行为")
- 数据类型匹配(如分类问题需离散变量、回归问题需连续变量)
模型预期 :
预期性能指标(如准确率>85%、F1-score>0.7)
或业务目标(如"将客户流失预测准确率提升15%")
2. 特征工程与自变量选择
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| [字段1] | 标签编码/One-Hot | 与因变量信息增益高、业务逻辑相关 |
| [字段2] | 处理缺失值(如填充/删除) | 数据质量达标(缺失率<5%)、分布合理 |
排除字段:
| 字段名 | 排除原因 |
| [字段X] | 多重共线性(VIF>10)、无关变量、数据噪声 |
(2) 特征处理建议:
分类特征:
- 编码方式:[标签编码/One-Hot](如"品类字段需One-Hot编码以保留类别信息")
缺失值处理:
- 策略:[填充/删除/模型内置处理](如"年龄字段缺失率3%,用中位数填充")
异常值处理:
- 策略:[离群值截断/删除](如"销量字段存在极端值,使用IQR法处理")
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
自变量(X):
●
自变量(X) :具体字段名称
字段列表及预处理方法:
●
因变量(Y) :字段名称
[字段A]:标签编码 → 转换为整数类型
[字段B]:One-Hot编码 → 扩展为N个二元变量
因变量(Y):
3. 输出格式要求
字段名:[字段名]
是否需要离散化?[是/否及方法](如"销售额连续值转为高/中/低三类")
4. 算法实现建议
模型适配性:
是否适合随机森林?[是/否及理由]
若否,推荐调整:
尝试XGBoost/梯度提升树(如"特征间交互复杂,需更深度学习")
关键参数建议:
\`n_estimators\`:[建议值及理由](如"设置为100以平衡计算效率与精度")
\`max_depth\`:[建议值及理由](如"防止过拟合,设置为5")
\`max_features\`:[建议值及理由](如"sqrt型特征子集")
\`class_weight\`:[平衡/不均衡](如"类别分布不均衡时设置'balanced'")
计算资源建议:
是否需要特征选择?[是/否及方法](如"使用特征重要性筛选Top 10字段")
验证与评估:
验证策略:[分层5折交叉验证](如"数据类别分布不均衡")
关键指标:[准确率、F1-score、特征重要性图表]
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
...
@@ -117,20 +29,4 @@ export const prompt = `任务目标
...
@@ -117,20 +29,4 @@ export const prompt = `任务目标
3. 自变量选择:
3. 自变量选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
4. 关键特征分析:
- 相关性最高特征:[字段名](相关系数值)
- 高共线性特征对:[字段对及VIF值]
5. 模型建议:
- 是否需要正则化?[是/否及理由]
- 推荐验证方式:[方法名称]
- 核心参数建议`
src/modules/data/digging/fpgrowth/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -15,50 +15,9 @@ FP-Growth算法设计需求说明,结构化分析和建模建议
...
@@ -15,50 +15,9 @@ FP-Growth算法设计需求说明,结构化分析和建模建议
- 业务价值目标(如"提升购物车添加率10%")
- 业务价值目标(如"提升购物车添加率10%")
2. 特征工程与事务构建
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
2. 模型输入设计
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| 品类 | 直接使用 | 核心商品分类维度 |
| 颜色 | 直接使用 | 影响购买组合的因素 |
| 材质 | 直接使用 | 商品属性关联性分析 |
| 优惠类型 | 直接使用 | 购买决策驱动因素 |
排除字段:
| 字段名 | 排除原因 |
| 订单ID | 无业务解释性 |
| 用户年龄 | 非事务型特征 |
| 交易时间 | 与关联规则无直接关系 |
(2) 数据转换建议:
事务格式要求:
- 将数据转换为\`订单ID→[购买项列表]\`的事务格式(如\`订单A→[连衣裙_红色_氨纶, T恤_白色_棉质]\`)
缺失值处理:
- 策略:[删除/填充](如"空购物车订单需排除")
特征组合建议:
- 是否组合字段?[是/否及示例](如"将'品类+颜色+材质'合并为复合项以提升规则实用性")
3. 模型输入设计
事务数据格式:
事务数据格式:
订单ID | 购买项列表
订单ID | 购买项列表
...
@@ -67,64 +26,11 @@ FP-Growth算法设计需求说明,结构化分析和建模建议
...
@@ -67,64 +26,11 @@ FP-Growth算法设计需求说明,结构化分析和建模建议
A456 | [连衣裙, 氨纶材质]
A456 | [连衣裙, 氨纶材质]
参数配置建议:
3. 输出格式要求
\`min_support\`:[建议值及理由](如"设置为0.03以筛选高频商品组合")
\`min_threshold\`:[建议值及理由](如"设置为0.5以保证规则实用性")
4. 算法实现建议
模型适配性:
是否适合FP-Growth?[是/否及理由]
若否,推荐调整:
尝试Apriori(如"小规模数据或低维度场景")
关键参数建议:
\`min_support=0.03-0.05\`(高频项集筛选)
\`use_collector=True\`(优化内存占用)
业务规则过滤:
推荐设置\`min_confidence>0.5\`和\`lift>2\`筛选强关联规则
计算资源建议:
特征维度>100时,建议先进行商品聚类降维
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述业务问题及目标]
1. 问题定义:[一句话描述业务问题及目标]
2. 事务构建建议:
2. 事务构建建议:
- 保留字段:[字段列表及处理方式和理由]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
3. 关键特征分析:
高频项集:
强关联规则:
4. 模型建议:
参数配置:
\`min_support=0.05\`(筛选高频商品组合)
\`min_confidence=0.6\`(保证规则可信度)
业务验证方式:
推荐验证方法:人工审核规则合理性(如"是否符合业务常识")
关键评估指标:lift值、置信度、支持度 `
src/modules/data/digging/hierarchical/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -15,136 +15,22 @@ export const prompt = `任务目标
...
@@ -15,136 +15,22 @@ export const prompt = `任务目标
- 业务价值目标(如"通过分群优化营销策略")
- 业务价值目标(如"通过分群优化营销策略")
2. 特征工程与自变量选择
2. 模型输入设计
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| 销量 | 标准化 | 核心业务指标,量纲统一需求 |
| 实际付款 | 标准化 | 反映消费能力,数值型特征 |
| 品类 | One-Hot编码 | 类别型特征需转化为数值型 |
排除字段:
| 字段名 | 排除原因 |
| 订单ID | 无业务意义,唯一标识符 |
| 省份 | 分类层级过高(与城市字段冗余) |
(2) 特征处理建议:
标准化要求:
- 强制标准化:层次聚类对特征量纲敏感,必须进行标准化(\`StandardScaler\`)
分类特征:
- 编码方式:[One-Hot/标签编码](如"品类字段需One-Hot编码以保留类别信息")
缺失值处理:
- 策略:[填充/删除](如"年龄字段缺失率<5%,用均值填充")
降维建议:
- 是否需要 PCA?[是/否及理由](如"特征维度>20时降低计算复杂度")
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
自变量(X):
自变量(X):
字段列表及预处理方法:
字段列表
[销量]:标准化 → 均值0,方差1
[实际付款]:标准化 → 均值0,方差1
[品类]:One-Hot编码 → 扩展为N个二元变量
距离度量:
距离度量:
推荐方法:[欧氏距离/余弦相似度](如"数值型特征适合欧氏距离")
推荐方法:[欧氏距离/余弦相似度](如"数值型特征适合欧氏距离")
4. 输出格式要求
4. 算法实现建议
模型适配性:
是否适合层次聚类?[是/否及理由]
若否,推荐调整:
尝试 K-Means(如"数据规模过大时更高效")
关键参数建议:
链接方法:[ward/complete/average](如"ward方法对球形簇效果最佳")
距离度量:[欧氏距离/余弦相似度]
聚类数量:[建议值及理由](如"通过 dendrogram 确定 elbow 点")
计算资源建议:
数据量>1e4时,建议使用近似算法(如"凝聚聚类替代层次聚类")
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
2. 特征选择:
2. 特征选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
3. 关键特征分析:
对聚类影响最大的特征:
\`实际付款\`(贡献度:32%)
特征冗余性分析:
\`销量\` & \`销售额\`(VIF=8.5,需删除其一)
4. 模型建议:
算法参数:
链接方法:\`ward\`(最小化簇内方差)
距离度量:\`欧氏距离\`(数值型特征适用)
聚类数量:
建议3-5类(通过 dendrogram 的 elbow 点判断)
可视化建议:
绘制 dendrogram 分析层次结构
使用 t-SNE/PCA 降维后观察聚类分布
5. 有效性验证
推荐验证方式:
内部指标:轮廓系数(Silhouette Score)
业务验证:
检查簇内用户特征一致性(如高付款簇的品类偏好)
对比 K-Means 聚类结果 `
src/modules/data/digging/holtwinters/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -24,17 +24,9 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
...
@@ -24,17 +24,9 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
字段名:[字段名]
字段名:[字段名]
- 处理方式:[标准化为datetime格式、设置频率(如'D'表示日)]
目标列:
目标列:
字段名:[字段名](如\`实际付款\`、\`销量\`)
字段名:[字段名](如'实际付款'、'销量')
- 选择理由:
- 业务目标直接关联(如"预测销售额以优化库存")
- 数据需满足时间序列连续性(无缺失或稀疏时间段)
预测步长:
预测步长:
...
@@ -44,22 +36,6 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
...
@@ -44,22 +36,6 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
(2) 数据预处理建议:
平稳性处理:
- 是否需要差分?[是/否及理由](如"存在明显趋势需一阶差分")
- 是否需要Box-Cox变换?[是/否及理由](如"数据呈指数增长")
缺失值处理:
- 策略:[插值/删除](如"用线性插值填充缺失日期")
季节性周期检测:
- 推荐周期:[N个月/周](如"发现12个月的年季节性")
3. 模型输入设计
3. 模型输入设计
数据格式要求:
数据格式要求:
...
@@ -69,82 +45,17 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
...
@@ -69,82 +45,17 @@ Holt-Winters算法设计需求说明,结构化分析和建模建议
2023-11-02 | 514.28
2023-11-02 | 514.28
参数配置建议:
\`seasonal='add'/'mul'\`:[建议类型及理由](如"乘法季节性适合销售额")
\`period=12\`:[周期值及检测依据]
4. 算法实现建议
模型适配性:
是否适合Holt-Winters?[是/否及理由]
若否,推荐调整:
尝试ARIMA(如"存在复杂趋势和噪声")
或 Prophet(如"需加入外生变量")
关键参数建议:
\`smoothing_level (α)\`:[建议值及理由](如"0.3捕捉趋势变化")
\`smoothing_trend (β)\`:[建议值及理由](如"0.1平滑趋势波动")
4. 输出格式要求
\`smoothing_seasonal (γ)\`:[建议值及理由](如"0.4捕捉季节性")
验证与评估:
推荐验证方法:滚动窗口验证(如"每30天滚动预测未来7天")
关键指标:MAE、RMSE、MAPE
计算资源建议:
数据量>1e4时,建议使用\`statsmodels\`的\`ExponentialSmoothing\`实现
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述业务问题及目标]
1. 问题定义:[一句话描述业务问题及目标]
2. 时间序列配置:
2. 时间序列配置:
时间列:\`交易成功时间\`(已转换为\`datetime\`格式,频率为日)
时间列:'交易成功时间'(已转换为'datetime'格式,频率为日)
目标列:\`实际付款\`(连续型数值,需进行Box-Cox变换以稳定方差)
预测步长:30步(预测未来30天)
3. 关键特征分析:
季节性周期检测:
周期:12个月(ACF图显示显著峰值)
趋势稳定性:
需一阶差分(ADF检验p<0.05,原序列非平稳)
4. 模型建议:
参数配置:
\`seasonal='mul'\`(乘法季节性适合销售额增长趋势)
\`period=12\`(年季节性周期)
\`α=0.3, β=0.1, γ=0.4\`(通过网格搜索优化)
验证方式:
滚动窗口验证:最后1年数据作为测试集,每30天滚动预测
关键指标:MAPE<15%(业务可接受误差范围)
数据预处理**:
目标列:'实际付款'(连续型数值,需进行Box-Cox变换以稳定方差)
- 执行Box-Cox变换(λ=0.5)以消除异方差性
`
预测步长:30步(预测未来30天)
`
src/modules/data/digging/kmeans/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -15,138 +15,24 @@ K-Means算法设计需求说明,结构化分析和建模建议
...
@@ -15,138 +15,24 @@ K-Means算法设计需求说明,结构化分析和建模建议
- 业务价值目标(如"通过分群优化营销策略")
- 业务价值目标(如"通过分群优化营销策略")
2. 特征工程与自变量选择
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
2. 模型输入设计
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| 销量 | 标准化 | 核心业务指标,量纲统一需求 |
| 实际付款 | 标准化 | 消费能力关键指标 |
| 客户年龄 | 标准化 | 与购买行为相关(如年龄分层) |
| 品类 | One-Hot编码 | 类别型特征需转化为数值型 |
排除字段:
| 字段名 | 排除原因 |
| 订单编号 | 无业务意义,唯一标识符 |
| 交易时间 | 非数值型且无直接业务解释性 |
| 物流信息 | 与客户/商品特征无关 |
(2) 特征处理建议:
标准化要求:
- 强制标准化:K-Means对特征量纲敏感,必须进行标准化(\`StandardScaler\`)
分类特征:
- 编码方式:[One-Hot/标签编码](如"品类字段需One-Hot编码以保留类别信息")
缺失值处理:
- 策略:[填充/删除](如"年龄字段缺失率<5%,用均值填充")
降维建议:
- 是否需要 PCA?[是/否及理由](如"特征维度>20时降低计算复杂度")
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
自变量(X):
自变量(X):
字段列表及预处理方法:
字段列表
[销量]:标准化 → 均值0,方差1
[实际付款]:标准化 → 均值0,方差1
[品类]:One-Hot编码 → 扩展为N个二元变量
距离度量:
距离度量:
推荐方法:欧氏距离(K-Means默认)
推荐方法:欧氏距离(K-Means默认)
3. 输出格式要求
4. 算法实现建议
模型适配性:
是否适合K-Means?[是/否及理由]
若否,推荐调整:
尝试层次聚类(如"需要层次结构解释")或DBSCAN(如"存在噪声数据")
关键参数建议:
簇数(n_clusters):[建议值及理由](如"通过肘部法则确定为3类")
初始化方法:[k-means++/随机](推荐k-means++以提高收敛稳定性)
max_iter:[建议值及理由](如"设置为300次迭代以确保收敛")
计算资源建议:
数据量>1e4时,建议使用Mini-Batch K-Means加速
有效性验证:
推荐指标:轮廓系数、Calinski-Harabasz指数
业务验证:检查簇内特征一致性(如高付款簇的品类偏好)
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
2. 特征选择:
2. 特征选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
3. 关键特征分析:
对聚类影响最大的特征:
\`实际付款\`(贡献度:32%)
特征冗余性分析:
\`销量\` & \`销售额\`(VIF=8.5,需删除其一)
4. 模型建议:
簇数建议:
推荐3类(肘部法则显示WCSS在k=3时显著下降)
参数配置:
\`init='k-means++'\`(避免随机初始化陷阱)
\`max_iter=300\`(平衡计算效率与收敛性)
有效性验证:
内部指标:轮廓系数(目标>0.7)
业务验证:
检查簇内客户特征一致性(如高付款簇的品类偏好)
对比层次聚类结果 `
src/modules/data/digging/linear/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -11,64 +11,16 @@ export const prompt = `任务目标
...
@@ -11,64 +11,16 @@ export const prompt = `任务目标
核心问题 :该数据集拟解决的业务问题是什么?(例如预测销售额、分析用户行为影响因素等)
核心问题 :该数据集拟解决的业务问题是什么?(例如预测销售额、分析用户行为影响因素等)
2.
2.
因变量(目标)选择 :根据业务目标,选择最适合作为因变量(Y)的字段,并说明选择依据。
因变量(目标)选择 :根据业务目标,选择最适合作为因变量(Y)的字段,并说明选择依据。
3.
2. 模型输入设计
模型预期 :预期模型应达到的性能指标(如R²、RMSE等),或业务价值目标(如提升预测准确率10%)。
2. 特征工程与自变量选择
请分步骤给出建议:
(1)特征筛选标准
●
从数据集中选择适合作为自变量(X)的特征,需满足以下条件:
○
相关性 :与因变量有显著统计学关联(如皮尔逊相关系数>0.3或p值<0.05);
○
可解释性 :符合业务逻辑(例如广告投入与销售额应正相关);
○
数据质量 :无严重缺失值(缺失率<5%)且分布合理(无极端异常值)。
(2)特征处理建议
●
数值型特征 :是否需要标准化/归一化?(如线性回归对特征量纲敏感)
●
分类特征 :是否需要独热编码或嵌入处理?(如性别、地区等字段)
●
交互特征 :是否存在需要组合的特征?(例如广告投入×用户年龄的交互项)
(3)排除特征
列出应排除的特征并说明原因(如多重共线性、冗余字段、无关变量)。
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
●
●
自变量(X) :具体字段名称
及预处理方法;
自变量(X) :具体字段名称
●
●
因变量(Y) :字段名称
及是否需要转换(如对数变换)。
因变量(Y) :字段名称
4. 算法实现建议
3. 输出格式要求
1.
模型适配性 :
○
线性回归是否适合该数据集?若否,是否需要调整(如添加正则化项变为岭回归/lasso)?
○
若数据存在非线性关系,是否需要先尝试多项式回归?
1.
计算资源建议 :
○
特征维度是否需要降维(如PCA)以减少模型计算复杂度?
1.
评估与验证 :
○
推荐的交叉验证策略(如K折交叉验证);
○
需要监控的评估指标(如R²、调整R²、F统计量)。
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
...
@@ -77,18 +29,4 @@ export const prompt = `任务目标
...
@@ -77,18 +29,4 @@ export const prompt = `任务目标
3. 自变量选择:
3. 自变量选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
4. 关键特征分析:
- 相关性最高特征:[字段名](相关系数值)
- 高共线性特征对:[字段对及VIF值]
5. 模型建议:
- 是否需要正则化?[是/否及理由]
- 推荐验证方式:[方法名称] `
src/modules/data/digging/logistic/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -4,7 +4,7 @@ export const prompt = `任务目标
...
@@ -4,7 +4,7 @@ export const prompt = `任务目标
数据样本:[在此粘贴数据片段或上传文件(CSV/XLSX)]
数据样本:[在此粘贴数据片段或上传文件(CSV/XLSX)]
输出要求
输出要求
:
请以以下结构分点输出,确保结论清晰、逻辑严谨:
请以以下结构分点输出,确保结论清晰、逻辑严谨:
...
@@ -25,55 +25,14 @@ export const prompt = `任务目标
...
@@ -25,55 +25,14 @@ export const prompt = `任务目标
[业务意义说明,如"该字段直接反映购买行为"]
[业务意义说明,如"该字段直接反映购买行为"]
○
○
[数据分布说明,如"二分类/多分类分布均衡"]
[数据分布说明,如"二分类/多分类分布均衡"]
3. 自变量选择
3. 模型输入设计
请给出最终的模型输入方案 :
保留字段 :
字段名 | 处理方式 | 理由
[字段1] | [标准化/One-Hot等] | [业务相关性/数据质量]
[字段2 | ... | ...
排除字段 :
字段名 | 排除原因
[字段X] | [冗余/强共线性/数据缺失率>30%等]
4. 关键特征分析
●
相关性最高特征 :
○
[字段名](与因变量相关系数:[数值],如|r|=0.78)
●
高共线性特征对 :
○
[字段A & 字段B](VIF值:[数值],如VIF=8.5,需处理)
5. 模型建议
●
●
是否需要正则化 :
自变量(X) :具体字段名称
○
[是/否]
○
理由 :
■
[如"存在多重共线性(VIF>5),推荐L2正则化"]
■
[或"特征稀疏且无冗余,无需正则化"]
●
●
推荐验证方式 :
因变量(Y) :字段名称
○
4. 输出格式要求
[方法名称,如"分层5折交叉验证"]
○
理由 :
■
[如"数据量较小且类别分布不均衡"]
6. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
...
@@ -82,18 +41,4 @@ export const prompt = `任务目标
...
@@ -82,18 +41,4 @@ export const prompt = `任务目标
3. 自变量选择:
3. 自变量选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表及处理方式] `
- 排除字段:[字段列表及排除原因]
4. 关键特征分析:
- 相关性最高特征:[字段名](相关系数值)
- 高共线性特征对:[字段对及VIF值]
5. 模型建议:
- 是否需要正则化?[是/否及理由]
- 推荐验证方式:[方法名称] `
src/modules/data/digging/svm/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -8,109 +8,19 @@ export const prompt = `任务目标
...
@@ -8,109 +8,19 @@ export const prompt = `任务目标
请明确回答以下问题:
请明确回答以下问题:
1.
1.
核心问题 :该数据集拟解决的业务问题是什么?(例如
:预测用户购买品类、识别高价值客户流失风险
等)
核心问题 :该数据集拟解决的业务问题是什么?(例如
预测销售额、分析用户行为影响因素
等)
2.
2.
因变量(目标)选择 :
因变量(目标)选择 :根据业务目标,选择最适合作为因变量(Y)的字段,并说明选择依据。
字段名:[目标变量字段名]
2. 模型输入设计
- 选择依据:
- 业务相关性说明(如"直接关联用户购买行为")
- 数据类型匹配(如分类问题需离散变量、回归问题需连续变量)
模型预期 :
预期性能指标(如准确率>85%、F1-score>0.7)
或业务目标(如"将客户流失预测准确率提升15%")
2. 特征工程与自变量选择
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| [字段1] | 标签编码/One-Hot | 标准化/One-Hot | 与因变量相关性显著(如|r|=0.5+)、业务逻辑相关 |
| [字段2] | 处理缺失值(如填充/删除) | 数据质量达标(缺失率<5%)、分布合理 |
排除字段:
| 字段名 | 排除原因 |
| [字段X] | 多重共线性(VIF>10)、无关变量、数据噪声 |
(2) 特征处理建议:
标准化要求:
- 强制标准化:SVM对特征量纲敏感,必须进行标准化(\`StandardScaler\`)
分类特征:
- 编码方式:[One-Hot/标签编码](如"品类字段需One-Hot编码以保留类别信息")
缺失值处理:
- 策略:[填充/删除/模型内置处理](如"年龄字段缺失率3%,用中位数填充")
异常值处理:
- 策略:[离群值截断/删除](如"销量字段存在极端值,使用IQR法处理")
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
自变量(X):
●
自变量(X) :具体字段名称
字段列表及预处理方法:
●
因变量(Y) :字段名称
[字段A]:标准化 → 均值0,方差1
[字段B]:One-Hot编码 → 扩展为N个二元变量
3. 输出格式要求
因变量(Y):
字段名:[字段名]
是否需要离散化?[是/否及方法](如"销售额连续值转为高/中/低三类")
4. 算法实现建议
模型适配性:
是否适合SVM?[是/否及理由]
若否,推荐调整:
尝试线性SVM(如"高维稀疏数据")或核技巧(如"非线性边界问题用RBF核")
关键参数建议:
\`C\`:[建议值及理由](如"设置为1.0平衡分类边界与误分类惩罚")
\`kernel\`:[linear/rbf/poly等](如"非线性问题推荐RBF核")
\`gamma\`:[建议值或'auto'](如"RBF核时设为'auto'或网格搜索优化")
计算资源建议:
是否需要降维?[是/否及方法](如"特征维度>1e3时用PCA降维")
验证与评估:
验证策略:[分层5折交叉验证](如"数据类别分布不均衡")
关键指标:[准确率、F1-score、AUC-ROC(二分类时)]
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
...
@@ -119,20 +29,4 @@ export const prompt = `任务目标
...
@@ -119,20 +29,4 @@ export const prompt = `任务目标
3. 自变量选择:
3. 自变量选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表] `
- 排除字段:[字段列表及排除原因]
4. 关键特征分析:
- 相关性最高特征:[字段名](相关系数值)
- 高共线性特征对:[字段对及VIF值]
5. 模型建议:
- 是否需要正则化?[是/否及理由]
- 推荐验证方式:[方法名称]
- 核心参数建议`
src/modules/data/digging/tree/prompt.ts
浏览文件 @
2bb9afe4
...
@@ -10,103 +10,19 @@ export const prompt = `任务目标
...
@@ -10,103 +10,19 @@ export const prompt = `任务目标
1.
1.
核心问题 :该数据集拟解决的业务问题是什么?(例如:预测用户购买品类、识别高价值客户流失风险等)
核心问题 :该数据集拟解决的业务问题是什么?(例如:预测用户购买品类、识别高价值客户流失风险等)
2.
2.
因变量(目标)选择 :
因变量(目标)选择 :根据业务目标,选择最适合作为因变量(Y)的字段,并说明选择依据。
字段名:[目标变量字段名]
- 选择依据:
- 业务相关性说明(如"直接关联用户购买行为")
2. 模型输入设计
- 数据类型匹配(如分类问题需离散变量、回归问题需连续变量)
模型预期 :
预期性能指标(如准确率>85%、F1-score>0.7)
或业务目标(如"将客户流失预测准确率提升15%")
2. 特征工程与自变量选择
请分步骤给出建议:
(1) 特征筛选标准:
保留字段:
| 字段名 | 处理方式 | 保留理由(满足以下条件) |
| [字段1] | 标签编码/One-Hot | 与因变量信息增益高、业务逻辑相关 |
| [字段2] | 处理缺失值(如填充/删除) | 数据质量达标(缺失率<5%)、分布合理 |
排除字段:
| 字段名 | 排除原因 |
| [字段X] | 多重共线性(VIF>10)、无关变量、数据噪声 |
(2) 特征处理建议:
分类特征:
- 编码方式:[标签编码/One-Hot](如"品类字段需One-Hot编码以保留类别信息")
缺失值处理:
- 策略:[填充/删除/模型内置处理](如"年龄字段缺失率3%,用中位数填充")
异常值处理:
- 策略:[离群值截断/删除](如"销量字段存在极端值,使用IQR法处理")
3. 模型输入设计
请给出最终的模型输入方案 :
请给出最终的模型输入方案 :
自变量(X):
●
自变量(X) :具体字段名称
字段列表及预处理方法:
●
因变量(Y) :字段名称
[字段A]:标签编码 → 转换为整数类型
[字段B]:One-Hot编码 → 扩展为N个二元变量
因变量(Y):
字段名:[字段名]
3. 输出格式要求
是否需要离散化?[是/否及方法](如"销售额连续值转为高/中/低三类")
4. 算法实现建议
模型适配性:
是否适合决策树?[是/否及理由]
若否,推荐调整:
尝试随机森林/梯度提升树(如"特征间交互复杂,需集成学习")
关键参数建议:
\`max_depth\`:[建议值及理由](如"防止过拟合,设置为5")
\`min_samples_split\`:[建议值及理由](如"避免过分割,设置为10")
\`class_weight\`:[平衡/不均衡](如"类别分布不均衡时设置'balanced'")
计算资源建议:
是否需要特征选择?[是/否及方法](如"使用特征重要性筛选Top 10字段")
验证与评估:
验证策略:[分层5折交叉验证](如"数据类别分布不均衡")
关键指标:[准确率、F1-score、特征重要性图表]
5. 输出格式要求
请以以下结构分点输出,便于模型生成清晰结论:
请以以下结构分点输出,便于模型生成清晰结论:
1. 问题定义:[一句话描述]
1. 问题定义:[一句话描述]
...
@@ -115,20 +31,4 @@ export const prompt = `任务目标
...
@@ -115,20 +31,4 @@ export const prompt = `任务目标
3. 自变量选择:
3. 自变量选择:
- 保留字段:[字段列表及处理方式]
- 保留字段:[字段列表及处理方式] `
- 排除字段:[字段列表及排除原因]
4. 关键特征分析:
- 相关性最高特征:[字段名](相关系数值)
- 高共线性特征对:[字段对及VIF值]
5. 模型建议:
- 是否需要正则化?[是/否及理由]
- 推荐验证方式:[方法名称]
- 核心参数建议`
src/modules/demo/chart.tsx
0 → 100644
浏览文件 @
2bb9afe4
import
ReactECharts
from
'echarts-for-react'
import
{
useDataFieldQuery
,
useDataQuery
}
from
'@/hooks/useQuery'
interface
DataItem
{
[
key
:
string
]:
any
customer_gender
:
string
brand
:
string
sales_volume
:
number
unit_price
:
number
}
interface
ProcessedDataItem
{
gender
:
string
[
key
:
`
${
string
}
-
${
string
}
`
]:
number
}
export
default
function
Chart
()
{
const
{
getFieldName
}
=
useDataFieldQuery
()
const
{
data
:
{
list
=
[]
},
}
=
useDataQuery
()
const
xField
=
'customer_gender'
const
yField
=
[
'sales_volume'
,
'unit_price'
]
const
labelField
=
'brand'
// Get unique genders for x-axis
const
genders
=
Array
.
from
(
new
Set
(
list
.
map
((
item
:
DataItem
)
=>
item
[
xField
])))
as
string
[]
// Get unique brands for series
const
brands
=
Array
.
from
(
new
Set
(
list
.
map
((
item
:
DataItem
)
=>
item
[
labelField
])))
// Prepare data structure
const
processedData
:
ProcessedDataItem
[]
=
genders
.
map
((
gender
)
=>
{
const
genderData
:
{
[
key
:
`
${
string
}
-
${
string
}
`
]:
number
}
=
{}
brands
.
forEach
((
brand
)
=>
{
const
item
=
list
.
find
((
item
:
DataItem
)
=>
item
[
xField
]
===
gender
&&
item
[
labelField
]
===
brand
)
if
(
item
)
{
yField
.
forEach
((
field
)
=>
{
genderData
[
`
${
brand
}
-
${
field
}
`
]
=
item
[
field
]
})
}
})
return
{
gender
,
...
genderData
,
}
})
const
option
=
{
tooltip
:
{
trigger
:
'axis'
,
axisPointer
:
{
type
:
'shadow'
,
},
},
grid
:
{
left
:
'3%'
,
right
:
'4%'
,
bottom
:
'3%'
,
containLabel
:
true
,
},
legend
:
{
show
:
true
,
data
:
yField
.
map
((
field
)
=>
getFieldName
(
field
)),
},
xAxis
:
{
type
:
'category'
,
data
:
genders
,
axisLabel
:
{
interval
:
0
,
},
},
yAxis
:
[
{
type
:
'value'
,
name
:
'销量'
,
position
:
'left'
,
},
{
type
:
'value'
,
name
:
'单价'
,
position
:
'right'
,
},
],
series
:
brands
.
flatMap
((
brand
)
=>
[
{
name
:
`sales_volume`
,
type
:
'bar'
,
yAxisIndex
:
0
,
data
:
processedData
.
map
((
item
)
=>
item
[
`
${
brand
}
-sales_volume`
]
||
0
),
label
:
{
show
:
true
,
position
:
'top'
,
},
},
{
name
:
`unit_price`
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
processedData
.
map
((
item
)
=>
item
[
`
${
brand
}
-unit_price`
]
||
0
),
label
:
{
show
:
true
,
position
:
'top'
,
},
},
]),
}
return
<
ReactECharts
option=
{
option
}
style=
{
{
height
:
'100%'
}
}
/>
}
src/modules/demo/routes.tsx
浏览文件 @
2bb9afe4
...
@@ -10,4 +10,8 @@ export const routes: RouteObject[] = [
...
@@ -10,4 +10,8 @@ export const routes: RouteObject[] = [
path
:
'/demo/button'
,
path
:
'/demo/button'
,
Component
:
lazy
(()
=>
import
(
'./button'
)),
Component
:
lazy
(()
=>
import
(
'./button'
)),
},
},
{
path
:
'/demo/chart'
,
Component
:
lazy
(()
=>
import
(
'./chart'
)),
},
]
]
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论