Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Numpy Python: Exception: Data must be 1-dimensional

Getting exception Exception: Data must be 1-dimensional

using NumPy in Python 3.7

Same code is working for others but not in my case. Bellow is my code please help

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)

Expected output should be

Train - Predictors shape (80, 1)

Test - Predictors shape (20, 1)

Train - Target shape (80, 1)

Test - Target shape (20, 1)

As output getting exception Exception: Data must be 1-dimensional

like image 454
sourav Avatar asked Oct 21 '25 12:10

sourav


1 Answers

I think you need to call np.reshape on the underlying numpy array rather than on the Pandas series - you can do this using .values:

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

Repeat the same idea for the next three lines.

Or, if you are on a recent version of Pandas >= 0.24, to_numpy is preferred:

x_train = np.reshape(x_train.to_numpy(), (-1, 1))
like image 112
sjw Avatar answered Oct 24 '25 04:10

sjw



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!