【问题标题】:Numpy Python: Exception: Data must be 1-dimensionalNumpy Python:例外:数据必须是一维的
【发布时间】:2019-12-03 03:52:38
【问题描述】:

获取异常Exception: Data must be 1-dimensional

在 Python 3.7 中使用 NumPy

相同的代码适用于其他人,但不适用于我的情况。下面是我的代码,请帮忙

Working_code_in_diff_system

Same_code_not_working_in_my_system

import numpy as np 
from sklearn import linear_model
from sklearn.model_selection import train_test_split
import seaborn as sns
from sklearn import metrics
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_csv('./Data/new-data.csv', index_col=False)

x_train, x_test, y_train, y_test = train_test_split(df['Hours'], df['Marks'], test_size=0.2, random_state=42)

sns.jointplot(x=df['Hours'], y=df['Marks'], data=df, kind='reg')

x_train = np.reshape(x_train, (-1,1))
x_test = np.reshape(x_test, (-1,1))
y_train = np.reshape(y_train, (-1,1))
y_test = np.reshape(y_test, (-1,1))



#
print('Train - Predictors shape', x_train.shape)
print('Test - Predictors shape', x_test.shape)
print('Train - Target shape', y_train.shape)
print('Test - Target shape', y_test.shape)

预期的输出应该是

Train - 预测器形状 (80, 1)

测试 - 预测器形状 (20, 1)

训练 - 目标形状 (80, 1)

测试 - 目标形状 (20, 1)

作为输出得到异常Exception: Data must be 1-dimensional

【问题讨论】:

  • 您的第一个 jpg 暗示了问题,系列上的 reshape 将被弃用。

标签: python-3.x numpy regression linear-regression


【解决方案1】:

numpy.squeeze() 从 NumPy 数组中删除所有大小为 1 的维度。

x_train = numpy.squeeze(x_train)

将 (80,1) 数组转换为 (80,)

【讨论】:

    【解决方案2】:

    我认为您需要在底层 numpy 数组而不是 Pandas 系列上调用 np.reshape - 您可以使用 .values 执行此操作:

    x_train = np.reshape(x_train.values, (-1, 1))
    

    在接下来的三行中重复相同的想法。

    或者,如果您使用的是最新版本的 Pandas >= 0.24,则首选to_numpy

    x_train = np.reshape(x_train.to_numpy(), (-1, 1))
    

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2018-01-31
      • 2017-12-20
      • 2019-08-30
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多