机器学习算法基础1-数据的特征工程

一、机器学习概述

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.单个字母不统计-单个英文字母没有分类依据'''
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值