sklearn de datos que consiste en establecer el aprendizaje automático

Machine Learning: el modelo, la estrategia, la optimización

"Aprendizaje automático estadístico" que: modelos de aprendizaje automático = + estrategia + algoritmo. De hecho, el aprendizaje automático se puede expresar como: Aprendizaje = Representación + + Evalution optimización. Podemos representar simplemente un maestro tal y Li Cuelgue argumento correspondencia. aprendizaje de la máquina se compone principalmente de tres partes, a saber: que (modelo), evaluación (estrategia) y optimización (algoritmos).

Representa (también conocido como: Modelo): Representación

Un director de tareas se modela, se le puede llamar un modelo. El trabajo principal es convertir el modelo que se completó: el verdadero problema en un equipo con problemas puede entender, es lo que se suele decir de modelado. Algoritmos, estructuras de datos similares a las disciplinas de ordenador convencionales, cómo convertir los problemas en forma práctica una computadora puede representar. Esta parte puede ver el "fácil de aprender algoritmos de aprendizaje automático." Dados los datos, ¿cómo elegir el problema que corresponde a resolver, la elección del modelo existente adecuado es un paso importante.

Evaluación (o conocido como: Estrategia): Evalution

El objetivo de la evaluación es determinar los méritos del modelo se ha construido. Para los modelos construidos en la primera etapa de la evaluación es un indicador usado para indicar los méritos del modelo. Aquí sería el diseño de los indicadores de evaluación y algunos función de evaluación. El aprendizaje se centrará en la máquina de evaluación.

  • clasificación

Optimización: Optimización

El objetivo es optimizar la función de la evaluación, esperamos ser capaces de encontrar el mejor modelo, que es el modelo más alta calificación.

Paso en el desarrollo de aplicaciones de aprendizaje automático

(1) la recogida de datos

Podemos utilizar muchos métodos para recoger muestras de equipos de protección, tales como: producción de un rastreador web para extraer los datos de la página web, RSS o retroalimentación API partir de los datos medidos obtenidos información enviada desde el dispositivo.

(2) preparar los datos de entrada

Una vez obtenidos los datos, también debe asegurarse de que el formato de datos cumple con los requisitos.

(3) Los datos de análisis de entrada

El efecto principal de este paso es asegurarse de que el conjunto de datos no son datos basura. Si está utilizando una fuente confiable de datos, puede omitir este paso

(4) algoritmo de entrenamiento

algoritmos para aprender de este paso el aprendizaje de máquina comenzó realmente. Si está utilizando el algoritmo de aprendizaje no supervisado, ya que no existe el valor objetivo de la variable, y por lo tanto no es necesario algoritmo de entrenamiento, el algoritmo de todo el contenido relacionado (5) En el primer paso

(5) algoritmo de prueba

Este paso en realidad va a utilizar la primera información de conocimiento (4) Etapa de aprendizaje de máquinas disponibles. Por supuesto, esto también tiene que evaluar la exactitud de los resultados y, a continuación, entrenar el algoritmo según sea necesario

(6) usando un algoritmo

En una aplicación, realice la tarea actual. Para comprobar si los pasos anteriores pueden trabajar en un entorno real. Si los nuevos datos se encontró con un problema, la misma necesidad de repetir el paso anterior

 

scikit-learn el conjunto de datos

Vamos a describir la clase sklearn conjunto de datos, servicios públicos módulo de medios para cargar el conjunto de datos, incluyendo la carga y método popular para adquirir el conjunto de datos de referencia que comprende. También tiene algún generador de datos manual.

sklearn.datasets

(1) datasets.load _ * ()

Adquisición de conjuntos de datos a pequeña escala, los datos contenidos en las bases de datos en

(2) datasets.fetch _ * ()

Obtener grandes conjuntos de datos, es necesario descargar desde la red, el primer argumento es data_home, representa un directorio de descargas conjunto de datos, el valor predeterminado es ~ / scikit_learn_data /, para modificar el directorio por defecto, puede modificar las variables de entorno SCIKIT_LEARN_DATA

