QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2000|回复: 0
打印 上一主题 下一主题

搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2022-9-7 15:33 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错, j" M8 s1 ]  y) n1 \: D6 `0 q% B

    : w1 O' _, y! A5 r可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。& ^4 X/ F" G7 l1 p6 `' c& M
    , n# x: N  A% t( |
    下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
    7 k, g: S: N0 V
    & S$ y# E1 I1 H, m1 O/ O9 P6 \1. 确定目标,准备数据
    # S5 A; o5 o) g8 I# V  i' U! a: ^建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。# o$ L$ P. Q7 Z% O# F+ [

    6 u1 W& y$ c: P% C" q# A" g, h历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
    . x) g; ~8 E( g$ }0 w! F2 L! v" [  _& b+ m. {+ q
    首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
    / |& a# K' C5 N2 j/ {& E% b1 h3 R- T  i: t* T5 r1 e
    除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。& y6 j1 t1 [0 \0 s* J& B( k

      @' ?4 a  O0 E7 Q* A8 f采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
    ; z7 \% F) p/ u+ P" l% ]* ^. f' [' d7 m$ v' F- ~# o
    准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。: A# a' A+ _. ]3 d+ [/ S3 d& t

    9 M) U# g) k3 [/ T3 r如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。/ A, e0 D7 b+ f1 i: }; H* f: N

      C$ k0 K' v5 U3 V3 v2. 下载软件,配置建模外部库
    6 P6 V/ t' E8 `7 ]1 SSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。9 Y. ~+ q- q+ x) ~# J
    - x7 I, p6 s# ~4 j7 k* T. @
    (1)下载安装集算器(SPL)和易明建模软件
    - X+ Q$ X! O  C: J集算器下载:
    0 H2 {" A# }5 ]% E3 u* y' [“http://c.raqsoft.com.cn/article/1595816810031”
      b( N; R/ u7 l( _) {; I
    * Y, D* ], Z3 o6 Z. j5 B易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
    1 h/ n2 e1 t2 l& e* ~' g7 B+ ?: ?  m" T, ]# c, \0 K
    安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
    . u5 F6 F5 E8 c: O9 ?+ [
    ( L6 L; O+ O' _: u; }; P% `! j  D7 a3 w- F% ]. A) t  D( Q! B
    ' X6 T" c2 A. q+ u* o6 k! T
    (2)在SPL中配置外部库' x( ~) T  M. l
    (a)复制外部库所需要的文件
    / f3 @+ d. G2 x% Z在易明建模的安装目录下找 YModelCil 和 lib 文件夹
    ( X2 T# @5 q7 D' s' o& U
    ( A) a9 |& L0 w$ ~  V7 a
    8 X! Q: \& C$ m1 Z' Y- |: ^1 Z$ T4 U- h0 {8 }) y
    然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。2 C  [1 O8 s# V3 `. z' b% e* L

    : W* o# L7 m) y# b建模外部库所需的文件有:
    * u+ r+ B1 q- G" C  G" q8 F: k! K$ B3 y4 B
    1>易明建模目录的YModelCil中含有以下jar和xml+ B$ N: s" w1 x( e0 Y

    7 O9 w- ?7 G/ |6 b. Pant-1.8.2.jar8 @, Y+ U9 Q8 V5 W- W( X: q
    commons-beanutils.jar
    , t/ k0 K- c- l! y5 y" o, P1 j8 Xcommons-lang-2.6.jar' E" J6 P5 }) Y6 ?+ M1 L( A
    ezmorph-1.0.2.jar
    ' Y2 N% ^8 Q- S* n9 F' ~. ljson-lib-1.1-jdk13.jar. G! s. l4 g. v2 o: O, v
    raq-ymodel-cli-2.10.jar0 ?6 x% f9 H8 [
    userconfig.xml+ g6 O. v' n* J  @( t% H

    7 a; c% e+ z8 G1 q3 \2>易明建模的lib中含有以下jar
    7 x) v6 {5 s0 S1 z2 j7 d5 y8 y1 D- j  x7 h& N5 {: g
    commons-io-2.4.jar
    / C! j- i4 v; W( D1 U3 w$ }3 Qesproc-ext-20211104.jar( l4 z9 x& Q' l! i3 O" g
    fastjson-1.2.58.jar4 b/ ~" H/ d0 `5 P
    gson-2.8.0.jar
    0 V7 E. d" N; z: \( \/ N2 Cjackson-annotations-2.9.6.jar3 s: u; w) c/ J
    jackson-core-2.9.6.jar
    ! X- l8 F8 V6 d  N! O2 Bjackson-databind-2.9.6.jar5 n+ ?: ~: @4 _+ ~
    jackson-databind-2.9.6-sources.jar. W+ k- H8 l; y( x* C" Q4 i* j
    jackson-dataformat-msgpack-0.8.14.jar
    ! u( ?; L5 }; |# u$ Y. I: X: _mining.jar
    4 S6 w4 w6 }. U& a/ F8 `msgpack-0.6.12.jar, y$ \6 n% w% I) C' n
    msgpack-core-0.8.16.jar
    ( L, L. I' t3 P
    6 |3 i' N  \/ y# z(b)设置userconfig.xml文件参数2 ]/ I4 v" l% l
    在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
    3 h) M( k) g+ R4 P3 R7 g5 K+ ]: e  Y
    名称        参数说明
    ; a% k( K  S0 M3 t) X- l/ @sAppHome        易明建模的安装目录
    7 g: R7 L- v1 {9 `7 P% ]0 FsPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
    . Y% C( K+ x* t2 X- A$ x! RiPythonServerPort        Python服务网络端口
    7 h. P. f1 ?! G  ^# z6 iiPythonProcessNumber        Python进程数
    6 X! b- U6 T/ b( v0 ybAutoDecideImpute        是否智能补缺
    8 k& O* X: I  Z0 g) siResampleMultiple        重抽样次数
    ; A$ V9 l4 g' G* w& \! X" V3 }其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
    * S; g8 p1 n) Q+ P- u7 v. s( H$ z8 @" [7 k
    <?xml version="1.0" encoding="UTF-8"?>
    $ w2 o' W8 E5 m0 ~, u% l9 c! D) |. E<Config Version="1"># F7 j2 I+ B8 Y+ W+ o1 c
        <Options>
    3 @; \( B  j6 F- n% m  u( O        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>" q- m6 g" l6 o( p
                    <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
    + {, W2 U* q0 d+ R8 M                <Option Name="iPythonServerPort" Value="8510"/>
    $ G0 V* Z% n( n. \4 C: D                <Option Name="iPythonProcessNumber" Value="2"/>
    ) t* C5 J8 G8 }- t( L              <Option Name="bAutoDecideImpute" Value="true"/>, V' i" i7 I5 e
                    <Option Name="iResampleMultiple" Value="150"/>                                ! q3 I3 v! I0 w$ W" K$ z# L) x
        </Options>
    9 y- w& e# n4 e7 I# @- B/ k</Config>9 a" \7 ^9 B  N: l
    1' _- k& }+ d: X; C: h7 ?6 @
    2
    3 ^+ r9 `6 A0 G3
    4 O1 ~  T% R* N9 V/ w- J+ g6 t4# p% T  O+ E( [0 W2 U/ `) T
    5
    & w5 i" e- P* L& l6
    ( D. I8 `; E) Q0 S" r7
    1 N4 n! c5 X3 m& c( h84 _' |' o( |) d, G$ t4 I
    91 L% a/ P/ {5 A9 b
    10
    / I# d/ A9 c- J11
    ( q: R- J, i, I其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
    % Q) M+ s, @$ r. |
    7 X2 O) s( s9 S: p1 o(c)SPL环境配置
    / b, m5 h+ E/ J1>. 配置外部库
    ; k3 T2 v& K8 S8 x/ [$ E+ h! A$ n8 f# k' v
    打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。! }; Q5 \$ b% h3 [. h/ w, P# e
    ' Q5 m* T) [+ O
    3 d8 b: a. c0 Y9 ]) w
    * L2 \8 n, x- Z8 X
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。( w" ], |5 f( B) S. J- I1 ^

    # h" Z2 a$ @$ r<extLibsPath>外部库路径# `: q1 ?* F% U) H7 t% w  q

    % W/ N+ b, b) I0 A& ?0 g<importLibs>外部库名称(可多个)! V6 [7 g1 g$ j& C! h2 A' s9 Z

    % s$ E7 s' P- w  [# ~( T% {# B  I2>. 线程数设置' h0 W& \+ o! [+ ?# k' M1 P
    : u4 c/ d" k4 C& v* Z( U2 P4 U( S
    如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。/ y% u1 ~. a/ J9 H3 @2 {  |: c: d

    4 f6 J6 Y; h( {, h# m( N
    / B2 `7 O6 d( O- K% ]( a
      }" [5 X. X# M" J( ~' k" G在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。6 w7 a4 P; a, y8 i" I  e

    : R" ?0 x6 U+ }0 S+ x6 t) Z<parallelNum>最大并行数
    . S: _2 |/ e  ]: K! Q/ j! T/ i. \7 \9 K* {
    到此,环境配置完成。  H0 C. S3 M9 \3 y

    $ s9 Z! x, j7 c0 c: N: V/ S# G3. 建模和预测
    / M) Z) ]( M' ~8 Q1 G2 ?$ ~(1)加载数据
    ; E0 U# o1 Q$ n" Q; w. hSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    9 E% ^6 x* `7 ?& t8 r/ W/ W3 T/ H. n/ ?# X, W* {4 B
    设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
    . ^4 Y! f2 q' ^8 p2 v! G. `7 G3 N
    2 r* V( p1 ^  v: k- t& p2 [) Y
    5 b4 \+ O8 s; K4 V, `& E) w8 t7 m2 S) w/ f4 Q! h/ L, \
    文件命名为bank-full.csv;
    # I2 e; O& K: f4 t/ J7 x
    8 x+ C7 ^7 {( `& _) X8 OA
      A; L) j+ }4 U+ ?1        =file("bank-full.csv").import@tc()7 I. r8 @: ^! T2 W# _& c' T5 L
    2        =ym_env(), ?! N! ?) l8 z1 d5 [
    3        =ym_model(A2,A1)
    * Y" B7 U6 g, R. f! U8 fA1 导入建模数据,读成序表# a5 i2 j# R! |2 N2 \
    & m3 h  D  K! D! L/ w/ Y/ {

    . E4 p9 X4 m2 D  f
    . t3 H- ~; ~  g( s$ e( d7 p4 t0 XA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
    6 R+ h8 D# S0 v( ^: W
    . ~% b/ M( V0 W; S, }$ V) i+ HA3 加载建模文件,生成md对象3 b) D4 p( Y+ @8 r
    7 d; O5 {, C% a2 A: _) R0 I* |
    (2)目标变量设置和变量统计
    ( u7 I+ {1 e6 _& S6 t" O% p# g数据加载进来后要设置目标变量
    ( R: k" A5 A" q0 Z% Z& f& A
    6 B8 _9 n1 U7 s0 cA# o9 _" d0 l7 Z/ o; f$ [* }
    …        …
    # R6 |. A: d" S/ `- S# L4        =ym_target(A3,"y")
    3 I; D3 p' {7 A* b& R. V5 x' ]# r5        =ym_statistics(A3,"age")
    : y/ U& Q) o; A. m. [# W+ G6        =A1.fname().(ym_statistics(A3,~))
    5 u3 F3 g2 v% |( s0 u3 k2 wA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
    1 V0 H, I( m  {- Z, k, t" D
    6 i* R8 k5 `0 r6 f9 B: XA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。" r+ |" k. c7 s) n

    * R$ j5 c3 E5 M* p/ R' j$ P8 C6 \& E0 h

    * n7 x; ^7 F/ q, y/ c+ R- xA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
    ' P$ }2 d/ N, G' C- ^9 A& G- L- p1 ^5 V4 }* G+ [0 v
    5 t7 u5 G6 |! E
    ( e+ C- X; o; E" N/ b8 P
    (3)建立模型和模型表现0 K: g: g# ~* a* q# a
    A
    % F: H  G( [9 S0 s; ?' K- ]* O. }…        …! a% c4 G4 d- L0 P" \; |3 u- K
    7        =ym_build_model(A3)- Y# {  Q8 k3 e; {
    8        =ym_present(A7)
    6 O6 d. p" W+ n# V  E. G9        =ym_performance(A7)
    2 f7 W' i5 S; r/ w7 G, a10        =ym_importance(A7).sort@z(Importance)/ ?/ w% N4 I7 [6 b
    A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    ( U# O. m  j, b' E7 l2 V+ J  B0 S
    模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
    - u0 e, R2 ~+ U6 C0 J5 `7 }1 Z7 q* K8 k" g8 f. Q7 {
    A8 返回模型AUC值及参数
      {& W% k6 r. h  Y# C9 b' i
    - ]+ f; f1 H/ X% Q
    5 k# F! d8 Y- g. D) h/ p- p
    4 c: Y0 s* p6 X( A5 AA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……' z9 R4 Z. t3 _/ ~% H

    9 ^: o0 ?7 w! ^. D; }' R: g) A' ?% f" W" |1 y

    ; Q* l% ?' N6 m  D  G( _比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
    # k6 }/ v- R( K- [0 k. z' h$ Q
    ( k5 H. G$ E; ~. m5 j: O# A  F% b! |! A

    3 c+ o2 w9 @* M+ B5 JA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。
    7 b7 B, g7 L3 W- p. b- r! a! ]% ~$ d* S4 l6 C% ]0 S+ f

    $ }- J6 f. c& J6 B& R: g6 y4 t. C
    (4)保存模型- r7 L. A0 P- K# e4 Q' o
    A
    & x6 o4 B* F8 I9 |, E3 t- ]…        …4 H6 S: F) }( }: u6 B: ?' c
    11        =ym_save_pcf(A7,"bankfull.pcf")
    0 L) m4 G6 B4 c/ F0 I4 ?5 f: u, j12        =ym_json(A7)
    / V: T7 c2 n& C( D' j, D( F6 e13        >ym_close(A2): c' z* Z# _: s! j- y5 G
    A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
    3 f+ [4 P! V7 d( k+ W1 W# R) R/ o
    7 r# `9 C1 I7 {1 J) X, aA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
    3 W+ u; A) \, }. [0 S6 Q( [5 ~# r' R" d$ C* A
    A13 关闭环境,释放资源。
    & N# A/ k' J1 l1 A6 u0 k, n
    " x9 K: g, {6 ?4 y. N% i' G(5)预测" t! i( ^: L4 ?/ n. q1 V8 l
    预测之前需要有pcf模型文件和预测数据集
    ' p+ q0 Y6 ]8 A5 i! l0 T! z1 N/ m+ T: F% Z" P, v7 Y
    A. S5 t! U9 B  U. L) v& z! S, Y
    1        =ym_env(): n8 t6 M. a7 l. `
    2        =ym_load_pcf("bankfull.pcf")
      ?. J! S( T* l, a. B! \3        =file("bank-full2.csv").import@tc()
    ' N" a! ]0 u- [$ N: k9 u; b4        =ym_predict(A2,A3)
    4 ~' D: y' E! o7 [5        =ym_result(A3)/ V9 _% U( D* R, {! [" [0 Z
    6        =file("bank-full_result.csv").export@tc(A4)7 e0 N9 t" \/ y) K0 g+ v
    7        >ym_close(A1)
    4 o) ~9 @; S* G3 |A1 初始化环境4 i$ P6 W) X5 Q. @
      u4 O- {5 ?, D. t$ ]; n! L' p
    A2 导入pcf模型文件,生成pd模型对象。7 [% K+ g5 j" V: y5 r
    " b# W0 ]2 A( J2 x0 y
    A3 导入预测数据集,读成序表
    ) T% ~4 I9 c2 H' U5 C
    6 Z: |8 P3 \6 [0 }A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)$ y$ N/ I: l8 \1 c& \1 J2 c

    4 w  [: @7 g$ X# OA5 获取预测结果
    5 {' p+ s! M* \" J0 u$ s% g3 P, [! J) P% n
    A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
    ; ?7 [1 n* L: A' f- s, l
    ) ?' ]" o$ K1 F. s, f7 Y7 ^
    % a+ i0 i1 W' H( DA7 关闭环境,释放资源: E" N6 V9 W3 I5 D& A4 n3 Q
    + O1 o+ }+ g, z7 {3 h# d0 l' u' y
    4. 集成调用! @" z1 b: ~/ U5 f. n% ~7 W/ _' ^+ Y
    SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560  R- s& W3 v6 L

    % i, [! D! k% R$ o; L+ _总结& `% ^7 Z# F+ N$ g- X
    使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
    + W  E  ~" E5 ?2 s2 f0 c
    . J" x) k/ u, n" WSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。: Z/ t, }, }4 u7 G( H. U4 T
    ————————————————2 ]* o9 e1 z; R; N
    版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    " _& l- }8 F# q' F. t原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
    ; p! i% k- I! `3 I
    2 u1 O- ], S- G4 v- G
    . L/ a+ A9 r7 |
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-21 15:54 , Processed in 0.431366 second(s), 51 queries .

    回顶部