QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1989|回复: 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 也不错
    ! Q0 H1 x3 g; Z2 b/ [! ^: t4 P. U! J7 w/ D5 ^/ t' c2 m% ^
    可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
    2 V! K$ ?/ O5 L$ A/ ~0 i: Q( F/ Q" a. B
    下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。9 _5 f7 C$ h8 a3 p
    + Y; g: J1 ?+ x8 y
    1. 确定目标,准备数据
    ! q/ b0 t& T. z1 m建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
    / T) |# i: B& ~4 u& e
    . Y- G5 b) t) a( e6 i' [2 I$ o历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
    # U: b1 D/ }) K; q( Q* m0 D
    4 o0 n% U1 y& R: P$ J首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。7 X2 v* V7 v0 Y. P+ x# H  j

    $ A. i1 z% C" H0 k除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
    6 b3 I: H! X) U7 Q5 T- K  L+ F! D
    3 u$ K/ u  k& o3 R, A采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。$ Z9 P3 a: ~& ]6 ?/ G
    5 O+ l8 Q1 |! p9 ]  R
    准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。( K  W9 E2 _6 b$ o" l& Z$ L

    6 P. m6 U2 e1 G; A如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。  W5 y. u: N% Y9 d
    ' ^: }, W3 d7 P8 p3 X' c. Y. w
    2. 下载软件,配置建模外部库3 E$ j0 u6 \3 F5 u7 k0 C( W
    SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。: W/ k: H. X. V1 g( i
      G5 k- O- P* m% P
    (1)下载安装集算器(SPL)和易明建模软件, q! h! }8 p$ A' W! q( ]
    集算器下载:
    # @" a2 @7 z5 z; }( {“http://c.raqsoft.com.cn/article/1595816810031”  b+ D) c3 @- @9 V
    + J5 ~3 B4 A6 ?2 V" _) k# k
    易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
    & n# U' N8 y4 K
    " B6 |3 L! M  q* M. b  I, r安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
    8 t. \6 n3 @9 `- g$ X6 z/ C# N/ j- w" \0 w
    + K1 Z- A3 p5 s1 z; |8 T8 k9 c
    / d) K* [! R6 n3 B  o, g
    (2)在SPL中配置外部库
    8 [9 a2 e9 t$ x0 h8 [9 u(a)复制外部库所需要的文件" ^3 i8 k4 k' {5 O5 X  y  [
    在易明建模的安装目录下找 YModelCil 和 lib 文件夹
    & M6 a! I, A( G% a& e2 g; h
    $ L$ T( {9 V; ~  Q% E8 Y) D6 D2 d6 t9 k; R' p

    * j, F& k2 E4 z) J+ Z0 _- u然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。# |+ [' W0 t/ K9 D! E

    . r# L! p% z7 j; J建模外部库所需的文件有:; y5 `& b; y4 r- c; u, M+ M
    7 K# T' a9 K8 L" X, P
    1>易明建模目录的YModelCil中含有以下jar和xml, v% x% x3 H2 V- R# \, n; P$ C! C

    4 V0 K" e3 q5 m) w2 ]1 S8 l6 jant-1.8.2.jar
    $ e3 }( j8 [- g8 fcommons-beanutils.jar
    * b7 t+ x) a9 o: ~commons-lang-2.6.jar
    # I$ y9 q; D! I* p4 ~ezmorph-1.0.2.jar
    : d8 v! P6 O+ i; w$ u5 [json-lib-1.1-jdk13.jar0 X+ T; p) I& ]8 `
    raq-ymodel-cli-2.10.jar
    3 O5 x8 k" B* r# \* ~userconfig.xml
    7 l# v1 A* h+ n( `' ]$ a
    3 h" T/ p5 [" M! u* p0 u2>易明建模的lib中含有以下jar
      O& C, |6 ~1 |. _! ]0 ^' d  Q
    " U  ^5 D6 j/ x2 n  E3 jcommons-io-2.4.jar
    ( e( N$ f' m6 ?) O* K7 xesproc-ext-20211104.jar
    . C+ \% B# w6 U+ V( _fastjson-1.2.58.jar
    7 E! Q7 ?$ R; ugson-2.8.0.jar
    : N% w2 m* L# R- Ljackson-annotations-2.9.6.jar
    9 Q7 K" g' a- V  J) [- u; Qjackson-core-2.9.6.jar
    2 G/ I' ~6 `  y) [1 U1 I# sjackson-databind-2.9.6.jar
    9 r% V! g# `$ w2 yjackson-databind-2.9.6-sources.jar" u" `" d, U, [2 |2 t
    jackson-dataformat-msgpack-0.8.14.jar9 x  v! J. f4 {2 V% e* }
    mining.jar
    ) Y0 W; W: X& Q' Y. ~3 |1 X; Emsgpack-0.6.12.jar6 l. ~+ [4 U& e. Q: C. V. e
    msgpack-core-0.8.16.jar
    ' [6 L' s, m5 y9 i- o3 h2 H8 p4 e- `) ]) ~% v" O
    (b)设置userconfig.xml文件参数
    - [% c6 r( c4 q2 [( v( O) U6 n4 g2 S在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数$ n6 d3 g6 [" @. K5 l

    , @+ `8 C7 z, }% m) Z/ I名称        参数说明+ a3 ~& Y& @2 p4 S+ A7 [7 ]5 x
    sAppHome        易明建模的安装目录/ R4 O8 Z9 ]& w$ X* C
    sPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
    0 K3 w' ^5 p! U  J8 U5 hiPythonServerPort        Python服务网络端口+ e8 s, `5 R& k) x5 f& Q/ d' p2 E8 e
    iPythonProcessNumber        Python进程数
    - E) g- q' ~' J2 N) E) Q( kbAutoDecideImpute        是否智能补缺+ R# P- |* \3 Y5 G: H; J
    iResampleMultiple        重抽样次数9 G8 `) B6 w  q; u$ _. ]
    其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
    % i/ v# t& }1 F4 B. _7 b% Q
    ! t" e0 ~4 h4 I. C' Q) D% q% x, M<?xml version="1.0" encoding="UTF-8"?>, a! V+ {% g: u' ^/ Q8 p( |8 w
    <Config Version="1">, ?4 @1 {# j0 S+ c
        <Options>
    7 H7 d6 T; H) k+ @        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>3 F. }! d% z+ m! M3 \
                    <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>" r, [8 n! O, d! r" t  E
                    <Option Name="iPythonServerPort" Value="8510"/>
    % N9 O, S' b9 t* x5 V                <Option Name="iPythonProcessNumber" Value="2"/>
    : P9 [9 C) ^5 F. q! j              <Option Name="bAutoDecideImpute" Value="true"/>
    ! k! u; C0 ~  C2 V+ h' F                <Option Name="iResampleMultiple" Value="150"/>                                - r% C: n/ C- g
        </Options>. ~# O+ e# f% p) Z! @5 Q  m! o$ p
    </Config>) u: F  p" O7 B+ H& K7 V) p5 U
    1; w& R6 M# |; T/ [4 O$ F
    29 p" {1 t' H" k2 G& a
    3
    $ r5 T; }" c$ a. |4
    0 \5 o" b& `* M5* S2 H7 o9 i  d4 ~
    60 b* x( Y. Z8 C9 y- B
    7
    1 U5 s1 F% T' L5 s: D" u85 t" M  q6 ~" u9 N0 D
    97 R* y6 Q' W  u9 Q* X7 E
    10
    & S6 j; o$ d5 k- l2 p" t11
    - J$ u# S0 `9 v5 W' o, O% F, n其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。; i  a$ `" ~9 [6 H' [
    + H8 q' ^% U& I# I6 a
    (c)SPL环境配置
    ; f  d0 ^3 J  b8 ?+ C% l1>. 配置外部库' Q& ?  ]2 S; I7 t7 H3 H
    9 K( P, O0 ]/ ?
    打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。8 G$ c4 p/ U) e2 I& N0 n5 o2 ], {' j

    5 _. I) g( }  y5 [. |+ Q
    0 ~6 n' @  L) |! i
    ' Z+ h+ o+ G# U在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。1 l) r% s0 H! P; n# j

    9 n5 h; U( s3 @+ W<extLibsPath>外部库路径
    0 f" L7 \0 V+ O! r! i3 B# L! Z( k$ @
    <importLibs>外部库名称(可多个)
    * U; L* E( ?- u' e: ~+ O+ W+ g7 Q; m# X4 ?! J9 ?/ D: ]
    2>. 线程数设置% B4 m7 }7 g# N7 ^' `) x

    5 `9 s/ P; z% P" C9 C如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。8 p  u1 K* J+ ]
    + I9 a- U: Z5 C9 {) M2 X4 ~8 l

    : n* {0 K: g6 X  D( u* {
    . T2 S, H; ]  [6 |+ Q/ J- v# a在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。0 |6 Y: `. W5 O3 p+ s, `5 O6 I7 q
    ; ~5 M/ o8 P1 P
    <parallelNum>最大并行数
    * A) r* f5 ^. ]) g
    5 H' m! C3 n! }! f; L. O到此,环境配置完成。0 F+ ]) h  _) l3 G& N3 H# Z+ F

    7 ]8 q& g; Y6 s. f1 K, J) v3. 建模和预测4 U) G0 b; R; l0 @+ d  I
    (1)加载数据
    5 ~8 T) k) T# |6 NSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    ! \  n: f% N, H# f8 C' h' U9 t$ d
    4 r3 Y  [+ V+ z! q/ @; `8 @8 c设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。$ Y) m- ^8 o3 M2 S

    . _2 Z9 |& y. U0 [6 F& M8 f2 J* `% w6 ?5 |; j2 U

    2 C* k  r  O' g- G0 ]% Y文件命名为bank-full.csv;9 j8 V0 F" Q" j/ n5 W4 g3 K
    ; c% `3 `7 v. z' a- I5 k6 E
    A. v3 _+ t. w/ p& c5 G
    1        =file("bank-full.csv").import@tc()
      _! c: M& ~" W, y% l2        =ym_env()5 I# E7 m: h' }2 n7 o. |
    3        =ym_model(A2,A1)
    * Y, j- S- c8 x* T+ BA1 导入建模数据,读成序表+ b1 E/ }/ L0 F, H& M

    - M$ j3 Z2 V1 @* v
    % w* C* h, w# Q. D. A
    6 I9 m8 t' b# IA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。- `- K. K# C( o4 L$ N3 y4 S7 l* q' g

    ; Q! {3 Y7 o  B. _' E1 qA3 加载建模文件,生成md对象2 D& R4 p1 X5 z% o1 k8 S
    6 n$ N# l: }6 L# L# i4 {5 t$ n
    (2)目标变量设置和变量统计/ `, o; I/ U/ w( O, P
    数据加载进来后要设置目标变量. P4 v8 c$ _7 C/ s
    ) Y2 X5 H+ o& t/ d' {) C3 G9 E. c( f
    A1 X' c% }; o3 Q9 A
    …        …
    6 B5 D. ~" g& V! P' [: }4        =ym_target(A3,"y"): ?2 k2 n9 k  B0 _6 }. ^
    5        =ym_statistics(A3,"age")
    ) ]3 s5 ~1 H% d; s. k+ t  o6        =A1.fname().(ym_statistics(A3,~))
    $ R- t: O) P2 hA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
    " \2 z# R6 A4 d% s
    - V- w. o4 a6 o. e, bA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。7 M0 [" K& {$ H. m. i1 ]

    $ X2 G2 ?! K; X( Z% _! D! o3 C1 b5 ~0 U1 z/ }+ O9 s# ^4 J
    5 o! R( _4 _5 X4 r
    A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
    ; w/ M: ]6 B1 Q! p" Z! x6 d2 Y$ T* V2 b/ Y$ ]

    * N5 @' J. k, a3 N* O, E  ^. `
    ) q* m: U$ h0 d0 e3 U! X7 J% ~! H- `(3)建立模型和模型表现
    1 {2 c6 Z# j: M4 g# Z8 B4 X! NA1 {2 l$ y1 N/ E) s4 A, C. n  j
    …        …
    : t8 n3 P& d  g  P( d' n7        =ym_build_model(A3)
    ! k/ f) }- _6 s8        =ym_present(A7)2 d, k  z" t/ @
    9        =ym_performance(A7)+ s% [8 X( ^6 J/ e* W
    10        =ym_importance(A7).sort@z(Importance)' D0 e. Q* @$ k  s% O4 w& m/ g
    A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    $ A% ^; [/ c5 X7 j! L; {3 Y
    ) [0 n1 r+ [/ P: r模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
    ! h9 a& T! j$ N8 b8 m9 t: c
    0 V) J# L. @8 ?& y+ P% @9 `% s0 SA8 返回模型AUC值及参数" l6 ]* f' `% E/ d

    " D" v- B2 y; P5 o: I" w
    2 n9 u, u& [2 ^& v
    / c; D8 w7 M2 n4 @& [A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……: o& r1 c; Z8 Z1 ~

      ?( e' t: A$ o  s" l* W
    ) c& v/ J1 l9 c5 P+ O2 S; M# ?4 P
    # ~% I! m% q/ E比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线/ f4 N9 [4 a5 z: H6 j

    % ]* D. `- J0 W. d' n& F- f. t" h+ P# o+ C/ X
    ' }+ |! k3 g; u( u/ j9 E
    A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。
    3 {7 i) p/ c3 `( L) ]- l# @
    4 \3 g" E, U2 @; h' c$ ?* n; c3 X, e8 t7 _6 _+ Q4 `

    ' ?( W. t) }/ c5 b$ v3 Y(4)保存模型% _4 e; f5 }5 o, O/ j! ~
    A
    " t& X6 s. F6 x8 ~1 N- u…        …
    . f/ S6 Q; R7 B- y8 \- g  A2 _11        =ym_save_pcf(A7,"bankfull.pcf")5 A7 Y+ O9 Q/ I
    12        =ym_json(A7)
    5 D1 g& `3 J3 `$ S) O8 c13        >ym_close(A2)7 f; |' @2 b: f* U
    A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。5 p# p% F/ r% Z1 g* `
    + P# q2 Q& o# z% u% O
    A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
    6 Y" ?; ~1 H3 ]% A/ Y( v
    * j" N- Y4 ^, s; u3 R0 V: s4 dA13 关闭环境,释放资源。. H$ s  K8 U# R2 b! F( h4 G( N( r; x

    ! ~' }) j! J# L/ F$ e: F7 T! u" z: v(5)预测
    ' ]" n. c& ]. j9 H1 |# V预测之前需要有pcf模型文件和预测数据集
    / y/ m  K) s+ e( c, [
    3 y# c, b+ g& ^/ `A; P* K# T: w$ g) ?# F; i
    1        =ym_env()
    + X/ R; E8 v* J, Q; T+ x2        =ym_load_pcf("bankfull.pcf")
    : x7 Q+ T$ `' ~+ U+ P( ?3        =file("bank-full2.csv").import@tc()
    6 @/ p: {3 S; ^8 f4        =ym_predict(A2,A3)7 A* R2 R3 C0 O0 l1 \6 x
    5        =ym_result(A3)
    % f8 r3 e8 g2 P" S2 p  ^7 y6        =file("bank-full_result.csv").export@tc(A4)/ K4 C. B7 x# K) G
    7        >ym_close(A1)  R6 x+ u! v; l) s7 }) @) K7 y# ^
    A1 初始化环境/ h3 K. U4 q; j* ~+ {; L( A
    6 \& j" N6 v+ N, p: d
    A2 导入pcf模型文件,生成pd模型对象。
    ) N) G8 b& N! u6 e& u+ ~* _$ J
    7 ~2 n! N: P3 b1 ?! ^# `A3 导入预测数据集,读成序表
    - M2 h4 I$ f! T6 a9 A$ F. C2 c  W
    & C3 o7 \0 P  j5 Z3 aA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)- A& }+ c- B/ U

    8 b3 p& X7 f" [5 _9 P. {A5 获取预测结果
    ) ], q% E& m) l6 }% @7 _% u6 r5 O& j
    A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
    % t$ x9 d2 i( M3 f& _6 e9 W
    1 g0 Z9 x, E+ Y" {' S% H4 l2 q" E  D7 b" i# |5 f/ I9 h
    A7 关闭环境,释放资源$ n* [& C! c5 Q1 n: L
      k! T0 j) t- ^8 P; c
    4. 集成调用
    ( T/ ^! S! J. Y% \1 P; gSPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/16157653465606 E5 U8 r! a0 |) k4 @; t
    1 F5 ^) _) \, U
    总结* |) N/ \4 X* k
    使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。& J' f1 K/ y/ k/ h3 Q  r
    . w% E, a! Y0 L. ?7 x5 F
    SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
    8 K% a+ N) o+ T! j' p7 F) s1 O————————————————
    2 g3 K; O1 L5 E+ k" l2 E版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。/ d0 G( Z7 m' Y: R1 ^% N
    原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
    4 h* g/ H; y6 u7 I  |" k
      ]9 _0 K8 U! h
    . v* \' A! ]! E- }
    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-10 09:50 , Processed in 0.469343 second(s), 50 queries .

    回顶部