Depuis novembre 2019, j'apprends Python à PyQ, mais j'ai tendance à avoir trop d'entrées, alors j'aimerais le publier comme une sortie de ce que j'ai appris.
Il y a certaines parties qui ne sont pas bien comprises, donc je pense qu'il y en a de nombreuses parties qui sont difficiles à comprendre, mais j'aimerais faire de mon mieux.
Le sujet principal est d'ici. En un mot ... Divisez les deux données avec une ligne!
En détail, c'est une méthode de retour avec une courbe sigmoïde (courbe en forme de S) au lieu d'une ligne droite. C'est cool de dire logistique en katakana, mais après tout c'est une ligne. La variable objectif est binaire (comme 1 ou 0 ou ○ ou ×)
Il semble que ce ne soit pas réellement un modèle linéaire car l'erreur ne suit pas la distribution normale ...
Il semble que les courbes logistiques peuvent être gérées par des équations logistiques, mais cette fois, une fois que vous dites régression logistique, rappelez-vous qu'elle est divisée en deux parties égales par une ligne droite.
Les données linéaires non séparables peuvent également être séparées par régression logistique en ajoutant un axe de troisième dimension qui prend la valeur de x1 * x2. Une technique appelée SVM (Support Vector Machine) gère automatiquement ces classifications.
python
from sklearn.model_selection import train_test_split
#Divisez les données pour la formation et l'évaluation (test)
X_train, X_test,y_train, y_test= train_test_split(X, y, test_size=0.3, random_state=0)
#Extraire le module contenant la régression logistique de sklearn
from sklearn.linear_model import LogisticRegression
# C=0.01, 0.1, 1, 10,Essayé 100
lr = LogisticRegression(C=0.01, random_state=0)
scores = cross_val_score(lr, X, y, cv=10)
print("Taux de réponse correct", np.mean(scores), "écart-type+/-", np.std(scores))
--C est spécifié comme argument de LogisticRegression. Ce C est un paramètre de régularisation. La régularisation est l'ajustement des formules modèles pour éviter le surentraînement. Le surentraînement est vrai pour les données d'entraînement car le modèle est trop complexe, mais pas pour les données de test. La force de la régularisation augmente à mesure que le paramètre C diminue.
――Cross_val_score est une méthode de vérification qui divise les données et répète l'apprentissage et le jugement. Vous pouvez diviser davantage les données d'entraînement divisées et vérifier les performances afin que les données ne soient pas biaisées. Puisque cv = 10, nous donnons cette fois la valeur moyenne après avoir analysé le motif 10 fois.
Fonction logistique
En un mot ... Le résultat de l'analyse est généré par une série d'instructions if. Ce qui suit est une citation du Site officiel. Vous pouvez voir qu'il a une structure arborescente. Une méthode d'apprentissage automatique qui utilise une structure arborescente pour la classification et la régression est un arbre décisif.
python
#Extraire un module avec un arbre de décision de sklearn
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier()
#Classé par arbre de décision
tree.fit(X, y)
#Calcul du score avec les données de test
tree.score(X, y)
#Tracez les résultats
plot_tree(tree, X, y)
--Paramètre d'hyper: valeur spécifiée dans le modèle d'apprentissage pour spécifier la méthode d'apprentissage, la complexité du traitement, les paramètres de calcul, etc. → Spécifiez max_depth dans l'arbre de décision. Il s'agit d'un paramètre qui spécifie la profondeur de l'arbre, et plus il est petit, plus la limite de décision est simple. Cela réduit la précision des données de validation, mais réduit le risque de surentraînement. --Overtraining: les données contiennent à la fois des informations utiles pour l'estimation et des informations non utiles pour l'estimation (comme le bruit). Les modèles avec du bruit s'appliquent bien aux données d'entraînement, mais pas tellement aux données de test. --Ensemble learning: un terme général pour les méthodes qui tentent de créer un modèle d'apprentissage plus fort en combinant plusieurs algorithmes. --Random Forest: une combinaison de plusieurs arbres de décision et d'un vote à la majorité
En un mot ... Il peut être utilisé pour la classification et la régression! Avec le même algorithme en Python, vous pouvez utiliser deux fonctions, la classification et la régression. SVC (Classification des vecteurs de support): Classification SVR (régression vectorielle de soutien): régression
Dans un SVM linéaire, il est classé et régressé comme le montre la figure ci-dessous.
Dimension caractéristique | Type de limite |
---|---|
2D | Ligne droite |
3D | Ligne droite |
n dimensions | Super avion |
python
#SVM SVC(Classification)choisir
from sklearn.svm import SVC
#Modélisation et formation des données de formation
svm = SVC(C=1.0, kernel='linear')
svm.fit(X_train, y_train)
#Calcul du score avec les données de test
svm.score(X_test, y_test)
#Tracé de la zone apprise
plot_regions(svm, X, y);
Avec SVC (), appelez le classifieur par la machine vectorielle de support et stockez-le une fois dans une variable appelée clf. Les paramètres internes C et Kernel sont respectivement les types de contribution de pénalité et de support des machines vectorielles. La contribution de pénalité C est l'ampleur de la contribution de pénalité lors de la détermination de la frontière. Plus C est grand, plus la pénalité pour les points mal reconnus est élevée. "Kernel = 'linear'" signifie utiliser une machine à vecteur de support linéaire.
Marge dure: prise en main facile avec la séparation linéaire et la séparation linéaire est possible Marge douce: SVM plus intelligente que la marge dure
https://kenyu-life.com/2019/02/11/support_vector_machine/
https://qiita.com/t-yotsu/items/1a6bf3a4f3242eae7857
Recommended Posts