Ich habe den folgenden Code einige der beliebtesten ML-Algorithmen von sklearn Python-Bibliothek zu testen:Logistische Regression: Unknown Label Typ: ‚kontinuierlich‘ mit sklearn in 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))
Die ersten beiden Werke in Ordnung, aber ich habe der folgende Fehler in LogisticRegression
Aufruf:
[email protected]:/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'
die Eingangsdaten ist das gleiche wie in den vorherigen Anrufen, also was ist hier los?
Und übrigens, warum gibt es einen großen Unterschied in der ersten Vorhersage von LinearRegression()
und SVR()
Algorithmen (15.72 vs 3.95)
?
Vielen Dank! Also muss ich '2.3' in' 23' umwandeln, oder? Es gibt einen eleganten Weg, um diese Umwandlung mit Numpy oder Pandas zu machen? – harrison4
Aber in diesem Beispiel haben die Eingabedaten Float-Nummern mit LogisticRegression-Funktion: http://machinelearningmastery.com/compare-machine-learning-algorithms-python-sikit-learn/ ... und es funktioniert ok. Warum? – harrison4
Die Eingabe kann floats sein, aber die Ausgabe muss kategorial sein, d. H. Int. Spalte 8 ist in diesem Beispiel nur 0 oder 1. Normalerweise ist es anders herum, dass Sie kategorische Labels, z. ['rot', 'groß', 'krank'] und Sie müssen es numerische Werte konvertieren. Versuchen Sie http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features oder http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html –