1.工具简介
- WEKA
- RapidMiner 基于WEKA二次开发
- Python
- R
- Python安装,基础,不再赘述
2.Python函数参数
- 位置或关键字参数
def fun(a,b,c),也可以有默认值fun(a=1,b,c) - 任意数量的位置参数
def fun(a,*num): pass //用法 fun(a,1,2,3)
-
任意数量的关键字参数
3.可变与不可变对象
不可变对象 | 数值类型,字符串,元祖 |
可变对象 | 字典,列表 |
- 深复制 copy.deepcopy(),复制父对象和子对象
- 浅复制 copy.copy(),仅仅复制父对象,不会复制父对象内部的子对象
In [11]: list1=[1,2,[a,b]]
In [12]: list1=[1,2,['a','b']]
In [13]: list2=list1//引用复制
In [14]: list3=copy.copy(list1)//重新分配地址空间,浅拷贝
In [15]: list4=copy.deepcopy(list1)//重新分配地址空间,深拷贝
In [16]: list1.append(1)
In [17]: list1[2].append('c')
In [18]: list2//因为是引用赋值,所以,地址一样,当list1改变,list2也会改变
Out[18]: [1, 2, ['a', 'b', 'c'], 1]
In [19]: list1
Out[19]: [1, 2, ['a', 'b', 'c'], 1]
In [20]: list3
Out[20]: [1, 2, ['a', 'b', 'c']]
In [21]: list4
Out[21]: [1, 2, ['a', 'b']]
4.递归实现斐波那契数列
def fbnq(n):
if n==1 or n==2:
return 1
else:
return fbnq(n-1)+fbnq(n-2)
5.面向对象
1.__init__()方法:相当于构造函数,但是Python执行这个方法时,实例对象已经被构造出来,这和C++不一样,C++是使用构造函数去创建一个实例对象。
2.属性私有化,在属性前面加上两个下划线即可,但是,这种私有化仅仅是伪私有化,python中有一种name_mangling技术,(Java的反射???),通过如下方式即可获得“伪私有化”的属性:
In [22]: class MyClass():
...: def __init__(this):
...: this.__name="lws"
...:
...:
In [23]: myClass = MyClass()
In [25]: myClass._MyClass__name
Out[25]: 'lws'
3.继承
- 支持多继承
- 继承中子类的初始化方法__init__()方法不会自动调用,,如果希望继承__init__()方法,需要显式调用
- 调用父类的方法时,加上父类的类名前缀,并且带上self参数,在类中调用该类的方法不需要self参数
- 私有成员无法继承
6.面向对象小练习
In [24]: class Complex:
...: def __init__(self,a,b):
...: self.a=a
...: self.b=b
...: def add(self,c):
...: self.a=self.a+c.a
...: self.b=self.b+c.b
...: def show(self):
...: if self.b>0:
...: print(str(self.a)+'+'+str(self.b)+'i')
...: elif self.b==0:
...: print(self.a)
...: elif self.b<0:
...: print(str(self.a)+(self.b)+'i')
...:
...:
In [25]: c1=Complex(2,3)
In [26]: c2=Complex(8,-1)
In [27]: c1.add(c2)
In [28]: c1.show()
10+2i
7.Python常用科学计算库
以下python的库以前都有接触,数学建模比赛的时候Numpy和Pandas用的熟练程度还不错,不做具体介绍
- Numpy
- Pandas
- SciPy 基于NumPy,在符号计算,信号处理,数值优化等任务中有突出表现
Scipy主要子模块汇总 scipy.cluster 主流的聚类算法 scipy.constants 数学和物理常数 scipy.fftpack 快速傅里叶变换 scipy.integrate 求解积分和常微分方程 scipy.linalg 线性代数 scipy.ndimage n维图像处理 scipy.signal 信号处理 scipy.spatial 空间数据结构和算法 scipy.stats 统计分布及相关函数 - Scikit-learn 机器学习常用的库,分类,回归,聚类,降维,模型选择,预处理
- 机器学习
- 有监督学习,事先给定我们想要的属性,也就是目标变量
- 分类
- 回归
- 无监督学习,没有目标变量
- 聚类
- 密度估计等
- 有监督学习,事先给定我们想要的属性,也就是目标变量
- 机器学习
- 其他Python常用模块