LogisticRegression: Type d'étiquette inconnu: 'continuous' utilisant sklearn en python
J'ai le code suivant pour tester quelques-uns des plus populaires ML algorithmes de sklearn bibliothèque python:
import numpy as np
from sklearn import metrics, svm
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
trainingData = np.array([ [2.3, 4.3, 2.5], [1.3, 5.2, 5.2], [3.3, 2.9, 0.8], [3.1, 4.3, 4.0] ])
trainingScores = np.array( [3.4, 7.5, 4.5, 1.6] )
predictionData = np.array([ [2.5, 2.4, 2.7], [2.7, 3.2, 1.2] ])
clf = LinearRegression()
clf.fit(trainingData, trainingScores)
print("LinearRegression")
print(clf.predict(predictionData))
clf = svm.SVR()
clf.fit(trainingData, trainingScores)
print("SVR")
print(clf.predict(predictionData))
clf = LogisticRegression()
clf.fit(trainingData, trainingScores)
print("LogisticRegression")
print(clf.predict(predictionData))
clf = DecisionTreeClassifier()
clf.fit(trainingData, trainingScores)
print("DecisionTreeClassifier")
print(clf.predict(predictionData))
clf = KNeighborsClassifier()
clf.fit(trainingData, trainingScores)
print("KNeighborsClassifier")
print(clf.predict(predictionData))
clf = LinearDiscriminantAnalysis()
clf.fit(trainingData, trainingScores)
print("LinearDiscriminantAnalysis")
print(clf.predict(predictionData))
clf = GaussianNB()
clf.fit(trainingData, trainingScores)
print("GaussianNB")
print(clf.predict(predictionData))
clf = SVC()
clf.fit(trainingData, trainingScores)
print("SVC")
print(clf.predict(predictionData))
Les deux premiers ouvrages ok, mais j'ai l'erreur suivante dans LogisticRegression
appel:
root@ubupc1:/home/ouhma# python stack.py
LinearRegression
[ 15.72023529 6.46666667]
SVR
[ 3.95570063 4.23426243]
Traceback (most recent call last):
File "stack.py", line 28, in <module>
clf.fit(trainingData, trainingScores)
File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/logistic.py", line 1174, in fit
check_classification_targets(y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/multiclass.py", line 172, in check_classification_targets
raise ValueError("Unknown label type: %r" % y_type)
ValueError: Unknown label type: 'continuous'
Les données d'entrée sont les mêmes que dans les précédents appels, de sorte que ce qui se passe ici?
Et par la façon, pourquoi il y a une énorme diference dans la première prédiction de LinearRegression()
et SVR()
algorithmes (15.72 vs 3.95)
?
source d'informationauteur harrison4 | 2017-01-29
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage à flotteurs à un classificateur qui attend catégorique valeurs comme la cible de vecteur. Si vous le convertissez en
int
elle sera acceptée comme entrée (bien qu'il va être discutable si c'est la bonne façon de le faire).Il serait préférable de convertir votre formation scores en utilisant scikit de
labelEncoder
fonction.Le même est vrai pour votre DecisionTree et KNeighbors qualificatif.
J'ai lutté avec le même problème lorsque vous essayez de nourrir les flotteurs pour les classificateurs. Je voulais garder des flotteurs et non pas des nombres entiers pour la précision. Essayez d'utiliser régresseur algorithmes. Par exemple: