Python:方法 .as_matrix 将在未来版本中删除。改用 .values [重复]

Posted

技术标签:

【中文标题】Python:方法 .as_matrix 将在未来版本中删除。改用 .values [重复]【英文标题】:Python: Method .as_matrix will be removed in a future version. Use .values instead [duplicate] 【发布时间】:2019-02-22 05:54:12 【问题描述】:

我有以下代码

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 Traceback(最近一次调用最后一次) 在 () ----> 1 train_X, test_X, train_y, test_y = train_test_split(X.values(), y.values(), test_size=0.25)

TypeError: 'numpy.ndarray' 对象不可调用

我该如何解决这个问题?

【问题讨论】:

这应该就像从values() 中删除() 一样简单。 你是对的,我的错.. 从 pandas 0.24 开始,使用 df.to_numpy(),而不是 .valuesas_matrix() pandas.pydata.org/pandas-docs/version/0.23.1/generated/… 虽然他们建议使用.values,正如@cs95 提到的那样,.to_numpy() 对我有用 【参考方案1】:

根据 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】:

以下是有关警告背后的版本控制的一些附加信息。我希望它有所帮助。

由于 Pandas 版本 (0.23.4) 现在与 Anaconda Python 3.7.1 一起在 SQL Server 2019 中提供,因此发生这种情况。 SQL Server 2017 附带 pandas (0.19.2),它是 Anaconda Python 3.5.2 的一部分,未出现此未来警告消息。

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

Examples如何使用pandas.DataFrame.values。

【讨论】:

【参考方案3】:

应该是:

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

见this。

【讨论】:

以上是关于Python:方法 .as_matrix 将在未来版本中删除。改用 .values [重复]的主要内容,如果未能解决你的问题,请参考以下文章

程序员又秃了:谷歌Go语言将在未来消灭Java和Python?

pandas as_matrix()

AttributeError: ‘Series‘ object has no attribute ‘as_matrix‘

AttributeError: ‘DataFrame‘ object has no attribute ‘as_matrix‘

使用IDEA运行项目时提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

PullToRefreshListView已弃用,将在未来的主要版本中删除