《机学⼀》特征⼯程1——⽂本处理:sklearn抽取、jieba中⽂分词、TF和IDF抽
零、机器学习整个实现过程:
⼀、机器学习数据组成
1. 特征值:
2. ⽬标值:
=========================================================================
⼆、特征⼯程和⽂本特征提取
1.概要:
1、特征⼯程是什么
2、特征⼯程的意义:直接影响预测结果
3、scikit-learn库 介绍
4、数据的特征抽取
5、数据的特征预处理
6、数据的降维
【特征⼯程】:特征⼯程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从⽽提⾼了对未知数据的预测准确性
(如图:⽂章转为数据即是⼀个特征⼯程)
2.特征⼯程⼯具:
1、pandas:⼀个数据读取⾮常⽅便以及基本的处理格式的⼯具
2、sklearn:对于 特征的处理 提供了强⼤的接⼝,功能如下
2.1Python语⾔的机器学习⼯具:
Scikit-learn包括许多知名的【机器学习算法】的实现(使⽤前提:搞懂算法)
Scikit-learn⽂档完善,容易上⼿,丰富的API,使其在学术界颇受欢迎。
2.2Scikit-learn安装
pip install Scikit-learn
import sklearn
2.3数据的特征抽取
特征抽取:特征抽取对⽂本等数据进⾏特征值化(把⼀篇⽂章转换成数值,就是⼀个特征抽取)⽬的:为了计算机更好理解数据
1、特征抽取实例演⽰:⼀句话转化为,⼆维数组
2、sklearn特征抽取API:sklearn.feature_extraction(feature:特征。extraction:抽取)
3、字典特征抽取:
作⽤:对字典数据进⾏特征值化
类:sklearn.feature_extraction.DictVectorizer
4、⽂本特征抽取
2.33DictVectorizer语法
语法:DictVectorizer(sparse=True…)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
X:array数 组或者sparse矩阵
返回值:转换之前数据格式
< feature_names()
返回类别名称
按照原先的标准转换
from sklearn.feature_extraction import DictVectorizer
def dictvec():
"""
功能:字典数据抽取
:return:None
"""
#1.实例化类DictVectorizer
dicts=DictVectorizer(sparse=False)
#2.调⽤fit_transform⽅法输⼊数据并转换注意返回格式
data=dicts.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}]) #3.get_feature_names()⽤法,获取
_feature_names())
print(data)
if __name__=="__main__":
dictvec()
'''
DicVecorizer不加参数结果:
(0, 1) 1.0
(0, 3) 100.0
(1, 0) 1.0
(1, 3) 60.0
(2, 2) 1.0
(2, 3) 30.0
DicVecorizer加参数sparse=False返回:
['city=上海', 'city=北京', 'city=深圳', 'temperature']
[[  0.  1.  0. 100.]
[  1.  0.  0.  60.]
[  0.  0.  1.  30.]]  此处返回的叫one-hot编码
'''
【one-hot编码】:
One-hot编码⽤于把类别转换为数值如下:
为防⽌编号1,2,3,4…有优先级别之分,最终对结果造成影响one-hot编号转换成如下样式:我们做的是为每个类别⽣成⼀个布尔列。这些列中只有- -列可以为每个样本取值1。
因此,术语才叫“⼀个热”编码。
2.34⽂本特征抽取
作⽤:对⽂本数据进⾏特征值化
类:sklearn.CountVectorizer
CountVectorizer语法:
CountVectorizer(max_df=1.0,min_df=1,…)
返回词频矩阵
CountVectorizer.fit_transform(X,y)
X:⽂本或者包含⽂本字符串的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
<_feature_names()
返回值:单词列表
2.35【英⽂处理】直接⽤fit_transform() 统计次数特征化:
1. 对⽂章当中所有的词,重复的只看做⼀ 次词的列表。
2. 对每篇⽂章,在词的列表⾥⾯进⾏统计每个词出现的次数
3. 单个字母不统计
from sklearn.feature_extraction import DictVectorizer
from sklearn. import CountVectorizer, TfidfVectorizer
def countvec():
"""
对⽂本进⾏特征值化
:return: None
"""
cv = CountVectorizer()
data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])
_feature_names())
array())
return None
if __name__ =="__main__":
countvec()
'''
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 1 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]]
'''
2.36【中⽂处理】先jieba分词,再⽤fit_transform统计次数特征化:
中⽂抽取必须要先进⾏分词处理。英⽂每个单词间都有空格,因此不⽤分词处理。中⽂只有加了空格才能像如下进代码⾏分词。
from sklearn.feature_extraction import DictVectorizer
from sklearn. import CountVectorizer, TfidfVectorizer
def countvec():
"""
对⽂本进⾏特征值化
:return: None
"""
cv = CountVectorizer()
data = cv.fit_transform(["⼈⽣苦短,我喜欢 python","⼈⽣漫长,不⽤ python"])
_feature_names())
array())
return None
if __name__ =="__main__":
countvec()
'''
结果:
['python', '不⽤', '⼈⽣', '⼈⽣漫长', '喜欢', '苦短']
[[1 0 1 0 1 1]
[1 1 0 1 0 0]]
'''
2.37中⽂分词处理库:jieba
transform中文翻译
安装:pip3 install jieba
返回值:词语⽣成器

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。