机器学习
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测。
目的:让机器学习程序替换手动的步骤
数据集的构成
机器学习的数据:文件csv
mysql:1、性能瓶颈,读取速度
2、格式不太符合机器学习要去数据的格式
特征工程
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
特征抽取
- 特征抽取针对非连续型数据
- 特征抽取对文本等进行特征值化
sklearn特征抽取API
sklearn.feature_extraction
字典特征抽取
作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer
DictVectorizer语法
DictVectorizer(sparse=True,…)
- DictVectorizer.fit_transform(X)
* X:字典或者包含字典的迭代器
* 返回值:返回sparse矩阵- DictVectorizer.inverse_transform(X)
* X:array数组或者sparse矩阵
* 返回值:转换之前数据格式- DictVectorizer.get_feature_names()
* 返回类别名称- DictVectorizer.transform(X)
* 按照原先的的标准转换
字典数据抽取:把字典中一些类别数据,分别进行转换成特征
数组形式,有类别的这些特征先要转换字典数据
ndarray[二维数组]
文本特征抽取
作用:对文本数据进行特征值化
sklearn.feature_extraction.text.CountVectorizer
CountVectorizer语法
- CountVectorizer(max_df=1.0,min_df=1,…)
- 返回词频矩阵
- CountVectorizer.fit_transform(X,y)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- CountVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
- 返回值:转换之前数据格式
- CountVectorizer.get_feature_names()
- 返回值:单词列表
1、统计所有文章当中所有的词,重复的只看做一次–词的列表
2、 对每篇文章,在词的列表里面进行统计每个词出现的次数
TF-IDF
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer语法
- TfidfVectorizer(stop_words=None,…)
- 返回词的权重矩阵
- TfidfVectorizer.fit_transform(X,y)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- TfidfVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
- 返回值:转换之前数据格式
- TfidfVectorizer.get_feature_names()
- 返回值:单词列表
数据的特征处理
数据值类型:标准缩放:
1、归一化
2、标准化
3、缺失值
类别型数据:one-hot编码
时间类型:时间的切分
skelearn特征预处理API
sklearn.preprocessing
归一化
特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间
sklearn归一化API
sklearn.preprocessing.MinMaxScaler
MinMaxScaler语法
- MinMaxScaler(feature_range=(0,1)…)
- 每个特征缩放到给定范围(默认[0,1])
- MinMaxScaler.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
总结:
注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
标准化
- 特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
- 公式:
sklearn特征化API:
scikit-learn.preprocessing.StandardScaler
StandardScaler语法
- StandardScaler(…)
-
处理之后每列来说所有数据都聚集在均值0附近方差为1
-
StandardScaler.fit_transform(X,y)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
-
StandardScaler.mean_
- 原始数据中每列特征的平均值
-
StandardScaler.std_
- 原始数据每列特征的方差
-
缺失值处理方法
sklearn缺失值API:
sklearn.preprocessing.lmputer
lmputer语法
- lmputer(missing_values=‘NaN’,strategy=‘mean’,axis=0)
- 完成缺失值插补
- lmputer.fit_transform(X,y)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array