简体   繁体   中英

Pandas Array Exception: Data must be 1-Dimensional

This is my Python script for using Markov Blanket Algorithm on my Dataset:

df1 = read_csv("input-binary-120-training.csv")
Y1 = df1[df1.CategoryL == 1].CategoryL
X1 = minmax_scale(df1[df1.CategoryL == 1].ix[:, 1:24], axis = 0)
y_train = Y1.values

df2 = read_csv("input-binary-120-test.csv")
Y2 = df2[df2.CategoryL == 1].CategoryL
X2 = minmax_scale(df2[df2.CategoryL == 1].ix[:, 1:24], axis = 0)
y_test = Y2.values
x_test = X2.reshape(X2.shape[0], X2.shape[1], 1)


seed(2017)
kfold = KFold(n_splits=5, random_state=27, shuffle=True)
scores = list()

# Create a PyImpetus classification object and initialize with required parameters

model = PPIMBC(LogisticRegression(random_state=27, max_iter=1000, class_weight="balanced"), cv=0, num_simul=20, simul_type=0, simul_size=0.2, random_state=27, sig_test_type="non-parametric", verbose=2, p_val_thresh=0.05)

x_train = model.fit_transform(X1, Y1)
x_test = model.transform(x_test)
print("Markov Blanket: ", model.MB)

But for the line X_train = model.fit_transform(X1,Y1) I got the exception:

Data must be 1-Dimensional.

I used X1.flatten() but it doesn't work. Could you please advise me about this issue?


Full error:

x_train = model.fit_transform(X1, Y1)
  File "/home/osboxes/Downloads/Thesis/PyImpetus.py", line 326, in fit_transform
    self.fit(data, Y)
  File "/home/osboxes/Downloads/Thesis/PyImpetus.py", line 299, in fit
    final_MB, final_feat_imp = self._find_MB(data.copy(), Y)
  File "/home/osboxes/Downloads/Thesis/PyImpetus.py", line 221, in _find_MB
    Y = np.reshape(Y, (-1, 1))
  File "<__array_function__ internals>", line 6, in reshape
  File "/home/osboxes/venv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 299, in reshape
    return _wrapfunc(a, 'reshape', newshape, order=order)
  File "/home/osboxes/venv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 55, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)
  File "/home/osboxes/venv/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 48, in _wrapit
    result = wrap(result)
  File "/home/osboxes/venv/lib/python3.6/site-packages/pandas/core/generic.py", line 1999, in __array_wrap__
    return self._constructor(result, **d).__finalize__(self)
  File "/home/osboxes/venv/lib/python3.6/site-packages/pandas/core/series.py", line 311, in __init__
    data = sanitize_array(data, index, dtype, copy, raise_cast_failure=True)
  File "/home/osboxes/venv/lib/python3.6/site-packages/pandas/core/internals/construction.py", line 729, in sanitize_array
    raise Exception("Data must be 1-dimensional")
Exception: Data must be 1-dimensional

Try to reshape Y1 either Y1=Y1[:, 0] or Y1=Y1.ravel() to get a 1D dimension.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM