目录

  • 1 模块一  Python与机器学习概述
    • 1.1 Python与机器学习简介
    • 1.2 发展历程
    • 1.3 基本语法
    • 1.4 帮助
    • 1.5 应用
    • 1.6 示例源代码(食品识别小小专家系统)
    • 1.7 示例代码   蜡笔小新
    • 1.8 小结
    • 1.9 Python基础教程(教&学资料)
      • 1.9.1 安装Python
      • 1.9.2 第一个python程序
      • 1.9.3 Python基础
      • 1.9.4 函数
      • 1.9.5 高级特性
      • 1.9.6 函数式编程
      • 1.9.7 模块
      • 1.9.8 面向对象编程
      • 1.9.9 面向对象高级编程
      • 1.9.10 错误、调试和测试
      • 1.9.11 IO编程
      • 1.9.12 进程和线程
      • 1.9.13 正则表达式
      • 1.9.14 常用内建模块
      • 1.9.15 常用第三方模块
      • 1.9.16 图形界面
      • 1.9.17 网络编程
      • 1.9.18 电子邮件
      • 1.9.19 访问数据库
      • 1.9.20 Web开发
      • 1.9.21 异步IO
      • 1.9.22 使用MicroPython
      • 1.9.23 实战训练(day1~~day10)
        • 1.9.23.1 Day 1 - 搭建开发环境
        • 1.9.23.2 Day 2 - 编写Web App骨架
        • 1.9.23.3 Day 3 - 编写ORM
        • 1.9.23.4 Day 4 - 编写Model
        • 1.9.23.5 Day 5 - 编写Web框架
        • 1.9.23.6 Day 6 - 编写配置文件
        • 1.9.23.7 Day 7 - 编写MVC
        • 1.9.23.8 Day 8 - 构建前端
        • 1.9.23.9 Day 9 - 编写API
        • 1.9.23.10 Day 10 - 用户注册和登录
      • 1.9.24 Day 11 - 编写日志创建页
      • 1.9.25 Day 12 - 编写日志列表页
      • 1.9.26 Day 13 - 提升开发效率
      • 1.9.27 Day 14 - 完成Web App
      • 1.9.28 Day 15 - 部署Web App
      • 1.9.29 Day 16 - 编写移动App
    • 1.10 FAQ
    • 1.11 阶段总结
  • 2 PYthon程序示例
    • 2.1 程序示例(一)初识程序
    • 2.2 程序示例(二)查看今天是今年的第几天
    • 2.3 程序示例(三)if elif else语句
    • 2.4 程序示例(四)元组,列表, 堆栈,队列
    • 2.5 程序示例(五)学玩游戏《学色彩  神魔三龟玩变色》
    • 2.6 程序示例(六)函数
    • 2.7 程序示例(七)字符串
    • 2.8 程序示例(八)文件
    • 2.9 程序示例(九)排序
    • 2.10 程序示例-机器学习中英单词翻译小专家
    • 2.11 程序示例      画花朵  &  画佩奇
    • 2.12 程序示例   华夏时钟
    • 2.13 示例:  显示图片,响声
    • 2.14 播放声音视频文件mp3、wmv、wav、m4a等)
    • 2.15 Python WEB开发技术实战
  • 3 模块2 NumPy数值计算
    • 3.1 ndarray创建与索引
    • 3.2 ndarray的基础操作
    • 3.3 ufunc
    • 3.4 小结
    • 3.5 习题与实训
  • 4 模块3   pandas基础
    • 4.1 pandas常用类
    • 4.2 DataFrame基础操作
    • 4.3 其他数据类型操作
    • 4.4 小结
    • 4.5 习题与实训
    • 4.6 练习题
  • 5 模块4 pandas进阶
    • 5.1 数据读取与写出
    • 5.2 DataFrame进阶
    • 5.3 数据准备
    • 5.4 小结
    • 5.5 习题与实训
    • 5.6 练习习题及解答(参考)
  • 6 模块5 Matplotlib基础绘图
    • 6.1 Matplotlib绘图基础
    • 6.2 分析特征关系常用图形
    • 6.3 分析特征内部数据状态常用图形
    • 6.4 小结
    • 6.5 习题与实训
  • 7 模块6 机器学习库 scikit-learn
    • 7.1 数据准备
    • 7.2 降维
    • 7.3 分类
    • 7.4 回归
    • 7.5 聚类
    • 7.6 模型选择
    • 7.7 小结
    • 7.8 习题与实训
  • 8 模块7 餐饮企业综合分析
    • 8.1 (案例)餐饮企业分析需求
    • 8.2 数据准备
    • 8.3 使用K-means算法进行客户价值分析
    • 8.4 使用决策树算法实现餐饮客户流失预测
    • 8.5 小结
    • 8.6 习题与实训
  • 9 模块8  通信运营商客户流失分析与预测
    • 9.1 通信运营商客户流失分析需求
    • 9.2 数据准备
    • 9.3 特征工程
    • 9.4 使用多层感知器算法实现通信运营商 客户流失预测
    • 9.5 小结
    • 9.6 习题与实训
  • 10 学习参考资源
    • 10.1 机器学习的通俗讲解
    • 10.2 十大机器学习算法及其应用
    • 10.3 常用机器学习算法优缺点及其应用领域
    • 10.4 轻松学会 Python turtle 绘图
    • 10.5 Python 习题库
      • 10.5.1 习题1
    • 10.6 上机操作实训库
    • 10.7 面试准备题
    • 10.8 Python 程序扩展名 及发布程序时的选择
    • 10.9 计算机Python考试大纲
    • 10.10 Python  基础知识点梳理
    • 10.11 Python常用模块大全
    • 10.12 机器学习基本术语
    • 10.13 几个机器学习的成功案例
    • 10.14 60个机器学习算法应用场景实例
  • 11 章节测验(必测)
    • 11.1 测验一
    • 11.2 测验二
    • 11.3 测验三
    • 11.4 测验四
    • 11.5 测验五
    • 11.6 测验六
    • 11.7 测验七
    • 11.8 测验八
    • 11.9 测验九
    • 11.10 测验十
    • 11.11 编程专项测验
    • 11.12 填空题专项测验
    • 11.13 判断题专项测试
    • 11.14 简答题专项测试
    • 11.15 《机器学习技术》总复习
    • 11.16 书本--习题参考解答
  • 12 综合实训项目及展示
    • 12.1 项目(一)作品展示(1)
    • 12.2 项目(一)作品展示(2)
    • 12.3 团队项目实训(必作!)
