数学建模社区-数学中国
标题:
数学建模需要怎样的编程水平?
[打印本页]
作者:
杨利霞
时间:
2020-5-24 11:13
标题:
数学建模需要怎样的编程水平?
" [. {% K. h* T- E* |2 `* E6 D, L
2 c7 _/ b, Y2 T; y! R
数学建模需要怎样的编程水平?
作者:胖咸鱼y
' R3 y# A0 P+ V% u. K4 L, t
链接:https://www.zhihu.com/question/61102199/answer/184485396
) L4 l7 T$ V( d9 k/ e5 J
来源:知乎
7 \6 Z$ x7 p! K; ?5 z2 W: U" R7 A" {
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
9 M- m8 B8 E/ ^! b2 Y) F7 q) g$ J/ `
* S" s0 a+ b+ M1 L: }5 o
这应该是最后一次更新。
( i9 I1 g: Y( O$ u/ q3 V) ^( u
首先控诉一下这个多灾的暑假,一年不生一次病的我,从八月初就开始重感冒,重感冒刚好不知道吃错了哪家无良的外卖,急性肠胃炎住院(中间拖了两天,住院的时候还蛮严重的)打吊瓶吃药吃咸菜。稍微好一点就骗家长说自己完全好了就返校了。回到学校的第一天晚上就又重感冒了(.....)应该是之前的细菌还在等我回来:)喝着热水吃着药吸着鼻涕打着喷嚏...都这副惨状了,电脑忽然间罢工了,把老伙计送到专卖店去修,没说什么毛病,只说要寄到石家庄去修。:)到今天还没修回来,后天就是国赛前的模拟了,凌乱状....
& C4 j: m) V0 N8 s: R
回归正题。
3 O" U7 @* ^) |
python入门的教程在网上随便一搜就能搜到很多,当初我是跟着小甲鱼学习的
9 b6 n$ D! z. F3 X B$ g/ ]0 ?* a
[小甲鱼]零基础入门学习Python_野生技术协会_科技_bilibili_哔哩哔哩
! \* F$ X, A6 U
对于新手蛮不错的教程,开倍速秘制带感(网易云课堂上也有课程,就可以在移动端开倍速)
/ F- K a3 c' e4 e% T
+ ]/ D: M- U, F& b- [% k2 k. l% A
这里着重安利一下北大的python数据结构课程:
: [* j. L# z4 j- [1 o. s) C
数据结构与算法2015春季 - 北京大学新一代GIS研究室
: S. H+ [0 `" c' \& I) m
因为我之前一直在找数据结构的python版本,终于找到了,好东西分享一波。
4 d9 o) O! Y |- w" n, m# s! Q
T/ z9 [7 T; ^9 c. N
我没看视频,我把讲义down下来k过了一遍,收获还是挺大的:
Z- O4 R$ x% ]4 t+ i' {
我的课堂代码摘抄:数据结构(python) - .delete - 博客园
' e# V) t5 @1 v6 q. K: s+ m+ S
9 y3 }0 U4 L& d, |* i+ [
然后是一些建模方法的python实现:
. l; x/ ^' y* {/ q. }+ H# a
动态优化 ---------> 学习北大数据结构动态优化一章。
( r8 ~5 `* W% u' x: F' }' J
线性最优 ----------> scipy.optimize.linprog
+ ^0 s' V! |9 D& P( y1 V" t
最小二成拟合 ----------> numpy.ploy1d
: e$ ?7 c S, f7 R
多项式拟合 ----------> 没有现成方法,自己写
S5 r0 ~! d! E5 Z
聚类 ----------> from sklearn.neighbors import KNeighborsClassifier (KNN)
" @+ h3 T, @. ~" d" q
from sklearn.cluster import KMeans(KMeans)
# K( d5 y# T# k5 V- r
决策树 ----------> form sklearn.tree import DessionTreeClassifier
" q" u D: U" @. h' d, r
贝叶斯算法(朴素贝叶斯) ----------> from sklearn.naive_bayes import GaussianNB
! W) R, N9 ^% S0 M7 F
支持向量机 ----------> from sklearn import svm
8 _. Q1 c( f! K: X( g' k7 [
回归 ----------> from sklearn import linear_model (这里边包括了线性,逻辑,随机树森林
7 m. X4 p1 a. q* |6 k
多项式,岭回归等等)
[" M" ?9 e/ n
主成分 ----------> import sklearn.cluster.DBSCN
: U9 a8 P$ [. s! p0 D6 P4 F
绘图 ----------> import matplotlib.pyplot as plt
" z: U9 [5 U2 u
import seaborn as sns
5 Z1 t& A5 p7 M
数据结构 ----------> import pandas as pd(Series,DataFrame)
* |, t' u3 [! u# }- Y( D! R& j" N
& d- c% o( Z1 q5 C* x
8 G, i% L) T" t. d, i$ p
基本上我能想到的就是这些了,其他的一些像对曲线的处理或者解方程等等我一般都使用Matlab做。当然以上的所有方法在lingo都能实现。我用Matlabh+lingo做了一次Kaggle的泰坦尼克之灾,得分一样,但是点点点明显比敲代码要舒服的多。
8 G. X6 J2 v# _& ?. F
只撸了一个base model,慢慢的再优化。
& B. c0 f8 ~# W4 G
* O1 N1 b4 M7 n
代码用到的一些方法:
8 e; [/ A3 Q7 B8 j
#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")
+ a1 `' m8 c1 B( L8 z
以上,一个对python有兴趣的自学小白,如果有错误欢迎及时斧正。
( H) \% {: \; ^3 ?( O0 l
' z8 V& a& J. u7 R, x& Q4 @; w+ m' D
7 i( V( t' z1 _/ \% ~' W
预祝大家都取得好成绩!
: d( o& k, \& M# S2 Z( ^& t! G
(希望我电脑快点修好.....
+ k( ~$ V+ Y) `# E. e0 U- q" Y) w4 }
-----发布自求爷爷告奶奶借来的电脑
+ I/ U# T/ z9 r0 ?! d$ D
' N( q& c( E$ |5 N1 r3 {6 @
$ B; n5 f& v3 q3 y5 M
--------------------------------------------最后一更分割线---------------------------------------
' @, _, m' j2 ^& b- P7 G
校级复试过了,来补充一下。
7 |( Z; G, a, T
python相较于matlab和lingo有一个对新手不太好的地方是没有很多的参考事例。
' \. s* O; D$ q1 c: x
拿这次复试来说,之前我一直是用python的,之前老师说过对语言没有要求,考前一天忽然题目有要求用的软件,临时抱佛脚在网上找了一个matlab实现的《数学建模和编程》里边整本书都是数学建模的例子和用matlab实现的代码。而我在之前搜索专门的python书籍没找到这么专业的。
所以还没入坑的推荐数学软件。
( @6 X" f% h9 G( S- L
考试的时候四道题全部用的python实现,然后再在matlab中找到对应的方法,提交答案的时候提交matlab程序。为什么这么做?因为在我看来python确实好用啊= ̄ω ̄=,提前四十分钟交卷。
3 k/ \6 d: w4 Q$ X G
|5 v$ h! A" I* K! j3 v/ R
但是过程一波三折,提交的版本是中途保存的一个版本,上边只写了两道题,不过还算走运,顺利拿到了国赛和夏令营的入门券。
3 j& _/ X8 w0 f/ N1 Z8 q, ]0 o
这个暑假打算一边参加夏令营,一边把数学建模上的知识用python 实现一遍,目前实现了线性最优,最小二乘法,多项式拟合,聚类,主成分,回归算法(建模叫分类)等等吧。
0 n, g, C& y9 n$ }6 r* r- N, g
给自己挖个坑,所有方法都实现后会把博客地址贴在这里。
8 j2 k" c3 @3 r; _( X; a. ~/ R9 M# R
加油。
0 V1 c: }9 _* r7 ]* l
17-07-07
; g; L% o6 B; @8 Q1 D
---------------------------------分----------------割-------------线--------------------------------
" T) e* z2 X. L5 }9 B5 x3 [
当初只是随手一答,有人点赞,诚惶诚恐,把答案重新编辑下:)
* p7 O- O3 s0 P5 \6 c
& m/ Z) a# z* e+ d% P! O2 f
今年准备参加,培训的时候老师讲了画图用matlab,数学分析用SPSS,lingo,还讲了几个例子,我去,画图不就是python中的matplotlib库,聚类降维神经网络不就是机器学习sklern中的kmeans,knn,neturework吗。。。
7 c: X `4 P" T- ?0 s% C! r
! s4 G; u, u: r+ F
参加校选赛的题目是关于共享单车时空配比,题目没有给数据,网上也找不到,我就花了点时间在gitub上找了个轮子自己改了改,用python爬虫爬的天津地区摩拜单车的数量和坐标,再用kmeans聚类,matplotlib画图。
4 g9 a! H! H" t4 t# n
' }, ~9 X7 i N- J A* F7 V1 {
选择上边那些软件的话其它答主已经说的很详细了,参见他们的回答即可。
& z( i5 t0 o" Q* w% R
如果选择python的话,需要掌握的有:
, z R9 P+ b6 A* [
1、python版本的选择与安装
; |& y! e) X: b* s2 H5 J! S, n& U
对比VC,python的安装需要费点时间,如果熟悉Linux会轻松很多。目前py2x和py3x共存,在刚入门的时候需要看你选择的是哪个版本,不同版本支持的包不同。多说一句,用2x的话如果用到3x的method,import futuer就好了,但是3x是主流和未来的方向XD
! h3 R- [& o6 R) h* L4 Y
(下边的sklearn和tensorflow就是不同的python 版本。)
) z I8 \9 I8 p# _, O
2、IDE的选择
4 A' l: t6 [. X% Q. B+ ]* D. @) n
推荐jupter book。我目前使用的python为py36,sklearn的env是py27。在jupter book上边创建好kernels,然后切换kernel就可以达到切换env的作用。
# \2 E9 U* o4 D1 Q
3、基本操作和包
+ \6 q$ a; O1 k8 Y8 E
如果上边的基础准备都做好了,开始学基础操作,基本的教学视频就好了,重点掌握
集合,列表,元组,函数,方法,for,magic(如果有时间的话),基本的四则运算,赋值
什么的。python作为一门胶水语言,又以对程序员友好著称,学习起来我认为不是很痛苦,我之前有C,Java和Matlab的基础,学的比较快。
' @# |5 j2 P0 e' I, E
包的话重点掌握
numpy,pandas,matplotlib
,这些里边是数学运算,文件处理和图形绘制,建模的时候都会有用,重点掌握。其他的分类,回归,聚类,降维,神经网络,相关性分析之类的都在
sklearn
中(即机器学习中大名鼎鼎sciki-learn的简称,不过不要被吓到,它的数学思想和你学的概率论和数理统计差不多,单纯的调用的话看看文档和技术博客就好,需要我推荐的话可以私信或留言:)
2 G/ k- r8 M `7 p k$ X
还有一个包是谷歌推的tensorflow,它的领域是多重神经网络和深度学习,如果还有精力的话可以去探索,私以为建模的数据量和复杂程度会使它的学习深度不会太深,它上场的机会不大。
: y# M, ]* _) _* O2 i0 n9 I
人生苦短,我用python。
9 p! u) b( m+ R3 a
5 I# v& `+ E# w7 }+ R
最后提一点,python作为一门语言,它的学习成本可能要比上边那些软件要大。
7 |7 U+ P0 V$ K: p, |0 Y. e' K0 u
献给那些想做建模走python技术栈的人,希望可以帮到你们。
3 ]! h1 X! O) {9 {4 T+ A1 k
+ D- G$ R6 s2 U% E& ]
" M; a, r) j# d7 x6 S7 O. b' ?
6 V8 w) W- `/ u# g* T" e6 ?
9 ~! ?5 k" Z& Z( `( c/ G5 D x+ ^
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5