Home > AI

[资料]跟猴子学习人工智能核心技术

admin   ·   发表于 3个月前   ·   AI
3 Reply   |  Until 3个月前 | 40 View

linker
发表于 3个月前

#导入包
import numpy as np
import pandas as pd

二维数据分析:NumPy

'''
Numpy二维数据结构:Array
'''
#定义二维数组
a=np.array([
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12]
])
#获取行号是0,列号是2的元素
a[0,2]
3
#获取第0列
a[:,0]
array([1, 5, 9])
#获取第0行
a[0,:]
array([1, 2, 3, 4])

Numpy数轴参数:axis

#如果没有指定数轴参数,会计算整个数组的平均值
a.mean()
6.5
#按轴计算:axis=1计算每一行
a.mean(axis=1)
array([ 2.5,  6.5, 10.5])

Pandas二维数组:数据框(DataFrame)

定义数据框

'''
Pandas二维数组:数据框(DataFrame) 
'''
#第1步:定义一个字典,映射列名与对应列的值
salesDict={
    '购药时间':['2018-01-01 星期五','2018-01-02 星期六','2018-01-06 星期三'],
    '社保卡号':['001616528','001616528','0012602828'],
    '商品编码':[236701,236701,236701],
    '商品名称':['强力VC银翘片','清热解毒口服液','感康'],
    '销售数量':[6,1,2],
    '应收金额':[82.8,28,16.8],
    '实收金额':[69,24.64,15]
}

#导入有序字典
from collections import OrderedDict
#定义一个有序字典
salesOrderDict=OrderedDict(salesDict)

#定义数据框:传入字典,列名
salesDf=pd.DataFrame(salesOrderDict)
salesDf


购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6 82.8 69.00
1 2018-01-02 星期六 001616528 236701 清热解毒口服液 1 28.0 24.64
2 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.00
#平均值:是按每列来求平均值
salesDf.mean()
商品编码    236701.000000
销售数量         3.000000
应收金额        42.533333
实收金额        36.213333
dtype: float64

查询数据:iloc属性用于根据位置获取值

'''
iloc属性用于根据位置获取值
'''
#查询第0行第1列的元素,第一个社保卡号
salesDf.iloc[0,1]
'001616528'
#获取第0行,:代表所有列
salesDf.iloc[0,:]
购药时间    2018-01-01 星期五
社保卡号         001616528
商品编码            236701
商品名称           强力VC银翘片
销售数量                 6
应收金额              82.8
实收金额                69
Name: 0, dtype: object
#获取第0列,:代表所有行
salesDf.iloc[:,0]
0    2018-01-01 星期五
1    2018-01-02 星期六
2    2018-01-06 星期三
Name: 购药时间, dtype: object

查询数据:loc属性用于根据索引获取值

'''
loc属性用于根据索引获取值
'''
#查询第0行第0列的元素
salesDf.loc[0,'商品编码']
236701
#获取第0行
salesDf.loc[0,:]
购药时间    2018-01-01 星期五
社保卡号         001616528
商品编码            236701
商品名称           强力VC银翘片
销售数量                 6
应收金额              82.8
实收金额                69
Name: 0, dtype: object
#获取“商品名称”这一列
#salesDf.loc[:,'商品名称']
#简单方法:获取“商品名称”这一列
salesDf['商品名称']
0    强力VC银翘片
1    清热解毒口服液
2         感康
Name: 商品名称, dtype: object

数据框复杂查询:切片功能

#通过列表来选择某几列的数据
salesDf[['商品名称','销售数量']]


商品名称 销售数量
0 强力VC银翘片 6
1 清热解毒口服液 1
2 感康 2
#通过切片功能,获取指定范围的列
salesDf.loc[:,'购药时间':'销售数量']


购药时间 社保卡号 商品编码 商品名称 销售数量
0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6
1 2018-01-02 星期六 001616528 236701 清热解毒口服液 1
2 2018-01-06 星期三 0012602828 236701 感康 2

数据框复杂查询:条件判断