ndarray的基础操作

 创建数组:

## numpy示例
import numpy as np

a=[1,2,3,4]
b=np.array(a)
print(b,type(b))  
#输出结果 [1 2 3 4] <class 'numpy.ndarray'>

 

数组属性:

#数组个数

print(b.size)       #4
#数组形状
print(b.shape)      #(4,)
#每个元素占用你的字节数
print(b.itemsize)   #4
#维数
print(b.ndim)       #1


arange定义一个数组,限定步长:

np.arange() 参数为初始值、结束值(不包含)、步长
array_arange=np.arange(10,30,5)
print(array_arange)  #[10 15 20 25]

 

linspace定义一个数组,限定数组元素的个数:

np.linspace() 数为初始值、结束值(包含)、元素的个数,
array_linspace=np.linspace(0,2,9)    #结果第一位是0   中间数值平均分配  结束为2
print(array_linspace)  #[0.   0.25 0.5  0.75 1.   1.25 1.5  1.75 2.  ]

 

快速创建N维数组:

ones,创建10行10列的数值为浮点1的矩阵

array_one=np.ones((5,5),dtype=int)  #dtype=int 可以设置类型
print(array_one)

zeros,创建10行10列的数值为浮点0的矩阵

array_zero=np.zeros((2,5,5))        #array_zero=np.zeros((2,5,5)) 2:表示创建2个5行5列的数组
print(array_zero)

 

创建自定义数值的数组:

full,创建3*3 数值为5的数组

full_array=np.full((3,3),5)
print(full_array)

eye,用来构造单位矩阵(默认情况下输出的是对角线全“1”,其余全“0”的方阵eye_array=np.eye(3)

print(eye_array)

'''结果
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

'''
empty,生成未初始化的随机值empty_array=np.empty((2,4))
print(empty_array)
'''结果为
[[6.23042183e-307 1.42417221e-306 1.37961641e-306 6.23039015e-307]
 [6.23053954e-307 1.78020169e-306 1.78021527e-306 3.91786943e-317]]
'''


random生成随机数组\数值

random.rand(),2*2 (范围是0-1)

array_random=np.random.rand(2,2)
print(array_random)

random.uniform(),随机生成指定范围内的一个数(小数)

array_uniform=np.random.uniform(0,5)
print(array_uniform)  #0.6259318369377503

 random.randint(),随机生成指定范围内的一个数(整数不包含2)

array_randint=np.random.randint(0,2)
print(array_randint) #1

 

正太分布
给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3))

复制代码

#正态生成4行5列的二维数组
arr=np.random.normal(1.75,0.1,(4,5))
print(arr)

#截取第1至2行的第2至3列(从第0行算起)
after_arr=arr[1:3,2:4]   #【参数1,参数2】 参数1取的行   参数2取的是范围
print(after_arr)  #

