Python 机器学习过程小结

来源:互联网 发布:mac jenkins 配置文件 编辑:程序博客网 时间:2024/06/05 20:03

如何做出一个好的Machine Learning模型

转载自知乎专栏

Data Cleaning

  1. 移除多余的duplicate features(相同或极为相似的features)
  2. 移除constant features(只有一个value的feature)
  3. 移除方差过小的features(方差过小意味着提供信息很有限)

    #Python里可以使用sklearn包里的VarianceThreshold()函数>>> from sklearn.feature_selection import VarianceThreshold>>> X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]>>> selector = VarianceThreshold()>>> selector.fit_transform(X)array([[2, 0],   [1, 4],   [1, 1]])#参数:threshold : float, optional#特征的方差低于这个值时,这个特征会被删除。默认情况是排除方差为0,即该特征在所有样本中取值相同的情况。
  4. 缺失值处理:将missing value重新编为一类。

    #比如原本-1代表negative,1代表positive,那么missing value就可以全部标记为0#对于多分类的features做法也类似二分类的做法#对于numeric values,可以用很大或很小的值代表missing value比如-99999.
  5. 填补缺失值

    #Python用sklearn中的Imputer()函数,用mean(平均数),median(中位数)或者most frequent value进行填补>>> import numpy as np>>> from sklearn.preprocessing import Imputer>>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0)>>> imp.fit([[1, 2], [np.nan, 3], [7, 6]])Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)>>> X = [[np.nan, 2], [6, np.nan], [7, 6]]>>> print(imp.transform(X))                           [[ 4.          2.        ][ 6.          3.666...][ 7.          6.        ]]

    上述代码使用数组X去“训练”一个Imputer类,然后用该类的对象去处理数组Y中的缺失值,缺失值的处理方式是使用X中的均值(axis=0表示按列进行)代替Y中的缺失值。

  6. 高级的缺失值填补方法

    #利用其他column的features来填补这个column的缺失值(比如做回归)#数值数据众数填补,0-1数据依据出现的概率随机填补

Features Engineering

  1. Data Transformation
    a. Scaling and Standardization
    数据标准化是为了消除量纲影响和变量自身变异大小和数值大小的影响,而基于树的模型是不需要这一步的。
Python用StandardScaler()>>> from sklearn import preprocessing>>> import numpy as np>>> X = np.array([[ 1., -1.,  2.],...               [ 2.,  0.,  0.],...               [ 0.,  1., -1.]])>>> X_scaled = preprocessing.scale(X)>>> X_scaled                                          array([[ 0.  ..., -1.22...,  1.33...],       [ 1.22...,  0.  ..., -0.26...],       [-1.22...,  1.22..., -1.06...]])>>>#处理后数据的均值和方差>>> X_scaled.mean(axis=0)array([ 0.,  0.,  0.])>>> X_scaled.std(axis=0)array([ 1.,  1.,  1.])
b. Responses Transformation当数据展现偏态分布时候用,使得数据接近正态分布可以用log(x),log(x+1),sqrt(x)等

2. Features Encoding
将类别特征转换为数值特征,Python 用 LabelEncoder()。
3. Features Extraction
适当增加一些能够较好反应样本信息的特征,比如缺失值个数,数值特征的平均数和方差等
4. Features Selection
a.这个方法很多
Feature Selection Methods
注:其中randomForest以及xgboost里的方法可以判断features的Importance
b. 此外,PCA等方法可以生成指定数量的新features(映射)
c. 对features进行visualization或correlation的分析,好的特征集合与分类结果联系密切,而彼此之间并没有太大联系。

Models Trainning

1.广泛尝试各类模型
常用的机器学习模型
2. 利用Grid Search进行hyper参数的选择
3. 利用Cross-Validation衡量训练效果
4. Ensemble Learning Methods

0 0
原创粉丝点击