【问题标题】:"Unexpected keyword argument 'axis'" tunning Sckit-Learn's train_test_split function after using Pandas' cut function“意外的关键字参数 'axis'” 在使用 Pandas 的 cut 函数后调整 Scikit-Learn 的 train_test_split 函数
【发布时间】: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


【解决方案1】:

我确认 pandas 0.24.2 的问题。要解决这个问题,请更改

 data_Y = dataset.ToPredictField.cat.codes

这将为您提供类别的数字代码,这当然与sklearn 相得益彰。或者你可以简单地做

 data_Y = dataset.ToPredictField

但我不确定它与sklearn 的关系如何。

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2016-04-22
    • 1970-01-01
    • 2017-09-14
    • 2015-07-25
    • 2018-09-30
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多