#通过条件判断筛选
#第1步:构建查询条件
querySer=salesDf.loc[:,'销售数量']>1
type(querySer)
pandas.core.series.Series
querySer
0     True
1    False
2     True
Name: 销售数量, dtype: bool
salesDf.loc[querySer,:]


购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 001616528 236701 强力VC银翘片 6 82.8 69.0
2 2018-01-06 星期三 0012602828 236701 感康 2 16.8 15.0

查看数据集描述统计信息

#读取Ecxcel数据
fileNameStr='./朝阳医院2018年销售数据.xlsx'
xls = pd.ExcelFile(fileNameStr)
salesDf = xls.parse('Sheet1') 
?xls.parse
Signature:
xls.parse(
    sheet_name=0,
    header=0,
    names=None,
    index_col=None,
    usecols=None,
    squeeze=False,
    converters=None,
    true_values=None,
    false_values=None,
    skiprows=None,
    nrows=None,
    na_values=None,
    parse_dates=False,
    date_parser=None,
    thousands=None,
    comment=None,
    skipfooter=0,
    convert_float=True,
    mangle_dupe_cols=True,
    **kwds,
)
Docstring:
Parse specified sheet(s) into a DataFrame

Equivalent to read_excel(ExcelFile, ...)  See the read_excel
docstring for more info on accepted parameters
File:      c:\anaconda3\lib\site-packages\pandas\io\excel.py
Type:      method
#打印出前5行,以确保数据运行正常
salesDf.head(5)


购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 1.616528e+06 236701.0 强力VC银翘片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清热解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒灵 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
#有多少行,多少列
salesDf.shape
(6578, 7)
#查看某一列的数据类型
salesDf.loc[:,'销售数量'].dtype
dtype('float64')
#查看每一列的统计数值
salesDf.describe()


社保卡号 商品编码 销售数量 应收金额 实收金额
count 6.576000e+03 6.577000e+03 6577.000000 6577.000000 6577.000000
mean 6.091254e+09 1.015869e+06 2.386194 50.473803 46.317510
std 4.889284e+09 5.131153e+05 2.375202 87.595925 80.976702
min 1.616528e+06 2.367010e+05 -10.000000 -374.000000 -374.000000
25% 1.014234e+08 8.614560e+05 1.000000 14.000000 12.320000
50% 1.001650e+10 8.615070e+05 2.000000 28.000000 26.600000
75% 1.004882e+10 8.690690e+05 2.000000 59.600000 53.000000
max 1.283612e+10 2.367012e+06 50.000000 2950.000000 2650.000000
salesDf[0:5]


购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额
0 2018-01-01 星期五 1.616528e+06 236701.0 强力VC银翘片 6.0 82.8 69.00
1 2018-01-02 星期六 1.616528e+06 236701.0 清热解毒口服液 1.0 28.0 24.64
2 2018-01-06 星期三 1.260283e+07 236701.0 感康 2.0 16.8 15.00
3 2018-01-11 星期一 1.007034e+10 236701.0 三九感冒灵 1.0 28.0 28.00
4 2018-01-15 星期五 1.015543e+08 236701.0 三九感冒灵 8.0 224.0 208.00
 
 

评论列表

  • 加载数据中...

编写评论内容

linker
发表于 3个月前

  • 时间更宝贵,尽可能使模型变快(减少flop)
  • 显存占用不是和batch size简单成正比,模型自身的参数及其延伸出来的数据也要占据显存
  • batch size越大,速度未必越快。在你充分利用计算资源的时候,加大batch size在速度上的提升很有限

尤其是batch-size,假定GPU处理单元已经充分利用的情况下:

  • 增大batch size能增大速度,但是很有限(主要是并行计算的优化)
  • 增大batch size能减缓梯度震荡,需要更少的迭代优化次数,收敛的更快,但是每次迭代耗时更长。
  • 增大batch size使得一个epoch所能进行的优化次数变少,收敛可能变慢,从而需要更多时间才能收敛(比如batch_size 变成全部样本数目)。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content