## Issue

I am working on a Data Science project which requires implementation of a neural network. The dataset I am providing for training is not sequential and has class labels. But I don’t know why it is treating it as sequence of events.

I am using the following code for the model:

```
model = keras.Sequential([
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dense(6, activation='softmax')
])
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=['accuracy']
)
model.fit(X_train, y_train,epochs=100,batch_size=2100)
y_pred=model.predict(X_test)
print(accuracy_score(y_test,y_pred))
```

The `accuracy_score`

function is giving this error

```
Classification metrics can't handle a mix of multiclass and continuous-multioutput targets
```

This error messages shows when the algorithm is performing the regression. How can I solve this issue?

**Edit 1**

As suggested by Michael Hodel I have applied the `OneHotEncoder`

instead of using `LabelEncoder`

.

```
data['label']= ohc.fit_transform(data[['label']])
```

It is giving me error

```
sparse matrix length is ambiguous; use getnnz() or shape[0]
```

**Edit 2**

I used `pd.get_dummies()`

instead of ‘OneHotEncoder`

## Solution

Your `y_pred`

are floats, but `accuracy_score`

expects integers. I’d recommend you one-hot encode your labels and use the `categorical_crossentropy`

loss function. Then `y_pred`

represent the class probabilities which can simply converted to predictions via `y_pred.argmax(axis=1)`

. An example with mock data:

```
from sklearn.metrics import accuracy_score
import tensorflow.keras as keras
import tensorflow.keras.layers as layers
import numpy as np
n_classes = 6
n_variables = 100
n_examples = 1000
X = np.random.normal(0, 1, (n_examples, n_variables))
y_ = np.random.choice(n_classes, size=n_examples)
y = np.eye(n_classes)[y_]
idx = int(n_examples * 0.8)
X_train, y_train = X[:idx], y[:idx]
X_test, y_test = X[idx:], y[idx:]
model = keras.Sequential([
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dropout(0.4),
layers.Dense(100, activation='relu'),
layers.Dense(6, activation='softmax')
])
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=['accuracy']
)
model.fit(X_train, y_train,epochs=10,batch_size=100)
y_pred=model.predict(X_test)
print(accuracy_score(y_test.argmax(axis=1), y_pred.argmax(axis=1)))
```

Here `y_`

are your classes of shape `(n_examples,)`

, and `y`

are the one-hot encoded classes of shape `(n_examples, n_classes)`

and `model.predict(X_test)`

gives predicted probabilities of shape `(n_examples, n_classes)`

and `model.predict(X_test).argmax(axis=1)`

gives prediced classes of shape `(n_examples,)`

.

Answered By – Michael Hodel

**This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 **