(3) datasets.make _ * ()

conjunto de datos generados localmente

Carga * y FETCH * Tipo de datos devuelto por la función es datasets.base.Bunch, esencialmente, un diccionario, sus atributos clave de acceso disponibles a través del objeto. Principalmente contiene las siguientes propiedades:

  • datos: típico matriz de datos es de dos dimensiones-N_SAMPLES array * n_features de numpy.ndarray

  • objetivo: array etiqueta es unidimensionales N_SAMPLES matriz de numpy.ndarray

  • Descripción de datos: DESCR

  • FEATURE_NAMEs: nombre de la entidad

  • target_names: nombre de la etiqueta

directorio de conjunto de datos puede () obtener a través de datasets.get_data_home, clear_data_home (data_home = None) para borrar todos los datos descargados

  • datasets.get_data_home (data_home = None)

La vía de retorno scikit directorio de datos de aprendizaje. Esta carpeta es grandes conjuntos de datos utilizando algún cargador, con el fin de evitar la descarga de datos. Por defecto, el archivo de configuración del directorio de datos a la carpeta de inicio del usuario nombrado carpeta "scikit_learn_data". Por otra parte, por la variable de entorno "SCIKIT_LEARN_DATA", o dando ruta de la carpeta explícita establecer mediante programación. '~' Signo extendido a la carpeta de inicio del usuario. Si no existe la carpeta, se crea automáticamente.

  • sklearn.datasets.clear_data_home (data_home = None)

directorio de borrado de almacenamiento de datos

La adquisición de pequeños conjuntos de datos

para la clasificación

  • sklearn.datasets.load_iris
class sklearn.datasets.load_iris(return_X_y=False)
  """
  加载并返回虹膜数据集

  :param return_X_y: 如果为True,则返回而不是Bunch对象,默认为False

  :return: Bunch对象,如果return_X_y为True,那么返回tuple,(data,target)
  """
In [12]: from sklearn.datasets import load_iris
    ...: data = load_iris()
    ...:

In [13]: data.target
Out[13]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

In [14]: data.feature_names
Out[14]:
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']

In [15]: data.target_names
Out[15]:
array(['setosa', 'versicolor', 'virginica'],
      dtype='|S10')

In [17]: data.target[[1,10, 100]]
Out[17]: array([0, 0, 2])
nombre cantidad
categoría 3
característica 4
El número de muestras 150
El número de cada categoría 50
  • sklearn.datasets.load_digits
class sklearn.datasets.load_digits(n_class=10, return_X_y=False)
    """
    加载并返回数字数据集

    :param n_class: 整数,介于0和10之间,可选(默认= 10,要返回的类的数量

    :param return_X_y: 如果为True,则返回而不是Bunch对象,默认为False

    :return: Bunch对象,如果return_X_y为True,那么返回tuple,(data,target)
    """
In [20]: from sklearn.datasets import load_digits

In [21]: digits = load_digits()

In [22]: print(digits.data.shape)
(1797, 64)

In [23]: digits.target
Out[23]: array([0, 1, 2, ..., 8, 9, 8])

In [24]: digits.target_names
Out[24]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [25]: digits.images
Out[25]:
array([[[  0.,   0.,   5., ...,   1.,   0.,   0.],
        [  0.,   0.,  13., ...,  15.,   5.,   0.],
        [  0.,   3.,  15., ...,  11.,   8.,   0.],
        ...,
        [  0.,   4.,  11., ...,  12.,   7.,   0.],
        [  0.,   2.,  14., ...,  12.,   0.,   0.],
        [  0.,   0.,   6., ...,   0.,   0.,   0.]],

        [[  0.,   0.,  10., ...,   1.,   0.,   0.],
        [  0.,   2.,  16., ...,   1.,   0.,   0.],
        [  0.,   0.,  15., ...,  15.,   0.,   0.],
        ...,
        [  0.,   4.,  16., ...,  16.,   6.,   0.],
        [  0.,   8.,  16., ...,  16.,   8.,   0.],
        [  0.,   1.,   8., ...,  12.,   1.,   0.]]])
