QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2113|回复: 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 也不错
    # A8 W3 O; @- V9 H" V8 U* z' F, g7 K! w- B/ n$ e3 A  L
    可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。! o* P5 y% l! T+ f  G
    8 g3 k+ i: T' l' N: _# f
    下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。0 R. h4 S8 R+ t/ A2 B# ]; G
    * ~; K0 L% d% x$ E3 o
    1. 确定目标,准备数据# z- X( b1 ?0 i4 u$ N
    建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。' ?4 {/ ?$ Z# g" c" @5 A
    : z% J0 L5 p% m: G" Y3 t
    历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:$ w+ r5 V. f5 l0 \+ ?  `' p

    7 B+ V/ S5 x3 j5 w首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。0 m& M: E9 v9 o" ]

    4 d+ A2 j# z* P  H. X除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
    5 Y+ e6 g# U' c: T, D
      Z( x9 X0 j) w: u# f4 H3 E采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
    ) a' S* {# d; p" [, [7 i8 v
    + i0 I" P- p8 {$ j; r准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
    2 V" ]4 |" h: E" R+ |0 r& `7 H2 F. W
    如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
    , ?- W+ a  ~1 L+ _( ], Y' ?# m( e7 j- Z5 l1 @, `' D6 f$ M) G
    2. 下载软件,配置建模外部库
    6 h1 w& Y. I& ]. M/ x& L, aSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
    ' Q  {" d! m, {' B1 H$ n& D& H8 e% M# N0 d3 y8 u& G* U
    (1)下载安装集算器(SPL)和易明建模软件
    / i' n: B& Q" D- p集算器下载:
    # x7 E8 o6 h7 p( b2 F“http://c.raqsoft.com.cn/article/1595816810031”
    ; D8 R8 x; k. Z7 w- U6 N5 J: L) x9 w2 D
    ' \4 u+ d! U" h" x# z9 v易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”: d6 O( L1 f* \1 Z! p# P# c! P

    4 Q) F' O( t0 p. i! s3 J5 L安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
    ; H5 u# `+ a0 m
    / T7 z- |) f( t! E! e* b+ ]
    * L9 V$ L5 p) p# {3 C+ s: V, ]5 S& Y& {5 n
    (2)在SPL中配置外部库
    + _( k0 L. u# q( ^# ~5 C(a)复制外部库所需要的文件+ m! o* o' g! N8 j
    在易明建模的安装目录下找 YModelCil 和 lib 文件夹6 d) H6 |1 f1 I# t4 \" R) B
    4 y# R/ P$ Z9 m7 H" d, b( M

    9 G" \' F: l1 d, Q6 C1 t, U* N5 P8 ]) S
    然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。2 M. L' A  W5 K, F

    7 k( z- D7 y' b. X8 q5 {7 Q8 z9 c; ]建模外部库所需的文件有:3 e3 @5 ?- U6 J. Z; f. ?+ e

    % k1 r! r) [- f* _% ^  H. M1>易明建模目录的YModelCil中含有以下jar和xml+ c' e: t9 C/ y1 S3 I
    ( [! s0 `$ ?, j
    ant-1.8.2.jar
    , j+ E9 k6 A% icommons-beanutils.jar
    $ D4 F! W% V4 [1 h; H6 A* U5 Ucommons-lang-2.6.jar
    3 l; w% W, T8 mezmorph-1.0.2.jar- A" |+ d% C, K( f% t
    json-lib-1.1-jdk13.jar1 D& }0 \+ @! |; U0 s
    raq-ymodel-cli-2.10.jar; |: u5 ]  R0 r& S/ l
    userconfig.xml
    ; [+ ?9 V& m% p4 ^6 J* ^
    % Z/ e4 m7 k: C  v6 D3 f2>易明建模的lib中含有以下jar$ r$ r, J: n( C+ Z
    + |) A4 N$ e, O9 ~  [) r
    commons-io-2.4.jar2 g8 f- z, t: o# ^/ @4 k
    esproc-ext-20211104.jar
    - D* B4 q+ I3 w: x* W' s9 E1 Cfastjson-1.2.58.jar8 r$ i6 l7 d7 l# l) ^5 Y2 j
    gson-2.8.0.jar
      v8 y& D3 N$ m7 {: _0 t2 Mjackson-annotations-2.9.6.jar
    ( X. [2 M/ K. b) \6 p5 R) o3 kjackson-core-2.9.6.jar
    ) J, q7 n+ S& _$ x7 S2 ]jackson-databind-2.9.6.jar" T7 Q1 r8 p. J# e  F( P
    jackson-databind-2.9.6-sources.jar- k; i7 u1 i, t& H# I, z+ U, x
    jackson-dataformat-msgpack-0.8.14.jar$ k$ A: w9 \1 P3 ~, R1 ^* D: Z
    mining.jar: n+ w9 O) n& B1 S# v
    msgpack-0.6.12.jar
    " ?4 `# s/ {& w: v+ nmsgpack-core-0.8.16.jar( ^* l" d( ^, d8 b( o
    1 B( O6 l) l" F$ J7 N7 q' T/ s
    (b)设置userconfig.xml文件参数/ U, W- w3 g- V
    在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数" d# _4 r! F% x
      ~  h' N  O* N3 }0 @
    名称        参数说明# N6 }* B/ A' u
    sAppHome        易明建模的安装目录
    - F( N+ R, `2 esPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
    ! G( I4 X' e0 h2 L+ _/ s% S$ u* OiPythonServerPort        Python服务网络端口0 k' f( J/ J4 S. q0 _7 P
    iPythonProcessNumber        Python进程数
    6 w8 ~/ Y. p( C' e$ ~9 |9 R4 a! ObAutoDecideImpute        是否智能补缺
    ( u  q1 t( G4 j# k1 w: JiResampleMultiple        重抽样次数
    $ X3 n7 O" O, G7 K其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。$ B' t! N* Z- Y) H
    : S7 g4 q) [- j: b- h8 J6 W; R
    <?xml version="1.0" encoding="UTF-8"?>4 G& D, |* \# [" `9 h9 M* ]
    <Config Version="1">1 g, G" a" w1 Z7 u
        <Options>/ j6 b( V4 T5 l
            <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
    ( q6 P7 x+ ^: Q3 U$ j- ?                <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>) _, M- M8 Y' e) t, @" v
                    <Option Name="iPythonServerPort" Value="8510"/>. c4 q; A$ n/ r" x
                    <Option Name="iPythonProcessNumber" Value="2"/>/ z4 o/ c0 ]% q; U( `" _
                  <Option Name="bAutoDecideImpute" Value="true"/>
    & N. L/ A1 s$ |  n) D5 N1 Q& J                <Option Name="iResampleMultiple" Value="150"/>                               
    ; Z; J$ M2 u% h/ i5 n( X! ]    </Options>7 `. T; D' w( R- a! C
    </Config>
    - N2 ^9 k% ^. T& L! a7 ^, }13 _! i. n0 X9 w* M
    2
      K3 N8 l$ d! c6 U3# V+ N3 v" ]4 ?# J* p
    4
    - F6 L* T# }, p5) l% w! I( j5 `7 g6 I; @
    6% N0 x7 ~0 @! l7 n; p( ]+ i
    7% ]0 f# m. Y: @" V
    8
    $ W0 a# {- X, {; [( e7 |0 ?, ]9* w7 Z3 c1 M2 S& o0 w. J
    108 n& f; q3 {2 c* @. Z! J0 k( I1 z
    117 G2 A+ T, x, d3 f7 \! y3 f6 q
    其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。7 p0 d! c* ~* w3 J/ i/ ?1 u

    & S0 P6 X8 `# P& ?6 A% h(c)SPL环境配置& P, z4 l) u2 L( C% H$ |
    1>. 配置外部库" c6 e/ o: x1 p1 @1 }

    0 D* M' y$ y% l) C打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
    - R( K; }- u9 i
    ' I: F! m4 }7 B& u! m$ h
    0 j* J$ ^" `8 M& f6 P
    ! {; C2 r' q" D5 z7 M3 `在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
    - Z- u0 |& Q3 M3 V  L# s6 O- b! Q' q6 j: n
    <extLibsPath>外部库路径
    & X! Q2 B! G% M  X* U/ _7 D1 B) ~- G0 b! b1 M; x2 c
    <importLibs>外部库名称(可多个)
    ; I& v$ X" b0 l( l' x3 _. a7 f" z; L
    7 l# S, N6 f* E2>. 线程数设置. B3 n1 C+ G% E0 u1 u; p- ?

    : W  K) a4 k- D) l如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
    + L! r" y, l0 k3 ]$ k
    " I* k1 ^; F: P; X/ s' o" d) a5 H7 q. Q4 m

    " K  m9 U2 {' h- q+ G) _3 |在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
    $ Q8 i1 S7 w0 [; u4 T/ ]7 U! n: W7 g. ]
    <parallelNum>最大并行数* f2 h) N4 S/ B; O1 L. |! V: j
    / ?& ~4 e% G" ^2 H0 k) G# ]! ^8 X
    到此,环境配置完成。3 N& X1 b1 g: M# r( d
    . S# G; q- Q5 f3 I+ s
    3. 建模和预测
    1 ^, o7 Y/ i: r. b  R; t(1)加载数据* k  a. d; n5 X! M7 Q
    SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    2 \3 H2 `* b0 X* k% H1 g: a/ _  y# q( x, h# T; t! M
    设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。4 F8 u/ ~" n4 K6 F- A( v) w+ \
    1 A" Z/ y7 W. d
    3 y; `$ ]; R4 U1 E, j

    ) S; u+ E9 {9 ]1 T3 E* x8 p# U文件命名为bank-full.csv;
    ' }0 |3 `4 d# y  o( R1 E% K/ x0 {+ p' x9 h/ d- d6 z
    A- s& d& Z% X' |$ N* m2 ~! `, {5 |1 \8 X
    1        =file("bank-full.csv").import@tc()2 m# F3 O9 p9 X) \! W+ |5 u& Y
    2        =ym_env()  _6 F4 ]( N( @* U
    3        =ym_model(A2,A1). p$ o8 B$ ?. t) R6 o
    A1 导入建模数据,读成序表
    ! T+ j. r7 ?! k9 r% B) n5 j3 M6 a

    / \1 e" i8 _( p0 p/ E3 @9 N, z
    ) f. {' X) }1 E0 U# _- B0 L4 AA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。) H$ q; s5 h) n! k

    1 m6 ~/ V9 c# K( E8 p- U9 s$ LA3 加载建模文件,生成md对象) |8 r$ t9 f+ F3 z) t  v$ I
    + \4 O+ X2 S6 z9 J" U
    (2)目标变量设置和变量统计
    3 k$ x3 j6 k, c- f数据加载进来后要设置目标变量" ~+ j1 w! ^0 l9 d: j7 E

    # N! r6 S9 j' T6 {( d6 KA- b, U+ w# Y, t# K' z9 ~
    …        …
    & M1 V1 X$ Q1 k0 _4        =ym_target(A3,"y")$ h4 f2 O; J% y* a( ]! r
    5        =ym_statistics(A3,"age")
    : u9 G( s  d2 x: g# t* t) P6        =A1.fname().(ym_statistics(A3,~))2 X3 w' J' @6 h5 V; W4 z1 v# v
    A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
      u* G* `$ ^- H& F
    * ^8 f2 ^' b4 AA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
    $ [1 H4 D5 X' q2 w/ x1 P3 o/ D- ^' N* k3 J2 Q
    6 F, _5 x; X$ U2 [, D* f7 ~
    2 m: N/ s% y- U. ?" P. ^! }5 C
    A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
    ; c; `4 |8 x- g) n% V, d' Z
    6 V: Y, ]* J+ u: V7 m; Y
    # G( V8 [# p( A: t! f
    / C/ G. G' g: K(3)建立模型和模型表现' @- Q  q0 T: [3 o
    A' Y' X# b, |' L
    …        …
    / G8 D% f4 c9 a0 I' w% w7        =ym_build_model(A3). |+ z8 W/ @7 K6 R6 C% L  g/ K- e
    8        =ym_present(A7)- v: x* M: T' p6 `( o& y4 `
    9        =ym_performance(A7)
    0 M- o0 p9 ]; J% @4 m  ?8 n% ~10        =ym_importance(A7).sort@z(Importance)
      E- U2 f0 O4 x/ f& VA7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    $ }5 g3 p- F/ B4 D4 Q& A9 B- N* A0 d0 [
    模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。7 @7 i4 |, I6 S  r7 c% a# A

    ( `3 l: D0 ~1 I3 o9 b  ^, DA8 返回模型AUC值及参数
    ; i, f, m4 m! q2 R
    1 N6 S- X$ y( c0 p; T
    % ]' ~2 P9 C, W4 {/ ^6 k6 \
    ( k  ~. G8 C1 x5 |: D; RA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……/ q9 I- G9 ?* Z; f
    + r+ C) Z9 S! N$ [

    $ Q% Y/ J  Z9 ^; m4 m" k
    4 ]' f3 s" s- A  i) ?' O比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
    0 Q1 i0 R( O8 Q) @! q, t$ K* s8 f! ?. S* @! L/ L$ A) J

    % Q. f( `  P" P' c; R  }- p# c/ A' @- Z5 m0 a
    A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。! G+ e3 d, A/ p1 l5 y5 N# @

    7 g. }8 \6 P. z$ L
    4 I8 W- B. p! A7 ~8 p5 }  i, @
    * |; U( G6 V7 B/ e: {8 [! I% X& U, A(4)保存模型% F* C3 e2 R9 _; |2 Z* j
    A' \  P1 u7 `% G  r
    …        …1 D$ e& }; n3 m& g: F8 V2 d
    11        =ym_save_pcf(A7,"bankfull.pcf")( V3 u+ c% [/ z' M
    12        =ym_json(A7)/ W8 J, F* f* u, Y' R( f' X
    13        >ym_close(A2)
    6 w5 D& W7 x: I0 t7 F. TA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。7 \: Z+ w( y- `7 j4 e& Q- Y
    + B) C) \+ g6 U, g7 o0 f3 o' J7 T# T
    A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》+ w5 g- \, @/ C9 u+ S" @/ f
    ( ~& |' o1 m! C7 j; S% I
    A13 关闭环境,释放资源。
    ( @- o* b7 h0 T) o* f8 |
    + v! S& @) C5 L9 }: i" Y( K(5)预测$ ^. n4 e) @& Z- s# g1 H
    预测之前需要有pcf模型文件和预测数据集
    % l" `5 [7 ^& s2 }4 h$ B2 ?, i% {4 S# D" C5 ]7 k2 o( c
    A
    ; p3 Z# x9 d+ c; H- L5 U6 a1        =ym_env()' B2 q5 N  z) R- h/ S5 k9 s
    2        =ym_load_pcf("bankfull.pcf")& E  |2 f$ Q3 e% r
    3        =file("bank-full2.csv").import@tc()
    5 M6 j1 m1 i1 I+ m$ Z4        =ym_predict(A2,A3)
    1 t6 t- Z% n' A" K- m; S2 B5        =ym_result(A3)8 T4 U4 p5 Q6 A( b7 ?- O$ s
    6        =file("bank-full_result.csv").export@tc(A4)
      U/ l. S$ k0 C$ U( d7        >ym_close(A1)
    , S: Z5 M* p+ X: [A1 初始化环境# ^% a- p4 v6 |6 y$ E  k" q
    " u& N( |4 _; }( O2 |* v: Y& s4 k
    A2 导入pcf模型文件,生成pd模型对象。
    7 q# r6 z: R+ i1 K& }, h, C9 N: a& o; k1 U. E5 q
    A3 导入预测数据集,读成序表
    2 ?3 x4 q& W. Q" \" _& N8 h' M  K6 ~1 I
    A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)
    8 v, M  f* e' J8 I6 }; d2 Z  b. _/ J+ f; o
    A5 获取预测结果  f: ], ]6 v2 S6 S* b) t+ C

    1 T+ w8 c/ V' ?A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
    . z. Y; @+ J' ]. P& [  v9 j8 M3 {
    2 l6 B5 t% }) a# h! S  Q. g' _( A3 }* `& a0 K4 B  l9 k
    A7 关闭环境,释放资源4 A1 i+ D& x1 L( t; c9 V  }

    2 O3 s2 g' o  i( d6 X2 ~( ~4 r9 S4. 集成调用* R/ ^  `1 Y" i3 y0 q2 S
    SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/16157653465608 I8 B+ S8 w, E3 L
    3 H2 k, q9 n5 e0 J" ?* Z
    总结
    * [+ b# y* |' G; v5 u# t; S' {使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。7 j" C$ o0 e# x. Y6 p& g

    + }6 I1 |0 {4 Z9 `. \( x* b4 bSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。% C# |  f8 _3 Q- F
    ————————————————( ?. h8 d7 A! `( t) a5 J* _
    版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    % o4 [' s- h) ~; U. b- J! @& X& M原文链接:https://blog.csdn.net/weixin_39709134/article/details/1266984622 O) G# S- E' B4 T5 b& m' P, t+ F

    ) r. R+ g3 p( j. {4 }& ]8 N: S9 Y: S5 ]% }1 U) w' R1 l1 d" g
    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-9-14 01:29 , Processed in 2.848140 second(s), 50 queries .

    回顶部