QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2111|回复: 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 也不错+ y* ]& O: y8 _2 f3 B: z+ W! j1 t6 ^. Z

    8 }$ ?. H, M- `5 A, r2 |可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。: ~' I$ _! s- M% F

    * P1 U3 }4 w9 m  V! s8 Q下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
    ) n& ]9 j: \0 l* W6 Z$ l6 \" B8 k  P
    - o) H3 n) i' X+ K' t1. 确定目标,准备数据$ k2 _# T+ s! L
    建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
    $ [2 O& J# k. s' O$ i
    7 C8 o( l+ Q8 f: k历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:$ c1 K- d. n9 W, L7 x
    0 R  ^+ T: O$ T6 K4 r6 U
    首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
    5 t0 b; Q) c% g1 Q5 C7 b+ b) q8 T# K, \; g- M4 Y! b
    除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
    ; p9 N8 z  s' w3 h# b: R" a2 y& {
    ! r1 a8 S* Z/ a+ n. `9 Y: @1 y采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。9 n8 }, Y( {5 z5 a7 n' h
    2 X6 ?+ X$ h( w4 p% m1 p
    准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。# g" Z) |' _' M! e

    3 ~7 P% \! C8 _5 I! }8 G) x. X如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。+ Q. ]- j! q. [3 l8 I
    5 i2 w+ m2 i9 ^0 j  Q" @
    2. 下载软件,配置建模外部库
    " O0 |4 p9 D7 N/ n. u6 `; F6 _3 ?SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
    8 C$ ^2 s- t: S! ~3 ^7 m7 u, \9 s% N% f/ `3 S
    (1)下载安装集算器(SPL)和易明建模软件% a: I" F' n& u  ]6 o: m
    集算器下载:/ l2 h5 }- d  f$ g  T0 U. @
    “http://c.raqsoft.com.cn/article/1595816810031”
    " x9 Y# G. u1 C7 W8 m6 r' b8 ?  w
      g7 ]1 _: Z/ E3 c6 s易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
    % K6 \% k' T/ j3 Z1 O. i, I% R6 Q, C2 k4 `/ Q* e: B8 R1 E9 r
    安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
    3 t' F. c/ f% e' i. f- V
    6 {% H% d! F. X& y/ m. E/ x( }; X1 F! D$ N& P9 p/ S
    / F, Z! N: Z( j' B
    (2)在SPL中配置外部库4 t, [4 N$ d; @+ s$ K3 @# h! [- f
    (a)复制外部库所需要的文件1 t# I* h1 ]+ \- _
    在易明建模的安装目录下找 YModelCil 和 lib 文件夹
    " @/ e* t5 G, }8 ^( Z$ B/ O% u% y7 q0 H* g: D6 x/ E0 K

    * e4 a1 F4 u2 m" i
    & a+ q: t& J/ t0 ^8 h/ |- v然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。& P" P7 o  ]* u- |0 {
    # c/ h: e5 `" @% R- {0 P
    建模外部库所需的文件有:) S* s7 L" V; A/ X- p
    " ?! P4 y! n2 _( X9 N  N  h) z/ L
    1>易明建模目录的YModelCil中含有以下jar和xml- ]0 a1 A% n9 ?
    4 |$ Q2 m5 |1 y1 ^& _& Q& A* z
    ant-1.8.2.jar
    ; H: w" n9 V5 f! Ocommons-beanutils.jar
    % v4 |2 n1 ~9 E8 ?% ycommons-lang-2.6.jar
    # ]% ]9 j" e7 y3 s2 d* a2 yezmorph-1.0.2.jar, E, a+ U3 o# n8 x; e" m
    json-lib-1.1-jdk13.jar" H3 y, ?/ m- ^: R1 ?# u5 _* }
    raq-ymodel-cli-2.10.jar5 a0 s8 @+ r7 O! G% L! G8 B
    userconfig.xml5 P$ U& R) s' V) [6 W( Y4 Q+ B# b
    6 Y( g2 c) [# B  ^( y/ h! p5 I  f
    2>易明建模的lib中含有以下jar
    9 C& a# R) {. L4 v% c& Z7 [* D+ p* C9 w# H% r9 s) q
    commons-io-2.4.jar% @  n6 ]2 o; i
    esproc-ext-20211104.jar
    & p% o0 @7 ]1 \8 p3 qfastjson-1.2.58.jar
    # u  J/ F. I( `gson-2.8.0.jar5 n' o( X. B9 }
    jackson-annotations-2.9.6.jar
    3 |1 w4 p4 A" {5 _% r9 N6 v, Njackson-core-2.9.6.jar% N* j6 N) J5 p$ T+ Z2 u5 e  ]# {# E
    jackson-databind-2.9.6.jar8 |3 N6 b3 A! _$ O
    jackson-databind-2.9.6-sources.jar
    " }2 r" O/ W9 Ljackson-dataformat-msgpack-0.8.14.jar, @* F  b: Q( l+ s+ i1 ^
    mining.jar! x9 U- o" P) p0 X' N7 X. S
    msgpack-0.6.12.jar/ I: N8 j* G  \/ d) z0 y5 R
    msgpack-core-0.8.16.jar
    + c* t% w. {- e0 d1 g4 I; B1 h1 K, ~/ p& S) l2 Y
    (b)设置userconfig.xml文件参数
    1 k( N, Y5 n# n- u( H5 @在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
    & d9 K) ]' z2 S* S0 E9 b: `- E% s( x& A" B. b% t
    名称        参数说明
    3 S. |( [1 e' Q/ e! y1 AsAppHome        易明建模的安装目录6 H$ r; E7 l: P: y. Z% v" R
    sPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.78 i+ _" [, F2 p3 C* E, ^2 q
    iPythonServerPort        Python服务网络端口9 @2 ?7 K0 ], g4 |) Z# D
    iPythonProcessNumber        Python进程数
    7 \& y( B. Y6 ]: I" F+ CbAutoDecideImpute        是否智能补缺
    ; Q2 l1 D% O: P. B" T* ZiResampleMultiple        重抽样次数
    % D6 ?9 }. c3 N: l* S( V: u$ Q9 k( c* ~其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
    8 o. ~5 O$ h' N
    - ]$ L( I3 E2 ~3 H( a+ y<?xml version="1.0" encoding="UTF-8"?>
    ' v1 [' b- ]# c" j: S6 k  ^<Config Version="1">
    " l/ W, k7 j' L    <Options>9 \! [: s, b" r1 o: @
            <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>, U( H3 u) [+ v* J6 g- H
                    <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
    . S1 M9 V; o# ?, Y. t7 y, n4 z! e                <Option Name="iPythonServerPort" Value="8510"/>
    2 S" Q, i* R* U# |& T. E1 K& G6 V& e                <Option Name="iPythonProcessNumber" Value="2"/>" d& c6 Z/ P: X, C4 Y
                  <Option Name="bAutoDecideImpute" Value="true"/>6 l/ j! c. d+ ]- y
                    <Option Name="iResampleMultiple" Value="150"/>                                . |% q6 v7 g- L4 {6 j
        </Options>
    / K  u( V; `& P  V, F; F/ N</Config>$ V1 }4 [9 X: X& l) R  m" D
    1
    & k+ ^& _  P& K5 }22 z: K0 t+ o+ {/ U' W5 h
    3- j7 J( ?. C, r& k6 j" e6 x' k
    4
    . h0 ^$ c! i( a2 P# s& G/ I4 l# S6 W/ N5
    ) j& M3 U3 y5 N0 h0 f: k, a& T% w6& P% s7 K2 k! W5 K8 a: f% [
    7
    9 e4 y# e% d" ^2 X7 L8% y6 r9 E4 U* u
    9
    0 X# b# n6 O; O$ x8 i2 S101 g( ~3 C; [0 }* v+ I: [8 m, @: g
    11
    * {7 p6 g+ J; B& H+ r" g5 _( N. B其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。. E0 `; }7 h2 u
    1 ~( }9 i! {) B% G: M! Y
    (c)SPL环境配置+ L2 m( k; [) Y- |. [
    1>. 配置外部库' L) R( f( i  a" n1 V6 m
    0 G! F$ W# w0 W# F* c9 _, }
    打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。" ~& c7 t, Q  y, Q8 q) R$ z" H1 L8 z
    , J' U# u; M/ u3 z- ~2 U9 ^" ]1 {  B
    3 Y8 M" H4 e1 o& F1 t
    / Z& _: T9 n1 r$ t( S8 E, m
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。/ y1 F, b  S( x3 D0 b. A

    - c- ?6 t0 c& Q<extLibsPath>外部库路径6 u1 B+ J1 k4 N
    # G* U/ s- n0 Q' F( R
    <importLibs>外部库名称(可多个)
    5 s. ]5 W! X4 j6 i! ]8 c" M7 U, i
    3 C6 d) o! @7 E$ W, U) V' ^2>. 线程数设置
    + b+ v, G) Z4 g4 S+ `; ^( i: ?; i) A% R2 s" Y& P9 m1 i- \
    如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。6 U) Z8 z% v# S& _% h7 @
    ; ]* {6 n& v& g* L, f8 ?
    ! x! q$ e4 K1 q7 L* r
    " a: L0 i2 ^4 r7 b
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
    5 P% G* w$ k* O+ l# M/ w" b5 z0 O, I. \; R
    <parallelNum>最大并行数: g& m2 u6 o; V# ]
    4 `. g/ g, H. h
    到此,环境配置完成。5 v6 C) H7 h6 |

    - Q5 L) R' y' q% C9 @0 K3. 建模和预测) z/ e- Y( d. ]; k
    (1)加载数据
    / J& ]" ]+ T4 v0 X" TSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    - u$ H( C; ]: r" c9 \
    9 A9 B. y: L0 W设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。9 F6 v' p9 L6 s; V2 Y2 G7 y- N: H

    4 c/ U7 D4 M# e, i
    3 a0 y" J9 h* C& H* ~- e$ M- w
    文件命名为bank-full.csv;
    1 v3 B  S! w0 Q
    0 C6 u8 l5 U7 ]$ L0 PA* T1 S: F4 @1 r
    1        =file("bank-full.csv").import@tc(); b1 w- ?) T) c' |
    2        =ym_env()
    3 c7 r+ l  n1 C+ _3        =ym_model(A2,A1)
    ; m! r7 H* O* bA1 导入建模数据,读成序表7 A/ a0 H- n5 p1 X

    , c. g0 q( K3 p4 y6 o
    0 c6 s/ P( K0 F$ b7 w: k" {9 |& y4 D5 a- N$ ~+ z* ?- x: [; i. G
    A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。8 O7 s# E8 t3 D$ _

    % N0 R" i& M) X# pA3 加载建模文件,生成md对象
      e% \2 y9 l" a3 \# `9 e, I$ q! b2 ?. \: p" C
    (2)目标变量设置和变量统计
    & ]3 Y2 s" u# B0 v$ h* v# L数据加载进来后要设置目标变量
    ( U6 ^9 e% ~7 M  E; }1 X/ H2 J
    : {0 n. ?5 l0 ?8 ]# f! e( _A4 u6 i/ o5 g# S5 r9 C$ j7 a$ x
    …        …
    , \; W4 r6 g$ d6 e1 s3 [( _0 b& ~4        =ym_target(A3,"y")* X* d! Q& L3 l* f
    5        =ym_statistics(A3,"age")1 M& m8 b' x& R( {
    6        =A1.fname().(ym_statistics(A3,~))
    ) ~! }9 t% c1 S2 d9 o5 ^A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
    - [" B- I- D: z7 b/ ]
    0 h7 `# p  y* [* k! S0 UA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。. A8 F" g7 |. \

    . r0 Q) Z2 l  A4 Q$ k" r7 g1 f) c% Z3 G% J) F+ W

    7 D3 a% y/ m- L2 wA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。6 M- I/ [: t% K! |( h

    4 J$ B( g% U2 W& ^! W0 |9 X; E6 _. F2 _; x* F

    7 E4 _( X7 Q, ~' J$ Z(3)建立模型和模型表现
    ; @6 M' D9 O4 k7 \% W8 dA
    $ w6 k) A: z0 j2 l3 W! I' A/ x…        …0 C5 V' p8 C8 z8 |- l6 C; o' o
    7        =ym_build_model(A3)6 }/ z2 r- B( {7 C- j
    8        =ym_present(A7)
    ! v5 n/ l( t3 S8 Z" Q% [. G9        =ym_performance(A7)
    # q  u- x: v; L/ \+ O+ w10        =ym_importance(A7).sort@z(Importance)
    & W. n" f3 f6 Q' HA7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    7 }# J+ u3 U; ^0 g
    $ g* u8 u' u+ q模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。5 n' a( M9 E  S, K0 S) E! Q: x( V

    + T9 i$ O) U* l, Q, QA8 返回模型AUC值及参数; D! P/ P7 P2 d8 i+ U! K( q$ `

    5 q1 S# N0 A. ~; f% y/ \
    ( M6 T- [4 `  S$ k4 a1 W# I5 ?3 J# j& K
    A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……  b" |5 t, F, [: u3 J) p2 R
    8 {' N. a1 A( H' s

    2 K- ^$ F% V& D5 y% z7 W8 N- d) P" U6 W+ |$ W) K
    比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
    : E# o. L* N- {7 H# F& f* V, q7 g  H. B# M# ?# l$ q
    ! j/ U" l: E4 s% e1 k# Z
    1 K/ B. o+ h/ T) e' |% ?
    A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。- q% G. @+ s$ V( W! L6 u
    ) K2 P1 ~. D: ?& r- E$ n0 t

    " v$ y$ d7 T) H# X1 m* h6 _( ?" d4 k( M* h; P6 ]  d( a
    (4)保存模型
    9 m2 P. b7 L# Q. I9 dA
    # w% x, n) j! g…        …
    9 s5 K% x* M" e. r# t) d11        =ym_save_pcf(A7,"bankfull.pcf")
    ; K( B8 \, h* \12        =ym_json(A7)2 Q& t5 [' f% N# @% |% N& d
    13        >ym_close(A2)0 c  y$ g' s7 Y1 ~1 y1 ^# E
    A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。# p! |  h2 Z7 z; j8 v

    * p6 \  ^  u- Z: u: p8 ~2 o: jA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》' O+ A' L) }0 p2 N. f
    6 F/ u& @. Z6 D  w+ ~3 m# x! G
    A13 关闭环境,释放资源。7 n9 e$ A3 k- |7 M, |$ i. V4 {' y8 k

    # V2 x  X# H5 z5 W. T) l(5)预测  h- {! Y) a+ |  }+ h
    预测之前需要有pcf模型文件和预测数据集# d7 C; z9 O8 \9 Q1 e
    2 L2 @5 N7 B3 u2 S. \9 N% F' x
    A' ?' N4 V( a+ l# t. Z! x6 L/ M
    1        =ym_env()6 _0 _4 u$ X) J
    2        =ym_load_pcf("bankfull.pcf")0 X6 z. R6 [3 W! k* v$ C
    3        =file("bank-full2.csv").import@tc()& S2 {% j- F( q2 r( h. n
    4        =ym_predict(A2,A3)* u( }6 h, U3 ?" D# g6 [" ^, i, b
    5        =ym_result(A3)9 Z: E" r- H4 y( e4 }+ |4 U
    6        =file("bank-full_result.csv").export@tc(A4)$ M" I( U8 x# t0 y3 s  S& p& m$ e
    7        >ym_close(A1)
    2 t2 i( `+ T. AA1 初始化环境
    ' R" I+ d, C8 u  l8 w
    4 J! O# s8 M# {6 B* }  IA2 导入pcf模型文件,生成pd模型对象。
    9 _* x2 G, N1 G0 z, H3 c+ _& G8 m# J/ S3 @
    A3 导入预测数据集,读成序表0 m) G  e8 p8 o( {& k

    : T" D. P" `3 _) T1 D7 ~* KA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)
    2 y' J6 N/ {( E
    $ p$ i) x& i- }1 B+ v% ?7 UA5 获取预测结果
    $ `1 d+ n7 C7 G; q# x1 e2 {: |0 q8 J* t
    A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
    5 U( r3 @% i  S# D
    1 [% d: x4 c+ K2 R: C/ h- v6 E
      K+ e. b; j: |# S4 EA7 关闭环境,释放资源
    4 f2 u0 q2 l" z8 f5 f5 v/ R$ O/ j9 Y# v6 x
    4. 集成调用+ O1 d& R. e# q' y. d7 }
    SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
    $ w( K+ m6 P3 V/ B& T
    * Z4 o# Z& f1 E2 x$ i! R+ o. ]* X总结
    $ q2 Y; s$ k# P" I! K( U+ i! a3 G3 w使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
    - U) G0 k, t+ j. O4 l! R+ q8 y2 e5 q
    SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
    7 x" J7 m3 z1 X0 _————————————————5 ~, p0 T: M* X1 M
    版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    1 A' ]- D; b0 l/ W" k6 \原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
    , J5 D+ t1 ]/ B  v9 L# @; w& W4 @; c2 s* _( [- D$ E5 Q" V
    ) K; v1 M; l9 h% D: @( z
    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-13 22:31 , Processed in 0.282274 second(s), 51 queries .

    回顶部