Ich habe den folgenden Code, um einige der beliebtesten ML-Algorithmen der sklearn Python-Bibliothek zu testen:
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 funktionieren in Ordnung, aber ich habe beim LogisticRegression
Aufruf den folgenden Fehler erhalten :
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'
Die Eingabedaten sind die gleichen wie in den vorherigen Aufrufen. Was ist hier also los?
Und übrigens, warum gibt es einen großen Unterschied in der ersten Vorhersage LinearRegression()
und den SVR()
Algorithmen (15.72 vs 3.95)
?
quelle
2.3
zu23
und so weiter, ist es nicht? Gibt es eine elegante Möglichkeit, diese Konvertierung mit Numpy oder Pandas durchzuführen?2.3
und23
gleich?Ich hatte mit dem gleichen Problem zu kämpfen, als ich versuchte, den Klassifikatoren Schwimmer zuzuführen. Ich wollte Floats und keine ganzen Zahlen für die Genauigkeit behalten. Versuchen Sie es mit Regressor-Algorithmen. Zum Beispiel:
import numpy as np from sklearn import linear_model from sklearn import svm classifiers = [ svm.SVR(), linear_model.SGDRegressor(), linear_model.BayesianRidge(), linear_model.LassoLars(), linear_model.ARDRegression(), linear_model.PassiveAggressiveRegressor(), linear_model.TheilSenRegressor(), linear_model.LinearRegression()] 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] ]) for item in classifiers: print(item) clf = item clf.fit(trainingData, trainingScores) print(clf.predict(predictionData),'\n')
quelle
LogisticRegression
ist nicht für die Regression, sondern für die Klassifizierung !Die
Y
Variable muss die Klassifizierungsklasse sein.(zum Beispiel
0
oder1
)Und keine
continuous
Variable,das wäre ein Regressionsproblem .
quelle