nombre cantidad
categoría 10
característica 64
El número de muestras 1797

para la devolución

  • sklearn.datasets.load_boston
class  sklearn.datasets.load_boston(return_X_y=False)
  """
  加载并返回波士顿房价数据集

  :param return_X_y: 如果为True,则返回而不是Bunch对象,默认为False

  :return: Bunch对象,如果return_X_y为True,那么返回tuple,(data,target)
  """
In [34]: from sklearn.datasets import load_boston

In [35]: boston = load_boston()

In [36]: boston.data.shape
Out[36]: (506, 13)

In [37]: boston.feature_names
Out[37]:
array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
       'TAX', 'PTRATIO', 'B', 'LSTAT'],
      dtype='|S7')

In [38]:
nombre cantidad
categoría objetivo 5-50
característica 13
El número de muestras 506
  • sklearn.datasets.load_diabetes
class sklearn.datasets.load_diabetes(return_X_y=False)
  """
  加载和返回糖尿病数据集

  :param return_X_y: 如果为True,则返回而不是Bunch对象,默认为False

  :return: Bunch对象,如果return_X_y为True,那么返回tuple,(data,target)
  """
In [13]:  from sklearn.datasets import load_diabetes

In [14]: diabetes = load_diabetes()

In [15]: diabetes.data
Out[15]:
array([[ 0.03807591,  0.05068012,  0.06169621, ..., -0.00259226,
         0.01990842, -0.01764613],
       [-0.00188202, -0.04464164, -0.05147406, ..., -0.03949338,
        -0.06832974, -0.09220405],
       [ 0.08529891,  0.05068012,  0.04445121, ..., -0.00259226,
         0.00286377, -0.02593034],
       ...,
       [ 0.04170844,  0.05068012, -0.01590626, ..., -0.01107952,
        -0.04687948,  0.01549073],
       [-0.04547248, -0.04464164,  0.03906215, ...,  0.02655962,
         0.04452837, -0.02593034],
       [-0.04547248, -0.04464164, -0.0730303 , ..., -0.03949338,
        -0.00421986,  0.00306441]])
nombre cantidad
rango objetivo 25-346
característica 10
El número de muestras 442

Obtener grandes conjuntos de datos

  • sklearn.datasets.fetch_20newsgroups
class sklearn.datasets.fetch_20newsgroups(data_home=None, subset='train', categories=None, shuffle=True, random_state=42, remove=(), download_if_missing=True)
  """
  加载20个新闻组数据集中的文件名和数据

  :param subset: 'train'或者'test','all',可选,选择要加载的数据集:训练集的“训练”,测试集的“测试”,两者的“全部”,具有洗牌顺序


  :param data_home: 可选,默认值:无,指定数据集的下载和缓存文件夹。如果没有,所有scikit学习数据都存储在'〜/ scikit_learn_data'子文件夹中

  :param categories: 无或字符串或Unicode的集合,如果没有(默认),加载所有类别。如果不是无,要加载的类别名称列表(忽略其他类别)

  :param shuffle: 是否对数据进行洗牌

  :param random_state: numpy随机数生成器或种子整数

  :param download_if_missing: 可选,默认为True,如果False,如果数据不在本地可用而不是尝试从源站点下载数据,则引发IOError

  :param remove: 元组
  """
In [29]: from sklearn.datasets import fetch_20newsgroups

In [30]: data_test = fetch_20newsgroups(subset='test',shuffle=True, random_sta
    ...: te=42)

In [31]: data_train = fetch_20newsgroups(subset='train',shuffle=True, random_s
    ...: tate=42)
  • sklearn.datasets.fetch_20newsgroups_vectorized
