Python ValueError:未知的标签类型:';连续';

Python ValueError:未知的标签类型:';连续';,python,pandas,numpy,scikit-learn,valueerror,Python,Pandas,Numpy,Scikit Learn,Valueerror,我见过其他帖子谈论这一点,但任何人都可以帮助我。我正在windows x6机器上使用带有Python 3.6.0的jupyter笔记本。 我有一个很大的数据集,但我只保留其中的一部分来运行我的模型: 这是我使用的一段代码: df = loan_2.reindex(columns= ['term_clean','grade_clean', 'annual_inc', 'loan_amnt', 'int_rate','purpose_clean','installment','loan_status

我见过其他帖子谈论这一点,但任何人都可以帮助我。我正在windows x6机器上使用带有Python 3.6.0的jupyter笔记本。 我有一个很大的数据集,但我只保留其中的一部分来运行我的模型:

这是我使用的一段代码:

df = loan_2.reindex(columns= ['term_clean','grade_clean', 'annual_inc', 'loan_amnt', 'int_rate','purpose_clean','installment','loan_status_clean'])
df.fillna(method= 'ffill').astype(int)
from sklearn.preprocessing import Imputer
from sklearn.preprocessing import StandardScaler
imp = Imputer(missing_values='NaN', strategy='median', axis=0)
array = df.values
y = df['loan_status_clean'].values
imp.fit(array)
array_imp = imp.transform(array)

y2= y.reshape(1,-1)
imp.fit(y2)
y_imp= imp.transform(y2)
X = array_imp[:,0:4]
Y = array_imp[:,4]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)
seed = 7
scoring = 'accuracy'

from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
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  BernoulliNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.ensemble import AdaBoostClassifier
from sklearn.neural_network import MLPClassifier

# Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('BNB', BernoulliNB()))
models.append(('RF', RandomForestClassifier()))
models.append(('GBM', AdaBoostClassifier()))
models.append(('NN', MLPClassifier()))
models.append(('SVM', SVC()))

# evaluate each model in turn
results = []
names = []
for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)
当我运行最后一段代码时,出现以下错误:


ValueError回溯(最近一次调用)
在()
4对于名称,模型中的模型:
5 kfold=model\u selection.kfold(n\u splits=10,random\u state=seed)
---->6 cv\u结果=模型选择。交叉值评分(模型,X\u序列,Y\u序列,cv=kfold,评分=评分)
7结果。附加(cv_结果)
8名称。附加(名称)
C:\Users\dalila\Anaconda\lib\site packages\sklearn\model\u selection\\u validation.py交叉评分(估计器、X、y、组、评分、cv、n作业、详细信息、拟合参数、预调度)
138列车,测试,冗长,无,
139配合参数)
-->140用于列车,在cv_iter中进行试验)
141返回np.数组(分数)[:,0]
142
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\parallel.py in\uuuu调用(self,iterable)
756人被派遣。特别是,这覆盖了边缘
757#与耗尽迭代器一起使用的并行情况。
-->758自行调度一批时(迭代器):
759自迭代=真
760其他:
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
606返回错误
607其他:
-->608自我派遣(任务)
609返回真值
610
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\parallel.py in\u dispatch(self,batch)
569调度时间戳=time.time()
570 cb=BatchCompletionCallBack(调度时间戳,len(批处理),self)
-->571作业=self.\u后端.apply\u异步(批处理,回调=cb)
572自我作业。附加(作业)
573
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\u parallel\u backends.py in apply\u async(self、func、callback)
107 def apply_async(self、func、callback=None):
108“计划要运行的func”
-->109结果=立即结果(func)
110如果回调:
111回调(结果)
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\u parallel\u backends.py in\uuuuuu init\uuuu(self,batch)
324#不要延迟应用程序,以免保留输入
325#内存中的参数
-->326 self.results=批处理()
327
328 def get(自我):
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\parallel.py in\uuuu调用(self)
129
130 def呼叫(自我):
-->131返回[func(*args,**kwargs),用于self.items中的func、args、kwargs]
132
133定义长度(自):
C:\Users\dalila\Anaconda\lib\site packages\sklearn\externals\joblib\parallel.py in(.0)
129
130 def呼叫(自我):
-->131返回[func(*args,**kwargs),用于self.items中的func、args、kwargs]
132
133定义长度(自):
C:\Users\dalila\Anaconda\lib\site packages\sklearn\model\u selection\\u validation.py in\u fit\u and\u score(估计器、X、y、记分器、训练、测试、详细、参数、拟合参数、返回训练分数、返回参数、返回测试样本、返回次数、错误分数)
236估算器拟合(X列,**拟合参数)
237其他:
-->238估计值拟合(X_序列,y_序列,**拟合参数)
239
240除e以外的例外情况:
C:\Users\dalila\Anaconda\lib\site packages\sklearn\linear\u model\logistic.py in fit(self,X,y,sample\u weight)
1172 X,y=check_X_y(X,y,accept_sparse='csr',dtype=np.float64,
1173 order=“C”)
->1174检查分类目标(y)
1175 self.classes=np.unique(y)
1176个n_样本,n_特征=X形状
C:\Users\dalila\Anaconda\lib\site packages\sklearn\utils\multiclass.py in check\u classification\u targets(y)
170如果y_类型不在['binary'、'multiclass'、'multiclass multioutput'中,
171“多标签指示器”、“多标签序列”]:
-->172提升值错误(“未知标签类型:%r”%y\u类型)
173
174
ValueError:未知的标签类型:“连续”

简单假设:我的数据是从NaN中清理出来的,通常缺少值

问题的解决方案是需要回归模型而不是分类模型,因此: 这两行的开头:

from sklearn.svm import SVC
..
..
models.append(('SVM', SVC()))
使用这些:

from sklearn.svm import SVR
..
..
models.append(('SVM', SVR()))

分类器仅在Y_中训练整数值(类的标签)。但它得到了float并引发了这个错误。 如果要进行回归,请使用回归器而不是分类器。 或者,如果您需要分类,请检查y_train。可能是代码的这一部分将其转换为浮点:

imp = Imputer(missing_values='NaN', strategy='median', axis=0)
array = df.values
imp.fit(array)
array_imp = imp.transform(array)
Y = array_imp[:,4]
试着把它改成

Y = array[:,4] # take it from not changed data 
imp = Imputer(missing_values='NaN', strategy='median', axis=0)
array = df.values
imp.fit(array)
array_imp = imp.transform(array)

您应该打印您的
Y\u列车
。似乎Y_序列值不是离散的而是连续的,您正在尝试对它们执行分类任务。您是否使用
float
s作为
Y
值?如果没有示例数据,将很难帮助您。看起来您正在迭代许多模型。哪一个抛出了错误?问题是Y是二进制的,取值为0和1,所以我不知道如何修复错误。此外,我不知道如何理解哪个迭代通过了错误。数据可在lendingclub.com/download/Data.action(2007-2011)上获得。
Y = array[:,4] # take it from not changed data 
imp = Imputer(missing_values='NaN', strategy='median', axis=0)
array = df.values
imp.fit(array)
array_imp = imp.transform(array)