'''结果
[[1.7121083  1.79442264 1.88480996 1.74680449 1.94296451]
 [1.75145398 1.84717094 1.61700579 1.79300659 1.65306822]
 [1.84915626 1.82844994 1.42992838 1.74578747 1.81638628]
 [1.78611223 1.79935389 1.71098421 1.7065452  1.93011894]]
 
[[1.61700579 1.79300659]
 [1.42992838 1.74578747]]
'''

复制代码

 

reshape,改变数组形状(注意:要求前后元素个数匹配)

复制代码

one_20 = np.ones([20])
print("-->1行20列<--")
print(one_20)

#将上面的一维数组变为下面的二维

one_4_5 = one_20.reshape([4,5])
print("将形状分为-->4行5列<--")
print(one_4_5)

复制代码

 

where,条件运算

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print(stus_score)
#比较并替换运算
res=np.where(stus_score<80,0,90)  #(如果数值小于80,替换为0,如果大于80,替换为90)
print(res)

 

统计运算

指定轴最大值amax(求每一行和列的最大值)

复制代码

# 指定轴最大值amax(求每一行和列的最大值)
stus_score=np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print(stus_score)

result_amax=np.amax(stus_score,axis=0)  #axis=0/1; 0表示列 1表示行
print('每一列的最大值:',result_amax)  #[86 88]

result_amax2=np.amax(stus_score,axis=1)
print('每一行的最大值:',result_amax2)   #[88 82 84 86 81]

复制代码

指定轴最小值amin(求每一行和列的最小值)

复制代码

#指定轴最小值amin(求每一行和列的最小值)
stus_score=np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print(stus_score)
result_amin=np.amin(stus_score,axis=0)
print('每一列的最小值:',result_amin)

result_amin2=np.amin(stus_score,axis=1)   #[75 75]
print('每一列的最小值:',result_amin2)   #[80 81 75 83 75]

复制代码

 

mean,求平均值

复制代码

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])

# 求每一行的平均值(0表示列)
print("每一列的平均值:")
result = np.mean(stus_score, axis=0)
print(result)  #[81.4 81.6]

# 求每一行的平均值(1表示行)
print("每一行的平均值:")
result = np.mean(stus_score, axis=1)
print(result)  #[84.  81.5 79.5 84.5 78. ]

复制代码

 

std,求方差

复制代码

stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])

# 求每一行的方差(0表示列)
print("每一列的方差:")
result = np.std(stus_score, axis=0)
print(result)

# 求每一行的方差(1表示行)
print("每一行的方差:")
result = np.std(stus_score, axis=1)
print(result)

复制代码

 

数组运算

数组与数的运算

加法运算

复制代码

#数组与数的运算(加法)
stus_score=np.array(([80, 88], [82, 81], [84, 75], [86, 83], [75, 81]))
print(stus_score)
print(stus_score[:,0])  #[80 82 84 86 75] 打印第一列的值
#实现行和列的值都加5
stus_score[:,0] = stus_score[:,0]+5 #每一列值加5
stus_score[:,1] = stus_score[:,1]+5 #每一行值加5
print(stus_score)

复制代码

乘法运算

复制代码

#数组与数的运算(乘法)
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print("减半前:")
print(stus_score)
#实现行和列的值都减一半
stus_score[:, 0] = stus_score[:, 0]*0.5 #每一列乘0.5
stus_score[:, 0] = stus_score[:, 1]*0.5 #每一行乘0.5
print("减半后:")
print(stus_score)

复制代码

数组与数组之间运算加减乘除运算(基本用的不多)

复制代码

a=np.array([1,2,3])
b=np.array([10,20,30])

c=a+b
d=a-b
e=a*b
f=a/b
print(c)   #[11 22 33]
print(d)    #[ -9 -18 -27]
print(e)    #[10 40 90]
print(f)    #[0.1 0.1 0.1]

复制代码

 

矩阵运算

复制代码

场景:假设下面每个列表代表每个学生成绩,例如,张三 平时成绩80、期末成绩88,计算每个人总成绩是多少?
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])

#根据,平时成绩占40% 期末成绩占60%, 计算结果
q=np.array([[0.4],[0.6]])
result=np.dot(stus_score,q)
print(result)

'''结果
E:\python36\python3.exe C:/Python数据分析/numpy模块.py
[[84.8]
 [81.4]
 [78.6]
 [84.2]
 [78.6]]
'''

复制代码

vstack矩阵垂直拼接

复制代码

#vstack矩阵垂直拼接
v1=[[0,1,2,3,4,5,],
    [6,7,8,9,10,11]]

v2=[[12, 13, 14, 15, 16, 17],
    [18, 19, 20, 21, 22, 23]]

result=np.vstack((v1,v2))
print('v1与v2垂直拼接结果为:',result)
'''结果
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]

'''

复制代码

hstack矩阵水平拼接

复制代码

#hstack矩阵水平拼接
v1=[[0,1,2,3,4,5,],
    [6,7,8,9,10,11]]

