Maison  >  Article  >  développement back-end  >  Validation croisée et implémentation du code Python

Validation croisée et implémentation du code Python

零到壹度
零到壹度original
2018-04-16 11:45:3310196parcourir

Le contenu présenté dans cet article concerne la validation croisée et l'implémentation du code Python. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent se référer à

Deux types de. sélection du modèle Méthodes : régularisation (méthode typique), validation croisée.

Nous introduisons ici la validation croisée et son implémentation du code python.

Validation croisée

S'il existe suffisamment de données pour un échantillon donné, un moyen simple d'effectuer une sélection de modèle consiste à effectuer une sélection aléatoire Il est divisé en 3 parties, à savoir l'ensemble de formation, l'ensemble de vérification et l'ensemble de test.

Ensemble de formation : Modèle de formation

Ensemble de validation : Sélection du modèle

Ensemble de test : Évaluation finale du modèle

Parmi les modèles appris avec différentes complexités, choisissez l'ensemble de validation qui a Modèle avec erreur de prédiction minimale. Étant donné que l’ensemble de validation contient suffisamment de données, il est également efficace de l’utiliser pour la sélection du modèle. Dans de nombreuses applications pratiques où les données sont insuffisantes, des méthodes de validation croisée peuvent être utilisées.

Idée de base : utilisez les données à plusieurs reprises, segmentez les données fournies en ensembles d'entraînement et en ensembles de tests, puis effectuez à plusieurs reprises une formation, des tests et une sélection de modèle sur cette base.

Validation croisée simple :

Divisez aléatoirement les données en deux parties, l'ensemble d'entraînement et l'ensemble de test. Généralement, 70 % des données correspondent à l’ensemble d’entraînement et 30 % à l’ensemble de test.

Code (division de l'ensemble d'entraînement, ensemble de test) :

from sklearn.cross_validation import train_test_split
# data (全部数据)   labels(全部目标值)     X_train 训练集(全部特征)  Y_train 训练集的目标值
X_train, X_test, Y_train, Y_test = train_test_split(data,labels, test_size=0.25, random_state=0) #这里训练集75%:测试集25%

random_state

Explication du code source : int, instance RandomState ou None, facultatif (default=None)

int, Instance RandomState ou None, facultatif (par défaut = None)Si int, random_state est la graine utilisée par le générateur de nombres aléatoires ;
Si instance RandomState, random_state est le générateur de nombres aléatoires ;
Si None, le générateur de nombres aléatoires est l'instance RandomState utilisée
par `np.random`.

L'idée principale est : si vous définissez une valeur spécifique, telle que random_state =10, alors les données après chaque division seront les mêmes, même si elles sont exécutées plusieurs fois. S'il est défini sur Aucun, c'est-à-dire random_state=None, alors les données après chaque division seront différentes, et les données seront différentes à chaque fois que la division est exécutée.

Code (ensemble d'entraînement de division, ensemble de validation, ensemble de test) :

from sklearn import cross_validation

train_and_valid, test = cross_validation.train_test_split(data, test_size=0.3,random_state=0)  # 先分为两部分:训练和验证  ,  测试集
train, valid = cross_validation.train_test_split(data, test_size=0.5,random_state=0)   # 再把训练和验证分为:训练集 ,验证集

Recommandations associées :

Validation croisée

3 types de validation croisée

L'utilisation de la validation croisée

Pourquoi utiliser la validation croisée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn