在将数据集拆分以提供给机器学习算法时出错

这很奇怪,因为这个错误只在特定的三列中出现,而在其他列中运行正常。

错误信息如下:

Traceback (most recent call last):  File "/version1/analyze.py", line 447, in <module>    cv_results = model_selection.cross_val_score(model, X_train, Y_train,cv=kfold, scoring=scoring)  File "/usr/lib64/python2.7/site-packages/sklearn/model_selection/_validation.py", line 140, in cross_val_score    for train, test in cv_iter)fac = 1. / (n_samples - n_classes)ZeroDivisionError: float division by zero

我的代码如下:

validation_size = 0.20seed = 10X_train, X_validation, Y_train, Y_validation =   model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)seed = 10scoring = 'accuracy'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)  #错误在这里发生

上述错误只在我选择数据集中特定的一些列时发生,对于其他列都能正常工作!

所有列的数据量和值类型都是相同的。

 #用于拆分验证数据集的代码   array = dataset.values   if field == "rh":     X = array[:,0:8]   elif field == "rm":     X = array[:,0:8]   elif field == "wh":     X = array[:,0:8]   elif field == "wm":     X = array[:,0:8]   else :    print"wrong field"  if field == "rh":      Y = array[:,0]     #运行正常,即使对于4,5,6,7也正常   elif field == "rm":      #只在1,2,3时出现上述错误      Y = array[:,1]      #出现上述错误  elif field == "wh":     #出现上述错误      Y = array[:,2]  elif field == "wm":     #出现上述错误      Y = array[:,3]  else :      print"wrong field"

这是我的数据集:

      index,1column,2 column,3column,….,8column         0,238,240,1103,409,1038,4,67,0         1,41,359,995,467,1317,8,71,0         2,102,616,1168,480,1206,7,59,0         3,0,34,994,181,1115,4,68,0         4,88,1419,1175,413,1060,8,71,0         5,826,10886,1316,6885,2086,263,119,0         6,88,472,1200,652,1047,7,64,0         7,0,322,957,533,1062,11,73,0         8,0,200,1170,421,1038,5,63,0         9,103,1439,1085,1638,1151,29,66,0        10,0,1422,1074,4832,1084,27,74,0        11,1828,754,11030,263845,1209,10,79,0        12,340,1644,11181,175099,4127,13,136,0        13,71,1018,1029,2480,1276,18,66,1        14,0,3077,1116,1696,1129,6,62,0             “”””””             ‘”””””

总共有105条数据记录

但是上述错误不会在选择第1列时发生,即当Y = 第1列时,但当我选择其他列2、3或4时,会发生同样的错误。


回答:

n_samples是数据集中的行数,n_classes是标签数组中唯一的类别标签。上述错误发生是因为数据集中没有标签类别!

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注