【发布时间】:2019-06-05 04:27:20
【问题描述】:
伙计们,我是 Python 新手,也是神经网络的新手。我正在尝试实施一个神经网络来根据当天的开盘价预测比特币一天的收盘价。所以我得到了一个 CSV 文件,我尝试使用“打开”列作为条目,并使用“关闭”列作为目标,您可以在下面的代码中看到这一点:
from sklearn.neural_network import MLPClassifier
import numpy as np
import pandas as pd
dataset = pd.read_csv('BTC_USD.csv')
X = dataset['Open']
y = dataset['Close']
NeuralNetwork = MLPClassifier(verbose = True,
max_iter = 1000,
tol = 0,
activation = 'logistic')
NeuralNetwork.fit(X, y)
运行代码时出现此错误:
ValueError: 预期二维数组,得到一维数组: 数组=[4.95100000e-02 4.95100000e-02 8.58400000e-02 ... 6.70745996e+03 6.66883984e+03 7.32675977e+03].
如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 重塑您的数据,如果数据包含单个样本,则使用 array.reshape(1, -1)。
出现这个错误后,我在stackoverflow中做了一些研究,并尝试了其他帖子中提出的一些解决方案,比如这个:
from sklearn.neural_network import MLPClassifier
import numpy as np
import pandas as pd
dataset = pd.read_csv('BTC_USD.csv')
X = np.array(dataset[['Open']])
X = X.reshape(-1, 1)
y = np.array(dataset[['Close']])
y = y.reshape(-1, 1)
NeuralNetwork = MLPClassifier(verbose = True,
max_iter = 1000,
tol = 0,
activation = 'logistic')
NeuralNetwork.fit(X, y)
运行这段代码后,我得到了这个新错误:
ValueError: 未知标签类型: (array([4.95100000e-02, 8.58400000e-02, 8.08000000e-02, ...,
6.66883984e+03, 6.30685010e+03, 7.49379980e+03]),)
以及第一行(包含目录)的“警告”:
DataConversionWarning:当需要一维数组时,传递了列向量 y。请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。
y = column_or_1d(y, warn=True)
你能帮帮我吗?我尝试了许多解决方案,但其中任何一个都有效。
【问题讨论】:
-
您是否尝试过错误中提供的建议?更准确地说,在拟合之前添加
y = y.ravel()或直接添加NeuralNetwork.fit(X, y.ravel())。 -
不,我没有,但我现在尝试并返回此错误:AttributeError: 'numpy.ndarray' object has no attribute 'rave1'
-
它是
ravel(),带有 L,而不是 1。 -
哈哈哈对不起兄弟,但它还是没有用..我不知道该怎么办了
-
能否提供数据集以便我们检查?