v2=[[12, 13, 14, 15, 16, 17],
    [18, 19, 20, 21, 22, 23]]
result=np.hstack((v1,v2))
print('v1与v2水平拼接结果为:',result)
'''结果
[[ 0  1  2  3  4  5 12 13 14 15 16 17]
 [ 6  7  8  9 10 11 18 19 20 21 22 23]]

复制代码

 

练习题目:

题目1:对一个二维数组,选出其第一列和第二列,组成新的二维数组。

复制代码

res=np.array(([1,2,3],[4,5,6],[7,8,9]))
print(res)
print(res[:,[1,2]])  #思路第一个参数时表示去所有行,近一步然后取第1,2列
'''结果为
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[2 3]
 [5 6]
 [8 9]]

'''

复制代码

题目2:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。

res=np.array([1,2,3,4,5,6,7,8,9])
print(res[[1,3,4,6,7]])


## numpy示例 py06

import numpy as np

import random

#创建ndarray

# arange:range的numpy版,支持浮点数


# 复制代码

a=np.arange(10,100)  #步长为1

print(a)

print()

# array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,95, 96, 97, 98, 99])

## 步长

a=np.arange(10,100,20)  #步长为20

print(a)

print()

# array([10, 30, 50, 70, 90])


# 强大的小数步长(普通的range是不支持的)

a=np.arange(10,100,23.56)

print(a)

print()

# array([ 10.  ,  33.56,  57.12,  80.68])



#复制代码

# linspace:类似arange(),第三个参数为数组长度


# 将3到10的数平均分为11份

b=np.linspace(3,10,11)

print(b)

print()

# array([  3. ,   3.7,   4.4,   5.1,   5.8,   6.5,   7.2,   7.9,   8.6,  9.3,  10. ])



#zeros() 根据指定形状和dtype创建全0数组


#复制代码

c=np.zeros(10)

print(c)

print()

# array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

c=np.zeros(10,dtype="int")

print(c)

print()

#array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])


# d多维的

d=np.zeros((3,5))

print(d)

print()

''' array([[ 0.,  0.,  0.,  0.,  0.],

           [ 0.,  0.,  0.,  0.,  0.],

           [ 0.,  0.,  0.,  0.,  0.]])

'''


#复制代码

#ones() 根据指定形状和dtype创建全1数组

a=np.ones(10)

print(a)

print()

# array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])


a=np.ones(10,dtype="float")

print(a)

print()

# array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])


d=np.ones((5,8))

print(d)

print()

''' array([[ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.]])

''' 

p=np.ones((2,3,5))

print(p)

print()

''' array([[[ 1.,  1.,  1.,  1.,  1.],

            [ 1.,  1.,  1.,  1.,  1.],

            [ 1.,  1.,  1.,  1.,  1.]],

 

           [[ 1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.],

           [ 1.,  1.,  1.,  1.,  1.]]])

           '''


#复制代码

# empty() 根据指定形状和dtype创建空数组(随机值)

a=np.empty(10)

print(a)

print()

# array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

b=np.empty(6)

print(b)

print()

# array([  3.2,   4. ,  23. ,   1. ,   6. ,  23. ])

c=np.empty((3,2))

print(c)

print()

# array([[  3.2,   4. ],[ 23. ,   1. ],[  6. ,  23. ]])


#复制代码

#ones和zeros 是先开一块空间,然后再去填充数据

#empty是开一块空间,但是不去赋值,而里边的数据是内存里边没用的数据(已经被释放的数据),所以empty更省时间

#reshape 重新调整矩阵的行数、列数、维数

a=np.arange(15)

print(a)

print()

# array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

print( a.reshape((3,5)) )

print()

# array([[ 0,  1,  2,  3,  4],

#        [ 5,  6,  7,  8,  9],

#        [10, 11, 12, 13, 14]])


#相乘必须是15

# ERR! a.reshape((3,4))

# ValueError                                Traceback (most recent call last)

# <ipython-input-83-a5f367ac0d99> in <module>()

# ----> 1 a.reshape((3,4))

# ValueError: cannot reshape array of size 15 into shape (3,4)

 

#生成多维数组

a=np.arange(15).reshape(3,5)

print(a)

print()

# array([[ 0,  1,  2,  3,  4],

#        [ 5,  6,  7,  8,  9],

#        [10, 11, 12, 13, 14]])


#复制代码

#eye() 根据指定边长和dtype创建单位矩阵


#对角的值都相等

e=np.eye(5)

print(e)

print()

# array([[ 1.,  0.,  0.,  0.,  0.],

#        [ 0.,  1.,  0.,  0.,  0.],

#        [ 0.,  0.,  1.,  0.,  0.],

#        [ 0.,  0.,  0.,  1.,  0.],

#        [ 0.,  0.,  0.,  0.,  1.]])