一、机器学习
- 概述
机器学习是从数据
中自动分析获得规律(模型),并利用规律对未知数据进行预测
- 机器学习应用场景
二、数据来源和类型
- 数据来源
- 企业日益积累的大量数据(互联网公司更为显著)
- 政府掌握的各种数据
- 科研机构的实验数据
…
- 数据类型
- 离散型数据
- 连续性数据
- 可用的数据集
-
Kaggle:
大数据竞赛平台
80万科学家
真实数据
数据量巨大 -
UCI
收集了360个数据集
覆盖科学,经济等领域
数据量几十万 -
scikit-learn
数据量较小
方便学习
Kaggle网址
:https://www.kaggle.com/datasets
UCI数据集网址
: http://archive.ics.uci.edu/ml/
scikit-learn网址
:
http://scikit learn.org/stable/datasets/index.html#datasets
- 数据集中的数据结构
特征值+目标值
注
:有些数据集可以没有目标值
三、数据的特征工程
- 概述
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性 - 意义
直接影响模型的预测结果 - 内容
- 特征抽取
- 特征预处理
- 特征降维
四、数据的特征抽取
- 字典特征抽取
导包
:
from sklearn.feature_extraction import DictVectorizer
实例化
dicvec = DictVectorizer(sparse=True)
实例方法
①dicvec.fit_transform(X)
X:列表嵌套字典或字典的迭代器
返回值:返回sparse矩阵
默认返回sparse矩阵,sparse=False时返回ndarray的数组类型
②dicvec.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
③dicvec.get_feature_names()
返回类别名称(特证名)
④dicvec.transform(X)
按照原先的标准转换
from sklearn.feature_extraction import DictVectorizer
def dictvec():
dicve = DictVectorizer()
data = dicve.fit_transform([{
'city': '北京','temperature':100},\
{
'city': '上海','temperature':60}\
,{
'city': '深圳','temperature':30}])
print(data) # 返回sparse
print(type(data))
if __name__ == '__main__':
dictvec()
# 运行结果
(0, 1) 1.0
(0, 3) 100.0
(1, 0) 1.0
(1, 3) 60.0
(2, 2) 1.0
(2, 3) 30.0
<class 'scipy.sparse.csr.csr_matrix'>
返回ndarray数组
from sklearn.feature_extraction import DictVectorizer
def dictvec():
dicve = DictVectorizer(sparse=False)
data = dicve.fit_transform([{
'city': '北京','temperature':100},\
{
'city': '上海','temperature':60}\
,{
'city': '深圳','temperature':30}])
print(data)
print(type(data))
if __name__ == '__main__':
dictvec()
# 运行结果
[[ 0. 1. 0. 100.]
[ 1. 0. 0. 60.]
[ 0. 0. 1. 30.]]
<class 'numpy.ndarray'>
- 文本特征抽取
方式一: 依据词频
抽取
导包
:
from sklearn.feature_extraction.text import CountVectorizer
实例化
textvec = CountVectorizer()
实例方法
①textvec.fit_transform(X)
X:列表中嵌套文本字符串或者包含文本字符串的可迭代对象
返回值:默认返回sparse矩阵
textvec.fit_transform(X)
②textvec.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
③textvec.get_feature_names()
返回值:单词列表(文本特征)
补充1:
textvec.fit_transform(X) 默认返回sparse矩阵,使用 textvec.fit_transform(X).toarray()返回ndarray数组类型
补充2
:对于中文文本的特征提取
默认中文特征提取依据是逗号,可使用第三方库jieba先进行中文文本分词,再进行文本特征提取
补充3
:不论中英文文本,此方法均不考虑单词单词或字的特征提取
from sklearn.feature_extraction.text import CountVectorizer
def textvec():
texve = CountVectorizer()
data1 = texve.fit_transform(["life is short,i like python","life is too long,i dislike python"])
print(data1,type(data1))
print(texve.get_feature_names())
print(data1.toarray(),type(data1.toarray()))
if __name__ == '__main__':
textvec()
#运行结果
(0, 5) 1
(0, 3) 1
(0, 6) 1
(0, 1) 1
(0, 2) 1
(1, 0) 1
(1, 4) 1
(1, 7) 1
(1, 5) 1
(1, 1) 1
(1, 2) 1 <class 'scipy.sparse.csr.csr_matrix'>
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 1 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]] <class 'numpy.ndarray'>
注:sparse矩阵中存储着非零元素的位置和值,对于值为零的元素不记录,目的是为了节约内存
# 中文文本的特征提取(不使用jieba分词)
from sklearn.feature_extraction