ML_day_02

文本特征抽取
作用:对文本数据进行特征值化
第一种方法Count
类:sklearn.feature_extraction.text.CountVectorizer
CountVectorizer()
返回词频矩阵
CountVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵

CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式

CountVectorizer.get_feature_names()
返回值:单词列表

流程:
实例化类CountVectorizer
调用fit_transform方法输入数据并转换
1.注意返回格式,利用toarray()进行sparse矩阵转换array数组
[“life is short,i like python”,“life is too long, i dislike python”]

[‘dislike’, ‘is’, ‘life’, ‘like’, ‘long’, ‘python’, ‘short’, ‘too’] 统计所有文章当中所有的词,重复的只看做一次 词的列表
[[0 1 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]] 对每篇文章,在词的列表里面进行统计每个词出现的次数 单个字母不统计

文本特征抽取:Count 文本分类 情感分析
对于单个英文字母不统计:没有分类的依据
不支持中文
中文结果 不支持单个中文字 需要对中文进行分词才能详细的进行特征值化
[‘python’, ‘不用python’, ‘人生漫长’, ‘人生苦短’, ‘我喜欢’]
[[1 0 0 1 1]
[0 1 1 0 0]]
使用jieba 分词实现中文分词
import jieba
jieba,cut(’…’)
返回值:词语生成器

对三段话进行特征值化–流程
1.准备句子,利用jieba.cut进行分词
2.实例化CountVectorizer
3.将分词结果变成字符串当作fit_transform的输入值

文本分类 朴素贝叶斯
tf:term frequency:词的频率 出现的次数
idf:逆文档频率inverse dicument frequency log(总文档数量/该词出现的文档数量)
log(数值):输入的数值越小,结果越小
tf*idf 重要性程度

第二种方法TF-IDF
如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语有很好的类别区分能力,适合用来分类.
TF-IDF的作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度.
类:sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer(stop_words=None,…)
返回词频矩阵
TfidfVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵

TfidfVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式

TfidfVectorizer.get_feature_names()
返回值:单词列表

[‘18’, ‘一个’, ‘两处’, ‘也门’, ‘今日’, ‘任何’, ‘伊朗’, ‘伊朗外交部’, ‘其他’, ‘分析’, ‘刚刚’, ‘制裁’, ‘另据’, ‘周五’, ‘国务卿’, ‘国家’, ‘国家银行’, ‘增加’, ‘大规模’, ‘实施’, ‘宣称’, ‘已经’, ‘总统’, ‘扮演’, ‘报复’, ‘报道’, ‘指出’, ‘指控’, ‘指责’, ‘推特上’, ‘提供’, ‘无人机’, ‘旨在’, ‘早些时候’, ‘最高’, ‘有关’, ‘有史以来’, ‘本周’, ‘来自’, ‘杨阳’, ‘此举’, ‘此前’, ‘此次’, ‘武装’, ‘沙特’, ‘没有’, ‘消息’, ‘特朗普’, ‘环球网’, ‘白宫’, ‘直接参与’, ‘石油’, ‘称蓬佩奥’, ‘细节’, ‘美国’, ‘美国商务部’, ‘胡塞’, ‘蓬佩奥’, ‘表明’, ‘表示’, ‘袭击’, ‘要求’, ‘角色’, ‘记者’, ‘设施’, ‘证据’, ‘谎言’, ‘负责’, ‘路透社’, ‘这次’]
[[0. 0. 0. 0. 0. 0.15872326
0.12326277 0. 0.20870201 0. 0.20870201 0.24652554
0. 0.20870201 0. 0. 0.20870201 0.
0. 0.15872326 0. 0. 0.15872326 0.
0. 0.15872326 0. 0. 0. 0.
0.20870201 0. 0. 0. 0. 0.20870201
0. 0. 0. 0.20870201 0. 0.
0. 0. 0. 0.15872326 0.20870201 0.12326277
0.20870201 0.20870201 0. 0. 0. 0.20870201
0.24652554 0. 0. 0. 0. 0.15872326
0. 0. 0. 0.41740402 0. 0.
0. 0. 0.20870201 0. ]
[0. 0.20991609 0. 0. 0.20991609 0.
0.12397982 0. 0. 0.20991609 0. 0.24795965
0.20991609 0. 0. 0.20991609 0. 0.
0. 0.1596466 0. 0. 0. 0.20991609
0.20991609 0.31929319 0.20991609 0. 0. 0.
0. 0. 0.20991609 0. 0.20991609 0.
0.20991609 0. 0. 0. 0.20991609 0.20991609
0.1596466 0. 0.1596466 0. 0. 0.24795965
0. 0. 0. 0.1596466 0. 0.
0.12397982 0. 0. 0. 0. 0.1596466
0. 0. 0.20991609 0. 0. 0.
0. 0. 0. 0. ]
[0.13135324 0. 0.13135324 0.26270648 0. 0.09989753
0.15515868 0.13135324 0. 0. 0. 0.07757934
0. 0. 0.13135324 0. 0. 0.13135324
0.13135324 0. 0.26270648 0.13135324 0.09989753 0.
0. 0. 0. 0.13135324 0.13135324 0.13135324
0. 0.13135324 0. 0.13135324 0. 0.
0. 0.13135324 0.13135324 0. 0. 0.
0.09989753 0.13135324 0.09989753 0.09989753 0. 0.07757934
0. 0. 0.13135324 0.09989753 0.13135324 0.
0.15515868 0.13135324 0.13135324 0.13135324 0.13135324 0.
0.52541296 0.13135324 0. 0. 0.13135324 0.13135324
0.13135324 0.13135324 0. 0.13135324]]