class sklearn.datasets.fetch_20newsgroups_vectorized(subset='train', remove=(), data_home=None)
  """
  加载20个新闻组数据集并将其转换为tf-idf向量,这是一个方便的功能; 使用sklearn.feature_extraction.text.Vectorizer的默认设置完成tf-idf 转换。对于更高级的使用(停止词过滤,n-gram提取等),将fetch_20newsgroup与自定义Vectorizer或CountVectorizer组合在一起

  :param subset: 'train'或者'test','all',可选,选择要加载的数据集:训练集的“训练”,测试集的“测试”,两者的“全部”,具有洗牌顺序

  :param data_home: 可选,默认值:无,指定数据集的下载和缓存文件夹。如果没有,所有scikit学习数据都存储在'〜/ scikit_learn_data'子文件夹中

  :param remove: 元组
  """
In [57]: from sklearn.datasets import fetch_20newsgroups_vectorized

In [58]: bunch = fetch_20newsgroups_vectorized(subset='all')

In [59]: from sklearn.utils import shuffle

In [60]: X, y = shuffle(bunch.data, bunch.target)
    ...: offset = int(X.shape[0] * 0.8)
    ...: X_train, y_train = X[:offset], y[:offset]
    ...: X_test, y_test = X[offset:], y[offset:]
    ...:

Obtener datos generados localmente

Generar datos clasificados locales:

  • sklearn.datasets.make_classification

    class make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)
    """
    生成用于分类的数据集
    
    :param n_samples:int,optional(default = 100),样本数量
    
    :param n_features:int,可选(默认= 20),特征总数
    
    :param n_classes:int,可选(default = 2),类(或标签)的分类问题的数量
    
    :param random_state:int,RandomState实例或无,可选(默认=无)
      如果int,random_state是随机数生成器使用的种子; 如果RandomState的实例,random_state是随机数生成器; 如果没有,随机数生成器所使用的RandomState实例np.random
    
    :return :X,特征数据集;y,目标分类值
    """
    
from sklearn.datasets.samples_generator import make_classification
X,y= datasets.make_classification(n_samples=100000, n_features=20,n_informative=2, n_redundant=10,random_state=42)

Generar datos de regresión local:

  • sklearn.datasets.make_regression
class make_regression(n_samples=100, n_features=100, n_informative=10, n_targets=1, bias=0.0, effective_rank=None, tail_strength=0.5, noise=0.0, shuffle=True, coef=False, random_state=None)
  """
  生成用于回归的数据集

  :param n_samples:int,optional(default = 100),样本数量

  :param  n_features:int,optional(default = 100),特征数量

  :param  coef:boolean,optional(default = False),如果为True,则返回底层线性模型的系数

  :param random_state:int,RandomState实例或无,可选(默认=无)
    如果int,random_state是随机数生成器使用的种子; 如果RandomState的实例,random_state是随机数生成器; 如果没有,随机数生成器所使用的RandomState实例np.random

  :return :X,特征数据集;y,目标值
  """
from sklearn.datasets.samples_generator import make_regression
X, y = make_regression(n_samples=200, n_features=5000, random_state=42)

 

Los modelos seleccionados

Es el núcleo algoritmo, los datos y la computación es la base. Esta frase ilustra la importancia de un buen algoritmos de aprendizaje automático. Así que miramos a la clasificación de la máquina de aprendizaje de varios abierta:

  • El aprendizaje supervisado
    • K- clasificación vecino más cercano, árboles de decisión, bayesiano de regresión logística (LR), máquinas de vectores soporte (SVM)
    • Regresión de regresión lineal, regresión ridge
    • Marcado modelo oculto de Markov (HMM)
  • aprendizaje no supervisado
    • K-means clustering

¿Cómo elegir el algoritmo modelo adecuado

En la solución del problema, debemos tener en cuenta las dos preguntas siguientes: En primer lugar, el propósito de algoritmos de aprendizaje automático, las tareas que desea completar el algoritmo, tales como la probabilidad de lluvia se prevé para mañana se agrupan de acuerdo a los votantes de interés, en segundo lugar, la necesidad de analizar lo recogida de datos o

