伙计们,我是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:预期的2D数组,取而代之的是1D数组: 数组= [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:未知标签类型:(数组([4.95100000e-02、8.58400000e-02、8.08000000e-02,..., 6.66883984e + 03,6.30685010e + 03,7.49379980e + 03]),)
,并在第一行(包含目录)的“警告”:
DataConversionWarning:当期望1d数组时,传递了列向量y。请将y的形状更改为(n_samples,),例如使用ravel()。 y = column_or_1d(y,warn = True)
能帮我吗?我尝试了许多解决方案,但其中任何一个都有效。
答案 0 :(得分:1)
您应该使用数据框的values
属性来获取一列的元素。另外,您要实现的是回归,而不是分类,因此,必须在
MLPRegressor
之类的回归变量。
from sklearn.neural_network import MLPRegressor
import numpy as np
import pandas as pd
dataset = pd.read_csv('BTC_USD.csv')
X = dataset["Open"].values.reshape(-1, 1)
y = dataset["Close"].values
NeuralNetwork = MLPRegressor(verbose = True,
max_iter = 1000,
tol = 0,
activation = "logistic")
NeuralNetwork.fit(X, y)
该代码现在可以正常工作,但是结果不正确,因为您将需要使用这些功能和网络超参数。但这超出了SO的范围。