QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1995|回复: 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 也不错
    $ T+ B, F1 W8 c0 I$ k% C2 D% \. N! q8 b/ P, U! ^
    可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。8 Y- J4 g/ o4 F2 V2 X" T" m

    5 S# R5 M  A3 |7 S3 `. r7 V. N下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
    # Q" W- m8 ]' v5 N$ ?* ?0 o* Y6 y. a8 f3 Q8 X
    1. 确定目标,准备数据
    $ i+ Q/ @" l6 g# r建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。& Y: K- A8 p. y

    - V" M% V  ?1 n1 ~历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
    2 l* q$ W0 T) y+ m4 h- n0 b
    - B+ b& l0 v# O3 Y3 f+ E$ y首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
    ( k; V; m% Y. o$ |$ D
    6 a+ f2 d5 c) a; \3 z. @2 P' j除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。. B8 T' B- ?4 x# o) l( E. y. {

    6 ^6 p) c5 b0 J& o$ ]& x5 D4 Q/ _采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
    6 W. o& F9 \! o6 d1 E1 V0 }
    4 J) g% [# {; _准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
    7 ^; |3 P$ n! d' m! f$ s9 X; S1 E! p) j8 H
    如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。( D/ U* C, X( v: B

    9 Q& V9 D. Q# M8 U: f: N6 A2. 下载软件,配置建模外部库) b7 M& Q+ O$ U" n2 o) I& I
    SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。# v$ ?- k. x. _9 D1 V( H

    , t; k& Q7 Q8 ~(1)下载安装集算器(SPL)和易明建模软件
    6 A% _. E  y2 y集算器下载:
    - {9 \6 ~9 S' M) {  m“http://c.raqsoft.com.cn/article/1595816810031”
    , b6 n$ b: g7 I* g, D
    9 E( h; `0 N( ~7 y0 k易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”) Q: e4 ?) H/ \9 r, G; F

    # J) ]8 N3 |: h6 @- X+ W: E5 P& f安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel/ j! r/ x+ v& w; {3 j2 m

    0 m1 O' M$ Z: G/ a3 i0 z
    3 y4 Y4 u4 V5 X4 |4 w0 }( b) g& H% ~1 o; J
    (2)在SPL中配置外部库
    5 x  P) v" w  I+ U3 {/ M; i8 w$ {(a)复制外部库所需要的文件
    9 U- c2 v$ ~; C6 b- B! ^8 r9 ]) Z* [在易明建模的安装目录下找 YModelCil 和 lib 文件夹
    7 `* a& Q& S, S) x! I, g, f; M/ P0 ]' ~( ~* Y

    : B" A0 F2 C& Q( i# W) N2 E, P: t% O( N4 Z+ A0 \6 H* N. I+ X7 ~7 E
    然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
    * ^% P! x$ U1 ^7 R/ e+ g. g$ \$ a$ ~" o4 o9 M) N( M
    建模外部库所需的文件有:/ I+ T% d- r0 x& f
    7 i1 G: B0 }/ R3 t( [
    1>易明建模目录的YModelCil中含有以下jar和xml
    " p" F% u0 W% ~) e0 X7 a
    ( e) k. g: R. z; g4 A  R; sant-1.8.2.jar
    9 t7 I! k+ V$ C+ T! a7 B* J% Qcommons-beanutils.jar! a9 P$ m) b& Y5 V* ~2 f
    commons-lang-2.6.jar; ^- L* l6 ?" ?
    ezmorph-1.0.2.jar
    9 n" F  M, ?4 {) Ijson-lib-1.1-jdk13.jar
    ; z# z0 `& \& n* a- l7 Hraq-ymodel-cli-2.10.jar4 Y9 j5 f( m0 j0 g1 l# L
    userconfig.xml8 Q7 c: E5 }  C, ~

    3 C1 k& }. f9 z0 N5 ~/ g2>易明建模的lib中含有以下jar
    " X, k7 D' Y4 D) g
    ) X, y2 p0 q* ~$ B. Rcommons-io-2.4.jar
      J) d( x  B' ~4 fesproc-ext-20211104.jar' c/ M; S" r* P( C. Z
    fastjson-1.2.58.jar
    6 j+ y! c6 n$ i4 Z% ygson-2.8.0.jar4 ^8 p. b) Y: `7 U
    jackson-annotations-2.9.6.jar
      n) z& j. r0 Q6 ijackson-core-2.9.6.jar
    * B' C; e" F7 r$ J4 ]jackson-databind-2.9.6.jar
    8 G0 p, ?8 |1 D/ Xjackson-databind-2.9.6-sources.jar( _3 H  j3 o  `6 a$ i2 k- ~
    jackson-dataformat-msgpack-0.8.14.jar$ f9 K/ d3 m  y
    mining.jar
    3 v2 r$ o4 Y8 p4 l$ f' lmsgpack-0.6.12.jar
    9 K( a2 `- k5 Mmsgpack-core-0.8.16.jar
    / ]# C: ?$ i6 _, [* l* a0 o' N4 r9 S5 u1 M
    (b)设置userconfig.xml文件参数
    ; Q6 ?4 U0 _  F; b在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数4 w7 ~& T; J2 g: H

    1 _+ Z8 C% T" [# j名称        参数说明. P3 q; D% S. E1 f% [
    sAppHome        易明建模的安装目录
    / \% {' A) a! d* I/ Z" Z; a/ a% msPythonHome        易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7$ i5 {; z7 j' S9 x
    iPythonServerPort        Python服务网络端口( R) B4 V2 L+ \3 U  J7 `+ j. N9 `
    iPythonProcessNumber        Python进程数+ C! X, I, T0 x- x, j- ~2 z
    bAutoDecideImpute        是否智能补缺% h2 z9 e- J+ P
    iResampleMultiple        重抽样次数
    , W  r& r% a3 F1 W/ o2 t) Q7 @: ~其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
    % w0 \+ ^" `& B2 \9 \& m, u) O/ a) n5 G( k$ i& c, P! t) |: l  ?; K
    <?xml version="1.0" encoding="UTF-8"?>
    : w5 u0 N- H" l; r<Config Version="1">8 K) o* }2 d# G5 i
        <Options>
    4 r: W9 t, V$ ]3 M3 u1 U5 f) K4 H3 q        <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
    + `0 M1 b* [# |                <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
    6 n0 e1 D( F* S% s                <Option Name="iPythonServerPort" Value="8510"/>
    ; L2 x6 ~# ]" |  E                <Option Name="iPythonProcessNumber" Value="2"/>
    0 E$ o; k' }9 f* K              <Option Name="bAutoDecideImpute" Value="true"/>
    ; h8 T, M+ X- P6 X                <Option Name="iResampleMultiple" Value="150"/>                               
      l# R  e6 T7 J    </Options>; e5 H" K7 k) L7 S+ e2 d
    </Config>! q0 x. ^0 D) s) Z5 g4 Z3 o/ `# i. @
    1
    1 F; o4 r! Q0 z9 c0 T# D2
    ! Y. Q8 V" Y1 ?" K9 f3
    7 ?8 a1 X$ U0 s: e0 F4" S: U5 O  v! W3 f5 T0 \
    5
    6 B/ t6 {+ g6 h% X/ N8 j6
    7 L' Y7 n7 I8 I; q7
    - x' e( O& L4 W2 D4 N8
    . M2 G! B2 e' q9
    " |- y. C# ^+ o* d10, T* c( ]2 `) _# Q3 [: f* }
    11  b! q6 k( _  G+ ]
    其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。& ^3 x7 ^* l; q" i; I

    * _* H! i* l. Y(c)SPL环境配置9 `6 T0 m$ y! F) R
    1>. 配置外部库  P. F0 e5 X$ S- _2 s& w+ Y

      V) x$ P: C9 O6 V! r  T打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。7 {/ a; o8 U4 ^. L$ g6 [/ w. r

    9 w0 M; G# a# f( Z) t! g5 }5 y' E4 l! `- A# H1 y6 a  V
    ! n& K9 a1 h- E* ?: L1 l4 d
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。$ m; m4 \* l  O( d# V6 _2 }

    # P+ y$ `/ ?& v7 {! n2 ]8 U1 C<extLibsPath>外部库路径
    5 {# q5 C0 B6 u( _/ p+ n& n5 M% S
    6 P, S3 L! T: k" \. e3 V1 v<importLibs>外部库名称(可多个)
    ! j/ Y% L9 q: m- T8 F* p) e8 n+ i- Q* U4 y" M$ r( E
    2>. 线程数设置& u! U$ u7 C2 U: r$ @& n

    7 B: J; n: b& M, B1 z如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。' q" X5 X1 l" z

    4 e$ ?* x4 K+ w5 w9 ^2 p% Q! h. y( x
    + v; S6 G2 j# `7 i
    在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
    5 h! P5 v1 Y* U& X! q
    ( ]8 t. p/ h9 i4 d<parallelNum>最大并行数
    0 c0 e- m$ T7 R3 ~( R- G: u  J. }4 b) O, ]: o7 x: R! G
    到此,环境配置完成。; M3 K) S4 W/ G' x4 z6 K' a* t& V) Y

    ! S' [; T1 J8 q" k( K' r5 c4 I: t( W3. 建模和预测: D0 M% T/ O, W
    (1)加载数据
    3 S7 ~: S+ y% E) c5 z7 t8 KSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
    - m0 d# K7 G" n+ k8 S9 ?$ W1 x, \
    ' J& B& ^9 M9 L, F设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。' {! [" j7 K/ ~# a% r5 J) v

    4 @5 U/ s7 o' }) x
    ' H5 a9 C) r3 S% P% N* h5 x  X1 A' \/ t
    文件命名为bank-full.csv;
    - ^0 x4 f) Y( e& t2 ]4 S7 t/ m% _, k8 ]6 ~
    A$ j' h2 Y, \1 @8 r& f
    1        =file("bank-full.csv").import@tc()7 `3 w& h  ?: U
    2        =ym_env()2 K3 U& _6 Q$ I2 \% `9 V) N
    3        =ym_model(A2,A1)
    $ m9 J& F! t- VA1 导入建模数据,读成序表
    . m9 u) m' s! e+ |3 F  @% Y5 D* i. J, t+ e* C$ }# h, F+ V

    $ v) L$ d$ b2 A: a9 Q6 c/ C% C. j5 L7 O. u+ T/ S# R* }
    A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。5 L/ m( Z+ y# Y

    - F( N0 w, Y( S+ O! pA3 加载建模文件,生成md对象
    0 I9 g2 R* G' n( A+ z* h* r1 d: i( ~1 b2 t' I0 q; O5 W
    (2)目标变量设置和变量统计
    * e0 i4 |; K4 K( a& N2 n: b数据加载进来后要设置目标变量4 M7 e7 o* R& {! j- T

      l1 S+ Y' Q) F" g) u( i3 jA
    5 J8 w3 A2 v. J0 g* r…        …
    / A' I$ N, l8 W7 ?* W4        =ym_target(A3,"y")
    ; N5 }5 W* d, X( \% e/ g5        =ym_statistics(A3,"age")
    0 w1 `1 T3 a) \' x# G6        =A1.fname().(ym_statistics(A3,~))
    * \# }7 h* c1 IA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
    6 O6 x0 E/ P' @/ L8 N7 Z( r: b! g$ T
    A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
    : C8 ^# S* t* l" ^* X  d& c6 ^1 |) d4 u( |

    5 P$ L! B, j" D  o4 }# g* x5 W; j0 Y2 E' n; ]# b( N" j5 d
    A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。, Z1 ]5 N! F  X9 [+ B! H
    6 L7 U2 Z6 U  A$ Y7 D1 G. A& u

    5 v# h; N7 X! {* N. W% \. i& T- S0 ?* n+ f% F4 h
    (3)建立模型和模型表现( }- y# r/ u" S4 x1 Y. B" o& @9 W
    A
    5 u' A/ c$ e' C…        …5 `0 E, Q/ }' n' ~, J: ~
    7        =ym_build_model(A3)2 L* T+ U& }2 N6 R
    8        =ym_present(A7)! \9 \0 b& l8 F0 g" ]: V
    9        =ym_performance(A7)
    ( r; V5 @" z8 N3 K7 l/ `8 C" S10        =ym_importance(A7).sort@z(Importance)  a$ b' l7 W5 y7 R
    A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
    + L# J2 s0 |+ i+ ~) m0 ^; x
    8 ~$ S( [  k/ o* i( [/ K模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
    , f6 C' u. y6 m4 }8 G4 U
    3 ?+ n( i5 Z* G: n+ M" FA8 返回模型AUC值及参数
    0 L0 E) S( }8 W( _! J" I* I- c0 G! o, h
    ( i$ G  X: F# h! ?6 t( i- @0 B+ C

    ! Z$ a: c6 _9 T* u8 pA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
    9 j+ Q0 ^' w  u* W/ O
    2 h  {9 N9 f2 Z3 K- n2 `' {3 \% c* I! A

    . ]4 j( p9 O. F" N) @3 K  g比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
    # y/ D: h' ^1 a& ^; B: }3 z+ Z) x% u2 S* T+ e

    & _2 y% e6 A' o& y! e) j; Z) U( A
    8 J7 n; n+ [7 hA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。% q6 j% ?9 U9 H* o; x
    % ?9 T$ _2 j; \6 I) n
    ( S2 [* Z7 U! r6 K+ I2 q( z* J

    / ?' p2 f3 S& ~2 O/ h(4)保存模型
    / X& I9 n: w, \5 q9 ]A6 ~5 q& i; t& o& s! d3 K
    …        …
    / C, d3 i0 s+ R; D6 `- h3 l6 r8 A' [11        =ym_save_pcf(A7,"bankfull.pcf")
    ( F$ g0 O* K- T9 b- m7 d  n12        =ym_json(A7)- S# |6 [/ T0 u/ Z# k6 g* m1 H
    13        >ym_close(A2), z' U1 o$ O& _6 _
    A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
    $ w5 S3 N+ ^3 ^9 r' ?0 h8 U
    3 `+ m& l4 f% J- o6 ?3 uA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》! I: ^& ^/ L9 Q5 D; \( k' \# @

    * y) M- s  a. E) O9 R6 S1 ZA13 关闭环境,释放资源。
    * d! r8 Z. _6 ~* C- Q$ m* p7 p7 l% S  n
    ' q8 q3 `6 H- r+ |/ s* W: V(5)预测
    ! F& m) i" b) N+ I预测之前需要有pcf模型文件和预测数据集" c4 X+ r9 x5 \
    6 D* }: b' I' r: m# ^* t" y; M0 u- G
    A5 M7 z, V3 p& ]5 }1 I0 r3 t
    1        =ym_env()) e2 E' F1 u7 B$ }; l5 p
    2        =ym_load_pcf("bankfull.pcf")
    ; P- l# M: W% C: O* q$ B* R3 G' d: w3        =file("bank-full2.csv").import@tc()' E  [; \' A$ Q' J5 c) G! G
    4        =ym_predict(A2,A3)9 H3 k' a9 p" {* K, s
    5        =ym_result(A3)
    4 \6 d2 w( f4 \( g6        =file("bank-full_result.csv").export@tc(A4)
    % ?. m7 x, Z4 W% B) w7        >ym_close(A1)
    ; f, ~! H" r. I* A' T2 GA1 初始化环境1 y1 A  l8 r0 P7 t

    # X( k) E/ T5 E' h7 Q1 D: vA2 导入pcf模型文件,生成pd模型对象。* s1 U! c% h! X' C0 o, K! P, j

    8 }: P5 r; V9 o- B9 \  gA3 导入预测数据集,读成序表! e1 O2 Z9 N& N# k; U% q9 C4 E' Q

    " [3 U: k* D9 {6 q+ r# w- bA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)" u! E+ I% Y- ^8 m) v/ q2 \

    * _" |$ Q' b$ b; a* M, mA5 获取预测结果* I( t# T  x! l: X$ m  ^- L/ n: H# d

    $ e' ~7 I" }  t& b6 D" q5 n/ LA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。0 j2 C0 a6 g" z, G

    - \% a+ _7 S2 x% I
    + H/ [& Q8 u# K7 I( W8 c* _A7 关闭环境,释放资源4 ?: V9 x3 v2 L8 Y* k, x$ l$ B
    : B3 f- r. H$ A# W+ |, @
    4. 集成调用, ^: s& Y% e. l0 z0 r
    SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
    . {' `1 M+ l+ d0 \, t! |3 w
    : p( z3 \/ d$ Y& h总结7 B* ~% m4 |& y7 }9 m' L  s# s
    使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
    7 ]0 Y' K4 v% S1 X! Q+ i; D
    " D& k$ E. X# a0 O" r9 Y9 oSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。& J6 y$ j/ \* c2 P  z5 H7 U, G
    ————————————————
    4 |* a6 T: i6 s( R" ]版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ; w4 O% C7 u7 j  k0 z5 U' S1 ?# @# A原文链接:https://blog.csdn.net/weixin_39709134/article/details/1266984627 M5 g5 ~: g' W# c' T3 v. d9 `

    7 Q' y; ~2 Y7 N2 N" w* ?
    ' ^/ e* g. C( y) l5 [3 S# \9 d
    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-13 22:39 , Processed in 0.398132 second(s), 51 queries .

    回顶部