为什么需要TfidfVectorizer,分类机器学习算法的重要依据

图片:
特征的预处理:对数据进行处理 缺失值
特征处理的方法
sklearn特征预处理API
特征处理是通过特定的统计方法(数学方法)将数据转换成算法要求的数据
数值型数据:标准缩放:
1.归一化
2.标准化
3.缺失值
类别型数据:one-hot编码
时间类型:时间的切分

sklearn特征处理API
sklearn.preprocessing

                                            归一化
   特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间

公式: X’=(x-min)/(max-min) X’’=X’*(mx-mi)+mi
注:作用于每一列,max为一列的最大值,min为一列的最小值,那么X’'为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0

                                               sklearn归一化API
                       sklearn归一化API:sklearn.preprocessing.MinMaxScaler

MinMaxScaler语法:
MinMaxScaler(feature_range=(0,1)…)
每个特征缩放到给定范围(默认[0,1])
MinMaxScalar.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array

归一化步骤:
1实例化MinMaxScalar
2通过fit_transform转换

三个特征同等重要的时候:进行归一化
目的:使得某一个特征对最终结果不会造成更大影响

如果数据中异常点较多,会有什么影响?
异常点对最大值最小值影响太大

归一化总结:
注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

标准化
1 特点:通过对原始数据进行交换把数据变换到均值为0,标准差为1范围内
2公式:X’=(x-mean)/&
注:作用于每一列,mean为平均值,&为标准差
var成为方差,var=((x1-mean)^2+ (x2-mean)^2+…)/n(每个特征的样本数),&=根号var
其中:方差(考量数据的稳定性)
方差:0 所有这个特征所有值都一样

结合归一化来谈标准化
对于归一化来说:如果出现异常点,影响了最大值和最小值,结果显然会发生改变
对于标准化来说:如果出现异常点,由于具有一定的数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小

sklearn特征化API
sklearn特征化API:scikit-learn.preprocessing.StandardScaler

StandardScaler语法
StandardScaler(…)
处理之后每列来说所有数据都聚集在均值为0标准差为1
StandardScaler.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array

StandardScaler.mean_
原始数据中每列特征的平均值

StandardScaler.std_
原始数据中每列特征的标准差

标准化步骤
1实例化StandardScaler
2通过fit_transform转换

标准化总结
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景

缺失值
如何处理数据中的缺失值?
缺失值处理方法:
删除:如果每列或者每列数据缺失值达到一定的比例,建议放弃整行或者整列
插补:可以通过缺失值每行或者每列的平均值,中位数填充

sklearn缺失值API:sklearn.preprocessing.Imputer

Imputer语法:
Imputer(missing_value=‘NaN’,strategy=‘mean’,axis=0)
完成缺失值插补
Imputer.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
pandas:dropna
fillna 数据中的缺失值是np.nan–>float类型
replace("?",np.nan)

Imputer流程
1.初始化Imputer,指定"缺失值",指定填补策略,指定行或列
注:缺失值也可以是别的指定要替换的值
2.调用fit_transform

关于np.nan(np.NaN)
1.numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型
2.如果是文件中的一些缺失值,可以替换成nan,通过np.array转化成float型的数组即可

降维:维度:特征的数量
数据降维:
1.特征选择
2.主成分分析

特征选择是什么
sklearn特征选择API
其他特征选择方法

特征选择原因
冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有影响

特征选择是什么?
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值也可以不改变值,但是选择后的特征维数肯定比选择前的小,毕竟我们只选择了其中的一部分特征

主要方法(三大武器):Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化,决策树
Wrapped(包裹式)

方差大小:考虑所有样本这个特征的数据情况

sklearn特征选择API
sklearn.feature_selection.VarianceThreshold

VarianceThreshold语法
VarianceThreshold(threshold=0.0)
删除所有低方差特征
variance.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除.'默认值是保留所有非零方差特征,即删除所有样本中具有相同特征的值

VarianceThreshold流程
1.初始化VarianceThreshold流程
2.调用fit_transform

其他特征选择方法
神经网络

sklearn主成分分析
sklearn.decomposition

PCA是什么
本质:PCA是一种分析,简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量

PCA:特征数量达到上百的时候 考虑数据的简化
数据也会改变,特征数量也会减少

高维度数据容易出现的问题
特征之间通常是相关的

通过公式计算
Y=PX即为降维到k维后的数据

n_components:小数 0~1 90% 90~95%
整数 减少到的特征数量

PCA语法:

PCA(n_components=None)
将数据分解为较低维数空间

PCA.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后指定维度的array

PCA流程
1.初始化PCA,指定减少后的维度
2.调用fit_transform

instacart:把用户分成几个类别 用户-购买的物品类别

              购买物品的类别

用户1
用户2
用户3

探究:用户对物品类别的喜好细分降维
数据:
products.csv 商品信息
order_products_prior.csv 订单与商品信息
orders.csv 用户的订单信息
aisles.csv 商品所属具体物品类别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值