【发布时间】:2019-09-17 00:26:03
【问题描述】:
我在对数据集进行操作时遇到了这个问题。我的数据集采用 CSV 格式,结构如下:
ID,FieldOne,FieldTwo,FieldThree,FieldFour,FieldThree,FieldFour,FieldFive,ToPredict
1,337,118,4,4.5,4.5,9.65,1,0.92
2,324,107,4,4,4.5,8.87,1,0.76
3,316,104,3,3,3.5,8,1,0.72
“ToPredictField”是一个概率,它告诉我为某个过程选择每一行的可能性有多大。那是我的类列,我想将其分为 5 类:非常_不太可能( 0.9 )。我通过使用 Pandas cut 函数来做到这一点:
bins = [0, 0.5, 0.7, 0.8, 0.9, 1]
names = ['Very_unlikely', 'Unlikely', 'Medium', 'Likely', 'Very_likely']
dataset['ToPredictField'] = pd.cut(dataset['Chance of Admit '], bins, labels=names)
现在,我尝试运行 train_test_split 将数据集拆分为 67% 训练 / 33%:
data_X = dataset[['ID','FieldOne','FieldTwo','FieldThree','FieldFour','FieldThree','FieldFour','FieldFive']].values
data_Y = dataset['Chance of Admit '].values
train_X, test_X, train_Y, test_Y = train_test_split(data_X, data_Y, test_size=0.33, random_state=10)
但是,我收到此错误:
/usr/local/lib/python3.6/dist-packages/sklearn/utils/__init__.py in safe_indexing(X, indices)
214 indices.dtype.kind == 'i'):
215 # This is often substantially faster than X[indices]
--> 216 return X.take(indices, axis=0)
217 else:
218 return X[indices]
TypeError: take_nd() got an unexpected keyword argument 'axis'
你知道它是什么吗?
谢谢。
【问题讨论】:
-
这里有a thread,表明它与分类变量类型的存在有关,这可能是
pd.cut()的结果。看起来这个问题应该从 sklearn v0.16 开始解决。你用的是什么版本?在我链接到的那个线程中有一些解决方法,其中大部分涉及删除 Categorical 类型。另外 - 请更新您的示例代码以保持一致。您的响应变量名称和您的dataset/df对象都不一致。 -
@andrew_reece:谢谢。我在 Colab 中运行它,所以我真的不知道它是什么版本。我会尝试更新到那个版本。
-
@Heathcliff for pandas 版本,运行
pd.__version__
标签: python pandas tensorflow scikit-learn