En primer lugar considerar el propósito de utilizar un algoritmo de aprendizaje automático. Después si quiere predecir el valor de la variable de destino, puede seleccionar el algoritmo de aprendizaje supervisado, o puede elegir algoritmo de aprendizaje no supervisado, seleccione el algoritmo de aprendizaje supervisado para determinar la necesidad de determinar con mayor precisión el tipo de variable objetivo, si la variable objetivo es discreta, sí / no, 1 / 2/3, a / B / C / o rojo / negro / amarillo, etc., pueden ser seleccionados algoritmo de clasificación; Si la variable de destino es el valor continuo, tal como 0.0 a 100.0, -999 a 999, etc., es necesario seleccionar el algoritmo de regresión

Si no desea predecir el valor de la variable de destino, se puede elegir el algoritmo no supervisado. El análisis adicional de la necesidad de dividir los datos en grupos discretos. Si este es el único requisito, a continuación, utilizando un algoritmo de agrupamiento.

Por supuesto, en la mayoría de los casos, las opciones dadas por encima de los lectores de ayuda puede elegir la máquina adecuada algoritmos de aprendizaje, pero no es una inevitable sin cambios. También existen algoritmos de clasificación se pueden utilizar para volver.

En segundo lugar, consideremos el problema de los datos, hay que entender completamente los datos, los más plenamente los datos reales de entender, el más fácil para crear aplicaciones en línea con la demanda real, el principal debe entender las características de lo que los datos: valores característicos son  variables discretas  o  variables continuas  , si existe el valor de los valores de características que faltan, lo que resulta en valores perdidos por cualquier motivo, la presencia de suficientes datos es un valor anormal, con qué frecuencia una característica de incidencia, y similares. Para entender completamente las características de los datos mencionados anteriormente puede acortar el tiempo para seleccionar un algoritmo de aprendizaje automático.

Explica tres tipos de problemas de aprendizaje supervisado

(1) Clasificación  de clasificación es un tema central de aprendizaje supervisado en el aprendizaje supervisado, cuando el número finito variable de salida de valores discretos, problema de predicción se convierte en un problema de clasificación. En este momento, la variable de entrada puede ser discreto o puede ser continua. Aprendizaje supervisado Aprender a vivir un modelo de clasificación de la función de decisión de clasificación de datos, llamado un clasificador. Nueva salida predicho clasificador de entrada se llama clasificación. La más básica es la clasificación binaria, es decir, no determinación, como resultado de predicción seleccionado a partir de dos categorías; Además hay problemas polifenoles, es decir, seleccionar una de más de dos categorías.

La clasificación y la clasificación se divide en dos procesos de aprendizaje, el proceso de aprendizaje, de acuerdo con la formación conjunto de datos conocidos utilizando el aprendizaje eficaz de aprender un clasificador, el proceso de clasificación por un clasificador de aprendizaje nueva instancia de la clasificación de entrada. La Fig. (X1, Y1), (X2, Y2) ... son el conjunto de datos de entrenamiento, la formación del sistema de aprendizaje para aprender un clasificador de datos P (Y | X), o Y = f (X); sistema de clasificación por aprender a clasificador para clasificar entrada nueva sub ejemplo Xn + 1, Yn cirugía es decir, salida de bandera predicción Ray + 1

La clasificación está basada en sus datos característicos "categorías", lo que en muchos campos tienen una amplia gama de aplicaciones. Por ejemplo, en la banca, podemos construir un modelo de segmentación de clientes, según el cliente clasificar según el tamaño del riesgo de crédito, en el campo de la seguridad de la red, la intrusión ilegal puede ser detectada usando los datos de registro de anuncios; en el procesamiento de imágenes, la clasificación se puede utilizar detectar si hay una cara en la imagen aparecen, en reconocimiento de la escritura, clasificación digital se puede utilizar para identificar la escritura a mano, en búsqueda de Internet, las páginas de categorías pueden ayudar a rastrear, indexar y clasificar las páginas.

