QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1992|回复: 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 也不错5 ?1 A" m3 U8 ]2 h8 M& b3 i2 S
    4 K: t; A5 V# [7 m
    可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。! t+ V) L; i4 _5 |2 }  o( o

    " T& T7 x9 x: q' N& t8 Z下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。1 B6 \+ k1 R/ |, S! l2 C

    * h; T/ p5 D% r; s: E( T1. 确定目标,准备数据& U. q  i( W" ^0 Z; p6 D
    建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
      s( Z( G! B  C- y8 J7 ~& M7 W% p  a. w" O% L: w* }* O6 s
    历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:6 f6 v# e$ a$ N! y+ h+ C
    , d  W5 q- j+ t! ?
    首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
    * m1 O3 R, f% l
    ! J8 U4 l& ?: O; Q# T/ {/ f6 d9 L除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
    & x$ Y. I$ L) c. k4 t7 W  l) F: s' b' w0 ^0 u0 c
    采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。; t( l% M: o, F* K: ~# I
    % [2 Q+ {; r3 E6 b& i5 p
    准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
    5 A  {! V5 `+ d6 K# U8 `% @
    3 K# e( [  p, e4 H0 \; Y9 e' W3 C如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。3 i9 a7 q& K* _" ~

    # _9 `% N' n( U. C4 o2. 下载软件,配置建模外部库
    : [8 j" d5 S- HSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
    7 H3 U- o! B% d4 r1 a2 M
    5 I7 A6 f& H6 v7 m! x3 ~- q(1)下载安装集算器(SPL)和易明建模软件( x6 Z: p1 t) W5 d; Z2 q8 p
    集算器下载:
    : n( v) y, E5 d# ]0 h) ?" K  Y) {" N“http://c.raqsoft.com.cn/article/1595816810031”6 L9 \% }6 R) I& u
    ) ?* B: }8 Q( _- g, i! a
    易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”+ K2 ^: o" Q/ H" K

    + \% I) T0 A' l, H安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel5 M5 h2 H1 K) }9 `" ^+ h

      v/ R) F4 @- r. H) e
    ( G3 @* ^5 g$ i0 l, Y4 n2 c7 |1 S
    (2)在SPL中配置外部库
    . }' w) w' f& U) |+ I(a)复制外部库所需要的文件
    ! g4 y3 h6 |0 M  T, p3 ~% U在易明建模的安装目录下找 YModelCil 和 lib 文件夹0 ~& I5 y: S& ?! h8 |
    " A3 ?6 N/ i7 W/ ?" i7 d

    ( B8 E4 y( H6 Z/ U. n- Y) [
    . \% e7 i2 X  x; T3 d0 m( l! }" D然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
    : h5 @, y5 m' u* n9 o5 K% B3 l1 E7 K5 C; }0 y
    建模外部库所需的文件有:
    4 F  r% z$ p8 o! ?1 U
    # X# B3 H) w1 W- c8 Z- ^! Q, ]1>易明建模目录的YModelCil中含有以下jar和xml
    6 S% p$ w+ t8 s. q
    8 `9 w5 z$ r) E5 D4 I# b6 ?! ~ant-1.8.2.jar, Z: J5 _1 V' w& T/ `
    commons-beanutils.jar- A8 Y9 P6 n1 u3 i
    commons-lang-2.6.jar- w8 p6 z& d8 l8 Z) g& f. ?
    ezmorph-1.0.2.jar9 u, [7 k1 e& u& H: l
    json-lib-1.1-jdk13.jar
    4 g  ?0 O+ [9 o9 ]; M/ Sraq-ymodel-cli-2.10.jar
    4 z: A) ?3 z) s! k4 h, v- Euserconfig.xml7 Y1 O, t$ P: m" Y4 J  d  O

    " X$ G0 y% o% j2 i4 x! E: M7 Q2>易明建模的lib中含有以下jar4 z$ Q- T: f6 G. N
    7 ]$ S8 x( h* w. M$ @# J
    commons-io-2.4.jar
    ( h( P; j1 U9 |8 V' L' Nesproc-ext-20211104.jar* ?! A2 y* d5 _! {1 s: Q
    fastjson-1.2.58.jar$ p; w6 q7 J8 G. ?  g
    gson-2.8.0.jar
    ; f/ B; \3 c% D% D& h3 Ojackson-annotations-2.9.6.jar
    $ ^2 Y7 a$ ^2 C+ Ljackson-core-2.9.6.jar) O4 Q  H; T4 |3 t) K  V2 k
    jackson-databind-2.9.6.jar/ f* g2 J' N! u! a* a* R0 J# r$ e7 J
    jackson-databind-2.9.6-sources.jar
    & p* f6 k2 w0 Z* rjackson-dataformat-msgpack-0.8.14.jar
    $ M) }- Y0 R( p' I. W" \0 H5 V0 l. cmining.jar. D/ I6 i, N6 X$ f! M6 z. k  R
    msgpack-0.6.12.jar
    " a. W" P. w9 z( mmsgpack-core-0.8.16.jar
    5 G7 T  b& f4 `% K/ B
    * f! f5 C+ J/ l. W(b)设置userconfig.xml文件参数: l$ e' k# U/ R' t" G* W3 o4 c$ W& R
    在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
    6 {8 Y& l  ]; }
    / A5 k) d0 T4 b1 J- s$ a* @% Q0 u名称        参数说明, r- B9 Y& w, G# C# a. y
    sAppHome        易明建模的安装目录" Q- s7 h1 N. R4 l" V) D
    sPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
    9 G/ a! a- `0 P4 }) T! T& XiPythonServerPort        Python服务网络端口
    ) }( F: ?5 V$ w9 wiPythonProcessNumber        Python进程数8 K! L. f5 T  M/ B1 l5 g) S: n
    bAutoDecideImpute        是否智能补缺3 l& I2 J3 g! o) H! b7 w7 r
    iResampleMultiple        重抽样次数- ?7 v* H( m7 M! g% U$ n6 J
    其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
    # o8 ?( L. U$ W  {7 {; Z6 ?, c% z0 c( |  c* C7 }. k( I7 ?/ X% L3 p
    <?xml version="1.0" encoding="UTF-8"?>
    4 J! p( \4 `( S( d7 I2 F' D% L2 A<Config Version="1">7 \$ g0 u  p0 S) c6 E: A
        <Options>
    2 E+ e- n$ p, d7 \: Q& P. z        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
    2 e: _$ s" l, }# D                <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>& f+ k/ C: I( g, Z6 V) z
                    <Option Name="iPythonServerPort" Value="8510"/>
    3 ^$ Z+ s: c8 @5 }4 _/ W( x                <Option Name="iPythonProcessNumber" Value="2"/>
    . |9 M0 O+ j( L" Q: N5 \              <Option Name="bAutoDecideImpute" Value="true"/>
    ' N* F5 r" T  j3 x. z; e                <Option Name="iResampleMultiple" Value="150"/>                                ! O( Z- t6 M# q& _, m1 m! ~( B
        </Options>
    % j/ U" z0 ]6 u</Config>- C) o1 e2 s% x1 E0 ^3 f6 h
    1" t# d' W. ]/ m
    2, i+ ?3 H2 y8 ]( I
    3* Q8 n4 m7 c" \, C4 q9 u
    4
    0 P8 b/ U, [6 z: Z5
    / n# F! p: Q$ o# U0 M  Z- E4 c- r68 _& [0 u, z/ c7 Q3 m) t2 c
    7
    * s& j$ }6 j2 J$ z' Q8! A$ J: ^4 K5 c; {& J2 l
    9
    2 \0 ]) W0 e# S, |* c. U6 \3 K# }10% J& e$ S* e3 c& X+ N) k
    11$ o( g4 |9 y6 u7 E. s
    其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
    ' I; n) G- g9 ?( P
    * y* B8 x1 m% J8 x(c)SPL环境配置
    3 @6 \2 @* P0 R! M! X& D% G1>. 配置外部库& X1 T7 o5 x  s3 Y/ P! U" }7 R
    / M4 U1 \4 P5 b
    打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
    : ^# `# k. M/ J0 T
    ' M" l/ ?$ i9 q! j
    5 {9 L1 L9 a, K9 D* E* e
    # T9 S* G# L7 j  ~8 F% e- m在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
    . {/ G9 {% h- L+ y" L2 U; R6 u& f+ P. T, K4 n% b
    <extLibsPath>外部库路径) z' O/ u  N3 e4 G+ h# g6 f

    & {6 N3 r, K3 l$ B<importLibs>外部库名称(可多个)
    2 L, L7 c/ R+ [( B9 [! f, n% N% b1 p/ l. C& B
    2>. 线程数设置7 i6 R) {% s* }

    6 N2 D: Q. g" g如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
    ) ?: g6 x) j; v3 \4 S& b! p# L  b- P" D, ~1 t, t- }; F; r( ~

    3 X8 x5 x! e' p( c1 o9 R3 h: e7 s/ e" r/ B
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
    ! c! {2 z/ c+ w) Q
    0 n. k" c6 [5 V& R<parallelNum>最大并行数
    6 M" L, {9 {7 J1 i& Q0 L; U$ N+ _7 ^7 ^2 r
    到此,环境配置完成。
    " R% z" X$ q: ^+ O7 w4 D7 b5 q
    ) `1 _( U4 ?: W. l' R+ O$ i: |3. 建模和预测
      C/ B+ O& h& [! @( B, f(1)加载数据
    2 D  r4 e" m6 i6 h) a; gSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    ' K. v0 e0 M3 L3 v1 {4 m& M- K  ^+ B4 d0 s, T8 h: D
    设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
    9 K/ ~- `$ b4 g6 d, d2 |8 Q$ y' f
    ; y3 k) w. [/ P* \) b* {9 f+ @9 H+ x% Y2 S4 e  H' C0 y  |

    2 z" u, u* `, a, x文件命名为bank-full.csv;$ o' n* c* `' r' `

    * c2 `+ a1 b3 C* xA
    ! h- G4 K2 x) J% g) V9 N1        =file("bank-full.csv").import@tc()
    1 ?, ~- I$ L6 [2 L7 q; f& X2        =ym_env()' z5 o' _7 ?, T6 {8 P8 D- _2 r
    3        =ym_model(A2,A1)
    / d7 ~# M+ D. e. F+ dA1 导入建模数据,读成序表: e% p0 X$ x$ G6 j
    ' z3 _! B8 w# I" |
    * j  \- j: O/ s4 H( y  U5 b
    ' l! c: |* ?# B6 l8 S! ]  X& _% x
    A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。. s$ j% Q6 P" S7 h/ z% x8 g

    7 z: V* I8 L9 DA3 加载建模文件,生成md对象
    7 v! O2 D, N- A- o' h, _$ m
    ; Q2 a! A! c, h6 y$ `# Y  c- Q(2)目标变量设置和变量统计7 z% S6 _. T. R8 w# b
    数据加载进来后要设置目标变量# G$ Y$ b7 x, V2 t: {% H

    7 D# V9 j6 W' f' h! s: F) CA" q; l# C3 t' L# @' Q
    …        …
    ; r$ L3 ^- s$ @+ w9 u( Z4        =ym_target(A3,"y")% ~2 z; ]; b1 ~5 M6 |% a. o% ]
    5        =ym_statistics(A3,"age")9 R2 a+ \& [3 M: y
    6        =A1.fname().(ym_statistics(A3,~))  |4 [7 V0 K5 V
    A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。; u  S4 ^; I, X0 O4 |; q
    5 f2 b/ W5 X6 i( L9 k% W$ h5 N
    A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。& G! Q# t1 X% h; q+ Z

    4 b  V/ A6 R7 Y' t; @  ^. }
    - _/ X6 D: w% G
    7 {, q# C8 i3 G! V9 K8 aA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
    , P3 x7 H& S+ b1 n1 l. O, B( k; K* x
    1 M" J5 E, E+ ?0 n/ @0 u  h( B
    ! m) P9 |5 l2 K) ^6 X, O
    8 q5 U7 R3 ?  _(3)建立模型和模型表现
    ( `% O/ V) p  {A+ K0 }/ F) s( C% ?% Y, C" `
    …        …
    , v7 I  z8 K0 n& C  A- ?, L" _7        =ym_build_model(A3)( J4 l/ k% [. V
    8        =ym_present(A7)  u& B4 S" w( z; ^
    9        =ym_performance(A7)$ s" n" b9 a/ Y, z' ~( U
    10        =ym_importance(A7).sort@z(Importance); O% h( _( T0 }/ x6 z
    A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。# G9 }! b9 c7 n1 P: c! t) T

    ( |+ w  p6 a) H模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。8 s& Y  X/ S) b+ |. m
    - u5 e- P& W8 M) r
    A8 返回模型AUC值及参数
    9 |: w2 w5 |' S, y) d
    ' ^* K9 p, J/ w9 R8 U) \7 y( R, M0 b- d8 u+ E, C& T

    % J3 T: D: p' {9 J; kA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
    3 G& M# M& Q) M8 ~" j5 A0 n
    0 d( s6 Z) `' G* h/ e) o7 z# ?, e! D6 s# }

    $ a) ?* Q$ U( P8 L. E5 c( t4 y比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
    8 N" l# `$ F% V  B6 i) [* I8 V. o/ x/ N* v3 s7 t% u% z
    ' r" X0 M- N4 i0 K/ G. D8 e6 |, b3 z

    " j  ~9 f, S$ iA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。  a1 Q/ S" k& V/ m/ f2 @

    ( n1 S: V7 h3 b) x& C  [- K8 {% x" \0 d" d( y
    ) t0 a9 ^" m: P2 @: G; w
    (4)保存模型/ c7 K/ k9 G8 h& ^3 O( i0 g
    A& V' n/ ?. z" t: h7 @# A3 N' @! M
    …        …2 |# h7 \& j# W; P
    11        =ym_save_pcf(A7,"bankfull.pcf")
    - @/ b  G" P" M' g. Z" K12        =ym_json(A7)# m- x. f7 @7 b- k8 j3 r
    13        >ym_close(A2)
    - ?4 m4 u! s6 R' D! ~* _2 cA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
    8 j) K9 Z- X4 m1 |
    % ?- T2 |4 `; ]) Y4 l6 FA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》2 D0 r, \3 o! U! E) F+ G$ ?
    : H' u6 Y! V& L$ O
    A13 关闭环境,释放资源。
    3 E1 I7 a, x9 ~3 a1 U' g2 W2 k2 F1 N
    (5)预测
      f7 p/ _% o4 ?2 X& S' {8 j预测之前需要有pcf模型文件和预测数据集# \+ ?% u  j7 s! P: T
    / Y8 u4 c5 Z; `5 |- K: Z9 {$ @
    A# i) Q$ W0 L4 |6 d) V" I/ i
    1        =ym_env()
    6 m' B7 {' r/ R$ P9 k1 u2        =ym_load_pcf("bankfull.pcf")7 X5 x7 L% f5 [" y; @+ G
    3        =file("bank-full2.csv").import@tc()
    : K) [4 d0 P0 q- O- A% V7 `6 ~5 I4        =ym_predict(A2,A3)# q/ K& W% o/ g4 F
    5        =ym_result(A3)5 k1 j. R& a* P/ G% B2 A
    6        =file("bank-full_result.csv").export@tc(A4)% l: Z. G" j$ j7 T- P' s  y5 I* f
    7        >ym_close(A1)$ J, p* I; L8 d2 s, V  ?
    A1 初始化环境
    2 H4 Q9 M% ~' E1 n4 G+ E% S
    # L! |% V0 T; w5 dA2 导入pcf模型文件,生成pd模型对象。
    1 u  ]7 \8 T' d/ o# C6 @! |& ~
    2 y4 B* U$ {; s+ vA3 导入预测数据集,读成序表" B2 L* [& b9 O: l

    4 N4 [$ K3 x0 w8 K# zA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”), {! x* b  Y; N7 d' U$ B
    % S8 Q. N* A) _& c3 D3 C5 q
    A5 获取预测结果. q: r: d8 r2 w1 m& A8 j/ g. E7 i

      p2 K8 x  G( i0 aA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。0 V$ o8 z7 p  b. E8 R

    ! ?. z  C" R0 u( g" b8 W+ X; f- M- |& p
    A7 关闭环境,释放资源
    0 t' z' _" ]6 p; k# D0 Y% S
    ( K0 A- H2 `- I: G1 L; Y- O: U1 N4. 集成调用
    # I9 w9 z, K7 mSPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/16157653465608 R3 x+ _1 O1 a0 [+ _4 F4 _
    ! S* u; A+ ~: e9 d% s
    总结5 `; D% r. A( L, p. P
    使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
    ( W8 N3 O$ {/ i; I2 M$ T( ~* J8 p/ R, @+ T
    SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
    3 D2 @$ n0 p) G+ T. ^! |————————————————% I5 B$ `8 G5 [/ _3 }3 _
    版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ P$ r, N1 @! @
    原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
    + c. x. h' O4 w+ D3 B/ M8 U) W( A  G4 X
    " R2 C" j$ z9 e! l
    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-11 09:01 , Processed in 0.430849 second(s), 51 queries .

    回顶部