
正文
python中tf函数 python f函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
文本特征提取
在对文本数据进行处理时,很大一部分精力都用在数据集的特征提取上,因此记录一下常用的文本特征提取方法。
文本特征提取一般分为两部分
(1)文本本身属性:元音字数数、辅音字母数、···
(2)基于文本的特征提取:TF-IDF等
比如提取以上文档的特征,基于文本本身可以提取特征:
(1)字数:统计每一行text文本的词汇数量(有多少个单词)
(2)非重复单词数量:统计每一行text文本中只出现一次的单词个数
(3)长度:每一行text的长度,占了多少存储空间(包含空格、符号、字母等的长度)
(4)停止词数量统计:between、but、about、very等词汇的数量统计
(5)标点符号数量:每一行text中包含的标点符号数量
(6)大写单词数量:统计大写单词数量
(7)标题式单词数量:统计单词拼写首字母是否为大写,且其他字母为小写的单词数量
(8)单词的平均长度:每一行text中每个单词长度的平均值
这些特征的提取不涉及复杂的函数计算,基于文本本身属性提取直观信息作为模型训练的特征。
·
TF-IDF算法 :计算单词权重最为有效的实现方法就是TF-IDF, 它是由Salton在1988 年提出的,以特征词在文档d中出现的次数与包含该特征词的文档数之比作为该词的权重。
python中使用TfidfVectorizer函数实现TF-IDF特征的提取,生成每个text的TF-IDF特征。
·
经过TF-IDF特征提取后,数据集的特征变量超级多(TF-IDF计算了整个数据集出现的所有单词对每个test的权重),面对这样庞大的特征数据,可以通过SVD实现对数据集的压缩。
SVD的原理是将庞大的TF-IDF生成的数据集A进行拆分,设置K值(想要压缩得到的维度,例如K=20,压缩后得到20列的特征数据集)X就是只有K个特征转换后的数据集。
经过压缩后的TF-IDF只有K列,与01中 基于文本本身特征 合并,即为文本数据集的特征向量。
相关问答
Q1: python中在函数后面有一个小括号和一个中括号是什么意思
python语言最常见的括号有三种,分别是:小括号( )、中括号[ ]和大括号也叫做花括号{ }。其作用也各不相同,分别用来代表不同的python基本内置数据类型。 1、python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列。创建方法很简单,大多时候都是用小括号括起来的。 tup = (1,2,3) tup (1, 2, 3) ()#空元组 () 55,#一个值的元组 (55,) 2、python中的中括号[ ]:代表list列表数据类型,列表是一种可变的序列。其创建方法即简单又特别,像下面一样: list('python') ['p', 'y', 't', 'h', 'o', 'n'] 3、python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成。冒号':'分开键和值,逗号','隔开组。用大括号创建的方法如下: dic={'jon':'boy','lili':'girl'} dic {'lili': 'girl', 'jon': 'boy'}
Q2: tf-idf算法python实现
tf-idf=tf*idf
tf是词频,若一个文件中有n个次,词word出现c次;,则tf=c/n
idf是逆文档概率,一共有N个文件,词word在w个文档中出现,则idf=w/N
Q3: python tf.random_uniform与np.random_uniform有什么区别
首先应该是np.random.uniform
这两个回答多少有点大病
两者虽然函数名相同python中tf函数,但属于不同的库python中tf函数,一个是TensorFlow的,一个是numpy的。
就好比python中tf函数你家也有冰箱我家也有冰箱一样。
tf.random.uniform的属性变量包括python中tf函数:
shape: 输出张量的形状,比如矩阵或者向量的维度
mean: 正态分布的均值,默认为0
stddev: 正态分布的标准差,默认为1.0
dtype: 输出的类型,默认为tf.float32
seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
name: 操作的名称
np.random.uniform的属性变量包括:
low: 采样下界,float类型,默认值为0
high: 采样上界,float类型,默认值为1
size: 输出样本数目,为int或元组(tuple)类型
tensorflow是生成均匀分布,而numpy则是在分布中做随机采样
Q4: python中tf.summary.scalar是什么意思
tensorflow总结python中tf函数的时候需要给个名字,其实这个函数就是让画出来的tensorflow的图的节点的名字有一点实际意义,比如整个网络的名字是xxx,就可以使用tf.summary.scalar(xxx,loss),后面的lossy可以替换成网络自己的loss.
具体参考python中tf函数:
Q5: TensorFlow2.0 使用tf.function装饰器将动态图转化成静态图加速
这里只是一些简单的介绍
假设我们要把一个模型的前向传播转化成静态图:
这个装饰器对任何 只包含tensor操作 的函数都有效.
在eager执行模式下, 可以使用普通的python语法对流程进行控制, 但是在tf.function装饰的函数中, 要对上面的2种方式进行转化.
使用1.x的 tf.cond , tf.while_loop 的方式进行控制应该也是可以的.
在使用 tf.function 装饰的函数中print只会在最初执行1次, tf.Variable() 也是. 如果要每次都执行需要使用tf.print
如果要使用类似python中类似list的数据结构, 可以使用tf.TensorArray
@tf.function是支持多态的, 假设有以下函数
在 x=tf.constant(0) 和 y=tf.constant(1) , x=tf.constant(0.0) 和 y=tf.constant(1.0) 的情况下是会产生两个不同的静态图的, 甚至 x=tf.constant(0) 和 y=tf.constant(1) , x=tf.constant(1) 和 y=tf.constant(1) 都是两个不同的静态图, 因为他们的数据类型不同, 或者数值不同都会造成静态图不同, 这时候静态图可能比eager执行方式更加费时, 因为需要retracing是哪一张静态图. 所以在使用@tf.function时最好指定输入数据的类型和shape, 类似于tensorflow1.x中 tf.placehold 的效果:
此时输入 x=tf.constant(0) 和 y=tf.constant(1) , x=tf.constant(1) 和 y=tf.constant(1) 都会调用同一张静态图. 另外, 传入的每一个python类型也都会构造一个图, 所以最好把 training=True 改为 training=tf.constant(True) .
和tensorflow1.x中tf.shape于get_shape()/shape的区别类似, 在 tf.function 装饰的函数中, 需要使用 tf.shape() 获取tensor的shape, 而不能使用 get_shape() 或者 shape . 否则会产生 NoneType 错误.
python中tf函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python f函数、python中tf函数的信息别忘了在本站进行查找喔。







