2 votes

ValueError : au moins un tableau ou un dtype est requis

Mon code :

import numpy as np
from pandas import read_csv
from matplotlib import pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split

data = read_csv('data.csv', usecols=['col_1'])

df_x = data.iloc[:, 1:]
df_y = data.iloc[:, 0]

x_train, x_test, y_train, y_test = train_test_split(df_x, df_y, test_size=0.9, random_state=4)

nn = MLPClassifier(activation='logistic', solver='sgd', hidden_layer_sizes=(2,), random_state=1)
#nn.fit(x_train[x], y_train[x])

print(nn)

nn.fit(x_train, y_test)

pred = nn.predict(x_test)

J'obtiens l'erreur indiquée dans le titre de la page. .fit() et je n'ai pas compris grand-chose à la documentation, car je suis novice en matière de ML.

Erreur complète :

File "C:/NNC/Main.py", line 14, in <module>
    data.target.array([])
  File "C:\NNC\venv\lib\site-packages\pandas\core\generic.py", line 5179, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'target'

Mise à jour - :
Je l'ai depuis supprimé et mis à jour car il s'agissait de tester une solution trouvée dans la documentation. J'ai mis à jour l'erreur

File "C:\Users\PycharmProjects\NNC\venv\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 325, in _fit
    X, y = self._validate_input(X, y, incremental)
  File "C:\Users\PycharmProjects\NNC\venv\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 932, in _validate_input
    multi_output=True)
  File "C:\Users\PycharmProjects\NNC\venv\lib\site-packages\sklearn\utils\validation.py", line 739, in check_X_y
    estimator=estimator)
  File "C:\Users\PycharmProjects\NNC\venv\lib\site-packages\sklearn\utils\validation.py", line 459, in check_array
    dtype_orig = np.result_type(*array.dtypes)
  File "<__array_function__ internals>", line 6, in result_type
ValueError: at least one array or dtype is required

Le processus s'est terminé avec le code de sortie 1

4voto

Kalana Points 4653

Cette erreur se produit pour les raisons suivantes.

  1. Vous n'avez pas target dans votre csv. Là pour vérifier deux fois votre csv.
  2. Si tiene target colonne, il y a des espaces blancs ou des espaces dans votre targer colonne. Il peut exister comme ceci

    < target> <target > < target > <target >...etc.

Il faut copier ce nom de colonne avec ces espaces blancs. Après cela, exécutez ce code

data = read_csv('data.csv', usecols=['col_1'])
data.columns = data.columns.str.strip()

Mis à jour - :

Si votre cadre de données ressemble à ceci

       a         b
0      1         2
1      1         2
2      1         2
3      1         2
4      1         2

Lorsque vous utilisez iloc

df_y = data.iloc[:, 0]

output -:
       a         
0      1         
1      1         
2      1         
3      1         
4      1     

df_y = data.iloc[:, 1]   

output -:
       b
0      2
1      2
2      2
3      2
4      2

Dans votre cas, vous avez utilisé df_x = data.iloc[:, 1:] . Corrigez-le comme suit df_x = data.iloc[:, 1] . Comprendre le fonctionnement de l'iloc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X