QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1991|回复: 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 也不错
    ! c6 Z3 l, T3 J0 j6 h9 k2 n  x. \2 [5 c( l' o! L
    可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。+ n  q$ k' b, s+ R  U
    9 H9 g" ], w7 J' R9 R  q
    下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。" ]+ I" z8 l5 v$ t& F

    0 }$ ]$ C$ A2 |, i$ X0 _/ R# O1. 确定目标,准备数据
    . e+ T$ V% Y+ V4 F6 d& J  G建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
    % h1 S5 L, P/ A' M: k  p! t! K8 @7 G
    ( m  v( t4 Y8 y5 U; z3 B历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:& d6 [# B# Q0 b  s: _! u, ]
    4 X! W7 ]- x) H9 P* q( O0 v5 O, Z
    首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
    1 f6 N. ^( p; y  I" ?* `
    5 s0 h3 Z( p! y  A, i) L除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
    8 @, L6 V) c4 X* g. k- G5 k
      C: z7 t+ ?! O. D3 n% S! \4 Z采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。' z/ A" e8 m; [! b
    0 y. i  f, q& S( K3 f- O
    准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
    / p$ e5 ], B) g3 r; H4 p
    8 w; V9 t6 T9 A! [" Y3 ]8 w; {如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
    9 i$ i9 \' G9 F  d5 `  \! s* R
    . i$ k4 s. A: E2. 下载软件,配置建模外部库, \0 z- a, A* u/ i7 G
    SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。" p5 f: p& J2 J' H! ?9 h
    - t/ E: N5 }) I$ v1 t
    (1)下载安装集算器(SPL)和易明建模软件" ~* L- }5 Z- Z8 r) S, D; X( x" |
    集算器下载:5 W" ]& ]4 ?& A
    “http://c.raqsoft.com.cn/article/1595816810031”& h, M" q& V# S% h, B3 i. U
    : b( g; z4 o8 r8 r
    易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”& h1 X( t8 q! P8 B
    4 N  s9 K8 V- P! X2 M; T
    安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel( Y. e2 v2 b- |7 d. a/ \1 @) K

    * _$ I6 a: M- S$ Z& ]4 }0 N0 p0 I% J2 q8 t6 s9 Y0 _
    4 ~5 ~& {  Y- f' v% s8 y/ Y9 C& m
    (2)在SPL中配置外部库9 s7 m9 q; c6 F" [0 a  M
    (a)复制外部库所需要的文件" c2 [6 o' l, D* P; A* _
    在易明建模的安装目录下找 YModelCil 和 lib 文件夹
    7 |. {* y9 Y5 J! d: u) \& z; o% c6 u$ r6 d. w; _( E8 h( j
    . _3 {( m: t- r- Q! J' m4 h

    - ^. {; o6 u0 K7 i. V) f: C然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
    3 Y9 U; n: r/ V, B; V6 o
    2 p4 I4 ~- j# D7 @& I9 S建模外部库所需的文件有:7 m8 c" i) Y" s: f' q
      P4 [- b& w  C2 k5 }& S$ }. G
    1>易明建模目录的YModelCil中含有以下jar和xml
    4 U1 s% \' K8 @
    , [- V# ]) A, {3 J8 ~ant-1.8.2.jar3 X1 M( q' E' c- Y$ l9 {
    commons-beanutils.jar
    7 E1 X% Z1 D! R4 lcommons-lang-2.6.jar' t- w2 ~# |& ]. {) N
    ezmorph-1.0.2.jar. O7 k" C4 U, ?$ \# p1 B! l
    json-lib-1.1-jdk13.jar
    $ Z! P: g8 o& w$ {- r, i0 U( f) C. Lraq-ymodel-cli-2.10.jar; K" N) }8 C* r; L
    userconfig.xml
    . T& C* n3 F1 m8 h7 ^8 f0 k+ i* h3 Q  T" w* e& K6 d5 t! D
    2>易明建模的lib中含有以下jar& E$ U$ y5 z1 y4 s0 S* b+ B
    6 `7 ]  F. f, O- K& J$ X
    commons-io-2.4.jar
    0 \4 y" k: t" k# f/ e8 Uesproc-ext-20211104.jar; L& O( T& X: H. l4 J( ]3 N
    fastjson-1.2.58.jar
    $ j/ i% L9 J, }gson-2.8.0.jar) |% S  F6 N* e
    jackson-annotations-2.9.6.jar. D; C% z: V) H5 R
    jackson-core-2.9.6.jar
    ' N! W9 |9 V: t5 w" U/ t' Ijackson-databind-2.9.6.jar
    . x8 N* u6 b' W4 Hjackson-databind-2.9.6-sources.jar
    , G" Y! O' i/ U; I- ^jackson-dataformat-msgpack-0.8.14.jar7 V6 w) c8 F6 ~' O' S2 ]2 w
    mining.jar
    1 ~/ B% E, F, v1 X# K! l% @msgpack-0.6.12.jar
    2 I5 R" ~5 ^+ j3 h3 H5 Mmsgpack-core-0.8.16.jar
    / l; ?, I4 e4 R; s! _
    2 b( d: ^/ @1 Y) D) H(b)设置userconfig.xml文件参数
    / }. X: @  h. W8 j: Z在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
      v# s0 j, x$ y: d8 n5 X% Q& X' E( f2 {/ \
    名称        参数说明
    - J! b/ Q0 N3 L, L# K: ~% H2 A' D' dsAppHome        易明建模的安装目录$ ~6 @+ J$ P# }; l
    sPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7/ I* O# w) t' J
    iPythonServerPort        Python服务网络端口( F; w3 E* m# r8 e* p9 d' u, ~5 k
    iPythonProcessNumber        Python进程数. ^0 ~3 C0 H0 G7 M4 r
    bAutoDecideImpute        是否智能补缺
    . e. X$ I# k, uiResampleMultiple        重抽样次数0 L6 E' w; [4 B9 d
    其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。" A' e: R" S, V; T; c6 K" A

    ) D) h/ r0 y: y; m<?xml version="1.0" encoding="UTF-8"?>
    4 Z4 i; U6 {: d- n<Config Version="1">% k1 C" s* |8 B( Q4 S
        <Options>
    - F) ^$ [1 l3 n( v        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>% s' [3 R; Y8 y2 W7 M' F$ u& `
                    <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
    " v4 m! b( v' u. `9 d9 q                <Option Name="iPythonServerPort" Value="8510"/>
    + E* R  Y. J2 @6 P( @$ [                <Option Name="iPythonProcessNumber" Value="2"/>
    5 d7 q( \$ ]2 [* h9 ?. |9 q. v2 [) q              <Option Name="bAutoDecideImpute" Value="true"/>
    ( \4 C/ Y; Z5 `                <Option Name="iResampleMultiple" Value="150"/>                                . C2 b5 K% W. ?1 Z' g$ ?8 ]
        </Options>
    7 x* v! ^9 s( R! t9 m) j</Config>
    ! q2 m: d0 ]# n: [% y( V1
    ) g$ S, V/ a: Z0 X- `2 h7 b1 M2
    7 ?, k4 F+ n- r& j$ t3
    % f5 ?  r4 B% a' r6 k  o4
    ( u5 P4 Q8 Q* T1 |& R5
    . n9 O6 g) t% H' l( _6( }1 r- l+ E  |: W" [# y9 v( ^
    7
    9 X& K2 q! ?5 X" U: [8
    + Q6 H  Z6 O( X5 y9
    + M9 F: j7 }8 z! D2 h: R5 U7 ~+ L10( e( g' T: r1 L3 h4 H* l! S# i' q
    11
    # q! ?" f3 q9 W+ |9 l其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
    ! f) n* B0 J3 r7 H/ f
    ) n7 e4 S8 W; U(c)SPL环境配置
    : F* X3 ], }" ]& ~% j1>. 配置外部库
    % {( h0 _  D1 j, U6 h5 D8 _' |0 E! w! S3 B2 w
    打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
    + i( d! s! j0 y9 ^1 }5 i+ a4 u; [7 E' J# v5 N- _9 A# T5 a2 S

    4 c6 T. W8 v, D  V2 s
    1 K2 R% y* x$ C# h: }' @5 F2 B在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。3 [" N) J/ k3 W) J: N1 R4 `3 L

    * z/ ^3 \" y! i" G<extLibsPath>外部库路径
    6 G7 ?$ w& P' i; y% F1 i, y2 p. B/ R+ D4 l6 y, c
    <importLibs>外部库名称(可多个)
    / N! ]) T4 g' r- l9 Q9 I  v! E8 l4 E3 O$ ^
    2>. 线程数设置0 Y2 s$ B! I+ D4 ]3 _" s, o

    : C0 L7 e& B0 J* ^( e如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
    # i: v' k. I" h; S' G: ]) _- X. F$ y% O  L1 N7 a  I- B
    8 J: W1 r6 L& m) X
    / M, _! `7 l/ p9 y( d
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。; f2 R/ ^6 W, A( \4 p6 n

    * k" H" Z, J- ~% ]: ^' a% J1 H<parallelNum>最大并行数
    ; A- v) ?$ T+ l1 E% C; |+ I" s1 G2 B- {) C
    到此,环境配置完成。
    + W! C+ J7 H+ W1 O
      Q) C+ ^+ G6 X& Y3. 建模和预测& B9 _; D, K8 y# N, f
    (1)加载数据
    6 _7 M. h7 V' X; R' w, p. jSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。6 ~  x2 e: e) B9 ~; u: n& C

    , P, u! f. F% x" z' p设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
    / c! K) Q: u6 m3 \( {! r
    * }7 R8 o: x5 V- T9 P
    4 Q% F% W- L" U& g( f) l# V" x! }+ I+ g# @: O3 w6 g
    文件命名为bank-full.csv;/ _' V/ _$ k( _' A. G* Z3 T$ Z
    ) i- q. y% |& |( D$ Q3 r. n
    A2 d2 w) m9 z% U
    1        =file("bank-full.csv").import@tc()9 t+ O& y6 H. _; F( `" G1 s) E
    2        =ym_env()$ i- @' l4 t( U2 E2 W' O% ~
    3        =ym_model(A2,A1)1 [9 |% u+ b7 Y9 A
    A1 导入建模数据,读成序表$ K& P! X) R& J$ S6 ~& k
    ! y7 p- u4 L$ S$ i/ ^

    + ]  ?$ S- O; `* g) F3 q. g
    & z1 q) I) ~) X! Z6 nA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
    1 _% x8 D! F  P  C. U4 L
    4 H4 A2 V9 f+ {A3 加载建模文件,生成md对象$ F8 p* g9 k  K$ Y1 e7 B$ Y
    7 ~  t& P9 y- M5 L) y: z- j7 `
    (2)目标变量设置和变量统计" D) x- ~' W' ]+ J" ~$ }& M
    数据加载进来后要设置目标变量- D2 v0 e! S5 E0 ?1 Y/ P  n
    ( Z- p4 o3 ~: F1 o! c
    A3 p! s' K: V9 {* m- a* \
    …        …! D- L3 g6 \  g) @" o$ N* A
    4        =ym_target(A3,"y")- f$ Q$ u4 V6 z* I1 b- h1 m: E) \
    5        =ym_statistics(A3,"age")
    , W9 a! |- r4 {( ~$ B6        =A1.fname().(ym_statistics(A3,~))9 r4 p1 `* l9 x& R7 x
    A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。$ A$ v" k' j! H/ x

    2 d9 K4 o+ m! u, ~- lA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。- z6 l9 ?% F, N2 U6 M0 K$ }

    0 x1 l& j9 Y* J+ D; S' o0 M: G
    - Z5 r1 r) _' }8 k! f) k
    6 I+ m% x' w+ r; z7 ~. JA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
    ! l7 r* g$ e0 H+ t/ _
    * G$ X& H9 z1 u
    - J, X4 O6 q! W! O. w
    2 M0 b/ f( m2 b2 F9 t3 S(3)建立模型和模型表现' X1 h9 c7 L" U# H
    A
    ' ]/ K+ g. L5 W; F1 E) P# |4 z…        …+ {  v4 r3 D2 o/ c4 u! K' k
    7        =ym_build_model(A3): @2 u9 G7 O# e
    8        =ym_present(A7)
    7 r) a9 z3 i: _/ {$ @* o1 T  L9        =ym_performance(A7)
    . [! f8 s2 {0 [10        =ym_importance(A7).sort@z(Importance)
    ! p5 x% V8 _' ~' eA7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。/ D) i, d4 l$ |! F% k

    ; q( W' R: F: X5 P模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
    ) [3 r. r0 N4 I4 Q% q9 G* f6 j2 E1 C! J) p
    A8 返回模型AUC值及参数: o* @# O* K: O  Q1 Q+ p0 v6 R

    ( M+ D. t( L* A  d7 N
    9 U# c" K% U: m0 @5 c; B
    2 H5 @. Y$ u! BA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
    3 W5 w8 Z) h8 r7 j: `) {/ a
    ! v! e- S" _1 H7 @1 Z0 \5 x0 O- z* n( [  O
    / b/ R0 M- Y7 D- E+ O6 a" Z
    比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线' S5 Y5 h! |/ }" A
    : _5 x/ g8 c9 i

    * X4 {$ x) }+ F2 n  e: X  f
    " H: A5 {: {* G) N% T+ uA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。1 a, ^) ^1 I9 q9 w+ d. m: U

      i( S/ W) K7 u$ V" J) J0 P' P2 A9 F5 R4 Q! Z8 k4 P4 _

    ' m0 _; o+ y' d+ P- r3 u(4)保存模型
    6 k) u/ N1 T5 B+ k0 V4 f0 v8 i6 XA
    0 |0 E) N) R; a: k1 K7 T8 j8 L…        …
    - y' W- U9 N: x! `, A/ f11        =ym_save_pcf(A7,"bankfull.pcf")
    , _* N7 V* _6 \: t  r: |+ i12        =ym_json(A7)) o- p* w7 A4 @- n
    13        >ym_close(A2): h7 b+ K' i) e' a* D$ J. i
    A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。/ f4 [6 v! _# d6 p& ]& S
    7 @3 Y2 W" V6 }$ J' M
    A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
    . O3 d# {+ ]0 [; m: d: H. a8 j; `& M$ K2 j
    A13 关闭环境,释放资源。
    $ G/ `' r( j! z7 @' `: O5 B, x' w3 G! r& i& b
    (5)预测
    0 R& a5 d1 ?/ ^  h9 j: M. @预测之前需要有pcf模型文件和预测数据集8 J! T# F1 d6 @+ ^
    8 _! \1 Q5 x4 o1 P8 I7 R
    A% c9 x- M: Q8 L# g
    1        =ym_env()
    ' |) K6 N8 ]! y  e/ n/ j8 g2        =ym_load_pcf("bankfull.pcf")
    ) K: Y! t, ]# w- p3        =file("bank-full2.csv").import@tc()
    6 B. b7 \- D: d; O+ E1 h3 x$ S2 \4        =ym_predict(A2,A3): e. k1 J, B, ^" q, X+ M
    5        =ym_result(A3)
    2 x. c' C0 ]2 [2 M( l6        =file("bank-full_result.csv").export@tc(A4)% A: r9 a# n9 G, R2 \6 j8 S
    7        >ym_close(A1)# S# U5 I" O7 Y
    A1 初始化环境& w7 M# i3 _; T- g" [

    & X7 b" @' ~6 p) h1 s5 U3 ~A2 导入pcf模型文件,生成pd模型对象。
    6 j: F+ u) `$ n* f9 N) R! R
    7 q" c* P6 B. t, T& jA3 导入预测数据集,读成序表$ u8 _( b& x. V1 v

    5 I) B, Q& L, Y  H, ^A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)( ]) \6 n. U% ~6 P. v( k( g, \

    * Y0 |# L( O+ E& [$ H! gA5 获取预测结果) [6 f- s  I7 m% u9 P
    1 W" ?: \, @' a, p& ^% x1 v7 r+ x9 Q
    A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
    2 D8 v, R0 o; `, V( R. ?2 Q* }5 r: c* B/ ?2 n- [% _
    0 z! ~9 q: g% F
    A7 关闭环境,释放资源2 F. n, ]8 _' Q& z) A2 A% T# b
      q7 S+ L$ u' q- A5 P' y1 A
    4. 集成调用
    ) o9 X) \, z( h8 b) v  \% bSPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
    5 @- [, `# K, a$ @9 t. o: M/ I* W* X& g( j) Z. g5 a5 {
    总结( o$ d! A* Y7 ^0 P
    使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
    5 Q. ?8 h2 E4 n' y7 x  x2 k+ `; H0 {1 S: W" x0 `2 O" P  O0 n" G  ~
    SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。) a6 H" [# O5 o! W
    ————————————————
    1 X- E; a. }$ f- ~, j2 a( Y' {版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    # A7 t/ L/ @4 H: K原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462) b0 o1 M& w5 p" D
    0 s4 G3 Z8 M3 [, G* Q$ f
    8 R- A4 Y% ^# @2 V: I
    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 07:29 , Processed in 0.434918 second(s), 51 queries .

    回顶部