第一部分__基础篇

1.工具简介

  • WEKA    
  • RapidMiner  基于WEKA二次开发 
  • Python
  • R
  • Python安装,基础,不再赘述

2.Python函数参数

  1. 位置或关键字参数
    def fun(a,b,c),也可以有默认值fun(a=1,b,c)
  2. 任意数量的位置参数
    def fun(a,*num):
        pass
    //用法
    fun(a,1,2,3)
  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用的熟练程度还不错,不做具体介绍

  1. Numpy
  2. Pandas
  3. SciPy  基于NumPy,在符号计算,信号处理,数值优化等任务中有突出表现   
     
    Scipy主要子模块汇总
    scipy.cluster 主流的聚类算法
    scipy.constants 数学和物理常数
    scipy.fftpack 快速傅里叶变换
    scipy.integrate 求解积分和常微分方程
    scipy.linalg 线性代数
    scipy.ndimage n维图像处理
    scipy.signal 信号处理
    scipy.spatial 空间数据结构和算法
    scipy.stats 统计分布及相关函数
  4. Scikit-learn    机器学习常用的库,分类,回归,聚类,降维,模型选择,预处理
    1. 机器学习
      • 有监督学习,事先给定我们想要的属性,也就是目标变量
        • 分类
        • 回归
      • 无监督学习,没有目标变量
        • 聚类
        • 密度估计等
  5. 其他Python常用模块

猜你喜欢

转载自blog.csdn.net/qq_36515370/article/details/82900980