数据集
机器学习的数据文件:csv
可用数据集合:
- scikit-learn 数据量小,方便学习
- UCI 收集的数据集多
- Kaggle 竞赛平台,科学家提供
数据集数据结构构成与数据清洗
结构:特征值 + 目标值
数据预处理:
缺失值,数据转换==》使用pandas进行处理
重复值:对于机器学习,重复值需要进行去重。
数据清洗:
特征工程
对特征进行处理的过程。将原始数据转换为更好代表模型的潜在问题的特征的过程,从而可以更好的处理。
常用的工具为sklearn,其中常用的算法有:
分类,回归,聚类,降维,模型选择,特征工程。
特征抽取
将文本与图像等数据转换为数字(特征值化)
- 字典特征抽取(DictVectorizer)
将字典中一些类别的数据,分别进行转换成特征。
dict = DicVertorizer()
# 抽取好的特征值
data = dict.fit_transform([{'city':'beijing','temperature':100}])
# 获取特征值列表
dict.get_feature_names()
- 文本特征抽取(CountVectorizer)
1、对文本进行特征值化,统计所有文章中的所有的词
2、重复的看做一次(one-hot编码)
3、单个字母不统计
文本抽取可以进行文本分析,情感分析,文章分类。
对于中文来说,在进行特征抽取之前,需要进行分词。
dict = CountVertorizer()
# 抽取好的特征值
data = dict.fit_transform([{'city':'beijing','temperature':100}])
# 获取特征值列表
dict.get_feature_names()
-
tf idf分析重要性(TfidfVectorizer())
tf:term frequency 统计词的频率
idf:inverse document frequency 公式:log(总文档数量/该次出现的文档数量)针对于一些中性的词,例如:我们,所以,然后 这些词,这个词并不会影响到文 章的主题的表达,所以我们需要一种公式来进行单词的排序。
重要性程度:tf * idf
数据特征值的预处理
数值型的数据处理:归一化,标准化
归一化
通过原始数据进行变化将数据映射到默认区间中,默认是0到1
sklearn.MinMaxScler()
归一化的重要性:
在结果值看来,不收到某个特征值本身的更大影响。
归一化的缺点是:容易收到异常点的影响。所以这个算法的鲁棒性较差,只适合于精确小数据的场景。
标准化
通过对原始数据进行变换吧数据变换到均值为0,方差为1的范围内。
StandardScaler()
标准化的特点
在已经样本够多的情况下比较稳定,适合于噪点较多的场景。
如何处理缺失值?
一般有两种方式:删除,插补。
如果每行或者每列的数据值缺失的比例达到一定程度则建议删除。
如果缺少的值较少,建议使用平均值或者中位值进行填补。
sklearn中提供imputer处理缺失值。