day01- 机器学习之概述、特征工程

一、机器学习

  • 概述
    机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
  • 机器学习应用场景
    在这里插入图片描述

二、数据来源和类型

  • 数据来源
  1. 企业日益积累的大量数据(互联网公司更为显著)
  2. 政府掌握的各种数据
  3. 科研机构的实验数据
  • 数据类型
  1. 离散型数据
  2. 连续性数据
  • 可用的数据集
  1. Kaggle:
    大数据竞赛平台
    80万科学家
    真实数据
    数据量巨大

  2. UCI
    收集了360个数据集
    覆盖科学,经济等领域
    数据量几十万

  3. 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

  • 数据集中的数据结构
    特征值+目标值

在这里插入图片描述

:有些数据集可以没有目标值

三、数据的特征工程

  • 概述
    特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
  • 意义
    直接影响模型的预测结果
  • 内容
  1. 特征抽取
  2. 特征预处理
  3. 特征降维

四、数据的特征抽取

  1. 字典特征抽取
    导包
    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'>
  1. 文本特征抽取
    方式一: 依据词频抽取
    导包
    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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值