Python:将来的版本中将删除方法.as_matrix。使用.values代替

时间:2018-09-18 08:42:32

标签: python scikit-learn

我有以下代码

train_X, test_X, train_y, test_y = train_test_split(X.as_matrix(), y.as_matrix(), test_size=0.25)

其中X是一个DataFrame,而y是一个序列。 调用上面的函数时,出现以下警告:

  

/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:1:FutureWarning:方法.as_matrix将在以后的版本中删除。改用.values。

     

“”“用于启动IPython内核的入口点。

然后,我尝试使用.values进行更改,如警告中所述:

train_X, test_X, train_y, test_y = train_test_split(X.values(), y.values(), test_size=0.25)

但是出现以下错误:

  

TypeError跟踪(最近一次通话)    在()中   ----> 1个train_X,test_X,train_y,test_y = train_test_split(X.values(),y.values(),test_size = 0.25)

     

TypeError:“ numpy.ndarray”对象不可调用

我该如何解决?

3 个答案:

答案 0 :(得分:6)

应该是:

train_X, test_X, train_y, test_y = train_test_split(X.values, y.values, test_size=0.25)

请参见this

答案 1 :(得分:2)

根据Panda 0.25.1文档,他们建议使用DataFrame.to_numpy()而不是DataFrame.values()

  

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.values.html#pandas.DataFrame.values

所以我建议像下面这样更新它:

train_X, test_X, train_y, test_y = train_test_split(X.to_numpy(), y.to_numpy(), test_size=0.25)

答案 2 :(得分:1)

以下是有关警告背后版本的其他信息。希望对您有所帮助。

由于熊猫版本(0.23.4)与Anaconda Python 3.7.1一起随SQL Server 2019一起提供,对我来说发生了。 SQL Server 2017附带了熊猫(0.19.2),该熊猫是Anaconda Python 3.5.2的一部分,其中未发生此未来警告消息。

pandas.DataFrame.as_matrix自版本0.23.0起已弃用。参见PR

Examples有关如何使用pandas.DataFrame.values。