可以看出,函数假设样本中最后一个属性(-1)为类别值,返回一个类别值到数据样本列表的映射。
- def summarize(dataset):
- summaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)]
- del summaries[-1]
- return summaries
我们可以用一些样本数据测试如下:
- dataset = [[1,20,1], [2,21,0], [3,22,1]]
- separated = separateByClass(dataset)
- print('Separated instances: {0}').format(separated)
运行测试,你会看到如下结不雅:
- Separated instances: {0: [[2, 21, 0]], 1: [[1, 20, 1], [3, 22, 1]]}
计算均值
我们须要计算在每个类中每个属性的均值。均值是数据的中点或者集中趋势,在计算概率时,我们用它作为高斯分布的中值。
应用一些简单的数据测试如下:
我们也须要计算每个类中每个属性的标准差。标准差描述了数据分布的误差,在计算概率时,我们用它来描述高斯分布中,每个属性所期望的分布。
标准差是方差的平方根。方差是每个属性值与均值的离差平方的平劫数。留意我们应用N-1的办法(译者注:拜见无偏估计),也就是在在计算方差时,属性值的个数减1。
- import math
- def mean(numbers):
- return sum(numbers)/float(len(numbers))
- def stdev(numbers):
- avg = mean(numbers)
- variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1)
- return math.sqrt(variance)
经由过程计算大年夜1到5这5个数的均值来测试函数。
运行测试,你会看到如下结不雅:
- Summary of [1, 2, 3, 4, 5]: mean=3.0, stdev=1.58113883008
提取数据集的特点
如今我们可以提取数据集特点。对于一个给定的样本列表(对应于某个类),我们可以计算每个属性的均值和标准差。
推荐阅读
日前,在第十四届中国信息港论坛举办的“2017年中国信息通信与‘互联网+’应用优良结不雅奖”颁奖典礼上,中国电信浙江宁波分公司的“宁波市基层社会办事治理综>>>详细阅读
地址:http://www.17bianji.com/lsqh/35863.html
1/2 1