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()
,而不是 .values
或 as_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?
AttributeError: ‘Series‘ object has no attribute ‘as_matrix‘
AttributeError: ‘DataFrame‘ object has no attribute ‘as_matrix‘