Esto es un ejemplo de una aplicación de clasificación, clasificación de texto. Texto aquí pueden ser informes de prensa, páginas web, correo electrónico, documentos académicos. Categoría tienden a ser sobre el contenido del texto. Tales como política, deportes, economía y así sucesivamente, hay acerca de las características de texto, como los comentarios positivos, comentarios negativos, también se determinará en función de la aplicación, tales como correo no deseado, no spam. clasificación de texto se basa en las características del texto que dividirse las clases existentes. Es el texto de entrada de vectores de características, la salida de texto es una categoría. El valor suelen aparecer texto de palabra es 1, y 0 en caso contrario; ,, también puede ser un multi-valor indica la frecuencia de las palabras que aparecen en el texto. Intuitivamente, si la "reserva", "Banca", "Money", una gran cantidad de estas palabras, este texto puede pertenecer a la economía, si el "tenis", "competencia", "atleta" Estas palabras aparecen con frecuencia, este texto puede pertenecer a los deportes

(2) Regresión

Otra cuestión importante es el regreso de aprendizaje supervisado. relaciones de regresión entre las variables de entrada y las variables de salida previstos, en particular, cambio de variable, tal como cuando el valor original cambia, el valor de salida de las variables consiguientes. Los modelos de regresión representan la correlación de funciones oficiales de entrada a salida entre las variables. Estabilidad días estudio de la función de regresión de ajuste equivalente a: seleccionar una curva de función para un mejor ajuste de los datos conocidos y los datos de posición de la buena predicho

Regresión de acuerdo con el número de variables de entrada, divididos en uno de regresión y la regresión múltiple; de ​​acuerdo con los tipos de relaciones entre las variables de entrada y variables de salida del tipo de modelo, es decir, dividido en regresión lineal y regresión no lineal.

Tarea en muchas áreas puede ser formalizado como un problema de regresión, por ejemplo, se puede utilizar para volver al mundo de los negocios, ya que el pronóstico de la tendencia del mercado, la gestión de la calidad del producto, las encuestas de satisfacción del cliente, el ataque herramienta de análisis de riesgos.

(3) Dimensionamiento

Mark es un problema de aprendizaje supervisado. El problema es que una marca se puede considerar para promover la cuestión de la clasificación, etiquetado problema es una forma simple de un problema de predicción de estructura más compleja. Dimensionado es una secuencia de observación de entrada, una secuencia de marcador o la secuencia de salida de los estados. signo de interrogación en la extracción de información, procesamiento del lenguaje natural y otros campos se utilizan ampliamente, es un problema fundamental en estas áreas. Por ejemplo, el procesamiento de lenguaje natural de etiquetado del habla es una etiqueta típica, es decir, la correspondiente secuencia prevista de expresión una etiqueta de secuencia de palabras

Por supuesto, nuestra principal preocupación es los problemas de clasificación y regresión, algoritmo de complejidad y Dimensionamiento

 

Modelo - A validación cruzada

Cuando la prueba se realiza, generalmente, modelo, estaremos datos en conjuntos de entrenamiento y prueba. En un espacio de muestra dado, para llegar a la mayoría de las muestras como un conjunto de entrenamiento para entrenar el modelo, la pequeña porción restante de la muestra utilizando el modelo para predecir acaba de crear.

conjunto de entrenamiento y de prueba

Dividir el conjunto de entrenamiento y de prueba se puede utilizar cross_validation método train_test_split en la mayoría de los iteradores de validación cruzada están construidas en una antigua división de las opciones de datos para la indexación de datos roto, es decir, la validación cruzada de iterador métodos train_test_split internos utilizados. El valor predeterminado no será disuelta, comprende cv = some_integer k (directa) de plegado vuelve cross_val_score de validación cruzada una división aleatoria. Si el conjunto de datos tiene la temporalidad, no romper los datos subdividido!

  • sklearn.cross_validation.train_test_split
def train_test_split(*arrays,**options)
  """
  :param arrays:允许的输入是列表,数字阵列

  :param test_size:float,int或None(默认为无),如果浮点数应在0.0和1.0之间,并且表示要包括在测试拆分中的数据集的比例。如果int,表示测试样本的绝对数

  :param train_size:float,int或None(默认为无),如果浮点数应在0.0到1.0之间,表示数据集包含在列车拆分中的比例。如果int,表示列车样本的绝对数

  :param random_state:int或RandomState,用于随机抽样的伪随机数发生器状态,参数 random_state 默认设置为 None,这意为着每次打散都是不同的。
  """
