8 Y& s# F7 v' j* ]2 K) U5 g& c( w8 e. }5 v 数学建模需要怎样的编程水平?作者:胖咸鱼y % c9 P. g6 _) S9 a* C. b# X链接:https://www.zhihu.com/question/61102199/answer/184485396/ f/ P* a" h3 P, G1 l
来源:知乎) s- d9 j0 u0 h) d
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ; i$ w7 v8 G8 z! a: c7 z& }# t( f! e9 q. m9 [3 w7 [( \/ p. c 这应该是最后一次更新。+ E/ Y+ H& ^: n: }
首先控诉一下这个多灾的暑假,一年不生一次病的我,从八月初就开始重感冒,重感冒刚好不知道吃错了哪家无良的外卖,急性肠胃炎住院(中间拖了两天,住院的时候还蛮严重的)打吊瓶吃药吃咸菜。稍微好一点就骗家长说自己完全好了就返校了。回到学校的第一天晚上就又重感冒了(.....)应该是之前的细菌还在等我回来:)喝着热水吃着药吸着鼻涕打着喷嚏...都这副惨状了,电脑忽然间罢工了,把老伙计送到专卖店去修,没说什么毛病,只说要寄到石家庄去修。:)到今天还没修回来,后天就是国赛前的模拟了,凌乱状.... ! R/ j1 u9 W, b8 S. ^/ a回归正题。& ? |! }( t: w+ M3 s' O3 v
python入门的教程在网上随便一搜就能搜到很多,当初我是跟着小甲鱼学习的 ; D: Z) ~7 v( r# _1 ~[小甲鱼]零基础入门学习Python_野生技术协会_科技_bilibili_哔哩哔哩 " y( C2 a- W, z H% _1 O4 n5 ?7 v5 U对于新手蛮不错的教程,开倍速秘制带感(网易云课堂上也有课程,就可以在移动端开倍速) # c0 w! L& t* b3 M: C) D $ Y9 m" r4 t3 R8 V) R& h这里着重安利一下北大的python数据结构课程:$ F9 P. N0 G; U% j
数据结构与算法2015春季 - 北京大学新一代GIS研究室! c+ I+ x) e# _; t5 }$ [9 o s
因为我之前一直在找数据结构的python版本,终于找到了,好东西分享一波。 " m/ G7 G7 |9 [( J, L8 A& k" t: L: s2 Q3 V" V
我没看视频,我把讲义down下来k过了一遍,收获还是挺大的: 7 ?: [+ F7 K8 ]2 K我的课堂代码摘抄:数据结构(python) - .delete - 博客园" I: a+ X& U1 h9 R9 T. s
, ?( R/ J4 M' M. e4 v, E& {3 ` 然后是一些建模方法的python实现:& ]( y: O+ P2 n4 v; ?/ \
动态优化 ---------> 学习北大数据结构动态优化一章。, U7 J" ]5 R4 s9 T+ V
线性最优 ----------> scipy.optimize.linprog0 C* P% \8 Q4 k0 U/ E2 N1 t
最小二成拟合 ----------> numpy.ploy1d ) g! E+ w% `+ a6 s+ z多项式拟合 ----------> 没有现成方法,自己写! j) H1 V. e- [% M
聚类 ----------> from sklearn.neighbors import KNeighborsClassifier (KNN) - c' L1 Z5 |1 O1 @" Q from sklearn.cluster import KMeans(KMeans) % b% U4 q/ C' U# D) p. @决策树 ----------> form sklearn.tree import DessionTreeClassifier! k7 c' p- R( H
贝叶斯算法(朴素贝叶斯) ----------> from sklearn.naive_bayes import GaussianNB ( _: ^8 Q* r) @; k, e5 S/ t5 o
支持向量机 ----------> from sklearn import svm ) q+ \, Z3 u1 y4 v9 u K5 J+ C回归 ----------> from sklearn import linear_model (这里边包括了线性,逻辑,随机树森林# @* E: S2 q6 R- m
多项式,岭回归等等)/ m8 f6 J9 w, q! T1 R3 ]
主成分 ----------> import sklearn.cluster.DBSCN 3 m/ _. D5 @' O0 ^& V5 [绘图 ----------> import matplotlib.pyplot as plt7 X+ V% K) l& x8 S8 n
import seaborn as sns/ `9 l; N( b8 f/ E! G7 T+ Q, C, [
数据结构 ----------> import pandas as pd(Series,DataFrame)' {0 e, w& F$ F" m
* u# I1 F* `- d+ o4 ^; _' x- h" r5 U Q) B
: e3 F* D/ K3 v) p基本上我能想到的就是这些了,其他的一些像对曲线的处理或者解方程等等我一般都使用Matlab做。当然以上的所有方法在lingo都能实现。我用Matlabh+lingo做了一次Kaggle的泰坦尼克之灾,得分一样,但是点点点明显比敲代码要舒服的多。8 E- n! ~$ W! A! _' U
只撸了一个base model,慢慢的再优化。 8 h& |% Q0 Z7 X* o 9 ?* g( }' r% t1 F# a 代码用到的一些方法: ' h: r; D4 W k, P) Y0 e7 v1 D& I#Pandasimport pandas as pdfrom pandas import Series,DataFrame#Numpy,Matplotlibimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns#MLfrom sklearn.linear_model import LogisticRegressionfrom sklearn.svm import SVC,LinearSVCfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.naive_bayes import GaussianNB#Osimport osos.chdir("C:\\Users\\pangxianyu\\Desktop") - h! a' t7 c' _以上,一个对python有兴趣的自学小白,如果有错误欢迎及时斧正。! w v9 K+ w( {1 f" E" V
. ~* p4 o; f; v* }( |1 m* z5 z! ^9 {1 @% b' p- t6 d/ Y: X
预祝大家都取得好成绩! ; z* G: S( R4 b6 Z(希望我电脑快点修好.....& i4 S4 G2 D4 k- [% g0 w
-----发布自求爷爷告奶奶借来的电脑 ( c# p( g+ y6 b C% X1 B( F# `( u
8 i9 |" t2 ]6 R/ Z+ O
--------------------------------------------最后一更分割线---------------------------------------4 R/ [/ i! _2 J/ k K
校级复试过了,来补充一下。& n2 ]1 d7 |0 S$ s9 Z3 K1 g
python相较于matlab和lingo有一个对新手不太好的地方是没有很多的参考事例。 . H& x* t( n& N. [- Q6 l0 P, P. K拿这次复试来说,之前我一直是用python的,之前老师说过对语言没有要求,考前一天忽然题目有要求用的软件,临时抱佛脚在网上找了一个matlab实现的《数学建模和编程》里边整本书都是数学建模的例子和用matlab实现的代码。而我在之前搜索专门的python书籍没找到这么专业的。所以还没入坑的推荐数学软件。" U2 U% j# g6 O1 G$ |
考试的时候四道题全部用的python实现,然后再在matlab中找到对应的方法,提交答案的时候提交matlab程序。为什么这么做?因为在我看来python确实好用啊= ̄ω ̄=,提前四十分钟交卷。 9 v1 |, O: r! r( v+ J # p* i3 ^' L' s& f- k$ x但是过程一波三折,提交的版本是中途保存的一个版本,上边只写了两道题,不过还算走运,顺利拿到了国赛和夏令营的入门券。 0 V9 {1 k( R- z+ ~* B# q5 j* P这个暑假打算一边参加夏令营,一边把数学建模上的知识用python 实现一遍,目前实现了线性最优,最小二乘法,多项式拟合,聚类,主成分,回归算法(建模叫分类)等等吧。9 }. @: s2 ~" {/ S8 Y2 s* K
给自己挖个坑,所有方法都实现后会把博客地址贴在这里。6 _* Y( [* W9 M: P# z
加油。0 q. \# {1 o/ |; L9 ^
17-07-07 9 x, X4 | `7 P+ [$ q1 f9 p6 Q% r---------------------------------分----------------割-------------线-------------------------------- % t% \# C: }* _7 h; B当初只是随手一答,有人点赞,诚惶诚恐,把答案重新编辑下:). F% C' Y, B1 T& ]" Y% ^) w
: `+ a6 B L0 p- H: g. @今年准备参加,培训的时候老师讲了画图用matlab,数学分析用SPSS,lingo,还讲了几个例子,我去,画图不就是python中的matplotlib库,聚类降维神经网络不就是机器学习sklern中的kmeans,knn,neturework吗。。。3 |$ y* r- |6 x P, ]) K
1 ^% F# K( h- S _2 R- A参加校选赛的题目是关于共享单车时空配比,题目没有给数据,网上也找不到,我就花了点时间在gitub上找了个轮子自己改了改,用python爬虫爬的天津地区摩拜单车的数量和坐标,再用kmeans聚类,matplotlib画图。 " a: b7 h3 ?/ I ; p- ?. {: L6 M+ h' K- A选择上边那些软件的话其它答主已经说的很详细了,参见他们的回答即可。 6 n& s B% u6 w# [如果选择python的话,需要掌握的有:. r, T0 S$ R: o) g7 N& c
1、python版本的选择与安装, s" }9 a9 ~* G7 e9 L+ @; D- U
对比VC,python的安装需要费点时间,如果熟悉Linux会轻松很多。目前py2x和py3x共存,在刚入门的时候需要看你选择的是哪个版本,不同版本支持的包不同。多说一句,用2x的话如果用到3x的method,import futuer就好了,但是3x是主流和未来的方向XD ' B4 Z, k. h, p% @3 e) q5 I(下边的sklearn和tensorflow就是不同的python 版本。)( F, N4 U# l, f* }$ T# n% }0 \) s
2、IDE的选择/ \9 q/ d* n1 r) E4 n o" H
推荐jupter book。我目前使用的python为py36,sklearn的env是py27。在jupter book上边创建好kernels,然后切换kernel就可以达到切换env的作用。 2 X$ _& ^" X4 ~- t3 v3、基本操作和包 8 ?3 Q# [% a8 r% R# e 如果上边的基础准备都做好了,开始学基础操作,基本的教学视频就好了,重点掌握集合,列表,元组,函数,方法,for,magic(如果有时间的话),基本的四则运算,赋值什么的。python作为一门胶水语言,又以对程序员友好著称,学习起来我认为不是很痛苦,我之前有C,Java和Matlab的基础,学的比较快。 8 O" M/ j- Z6 |2 e5 n, j, {; a 包的话重点掌握numpy,pandas,matplotlib,这些里边是数学运算,文件处理和图形绘制,建模的时候都会有用,重点掌握。其他的分类,回归,聚类,降维,神经网络,相关性分析之类的都在sklearn中(即机器学习中大名鼎鼎sciki-learn的简称,不过不要被吓到,它的数学思想和你学的概率论和数理统计差不多,单纯的调用的话看看文档和技术博客就好,需要我推荐的话可以私信或留言:)6 }" ^: }4 A% b6 }, w2 G/ A. f
还有一个包是谷歌推的tensorflow,它的领域是多重神经网络和深度学习,如果还有精力的话可以去探索,私以为建模的数据量和复杂程度会使它的学习深度不会太深,它上场的机会不大。 - ?" G3 ^3 g; |' S$ p. m人生苦短,我用python。* g3 o/ x$ Q) m
% l6 C' o: y+ W4 h( r) d
最后提一点,python作为一门语言,它的学习成本可能要比上边那些软件要大。# u. Q# F3 F4 W. G8 k3 R
献给那些想做建模走python技术栈的人,希望可以帮到你们。 H- }. u' W( n$ }
7 U7 X3 D' Y: ]; r9 u
# e: K8 K' T3 w2 C3 c# a
8 B6 p6 D& D) `! G+ m6 B0 `, f
% g* p) N) H- D' X$ I6 `