QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2072|回复: 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 \( p/ P- B

    - v& x2 `6 q; i) R! q- G8 D可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。( c! b/ w" D1 k

    " D! \# I: F: F) ^' H下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。; U+ C" e9 ?- P+ _3 R

    ' C3 u9 w' h( n+ ?1. 确定目标,准备数据
      G- X, X' i$ I" |- Y建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。: g8 E, J8 o7 z3 `0 y) [

    / {9 e$ s. Y; t7 q历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:4 }( p) u' _. Z8 }7 ?
    9 O$ ~/ T: n0 j7 P
    首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。3 K  ]8 S. |# K, n$ o% f

    0 f4 w9 q9 \$ D/ Y* L& ?3 b, o9 H除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。$ x8 g7 t/ y6 q9 d2 @

    4 y1 [$ C$ d: U$ @  X! j' z: u5 w# _采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
    1 [% R( m* Y$ w& c
    0 I8 D/ ]. B" }6 f4 x准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。4 Y- I* b/ V! Z; P3 z6 p* P
    7 b$ o$ v$ Y; \7 E0 U! O2 n
    如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。6 u& ^4 L/ K  d+ C! K- f% `% }

    / y# y7 f6 K5 i, M2. 下载软件,配置建模外部库1 m$ u. h+ f+ y- J1 J" I, b. t- k
    SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
    % C, M/ d% ?8 n4 @8 J7 _$ A' L! b8 G# k/ l# F! r. o$ m  ^
    (1)下载安装集算器(SPL)和易明建模软件+ ]  A9 k& k' h( G! n5 W
    集算器下载:8 Y$ V1 j6 X5 {2 }
    “http://c.raqsoft.com.cn/article/1595816810031”! ^9 P$ D% \$ I( @# A0 [1 I3 s
    4 o0 I/ |* q& ?- e" T4 `
    易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
    ! a1 b& x+ j( K4 W6 S  d) r& {# ?5 f7 }% C$ c3 x1 R. D
    安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
    ) N# q/ _% u. _  y
    ' A6 r5 ?$ n, F( r0 @% F, A1 P' q
      z: S$ ~1 x8 I+ a+ @! X' Q
    & @* a9 z( @7 }. x5 d& Y(2)在SPL中配置外部库
    ) z9 W0 E5 R7 W. W(a)复制外部库所需要的文件! P9 a( W4 K! S  z7 S
    在易明建模的安装目录下找 YModelCil 和 lib 文件夹% P0 t" Y5 ^+ \# ~. [$ N. R
    : C: C) x- l. W2 V# G% F3 B4 N% b

    * X# _0 ]" X) b8 R  u
    + i8 K2 ]" z# Z! ^2 }然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
    " W% v6 t) O& ?! A' D! G, C" g3 F' Q
    建模外部库所需的文件有:" j; a7 u$ t' o, `- A

    $ }6 {2 @) g% K; j) i& n1>易明建模目录的YModelCil中含有以下jar和xml
    2 o0 P& K* {6 H, \9 R, b) ~7 b/ O2 h' e3 Z: C* W. W
    ant-1.8.2.jar* @! Y! V2 w, F* m3 G. h
    commons-beanutils.jar
    , h! M9 J' Q/ R4 ?commons-lang-2.6.jar9 M* T, T. Q: S! ?8 t' ]
    ezmorph-1.0.2.jar, ~' U' U$ m" Q0 _8 l7 O
    json-lib-1.1-jdk13.jar' e  i2 J% Y% O6 q* P
    raq-ymodel-cli-2.10.jar4 d+ t$ o5 @: x. b: @7 g, N9 q
    userconfig.xml* R5 F6 t# L( I  |: t: H2 L( g
    ) T- Y# t7 a7 O3 [6 `0 j- C; @
    2>易明建模的lib中含有以下jar
    0 V' k4 d; u  i
    4 |- A- s3 ^* G; W5 fcommons-io-2.4.jar% M1 [  F! x! l6 J/ G$ n0 `
    esproc-ext-20211104.jar/ r' e- [  b2 _; ^% ^
    fastjson-1.2.58.jar
    2 Y# z; v3 V) C) n9 Y( \& Cgson-2.8.0.jar
    8 h& L. c6 z2 S, _: q, hjackson-annotations-2.9.6.jar$ o! m! A7 [& P6 [/ X
    jackson-core-2.9.6.jar
    ( w, L1 Z4 `# A0 Q& [/ u  \jackson-databind-2.9.6.jar+ W/ Z+ ^$ D  J5 S; `0 \
    jackson-databind-2.9.6-sources.jar
    3 w( Y5 R2 \% Fjackson-dataformat-msgpack-0.8.14.jar4 l2 e( i5 \1 k- ]! r
    mining.jar
    ( j0 K1 H, S: ~! c3 ^" o- ?msgpack-0.6.12.jar0 ^+ ]' Z1 D( J+ g
    msgpack-core-0.8.16.jar
    8 @1 @& P  A5 A8 X' |! o4 Q. i6 Z- r- d! \6 u
    (b)设置userconfig.xml文件参数/ v. a/ \9 P# A" k# }2 n* }8 J: o5 j: x
    在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数2 [8 c5 ]# b% ~+ N$ t0 @1 V

    3 h1 w3 x+ w+ d8 ?名称        参数说明, v4 J) h+ a" E5 o8 v1 A5 h8 v! B
    sAppHome        易明建模的安装目录
    7 \2 |! C3 t, [: m( ssPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
    + a, A; r. f2 |2 y. V- jiPythonServerPort        Python服务网络端口
    * w) k% T/ [$ f# o' ~iPythonProcessNumber        Python进程数
    ( r! Q, D% f1 ibAutoDecideImpute        是否智能补缺3 @) G9 d6 U3 c. }
    iResampleMultiple        重抽样次数
    8 N& t- @) k. \其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。$ \0 j0 S2 g, K! h

    " g3 ]' p5 y+ v; C" ?5 b0 y. p<?xml version="1.0" encoding="UTF-8"?>
    % w0 b9 i+ k( \+ ]. E0 H( o<Config Version="1">
    0 n. J: E8 v: c" F  w    <Options>
    , f1 f: J+ ^. X( h; P+ T        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>2 |! W' p$ A  A% V) p
                    <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>" X- Q! j. ?5 i3 [; F& `
                    <Option Name="iPythonServerPort" Value="8510"/>5 ?' H4 b! D( U
                    <Option Name="iPythonProcessNumber" Value="2"/>! C% M( P6 S! ~
                  <Option Name="bAutoDecideImpute" Value="true"/>4 I# K9 M4 f# }
                    <Option Name="iResampleMultiple" Value="150"/>                               
      ]* `. h* K2 Q( E& u% A' ~% a    </Options>- q8 ?, @% E" x
    </Config>
    8 k1 e$ o, n7 W) Y/ Y# S1) K$ z. b- n6 n6 w% |+ ^! X
    28 B% w: [- F1 ?
    3
    , C+ b6 R  z, b" h43 _( E2 p" L6 g1 T
    5
    , u; K, F5 k; h3 [6
    ' p  J6 t- X! Q( w7$ z+ o* j* ~; c& G
    86 j* X$ ]0 ?' M( F# F' |7 E
    9
    : I- ]$ v  V9 j$ E/ C10
    8 a9 Y2 l1 ]% \! u; J6 j1 ?, W11; }0 l) \5 @7 k
    其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。9 i" x9 [' ]1 k  ^* g% O
    ' i6 E2 Q* Y0 K% t- {
    (c)SPL环境配置
    , {) R+ G, g+ K7 {, _1>. 配置外部库% H  {  A( A/ G6 i$ I

    " n: j. M" j. F9 u, V6 R打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。" N8 M! D9 o; J$ Y( c/ W, o, c2 I3 H, _6 P

    + P# g8 M- Y; N+ \3 G6 M
    2 A; I/ V9 X$ W2 [7 L  j1 F
    ; N: L0 R7 u& t+ q: c) _0 t4 L2 \在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
    9 c  V- @5 K% D4 `4 d2 E  t7 D- a* A2 G! E
    <extLibsPath>外部库路径# n# Q4 ^  Y% c4 L. _- ~

    2 [4 r% J3 u& F7 u3 q6 N<importLibs>外部库名称(可多个)
      @, P% F" I5 V
    0 P" f# k' |# F' E, {2>. 线程数设置4 _3 e- r4 @8 j6 u. H! h+ t" i
    / M4 ]* Z' q" t8 N$ G3 G+ _) K
    如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
    , ~+ j2 Q& h  ^/ a$ ?# _
    / k0 v+ ]6 ~7 U, [
    ' H, r+ z( V: l+ Q: Q' z: C' U# j& W. T; _% d/ Z3 D7 S! Q
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
    # q1 M# p; s' x* I) n$ Y8 m  h& `5 y' V5 \! X% e
    <parallelNum>最大并行数
    0 r8 z0 k( ]. ~5 G, M
    0 x! j# R. u0 Y* e, W* C; A* y到此,环境配置完成。
    * D& D. ?" I0 d) |; t$ T
    ' ^/ F4 g0 k4 v* D7 `3 {3. 建模和预测
    & g! N0 ]' \( j(1)加载数据1 g4 F6 t* V$ k0 E& ~! x
    SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。! k1 O5 ]& U. Q7 J* U) T, x

    # J) W2 P/ |3 x, N1 _: g' q8 k- ^; a设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。" H1 h- E9 e% ^4 n; ~- A
    ( f/ B4 ]- v9 G2 U9 G. t/ Q$ D
    " j' @: i" `) @- z) E: w' T1 d3 |

    ! H# C( s: |: W& i文件命名为bank-full.csv;
    % p/ b* `: N; f, Y* m/ x
    $ u+ w4 ~1 f/ H" BA
    0 ]% t1 @* n1 U7 x1        =file("bank-full.csv").import@tc()8 O8 o+ |$ @% b) t6 y) D! \
    2        =ym_env()
    5 N# B' _; y' w+ O6 m3        =ym_model(A2,A1)/ W9 c: z2 ~: p2 _
    A1 导入建模数据,读成序表
    1 @( C& a. u; R0 a; q! e: f( B: }# L; J* `9 \6 I. g2 j6 o. \4 K
    1 I+ X, {+ R& F. T
    1 W6 `- b+ [5 T. H& r1 G& |& }6 f5 D. P
    A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
    6 j, @' S- d) Z7 W, w7 J4 u( R; n- l1 B' E
    A3 加载建模文件,生成md对象) W7 H6 k3 G$ T2 C/ e% L. t
    $ i! z* ?. K3 ?2 Y% e' _
    (2)目标变量设置和变量统计: A- Z3 Z) m) W
    数据加载进来后要设置目标变量
      k! S; f& D. Q9 ^; h, s6 R6 \
    3 m* ~. D/ y% w$ o3 lA
    5 g* N3 C) W0 W9 }+ l…        …
    2 T1 S- j' C, K6 t9 i' ]4        =ym_target(A3,"y")
    : ?0 g+ |/ s& o5        =ym_statistics(A3,"age")  a" R2 {) D) ?/ J" w& d
    6        =A1.fname().(ym_statistics(A3,~))) \) q  V3 I- H! _9 v& A
    A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
    ; E# I3 l9 N8 b$ e/ r' p4 ?1 v  E( {
    A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
    ) n# ?" d: ]$ r, x( H) x+ h# U$ |7 X" g

    ( V' d$ \/ ~8 c5 H" O  v
    ' i6 C1 i# e: b( I3 ~. U1 v( RA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。  r9 }( c) R6 N+ @
    , ~& I& x* F5 I$ k) @4 r
    ! s2 T' _4 h, o, J+ k, Y/ T

    # G* w0 M- ^( _& c. {3 i) J0 {(3)建立模型和模型表现0 d9 c+ Z% T0 L6 o! F
    A
    + t$ h* }( r% i$ I5 Z) N…        …
    6 J7 Q! |6 ]+ d7        =ym_build_model(A3)6 C+ N, W% P$ \/ C1 ~4 M" g
    8        =ym_present(A7)/ g# [+ z# d( i; z& R  Y
    9        =ym_performance(A7)
    ( E& r! I3 C2 A9 F9 @10        =ym_importance(A7).sort@z(Importance)
    ( ]9 j  M# `8 N; C. h9 y1 ~A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    8 b) w+ O9 L5 t
    ) `' ~' W+ a' d3 V" c% U模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
    ' w8 o2 z6 m4 y5 x* E, J) {8 S& S6 e( Q
    ; B3 B* i3 Z  T$ V  iA8 返回模型AUC值及参数+ a8 F' A+ Q/ F& C$ l

    ' Y1 K9 s) J2 S
    9 }" }/ @; ?. H# t
    ( b/ b" c' d% X8 M3 ^1 L4 l9 M6 QA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……) l. I. {) N( V9 O. Z
    1 e. f( E3 @; V2 l# K

    ! |8 Y# z! I8 r' t  z" p. r0 l4 t& l1 S; C: l  |5 N/ l( T0 w7 R
    比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线, m5 Y" q+ n7 N
    " S8 T3 {* _3 P- ~

    7 t7 V; ~7 l$ a0 U- O2 S/ J: e1 E/ A, b5 A
    * ~' T, d0 T( `, e6 Y: P6 `  s, X1 UA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。0 r) }) O, X$ l! G/ |
    + y9 F+ _3 |* B
    6 V; T+ w# T+ o. k4 ~+ w& a

    6 F6 |  _& V+ f" Z! P1 {/ r1 z, R* j" l4 T(4)保存模型+ v6 {  w. S5 C: k0 Q2 Z  B) p
    A# ~3 [* Z# F: ?1 E6 l- G
    …        …: ]1 B  O  E+ ~: E$ [
    11        =ym_save_pcf(A7,"bankfull.pcf")
    / C- a' g+ E" J* I" v1 W12        =ym_json(A7)" d+ t( K+ T* L, Q5 C- J1 `
    13        >ym_close(A2)
    / a* w5 f5 x, J2 t6 G$ H! m" ]3 \A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。9 j3 j9 l5 |$ ]* r7 i7 l  e1 }4 g- `
    / F6 F  T+ k) h8 C+ ^
    A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
    0 P2 R7 L* I9 N% B2 m5 {
    ( |& @: I8 U0 Y0 h5 ~, nA13 关闭环境,释放资源。
    " x6 W4 n! ~5 q* Q% M. Y; u3 N- C9 F1 e  g$ J9 B' A  W$ ]
    (5)预测
    9 B6 l: \6 M! ]预测之前需要有pcf模型文件和预测数据集
    ' o' b! A7 {& o4 X* j: B8 t$ r2 K  c% }# K- y" h7 ^2 M" \
    A
    8 e7 u+ N  y5 z) z1        =ym_env()8 e1 p+ r5 [8 E# G% R
    2        =ym_load_pcf("bankfull.pcf")" b& Q* ]% X& \4 m9 Z$ p
    3        =file("bank-full2.csv").import@tc()
    - v9 L6 K) A% o4 H. V, R: x4        =ym_predict(A2,A3)
    ; p) F9 I7 B' }$ K; H2 ~5        =ym_result(A3)9 T3 q: x+ _& r9 |6 O, |0 x7 y
    6        =file("bank-full_result.csv").export@tc(A4)% N. m! Y; g0 i; t
    7        >ym_close(A1)3 Z: @) b1 D7 _
    A1 初始化环境# f" c% {  N5 Q$ v6 y2 S8 C: b

    * b  z9 i- q7 ~9 l& ]9 l; hA2 导入pcf模型文件,生成pd模型对象。2 `+ w7 s0 Q& e: p( n6 q9 _
    ' V3 [$ v" U6 Z7 S3 r4 h" T$ h
    A3 导入预测数据集,读成序表
    , P5 Y* ]5 j) V8 h) Q- F$ n4 B2 ~- Z- L: p8 }) p8 b0 `9 n
    A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)+ B& U$ H3 Y8 S* U
    $ q# q0 R& Y: f$ C1 f' P
    A5 获取预测结果
    $ e. F) [! ]: Q" {2 W0 B% q2 S& x9 P9 F: b7 J7 e7 O
    A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。! b( Y- G/ l" S" X6 M5 r- p
    % ~( y, O( N% }. y4 b4 A
    / }+ m' n2 k; P' ~! h9 r
    A7 关闭环境,释放资源6 J) y) ]2 B( s* C# i5 d! [* B
    4 P" b, }( H( J# Y, w0 \0 q! [; T
    4. 集成调用% g6 n" L4 U1 V; v
    SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
    1 ^8 f& h: Y- n2 h) Z
    8 ~0 i/ R/ v5 w* `& \$ [总结
    : g3 K- r$ H* J/ m6 J使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。# C/ g& G  e- ?5 z) G2 ?
    : O. A5 S' ~! i8 {$ G7 c1 r
    SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。$ W5 i# K7 F7 n( ]' X3 Q
    ————————————————" H& t. k$ r, H  x; F
    版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    , [/ Z2 C6 f6 `; g  \原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462+ A5 G% p/ G, _  q9 b
    ! E% y3 E( {" G
    1 i5 G0 G+ Q2 @- f5 K6 f
    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-7-28 18:09 , Processed in 0.433166 second(s), 51 queries .

    回顶部