机器学习特征提取

本文主要介绍基于sklearn的特征提取,旨在为机器学习提供一个好的开端

1.分类特征提取

如上图所示:许多特征如pclass代表乘客船舱等级,分为1,2,3。还有例如性别,乘客登船码头,称之为分类特征。

对于这一类数据的提取,采用one-hot编码。

例如:data数据有两个特征,分别是城市和温度,显然第一个特征为分类特征。

[[ 1.  0.  0. 50.]
 [ 0.  0.  1. 40.]
 [ 0.  1.  0. 36.]]
data = [{'city':'beijing','tem':50},
            {'city':"shanghai",'tem':40},
            {'city':"chongqing",'tem':36}]
import sklearn
from sklearn.feature_extraction import DictVectorizer
def dict_demo():    #分类特征提取
    data = [{'city':'beijing','tem':50},
            {'city':"shanghai",'tem':40},
            {'city':"chongqing",'tem':36}]
    

    trans = DictVectorizer(sparse=False)
    trans_data = trans.fit_transform(data)
    print(trans_data)
if __name__ == "__main__":
    dict_demo()

输出结果: 将分类数据用one-hot编码,前边三列为城市特征,后边一列为温度特征

[[ 1.  0.  0. 50.]
 [ 0.  0.  1. 40.]
 [ 0.  1.  0. 36.]]

 输出此时的特征:

print(trans.get_feature_names())

可见下图输出

['city=beijing', 'city=chongqing', 'city=shanghai', 'tem']

 因为one-hot编码中0太多了,占用大量储存空间,所以在

trans = DictVectorizer(sparse=False)

 去掉sparse=False后即采用稀疏矩阵存储,如下图:

  (0, 0)        1.0
  (0, 3)        50.0
  (1, 2)        1.0
  (1, 3)        40.0
  (2, 1)        1.0
  (2, 3)        36.0

上图通过坐标和数的形式可以存储所有的非零值

2.文本特征提取

对于{"hello everyone! my name is big data! I am 12 years old"},通常根据单词划分特征

from sklearn.feature_extraction.text import CountVectorizer
def count_text():#文本特征提取
    ct = CountVectorizer(stop_words=['is','12'])
    data = {"hello everyone! my name is big data! I am 12 years old"}
    data1 = ct.fit_transform(data)
    print(data1.toarray())
    print(ct.get_feature_names())
    print(data1)
if __name__ == "__main__":
    count_text()

输出特征:

['am', 'big', 'data', 'everyone', 'hello', 'my', 'name', 'old', 'years']

输出特征出现次数

[[1 1 1 1 1 1 1 1 1]]

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值