python中统计特征
1.np.sum(a,axis=None,dtype=None)
发现对于布尔运算的结果,np.sum()只是返回其中True的个数。如:
>>> np.sum(np.array([True,False,True,False,False,True]))3
用在统计样本中各类元素个数中:
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
data = x[0] # 数据集中第一个属性
features = set(data) # data中各不同的特征
tmp = [data == feature for feature in features] # 返回的tmp是含35个元素的表,每个表中元素是150个元素的矩阵,矩阵中元素是布尔运算判别结果,True or False
>>>[np.sum(x) for x in tmp]
[2, 7, 9, 10, 6, 9, 4, 6, 3, 5, 7, 1, 1, 1, 3, 6, 4, 2, 5, 7, 6, 6, 1, 1, 1, 1, 8, 1, 4, 8, 4, 3, 1, 3, 4]
同样如同np.argsort(),或者np.argmax(a,axis=None).返回最大值的索引。
2.set(iterable)
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
显然可以用来提取出所以类别
3.np.bincount(x,weights=None,minlength=0)
x 可以是列表,数组,weights是每个元素的权重,写成列表形式,如果weights不是None,则返回结果为权重的叠加和,其中每个元素是对应元素的权重的和。元素个数和x的元素个数是相同的,minlength是指定结果的长度,如果minlength被指定,那么输出数组中bin的数量至少为它指定的数(如果必要的话,bin的数量会更大,这取决于x)。
>>> np.bincount([2,3,3,4],weights=None,minlength=0)array([0, 0, 1, 2, 1], dtype=int64)
>>> np.bincount(np.array([2,3,3,4]),weights=[0.5,0.4,-0.2,0.6],minlength=0)array([0. , 0. , 0.5, 0.2, 0.6])
>>> np.bincount([0.2,0.3,0.3,0.4],weights=None,minlength=0)array([4], dtype=int64)
注意到没法处理浮点数,因为他会把浮点数变成整数。
3.collcetions.Counter()
Counter()函数可以统计一维数组中不同元素及其出现次数。返回结果为一个字典,字典keys是元素的类别,values是类别对应出现次数。可以通过Counter(x).values(),和Counter(x).keys()来访问各类别出现次数,和类别。当然是列表形式。只能以for循环访问具体元素。
>>> d=np.random.randint(1,5,size=7)
>>> d
array([2, 4, 3, 4, 2, 2, 2])
>>> Counter(d)
Counter({2: 4, 4: 2, 3: 1})
>>> Counter(d).values()
dict_values([4, 2, 1])
>>> Counter(d).keys()
dict_keys([2, 4, 3])
>>> for i in Counter(d).keys():print(i)2
4
3
Counter统计对象可以是字符串,也可以是浮点数:
>>> a=np.array(['是','否','是','是','否','非',])
>>> from collections import Counter
>>> Counter(a)
Counter({'是': 3, '否': 2, '非': 1})
>>> Counter(np.array([0.1,0.3,0.5,0.8]))
Counter({0.1: 1, 0.3: 1, 0.5: 1, 0.8: 1})
这是他的优点,但是没法对每个元素加权,这也是没办法的。这时就需要bincount函数
counter由于返回的是字典,因此没法索引。如果一定要索引,就需要将字典类型转换。如list(counter(a)).这样就可以索引其中元素了.一般索引keys()或values()。
4.np.bincount(x, weights=None, minlength)
点击打开链接np.bincount详解
补充几点:
0.bincount对自然数统计,不管是否出现,如果对象中只有1,3,那么输出会补上0,2,虽然他们的出现次数都为0.
0.1. 输出的数组实际是对应元素的权重和,如果weights=None,则权重默认为1,否则就按加法计算。
1.bincount只能统计数字出现次数,不能统计字符串出现次数,如:
>>> a=np.array(['是','否','是','是','否','非',])
>>> np.bincount(a)
Traceback (most recent call last):File "<pyshell#44>", line 1, in <module>np.bincount(a)
TypeError: Cannot cast array data from dtype('<U1') to dtype('int64') according to the rule 'safe'
>>> a=np.array(['a','c','d'])
>>> np.bincount(a)
Traceback (most recent call last):File "<pyshell#46>", line 1, in <module>np.bincount(a)
TypeError: Cannot cast array data from dtype('<U1') to dtype('int64') according to the rule 'safe'
2.数字必须是整数,不能是浮点数,如:
>>> np.bincount(np.array([0.1,0.3,0.5,0.8,2]))
Traceback (most recent call last):File "<pyshell#35>", line 1, in <module>np.bincount(np.array([0.1,0.3,0.5,0.8,2]))
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
>>>
3.必须是自然数,不能是负数。例如:
>>> b=[-1,-2,1,1,2,3,6]
>>> b=np.array([b])
>>> np.bincount(b)
Traceback (most recent call last):File "<pyshell#32>", line 1, in <module>np.bincount(b)
ValueError: object too deep for desired array
4.bincount统计对象可以是列表,元组,但是也不许有字符串,或者负数,浮点数
5.enumerate(iterable)
enumerate()是内置函数,返回对应索引及其值,也是没法直接访问其中元素。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>> d
array([2, 3, 4, 2, 3, 2])
>>> index_lst=[] # 存放索引
>>> ele_lst=[] # 存放元素
>>> from collections import Counter
>>> features=Counter(d).keys() # 找features也可用set(d)获取,都一样需要转变成list才能索引
>>> features
dict_keys([2, 3, 4])
>>> features=list(feautres) # 如果不把feature变成列表格式就没法索引里面的元素
>>> for index,ele in enumerate(d):if ele == features[0]:ele_lst.append(ele)index_lst.append(index)
>>> index_lst
[0, 3, 5]
>>> ele_lst
[2, 2, 2]
6.filter(function,iterable)
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
7.用判别语句实现分类统计
最简单的例子:
>>> d=[2,3,4,2,3,2] # 定义一个列表
>>> d == 2 # 这里只能这这个判句
False
>>> d=np.array(d) # 如果变成矩阵,就可以对所有元素进行判断了
>>> d == 2
array([ True, False, False, True, False, True])
>>> features=set(d)
>>> features
{2, 3, 4}
最好用矩阵判断。列表默认对整个表判断
>>> e=[d == feature for feature in features]
>>> e
[array([ True, False, False, True, False, True]), array([False, True, False, False, True, False]), array([False, False, True, False, False, False])]
每个特征都对所有的元素遍历判别过了,返回结果是每个特征对应的判别结果,可以用来寻找每个特征对于的样本和输出。
如:
第一个特征也就是2对应的样本:
>>> d[e[0]]
array([2, 2, 2])
python中统计特征相关推荐
- 用 XGBoost 在 Python 中进行特征重要性分析和特征选择
使用诸如梯度增强之类的决策树方法的集成的好处是,它们可以从训练有素的预测模型中自动提供特征重要性的估计. 在本文中,您将发现如何使用Python中的XGBoost库来估计特征对于预测性建模问题的重要性 ...
- 使用XGBoost在Python中进行特征重要性分析和特征选择
[翻译自 : Feature Importance and Feature Selection With XGBoost in Python] [说明:Jason Brownlee PhD大神的文章个 ...
- python中怎么计数_浅谈python中统计计数的几种方法和Counter详解
1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...
- python中统计时间的函数
学习目标: 在python中,datetime是时间模块,在这个模块下还包含着一个datetime的类,通过以下代码可以调用这个类,统计程序运行的时间,得到时间差. from datetime imp ...
- python中统计相同字符的个数
描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写,字符串长度小于500. 输入描述: 第一行输入一个由字母和数字以及空格组成的 ...
- python中统计计数的几种方法
以下实例展示了 count() 方法的使用方法: T = (123, 'Google', 'Runoob', 'Taobao', 123);print ("123 元素个数 : " ...
- python中统计计数的几种方法和Counter的介绍
1使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b', ...
- python中统计单词出现的次数_python统计文章中单词出现次数实例
python统计单词出现次数 做单词词频统计,用字典无疑是最合适的数据类型,单词作为字典的key, 单词出现的次数作为字典的 value,很方便地就记录好了每个单词的频率,字典很像我们的电话本,每个名 ...
- 图像特征算法(三)——ORB算法简述及Python中ORB特征匹配实践
计算机视觉专栏传送 上一篇:图像特征算法(二)--SURF算法简述及Python标记SURF特征检测实践 下一篇:持续创作中- 目录 计算机视觉专栏传送 一.ORB算法 1.算法简介 2.FAST寻找 ...
最新文章
- UC伯克利教授Stuart Russell人工智能基础概念与34个误区
- android 图片加载过多崩溃
- 实战Solaris 10
- HTTP 头部解释,HTTP 头部详细分析,最全HTTP头部信息
- Mr.J--JS事件监听(捕获冒泡)
- building tool
- JS_console对象中的一些常用方法
- 检查python模块_Python输入模块–有效使用类型检查器
- Hive 窗口函数lead、lag
- Linux:configure: error: OpenSSL libcrypto not found
- visual studio 2010和注册码
- NDK not configured
- 计算机打字盲打方法,练习键盘打字方法 盲打的指法练习
- 利用微信搜索抓取公众号文章
- 【NPDP产品经理】发散思维让你的思维视野更广阔
- 从卡牌类游戏初探游戏服务器
- python #hsv空间中Hue色度/色调在色相环上的角#冷暖色调 在色相环上的范围
- 搞定检索式对话系统的候选response检索--使用pysolr调用Solr
- About kettle carte
- Intellij搭建spark开发环境
热门文章
- 【李宏毅2020 ML/DL】P20-21 Recurrent Neural Network | “Deep and structure is future.“
- 重力感应游戏可行性办法研究_完结
- mysql 存储过程 光标_mysql存储过程 光标
- SystemVerilog中package(包)的基本使用
- php 脚本调试,PHP 调试脚本
- DOM 精通了?请问 Node 和 Element 有何区别?
- android SQLite常用数据类型
- C++ BigEndian::FromLocal(uint_16)
- linux监控进程资源,linux系统资源监控命令
- 12平键标准尺寸规格表_郑州花纹板加工规格尺寸表