python - 值错误 : at least one array or dtype is required

标签 python scikit-learn neural-network artificial-intelligence

我的代码:

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)

我从 .fit() 方法中得到了标题中所示的错误,并且由于我是 ML 新手,所以对文档了解不多。

完整错误:

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'

更新-:
我已经删除并更新了它,因为这是为了测试文档中找到的解决方案。我已经更新了错误

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

进程结束,退出代码为 1

最佳答案

由于以下原因会发生此错误:

  1. 您的 csv 中没有 target 列。在那里检查两次你的 csv。
  2. 如果您有 target 列,则 targer 列中有空格。 它可能是这样存在的
< target>
<target >
< target >
<target   >...etc.

用于复制带有空格的列名。之后运行这段代码

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

更新:

如果你的数据框是这样的

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

当你使用 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

在您的情况下,您使用了 df_x = data.iloc[:, 1:]。将其更正为 df_x = data.iloc[:, 1]。了解 iloc 的工作原理

关于python - 值错误 : at least one array or dtype is required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59403627/

相关文章:

python - 尝试将 'pop' 方法与 Python 中的列表一起使用时出错

linux - 当我从 scikit-learn 导入一些东西时,我有大量的上下文切换

python - sklearn 的 DecisionTreeClassifier 中的 "splitter"属性有什么作用?

python - 如何在我自己的数据集图像上测试 mnist

artificial-intelligence - 从理论上讲,可以在计算机上模拟人脑吗?

python - Apache Spark : Can't use Matplotlib on Jupyter Notebook

python - 如何使用列名称旋转 pandas.dataframe

python - 类型错误:tokenize_lemmatize_spacy() 缺少 1 个必需的位置参数: 'first_arg'

python - 如何解释这两个 "="以及整个表达式?

python - 摆脱背景条纹(Python、OpenCV)