机器学习数据集的组成
数据集:特征值+目标值
特征工程的定义
1、有些数据可以没有目标值,使用dataFrame数据转换
2、重复数据可以去除重复也可以不去除重复
3、pandas是一个数据读取非常方便以及基本的处理格式的工具
sklearn介绍
1、sklearn提供了很多的机器学习算法
2、sklearn对于特征的处理提供了强大的接口
3、scikit-learn是机器学习的库,安装前必须要有numpy和pandas
4、sklearn特征抽取对文本等数据进行特征值化
5、sklearn特征抽取API,都在sklean.feature_extraction这个库里面
数据特征抽取
字典数据抽取
1、字典数据抽取:把字典中一些类别数据(数据内容值),分别转化成特征(字段)
2、字典中把字符串转化为 one-hot 编码
3、有类别特征的需要转化为字典数据
from sklearn.feature_extraction import DictVectorizer
measurements = [
{‘city’: ‘Dubai’, ‘temperature’: 33.},
{‘city’: ‘London’, ‘temperature’: 12.},
{‘city’: ‘San Francisco’, ‘temperature’: 18.},
{‘city’: ‘长沙’, ‘temperature’: 28.},
]
vec = DictVectorizer()
print(vec)
title = vec.get_feature_names()
#sparse格式,矩阵类型,节约内存
dataArray = vec.fit_transform(measurements)
#转化为数组类型
dataArray = dataArray.toarray()
#打印类型名称
print(vec.get_feature_names())
print(dataArray)
文本特征抽取
1、对文本特征值化(统计词汇出现次数)
a、统计词汇出现的次数,常用语词汇会影响结果(例如:因为、所有、所以)
b、对单个字母或者一个字不统计
c、中文需要进行分词,不然会得到一句一句话
‘’’
Created on May 19, 2019
文本特征抽取
http://sklearn.apachecn.org/#/docs/58?id=_421-%e4%bb%8e%e5%ad%97%e5%85%b8%e7%b1%bb%e5%9e%8b%e5%8a%a0%e8%bd%bd%e7%89%b9%e5%be%81
@author: Administrator
‘’’
from sklearn.feature_extraction.text import CountVectorizer
import jieba
vectorizer = CountVectorizer()
print(vectorizer)
corpus = [
‘This is the first document.’,
‘This is the second second document.’,
‘And the third one.’,
‘Is this the first document?’,
‘儿子 我是你爸爸呀,哈哈哈!!!有本事了呀!’,
‘我是你爸爸,你不认识我了吗’,
]
#返回矩阵
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
#矩阵转化为数组
dataArray = X.toarray()
print(dataArray)
#需要对中文分词,使用jieba工具
strCN = “哈哈!你这个小孙子,我是你爷爷,爸爸的爸爸,我是你爸爸的爸爸呀!”;
#分词后返回一个对象
data = jieba.cut(strCN)
#对返回的对象列表话
dataList = list(data);
print(dataList)
corpus.append(dataList)
2、对文本特征值化(使用tf-idf 获取文本的重要性)
a、tf:term frequency (词频率) 出现次数
b、idf:逆文档频率 inverse doucument frequency
log(总文档数量 / 该词出现的文档数量)
log(数值) 输入的数值越小,这个值就越小
c、tf * idf 重要性程度
d、TF-IDF作用:用来评估一个字词对于一个文件集或一个词语库中的其中一份文件的重要程度
‘’’
Created on May 19, 2019
文本特征抽取
TF-IDF 获取到重要性
http://sklearn.apachecn.org/#/docs/58?id=_421-%e4%bb%8e%e5%ad%97%e5%85%b8%e7%b1%bb%e5%9e%8b%e5%8a%a0%e8%bd%bd%e7%89%b9%e5%be%81
@author: Administrator
‘’’
from sklearn.feature_extraction.text import CountVectorizer , TfidfVectorizer
import jieba
def cutKeywords():
#需要对中文分词,使用jieba工具
strCN = “哈哈!你这个小孙子,我是你爷爷,爸爸的爸爸,我是你爸爸的爸爸呀!”;
strCN2 = “要的,哈哈,我磊哥是你爷爷”;
strCN3 = “哈哈!你这个社会人,我是你爸”;
#分词后返回一个对象
data = jieba.cut(strCN)
#对返回的对象列表话
dataList = list(data);
dataList = " ".join(data)
#分词后返回一个对象
data2 = jieba.cut(strCN2)
#对返回的对象列表话
dataList2 = list(data2);
dataList2 = " ".join(data2)
#分词后返回一个对象
data3 = jieba.cut(strCN3)
#对返回的对象列表话
dataList3 = list(data3);
dataList3 = " ".join(data3)
return dataList,dataList2,dataList3;
rv,rv2,rv3 = cutKeywords();
print(rv)
print(rv2)
print(rv3)
measurements = [
rv,
rv2,
rv3,
]
tf = TfidfVectorizer()
#返回矩阵
resultTF = tf.fit_transform(measurements)
print(tf.get_feature_names())
#矩阵转化为数组
dataArray = resultTF.toarray()
print(dataArray)