Tôi có đoạn code sau để kiểm tra một số thuật toán ML phổ biến nhất của sklearn python thư viện:hồi quy logistic: Unknown loại nhãn: 'liên tục' sử dụng sklearn trong 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))
Hai tác phẩm đầu tiên ok, nhưng tôi đã nhận lỗi sau trong số LogisticRegression
gọi:
[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'
Dữ liệu đầu vào giống như trong các cuộc gọi trước, vậy điều gì đang xảy ra ở đây?
Và bằng cách này, tại sao có sự khác biệt lớn trong dự đoán đầu tiên của các thuật toán LinearRegression()
và SVR()
(15.72 vs 3.95)
?
Cảm ơn bạn! Vì vậy, tôi đã có để chuyển đổi '2.3' để '23' và như vậy, phải không? Có một cách thanh lịch để thực hiện chuyển đổi này bằng cách sử dụng gấu trúc hoặc gấu trúc? – harrison4
Nhưng, trong ví dụ này dữ liệu đầu vào có số phao bằng chức năng LogisticRegression: http://machinelearningmastery.com/compare-machine-learning-algorithms-python-scikit-learn/ ... và nó hoạt động tốt. Tại sao? – harrison4
Đầu vào có thể là phao nhưng đầu ra cần phải được phân loại, tức là int. Cột 8 chỉ là 0 hoặc 1 trong ví dụ này. Thông thường, đó là cách khác mà bạn có nhãn phân loại, ví dụ: ['đỏ', 'lớn', 'bị bệnh'] và bạn cần phải chuyển đổi các giá trị số. Hãy thử http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features hoặc http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html –