day2 python常用机器学习库

python常用机器学习库

Numpy数据分析模块

一、Ndarray对象:NumPy的底层是一个Ndarray结构,该结构可以生成N维数组对象。(存放同类型元素的多维数组)
  • 轴axex 秩rank
# 1.创建Ndarray  .array()
import numpy as np
arr = np.array([0,1,2,],[3,4,5])
print(arr)
# 显示不同轴的统计结构
print(arr.sum(axis=0))
print(arr.sum(axis=1))
# 2.调整数组大小   .reshape/.shape
reArr = arr.reshape(3,2)
reArr
#其效果与shape(3,2)相同
>array([[0,1],
        [2,3],
        [4,5]])
# shape属性返回(3,2) ndim属性返回秩,此处=2
  1. 创建特殊的数组
    (1) numpy.empty:创建一个指定形状(shape)、数据类型dtype且未初始化的数组。
    参数描述
    shape数组形状
    dtype数组类型,可选
    order有C、F两个选项,分别代表:行优先和列优先,表示再计算机内存储元素顺序
    (2) numpy.zeros:创建指定大小的数组,以0填充
    (3) numpy.ones:创建指定形状的数组,以1填充
    # 3.创建全0数组
    y = np.zeros((5,),dtype = np.int)
    y
    >array([0,0,0,0,0])
    
    (4) 能创建序列的函数
    arrange函数、linspace函数以及python的range函数
    # 4.numpy创建序列
    import numpy as np
    arr = np.arange(1,5,0.2)
    arr
    >array([1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4,
       3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8])
    # compare with ↓
    arr = np.linspace(1,5,10)
    arr
    >array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,
       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])
    
二、数组的切片、迭代和索引
  • ndarray一维数组可以直接索引、切片和迭代,和其他Python序列同样。
  • 二维数组:
    1. 切片操作
      切片操作同一维数组类似,由于多了一个轴,所以[]内有两个值。比如:A[0:2,0:2]
    2. 迭代操作
      可以使用for循环嵌套,但它通常按照第一条轴对二维数组进行扫描,可以使用apply_along_axix(func,axis,arr)函数设定对每一列或行进行处理。!!!此为Numpy中包含一个迭代器对象numpy.nditer,可以很方便地对数组进行迭代。
    # 5.ndarray数组的切片
    print(len(arr))
    >10
    arr = arr.reshape(5,2)
    arr
    >array([[1.        , 1.44444444],
       [1.88888889, 2.33333333],
       [2.77777778, 3.22222222],
       [3.66666667, 4.11111111],
       [4.55555556, 5.        ]])
    arr[1:4, 0:1]
    >array([[1.88888889],
       [2.77777778],
       [3.66666667]])
    
    # 6.迭代:两种方式
    import numpy as np
    arr = np.arange(0,60,5) # (60-0)/5个数
    arr = arr.reshape(3,4)
    print(arr)
    # 第一种 按行
    for item in arr:
        print(item)
    # 第二种 单个元素
    for item in np.nditer(arr):
        print("%.3f" %item, end=' ')
    

Pandas数据分析模块

一、Pandas是python的一个数据分析包,基于Numpy的一种工具,Pandas的三种基础数据结构:
  1. Series:一维数组,与Numpy中的一维array类似。与Python的数据机构List相似,可以保存不同数据类型
  2. DataFrame:二维数据结构。可以将其理解为Series的容器。
  3. Panel:三维的数组,可以理解为是DataFrame的容器。
# 1.Series一维数组的操作
import Pandas as pd
s = pd.Series([1,3,5,6])
print(s)
>0    1
 1    3
 2    5
 3    6
 dtype: int64
s[1] = 80 # 将1号索引修改未80
s2=pd.Series({'color':1,'size':2,'weight':3})
s2['weight']=200
s2
>color       1
 size        2
 weight    200
 dtype: int64
# 2.二维DataFrame数组操作
dict1 = {'col1':[1,2,5,7],'col2':['a','b','c','d']}
df = pd.DataFrame(dict1)
df
>一个4行3列的表格
	col1	col2
 0	1	a
 1	2	b
 2	5	c
 3	7	d
 # 从数据文件中读取,生成DataFrame
 data = pd.read_csv('dataH.txx',sep=' ')#指明分隔符
 print(data)
 # 切片
 data[:2] # 输出前两行数据
 # 简单过滤
 data[data['Wt'] < 60] # 输出Wt列数据<60的行
  • !!!标准差求法以及结果的不同。
  • numpy中标准偏差类型ddof默认为0,计算的是总体标准偏差,numpy.std(ndarray)
  • pandas中标准偏差类类型ddof默认为1,计算的是样本标准偏差,DataFrame.std()
  • DataFrame.add(Df, fill_value=0 )
  • DF.dropna() :其中 axis=0/1,表示按行/列删除
    #填充缺失值
    dt1=pd.DataFrame(np.arange(16).reshape(4,4),
                  index=['BJ','SH','GZ','SZ'],
                  columns=['q','r','s','t'])
    dt2=pd.DataFrame(np.arange(8).reshape(4,2),
                  index=['BJ','SH','GZ','SZ'],
                  columns=['r','t'])
    print(dt1)
    print(dt2)
    dt3=dt1.add(dt2)     
    # dt3=dt1.add(dt2,fill_value=0)  #再试试这句
    dt3
    

