特征工程
1、历史数据的格式
机器学习数据 --- csv文件
为什么不用mysql
--- 1、性能瓶颈 读取速度本身就是个问题
-- 2、 格式也太符合机器学习要求的数据的格式
可用数据集
scikit-learn 特点:数据量较小 、方便学习
kaggle特点:大数据竞赛平台、80万科学家 真实是数据、数据量巨大
uci特点:收录了360个数据集
数据集的组成:特征值+目标值
3、字典数据特征抽取
4、文本特征抽取
5、tf-idf分类算法
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率比较高,并且在其他文章中出现的频率较低,则认为该词或短语具有很好的类别
区分能力,适合用来分类。
tf : term frequency :词的频率 词在文章出现的次数 tf 值越大说明 该词在这篇文章中越重要
idf:逆向文档频率 log(总文档数/包含该词的文档数量) idf值越大 说明 该词 在整个语料库重要程度越低
it* idf 可以用来衡量一个字或者词对于一个文件集或者一个语料库中的其中一份文件的重要程度。
6、特征预处理
数值型数据 :归一化、标准化
1、归一化
特点:通过对原始数据进行变换 把数据映射到【0-1】之间 使得某一个特征对最终结果不会造成更大的影响
一般在多个特征同等重要的时候可以进行归一化处理
缺点:在特定的场景下最大值和最小值是变化的 另外 最大值和最小值非常容易受异常点影响,所以这种方法的鲁棒性较差,只适合传统的精确小的数据场景。
2、标准化
特点:通过对原始数据进行变换,把数据变换到均值为0,方差为1范围内
少量异常点对平均值一影响不大,从而方差改变较小
在已有样本足够多的情况下比较稳定
代码:sklearn 提供的api fit_transform() 完成了转换 需要注意的是 sklearn 同时也提供了fit() 和transform() fit() 计算了平均值 和方差 transform()计算了归一化 或 标准化的结果 在ti-idf 等其他转化操作同理。
3、缺失值
处理数据中的缺失值
一般有两种方法 1、删除 直接删除行或删除列 2 、填补 使用列平均值填补
sklearn 中提供了填补的api inpu
# 缺失值 用 mean(均值) 按列填充
im = SimpleImputer(missing_values=np.nan,strategy='mean')
pandas 中也提供了填补和删除api droppna 和 fillna
7、数据降维
1、特征选择
冗余:部分特征的相关度高 ,容易消耗计算性能
噪声:部分特征对预测结果有影响
2、主成分分析
数据 训练集 测试集 75% 25% 常用数据比例