美文网首页数据挖掘
SKlearn_特征值转换

SKlearn_特征值转换

作者: ChZ_CC | 来源:发表于2017-03-10 15:16 被阅读271次

    参考文章:http://sebastianraschka.com/Articles/2014_about_feature_scaling.html

    官方文档:http://scikit-learn.org/stable/modules/preprocessing.html

    1. Standardization

    z-分数转换。

    Z = \frac{x-\mu}{\sigma}
    

    它将数据转换成mean=0,std=1的标准正态分布。

    用sk-learn实现:sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True)

    scaler = preprocessing.StandardScaler().fit(X)
    
    scaler.mean_
    scaler.scale_
    scaler.transform(X) 
    # 可以用训练好的scaler去转换其他数据,这样它们就处于同样的分不下了。
    

    在以下这些算法中,特征值服的分布对机器学习的结果影响很大:

    • KNN
    • K-Means
    • SVM
    • PCA
    • RBF Kernel
    • Logistic regression
    • Linear discriminant analysis
    • l1 and l2 regularizers of linear models

    只有基于树模型的算法是scale-invariant的,也就是说数据范围对它来说没影响。

    2. Min-Max scaling

    转换公式:

    X_{norm} = \frac{X-X_{min}}{X_{max}-X_{min}}
    

    这个方法把数据压缩到了(0,1)范围内。在图像处理(image processing)中用到。

    3. Max-Abs scaling

    和Min-Max scaling一样将数值压缩到一定范围内[-1,1]。计算方法是将所有的特征值除以最大值。

    用在数值已经以0为中心(均值=0),或者稀疏数据中。

    4. Normalizing

    sklearn.preprocessing.Normalizer(norm='l2', copy=True)

    把独立的样本数据缩放成具有单位规范(unit norm)的数据。在用二次方式(quadratic form)如点积,或者其他kernel队样本之间的差异进行量化时,很有用。

    这个假设是基于Vector Space Model的,经常用在文本分类、聚类中。

    5. Binarization

    将数值型的特征值转换为布尔型(二分类),通过设置阈值。

    6. Encoding categorical features

    sklearn.preprocessing.OneHotEncoder(
            n_values='auto',
            categorical_features='all',
            dtype=<type 'numpy.float64'>,
            sparse=True,
            handle_unknown='error')
    

    特征值为类别数据是使用OneHotEncoder来编码。它会把类别数据转换成多列0,1数据。

    7. Imputation of missing values

    归置缺失值。

    sklearn.preprocessing.Imputer(
            missing_values='NaN', 
            strategy='mean', 
            axis=0, verbose=0, copy=True)
    

    8. Generating polynomial features

    将少数几个特征搞成更多的特征,也就是把模型搞复杂起来。

    sklearn.preprocessing.PolynomialFeatures(
            degree=2, 
            interaction_only=False, 
            include_bias=True)
    

    生成多项的、相互影响的特征值。比如一个[a,b]两个特征的数据,用degree=2的PolynomialFeatures转换之后会变成[1, a, b, a^2, ab, b^2]这么多特征。

    9. Custom transformers

    最后,按照国际惯例会有一个自定义转换。可以使用

    sklearn.preprocessing.FunctionTransformer(
            func=None, 
            inverse_func=None, 
            validate=True, 
            accept_sparse=False, 
            pass_y=False, kw_args=None, inv_kw_args=None)
    

    这个来制定你所需要的转换方式。

    用到的时候去查文档吧。

    以上。

    相关文章

      网友评论

        本文标题:SKlearn_特征值转换

        本文链接:https://www.haomeiwen.com/subject/nqtogttx.html