Matplotlib绘图库

一、Matplotlib
  1. Figure & Subplot
    matplotlib的图像都位于Figure对象中,可以用plt.figure创建一个新的Figure(空Figure不能绘图),添加plot用add_subplot
    # 1.绘制简单图表
    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax1 = fig.add_subplot(2,2,1)
    ax2 = fig.add_subplot(2,2,2) #位置 2*2的第2个位置 的等效于add_subplot(222)
    fig,axes=plt.subplots(2,3) #直接生成2*3个子图
    axes
    
  2. plot绘图
    plot(x,y,format_string,**kwargs)
    参数:
    x:x轴数据,列表或数组
    y:y轴数据
    format_string:控制曲线的格式字符串,可选
    **kwargs:第二组或更多(x,y,format_string)
    注:当绘制多条曲线时,各条曲线的x不能省略
    # 2.绘制正弦曲线图形
    # 制sin(x)函数图形
    import numpy as np
    import matplotlib.pyplot as plt
    x = np.linspace(-10,10,100) #-10~10的一百个数据点
    y = np.sin(x)
    plt.plot(x,y,marker="" #平滑曲线)
    
    # 3.绘制简单直线,设置标题、坐标轴、图例
    import matplotlib.pyplot as plt
    import numpy as np
    a = np.arange(10)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
    plt.legend(['1.5x','2.5x','3.5x','4.5x'])
    plt.title('simple lines')
    plt.show()
    
    # 练习:在多个plot上绘图
    import numpy as np
    improt matplotlib.pyplot as plt
    fig,axes = plt.subplots(2,1)
    plt.subplot(2,1,1)
    x = np.linspace(-10,10,100)
    y = np.sin(x)
    plt.plot(x,y,marker="o")
    plt.title('sinx')
    plt.subplot(2,1,2)
    arr = np.arange(10)
    plt.plot(arr,arr*1.5,arr.arr*2.5,arr,arr*3.5)
    plt.legend(['1.5x','2.5x','3.5x'])
    plt.title('lines')
    
  • pandas中内嵌了基于matplotlib的绘图函数,Series和DataFrame都包含生成图表的plot方法,默认情况为线型图
    import pandas as pd
    data = pd.read_csv('iris.txt',',',header=None)
    df = pd.DataFrame(data)
    ax = df.plot(title='iris')
    ax.set_xlabel('PL')
    ax.set_ylable('SL')
    

OpenCV模块

# 读写图像文件
import cv2
img = cv2.imread('img.jpg',0) #转变为灰度图,默认为IMREAD_COLOR
cv2.imshow('image',img) # 打开img,title为image
k = cv2.waitKey(0)
if k == 27:         #按Esc键直接退出
    cv2.destroyAllWindows()
elif k == ord('s'): # 按's'键先保存灰度图,再退出
    cv2.imwrite('result.png',img)
    cv2.destroyAllWindows()
  • cap.read() 读取视频的帧,ret是布尔值,frame是一帧图像 三维数组
#打开摄像头捕获图像
import cv2
cap  = cv2.VideoCapture(0)
while(True):
    ret, frame = cap.read()    
    cv2.imshow(u"Capture", frame)
    key = cv2.waitKey(1)
    if key & 0xff == ord('q') or key == 27:
        print(frame.shape,ret)
        break
cap.release()
cv2.destroyAllWindows()
exit()  #在摄像头关闭异常时强制退出
# 读取视频
import cv2
import numpy as np
#获取视频中每一帧图像
rec = cv2.VideoCapture(r'redplane.mp4')
while(True):
    rt, frame = rec.read()    
    cv2.imshow('frame',frame)   
    key = cv2.waitKey()
    if key== ord('q') or key == 27:  #按q或ESC退出
        break
rec.release()        
cv2.destroyAllWindows()

WordCloud制作词云

突出展示高频高质的数据信息,凸显出数据中所包含的文本的主旨。可以用于快速显示数据中的文本频率。

# 1.使用词云展示高频词汇
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取一个txt文件
f = open(r'texten.txt','r').read()
# 生成词云
wordcloud=WordCloud(backbround_color="white",width=1000,height=860,margin=2).generate(f)
#显示词云图片
plt.imshow(wordcloud)
plt.axis("off") #关闭坐标轴
plt.show()
#保存图片
wordcloud.to_file('test.png')
HOMEWORK:
  1. 编写程序、实现如下功能:
    1)从中日7~18岁男生平均身高“avgHgt.csv”中读取身高数据
    2)把数据绘制成曲线图
    3)写入avgHgt.txt中
  2. 选择网络上一篇名人的英文演讲稿,制作词云。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值