机器学习基础DAY1

第一章 特征工程与文本特征提取

1.数据集的构成

机器学习中的数据集大多以CSV的格式存储,而不是放在MYSQL里(原因:1性能瓶颈,读取速度不够快,2格式不符合),再者pandas 和numpy 功能强大,能够真正实现多线程。

pandas:一个数据读取非常方便以及基本的处理格式的工具
sklearn:对于特征的处理提供了强大的接口

常用的公开数据集特点:
在这里插入图片描述
数据集结构:特征值+目标值
注意:有的数据集可以没有目标值

2.特征工程的定义

定义:特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。

3.特征抽取

1.特征抽取针对非连续型数据,比如对文本等进行特征值化,方便计算机更好地理解数据

2.字典数据的抽取:把字典中的类别数据,分别转换为特征。
####### 类:sklearn.feature_extraction.DictVectorizer
##### 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():
    #实例化
    dict = DictVectorizer(sparse=False)
    #输入数据并转换
    data = dict.fit_transform({'city':'北京','tem':'100'})
    print(dict.get_feature_names())
    print(data)

    return None

if __name__=="__main__":
    dictvec()

结果如下:
在这里插入图片描述
3.文本特征抽取
######类:sklearn.feature_extraction.text.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()
返回值:单词列表

def countvec():

    cv = CountVectorizer()
    data = cv.fit_transform(["life is short ,I like python","life is too long,I dont like  python"])
    print(cv.get_feature_names())
    print(data.toarray())
    return None

结果:
在这里插入图片描述
这里说明一下,单个字母会被过滤掉(不统计),重复的词也只统计一次
中文文本要先进行分词,导入jieba,示例如下`:

def cutword():

    cin1=jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
    cin2=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    cin3=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")

    cen1=list(cin1)
    cen2= list(cin2)
    cen3 = list(cin3)

    c1=' '.join(cen1)
    c2=' '.join(cen2)
    c3=' '.join(cen3)


    return c1,c2,c3


def countvec():
    c1, c2, c3 = cutword()
    print(c1, c2, c3)
    cv = CountVectorizer()
    data = cv.fit_transform([c1,c2,c3])
    print(cv.get_feature_names())
    print(data.toarray())
    return None

结果如图:
在这里插入图片描述
4.TF_IDF
######类:sklearn.feature_extraction.text.TfidfVectorizer
####TfidfVectorizer(stop_words=None,…)
返回词的权重矩阵
####TfidfVectorizer.fit_transform(X,y)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
####TfidfVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
####TfidfVectorizer.get_feature_names()
返回值:单词列表
简单修改上面代码:

def tfidfvec():
    c1, c2, c3 = cutword()
    print(c1, c2, c3)
    tf = TfidfVectorizer()
    data = tf.fit_transform([c1,c2,c3])
    print(tf.get_feature_names())
    print(data.toarray())
    return None

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值