一、机器学习概述
1.什么是机器学习
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
2.为什么需要机器学习?
1、解放生产力–智能客服
2.解决专业问题–ET医疗
3.提供社会便利–城市大脑
4.机器学习在各领域带来的价值—医疗、航空、教育、物流、电商
让机器学习程序代替手动步骤,减少企业的成本代替企业的效率
3.机器学习的应用场景
自然语言处理、无人驾驶、计算机视觉、推荐系统等
二、数据集的组成
1.历史数据是什么格式
机器学习的数据:文件CSV
读取工具是pandas
pandas:一个数据读取非常方便以及基本处理数据格式的工具。如缺失值处理、数据转换
numpy:释放了GIL,真正的多线程
不采用mysql的原因
1.性能瓶颈。读取速度慢
2.格式不符合机器学习要求的数据格式
2.可用数据集
网址:
Kaggle网址:https://www.kaggle.com/datasets
UCI数据集网址: http://archive.ics.uci.edu/ml/
scikit-learn网址:http://scikit-learn.org/stable/datasets/index.html
3.常用数据集数据的结构组成
特征值+目标值
三、数据的特征工程
1.特征工程是什么
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
2.特征工程的意义
直接影响预测结果
3.scikit-learn库介绍
•Python语言的机器学习工具
•Scikit-learn包括许多知名的机器学习算法的实现
•Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。
4.数据的特征抽取
•特征抽取针对非连续型数据
•特征抽取对文本等进行特征值化,特征值化是为了让计算机更好的理解数
sklearn特征抽取API:sklearn.feature_extraction
1)字典特征抽取—类别数据
作用:对字典数据进行特征值化
类:sklearn.feature_extraction.DictVectorizer
DictVectorizer语法
DictVectorizer(sparse=True,…)
# 方法
DictVectorizer.fit_transform(X)
# X:字典或者包含字典的迭代器
# 返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
# X:array数组或者sparse矩阵
# 返回值:转换之前数据格式
DictVectorizer.get_feature_names()
# 返回类别名称
DictVectorizer.transform(X)
# 按照原先的标准转换
# 字典特征数据抽取
# 导入包
from sklearn.feature_extraction import DictVectorizer
def dictvec():
'''字典特征抽取'''
# 实例化,参数默认为sparse=True,此时返回sparse矩阵;参数为sparse=False,返回ndarray数组
dict = DictVectorizer(sparse=False)
# 调用fict_transfrom方法输入数据并转换
data = dict.fit_transform([{
'city': '北京','temperature':100},
{
'city': '上海','temperature':60},
{
'city': '深圳','temperature':30}])
# 调用get_feature_names()方法返回类别名称
print(dict.get_feature_names())
print(data)
if __name__ == '__main__':
dictvec()
# 如果数据是数组形式,有类别的这些特征需要先转换成字典数据
# 字典数据抽取:把字典中一些类别数据,分别进行转换成特征(one-hot编码)
# ['city=上海', 'city=北京', 'city=深圳', 'temperature']
# sparse=False,如下
# [[ 0. 1. 0. 100.]
# [ 1. 0. 0. 60.]
# [ 0. 0. 1. 30.]]
# one-hot编码:为每个类别生成一个布尔列,这些列中每列只有一个可以为样本取值1
# sparse=True
# (0, 1) 1.0
# (0, 3) 100.0
# (1, 0) 1.0
# (1, 3) 60.0
# (2, 2) 1.0
# (2, 3) 30.0
2)文本特征抽取
第一种方式:CountVectorizer-统计次数
作用:对文本数据进行特征值化
类:sklearn.feature_extraction.text.CountVectorizer
CountVectorizer语法
CountVectorizer(max_df=1.0,min_df=1,…)
# 返回词频矩阵
# 方法
CountVectorizer.fit_transform(X,y)
# X:文本或者包含文本字符串的可迭代对象
# 返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
# X:array数组或者sparse矩阵
# 返回值:转换之前数据格式
CountVectorizer.get_feature_names()
# 返回值:单词列表
# 文本特征抽取---英文
# 导入包
from sklearn.feature_extraction.text import CountVectorizer
def countvec():
'''对文本进行特征值化
return None'''
# 实例化
cv = CountVectorizer()
# 调用fit_transform方法输入数据并转换,返回sparse矩阵
data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])
# 调用get_feature_names()方法,返回单词列表
print(cv.get_feature_names())
# CountVectorizer()这个API没有sparse参数,利用toarray()方法将sparse矩阵转换array数组
print(data.toarray())
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]]
'''1.统计所有文章当中所有的词,重复的只看做一次-词的列表
2.对每篇文章在词的列表里面进行统计每个词出现的次数
3.单个字母不统计-单个英文字母没有分类依据'''