机器学习4 - 数据和特征

机器学习4 - 数据和特征

知识点

  1. mysql:
    • 性能瓶颈,读取速度不行。
    • 格式不太符合机器学习要求数据的格式
  2. MongoDB:
    • 读取速度还可,但是格式为json
  3. 大部分时候存在csv中。
  4. numpy释放了GIL(全局解释器锁):真正的多线程。计算能力强就是因为numpy的这个多线程工程。详解:https://www.jianshu.com/p/9eb586b64bdb
  5. 数据集来源:
    • Kaggle:https://www.kaggle.com/datasets
    • UCI: http://archive.ics.uci.edu/ml/
  6. 文本特征抽取
  • count
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
import jieba
cv = CountVectorizer()
data = cv.fit_transform(['setence 1','sentence 2','sentence n']
print(cv.get_feature_names())
  • 中文文本特征值化
def cutword():
	content1 = jieba.cut('中文句子1')
	content2 = jieba.cut('中文句子2')
	content3 = jieba.cut('中文句子3')
	#转换成列表
	c1,c2,c3 = ' '.joinlist(content1),' '.join(list(content2)),' '.join(list(content3))
	#把列表转换成字符串
	
	return c1,c2,c3
def hanziVec():
	c1,c2,c3 = cutword()
	cv = CountVectorizer()
	data = cv.fit_transform([c1,c2,c3])
	print(cv.get_feature_names())
	print(data.toarray())
	return None
  1. TF-IDF:
    TF: Term Frequency 词频,词出现的次数
    IDF: Inverse Document Frequency 逆文档频率,log(总文档数量/该词出现的文档数量)
    TF*IDF的主要思想:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。作用是用以评估一个词对于一个文件的重要程度。e.g.
sklearn.feature_extraction.text.TfidfVectorizer
tf = TfidfVectorizer(stop_words=None,....)
tf.fit_transform(X) #返回sparse矩阵
tf.inverse_transform(X) #返回转换前数据
tf.get_feature_names()
  1. 归一化:把不同特征的数量级压到一样,容易受异常值影响,鲁棒性较差,只适合传统精确小数据场景。
    X ′ = x − m i n m a x − m i n X ′ ′ = X ′ ∗ ( m a x − m i n ) + m i n X' = \frac{x-min}{max-min} X'' = X'*(max-min)+min X=maxminxminX=X(maxmin)+min
mm = MinMaxScalar()
mm.fit_transform(X)
  1. 标准化:由于一定的数据量,少量的异常点对于均值的影响并不大,从而方差改变较小,加速收敛。
    X ′ = X − μ σ X' = \frac{X-\mu}{\sigma} X=σXμ
sl = StandardScaler()
sl.fit_transform(X)
sl.mead_
sl.std_

在已有样本足够多的情况下比较稳定, 适合现代嘈杂大数据环境。

  1. 缺失值:
    • 放弃整行或整列
    • 取均值或者中位数来填补
Imputer(missing_values='NaN',startegy='mean',axis=0)
Imputer.fit_transform(X)
  1. 类别型:one-hot encoding
  2. 时间类型:时间的切分
  3. 特征选择:
    • 过滤式: VarienceThreshold,卡方检验,互信息。
    • 嵌入式: 正则化,决策树
    • 包裹式
  4. Varience threshold删除低方差的特征
var = sklearn.feature_selection.VarianceThreshold
var.fit_transform(X)
  1. 主成分分析,降低数据维度并减少数据损失
sklearn.decomposition.PCA
pca = PCA(n_components=0.9)#保留百分之90的偏差
pca.fit_transform(X)
  1. 算法是核心,数据和计算是基础。大部分复杂模型的算法设计由算法工程师完成,我们一般需要做的是:

    • 分析很多的数据
    • 分析具体的业务
    • 应用常见的算法
    • 特征工程,调参数,优化
  2. 离散与连续:

    • 离散型数据,计数数据,全是整数。区间内可分。
    • 连续型数据,变量可以在某个范围内取任一值,变量取值连续。区间内不可分。
  3. 开发流程:

    • 原始数据明确问题要做什么
    • 数据基本处理
    • 特征工程
    • 找到合适算法进行预测
    • 模型评估,判定效果
    • 若模型评估没有通过,可以换算法,特征工程。若通过可以上线使用,以API形式提供
  4. 特征处理相关方法

    1. 数值型处理方法:
      • 归一化
        f n e w = f o l d f m a x − f m i n f_{new} = \frac{f_{old}}{f_{max}-f_{min}} fnew=fmaxfminfold
      • 离散化
        • h θ ( x ) = 1 1 + e − θ x h_{\theta}(x) = \frac{1}{1+e^{-\theta x}} hθ(x)=1+eθx1
        • 等步长
        • 等频
          等频的离散化方法很精准,但需要每次都对数据分布做一次计算,因此需要每天更新。等步长固定,比较简单。都有应用。
    2. 类型特征处理:
      • one-hot encoder
      • label encoder
    3. 时间型特征:
      可以看作连续值或者离散值。
      • 连续值:
        • 持续时间
        • 间隔时间
      • 离散值:
        • 一天中哪个时间段
        • 一周中的星期几
        • 一年中哪个月/星期
        • 工作日/周末
    4. 统计数据:
      • 加减平均:商品价格高于平均价格多少,用户在某个品类下消费超过多少。
      • 分位线:商品属于售出商品价位的分位线处。
      • 次序性:商品处于热门商品第几位。
      • 比例类:电商中商品的好/中/差评比例。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值