반응형
로지스틱 회귀 분석:알 수 없는 레이블 유형: python에서 sklearn을 사용하는 'continuous'
sklearn python 라이브러리의 가장 인기 있는 ML 알고리즘 중 일부를 테스트하기 위한 코드는 다음과 같습니다.
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))
처음 두 개는 정상적으로 작동하지만, 다음 오류가 발생했습니다.LogisticRegression호출:
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'
입력 데이터가 이전 통화와 동일한데, 이게 무슨 일입니까?
그리고 그건 그렇고, 왜 첫 번째 예측에서 큰 차이가 있는지.LinearRegression()그리고.SVR()알고리즘(15.72 vs 3.95)?
범주형 값을 대상 벡터로 예상하는 분류기에 부동액을 전달하고 있습니다.로 변환하면int그것은 입력으로 받아들여질 것입니다(그러나 그것이 올바른 방법인지는 의문입니다).
당신의 훈련 점수를 스크킷의 기능을 이용하여 변환하는 것이 좋을 것입니다.
당신의 결정도 마찬가지입니다.트리 및 KNeighbors 한정자입니다.
from sklearn import preprocessing
from sklearn import utils
lab_enc = preprocessing.LabelEncoder()
encoded = lab_enc.fit_transform(trainingScores)
>>> array([1, 3, 2, 0], dtype=int64)
print(utils.multiclass.type_of_target(trainingScores))
>>> continuous
print(utils.multiclass.type_of_target(trainingScores.astype('int')))
>>> multiclass
print(utils.multiclass.type_of_target(encoded))
>>> multiclass
LogisticRegression회귀가 아니라 분류를 위한 것입니다!
그Y변수는 분류 클래스여야 합니다.
(예:0또는1)
그리고 아닙니다.continuous변수,
그것은 회귀 문제가 될 것입니다.
분류자에게 플로트를 공급하려고 할 때도 같은 문제로 어려움을 겪었습니다.정확성을 위해 정수가 아닌 부동액을 유지하고 싶었습니다.회귀 알고리즘을 사용해 보십시오.예:
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')
언급URL : https://stackoverflow.com/questions/41925157/logisticregression-unknown-label-type-continuous-using-sklearn-in-python
반응형
'source' 카테고리의 다른 글
| Swift에서 뷰 컨트롤러와 다른 개체 간에 데이터를 어떻게 공유합니까? (0) | 2023.08.05 |
|---|---|
| Oracle: 절이 다른 여러 개의 카운트를 수행하는 가장 좋은 방법은 무엇입니까? (0) | 2023.08.05 |
| 설치_실패_중복_사용 권한...C2D_MESSAGE (0) | 2023.08.05 |
| 각도 재료에서 아이콘의 색상을 설정하는 방법은 무엇입니까? (0) | 2023.08.05 |
| setTimeout()이 포함된 함수를 테스트합니다. (0) | 2023.08.05 |