创建自己得转换器

  小编最近在看数据分析,写下博客加深影响。     参考 Robert Layton得数据分析。

  涉及到三个概念,估计器,转换器,流水线。

     估计器(Estimator):用于分类、聚类和回归分析。
     转换器(Transformer):用于数据预处理和数据转换。
     流水线(Pipeline):组合数据挖掘流程,便于再次使用
 
  scikit-learn 估计器
    为帮助用户实现大量分类算法,scikit-learn把相关功能封装成所谓的估计器。估计器用
于分类任务,它主要包括以下两个函数。
   fit():训练算法,设置内部参数。该函数接收训练集及其类别两个参数。
   predict():参数为测试集。预测测试集类别,并返回一个包含测试集各条数据类别的
数组。
  大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。
 
  转换器像极了转换函数。它接收一种形式的数据,输出另外一种形式。转换器可以用训练集
训练,训练得到的参数可以用来转换测试数据集。转换器通常用作数据处理和数值转化,因为在实际情况中,影响事物得种类很多,队事物影响得权重又不同,导致数据冗杂。因此,将数据集进行转化不仅可以提高运行速度,更提高准确度。
from sklearn.base import TransformerMixin
from sklearn.utils import as_float_array

class MeanDiscrete(TransformerMixin):
    def fit(self, X, y=None):
        X = as_float_array(X)
        self.mean = np.mean(X, axis=0)
        return self

    def transform(self, X):
        X = as_float_array(X)
      # 判断矩阵得列数是否一致
assert X.shape[1] == self.mean.shape[0] return X > self.mean

  小编再看得时候,有些语法忘了,便随手在ipython上面敲了敲。

  下面再进行检验:
%%file adult_tests.py
import numpy as np
from numpy.testing import assert_array_equal

def test_meandiscrete():
    X_test = np.array([[ 0,  2],
                        [ 3,  5],
                        [ 6,  8],
                        [ 9, 11],
                        [12, 14],
                        [15, 17],
                        [18, 20],
                        [21, 23],
                        [24, 26],
                        [27, 29]])
    mean_discrete = MeanDiscrete()
    mean_discrete.fit(X_test)
    assert_array_equal(mean_discrete.mean, np.array([13.5, 15.5]))
    X_transformed = mean_discrete.transform(X_test)
    X_expected = np.array([[ 0,  0],
                            [ 0, 0],
                            [ 0, 0],
                            [ 0, 0],
                            [ 0, 0],
                            [ 1, 1],
                            [ 1, 1],
                            [ 1, 1],
                            [ 1, 1],
                            [ 1, 1]])
    assert_array_equal(X_transformed, X_expected)

  流水线通常是由转换器和估算器组成得,最够必须是估算器。

  下面附上:

pandas.read_csv学习笔记

https://blog.csdn.net/zjyklwg/article/details/79556545

 

posted @ 2020-02-09 21:18  为红颜  阅读(183)  评论(0编辑  收藏  举报