机器学习_特征工程和文本特征的提取

1.数据集的组成

文件
pandas/numpy

  • kaggle
  • UCI
  • scikit-learn

常用数据集结构
特征值+目标值
特征值:身高,体重,肤色,头发长
目标值:男,女

pandas:读取数据 dataframe 缺失值,数据转换
重复值,需要进行去重
sklearn:对特征进行 处理

特征工程:将原始数据转换为更好预测模型的特征值

#安装scikit-learn
pip3 install Scikit-learn

报错+解决:https://blog.csdn.net/congcong_i/article/details/116500921

2.特征抽取

sklearn.feature_extraction
*字典特征抽取
sklearn.feature_extraction.DictVectorizer
语法
DictVectorizer(sparse=True,…)

DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回sparse矩阵

DictVectorizer.inverse_transform(X)
数组或者sparse矩阵
饭会转换之前数据格式

DictVectorizer.get_feature_names()
返回类别名称

DictVectorizer.transform(x)

import imp
from sklearn.feature_extraction import DictVectorizer

def dictvec():
	#实例化
	dict = DictVectorizer(sparse=False)
	#调用fit_transform
	data = dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature': 30}])
	print(dict.get_feature_names())
	print(data)
	return None

if __name__ == "__main__":
	dictvec()

scipy sparse矩阵 节约内存,方便读取
ndarray类型
字典数据抽取:把字典中一些类别的数据,分别转换成特征
数组形式,有类别的特征,先转换成字典数据

one-hot编码

3.文本特征抽取以及中文问题

sklearn.feature_extrdaction.text.CountVectorizer
CountVectorizer()
CountVectorizer.fit_transform(X)
CountVectorizer.inverse_transform(X)
CountVectorizer.get_feature_names(X)

import imp
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer

def dictvec():
	#实例化
	dict = DictVectorizer(sparse=False)
	#调用fit_transform
	data = dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature': 30}])
	print(dict.get_feature_names())
	print(data)
	return None
def countvec():
	cv = CountVectorizer()
	data = cv.fit_transform(["life is short,i like python", "life is too long,i dislike python"])
	print(cv.get_feature_names())
	print(data.toarray())
	return None
if __name__ == "__main__":
	countvec()

统计所有文章当中的所有的词,重复的只统计一次
对每篇文章,在词的列表里面进行统计次数
单个英文字母不统计:没有分类依据

文本特征抽取:Count
文本分类
情感分析

4. tf-df分析问题

Tf:term frequency 出现的次数
idf:逆文档频率inverse document frequency log(总文档数量、该词出现的文档数量)
tf * idf 重要性程度

sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer(stop_words=None,…)


from sklearn.feature_extraction import DictVectorizer
def hanzivec():
    """
    中文特征值化
    :return: None
    """
    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
    
def tfidfvec():
    """
    中文特征值化
    :return: None
    """
    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
if __name__ == "__main__":
    hanzivec()
    tfidfvec()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值