from sklearn.cross_validation import train_test_split
from sklearn import datasets

iris = datasets.load_iris()
print iris.data.shape,iris.target.shape
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=42)
print X_train.shape,y_train.shape
print X_test.shape,y_test.shape

El enfoque anterior también tiene limitaciones. Debido a que la prueba sólo una vez, no representa necesariamente la verdadera precisión del modelo. Debido a que la precisión de los puntos de modelo y de corte de datos están relacionados, en una pequeña cantidad de datos, el impacto es particularmente prominente. Así que tenemos una mejor solución.

Modelo de evaluación, además de los datos de datos de entrenamiento y de prueba, estará involucrado en los datos de validación. Utilizando los datos de entrenamiento y datos de prueba fueron validación cruzada, la única manera de entrenar un modelo que tiene la precisión más fiable, el modelo también se puede esperar de los nuevos conjuntos de datos desconocidos, para tener un mejor rendimiento. Esta es promover la capacidad del modelo, que garantiza la capacidad de generalización.

método de retención

Un método típico es la generalización capacidad evaluación del modelo holdout validación cruzada (validación cruzada holdout). método de retención es muy simple, sólo tenemos que el conjunto de datos original se divide en entrenamiento y prueba, el primero se utiliza para entrenar el modelo, que se utiliza para evaluar el rendimiento del modelo. En general, no una validación cruzada El Holdout verificación, ya que los datos utilizados y no lo hacen cruz. Aleatoriamente seleccionado de los datos de validación cruzada formadas las porciones de la muestra original, mientras que los datos de entrenamiento restante tal como es. En general, menos de un tercio de los datos muestra original se selecciona como los datos de autenticación. Por lo tanto, los resultados obtenidos por este método no muy persuasiva

k- veces la validación cruzada

K-veces la validación cruzada, la muestra inicial se divide en K sub-muestras, un solo sub-muestra se mantiene como modelo de validación de datos, los demás-1 K muestras utilizadas para el entrenamiento. La validación cruzada se repitió K veces, una vez para cada resultado de sub-muestra de verificación en los tiempos medios de K, o en combinación con otras maneras a fin de obtener una estimación única. La ventaja de este método es que, mientras que el azar sub-muestra repetible de entrenamiento y de validación, cada resultado de verificación de tiempo, 10 veces la validación cruzada es el más común.

5 veces la validación cruzada, por ejemplo, todo el conjunto de datos disponibles en un conjunto de cinco, cada iteración de los cuales se selecciona de un conjunto de datos como un conjunto de validación, y cuatro conjuntos como el conjunto de entrenamiento, grupos de 5 a través del proceso iterativo. La validación cruzada de los beneficios que pueden garantizar que todos los datos tiene la oportunidad de ser entrenados y validados, sino también la mayor optimización del rendimiento del modelo de medida de lo posible el rendimiento de la más creíble.

La forma más sencilla es utilizar el estimador cross_val_score validación cruzada y la función en el conjunto de datos.

  • sklearn.cross_validation.cross_val_score
def cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')
  """
  :param estimator:模型估计器

  :param X:特征变量集合

  :param y:目标变量

  :param cv:int,使用默认的3折交叉验证,整数指定一个(分层)KFold中的折叠数

  :return :预估系数
  """
from sklearn.cross_validation import cross_val_score
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
print(cross_val_score(lasso, X, y))

enfoque de validación cruzada tiene dos propósitos principales:

  • Obtener la mayor información válida de un estudio limitado de datos;
  • Usted puede evitar un exceso de ajuste problema hasta cierto punto.

 encuentran problemas o necesidad de encontrar un qq notas Fuente: 2586251002

Publicados 232 artículos originales · ganado elogios 93 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/qq_42370150/article/details/104966403
Recomendado
Clasificación