如何使用Scikit Learn的MLPClassifier创建神经网络,使用5 X输入和1 Y输出



所以我正在尝试使用Python中的神经网络(Scikit-Learn)将一组特征映射到一个值。基本上,我从csv中读取一些值,然后将它们插入分类器,并且不断发生错误。我在 ML 方面没有太多经验,这个库对我来说是新的,所以任何帮助将不胜感激。

法典:

from sklearn.neural_network import MLPClassifier
import csv
with open('training.csv') as csvfile:
    reader = csv.reader(csvfile,delimiter=' ')
    for row in reader:
        print(row)
        x.append([row[0],row[1],row[2],row[3],row[4]])
        y.append(row[5])
clf = MLPClassifier(solver='lbfgs',alpha=1e-5,hidden_layer_sizes=(15,),random_state=1)
print (clf.fit(x,y))

错误:

Traceback (most recent call last):
  File "analyzeTrainingData.py", line 13, in <module>
print (clf.fit(x,y))
  File "/usr/local/lib/python3.5/dist-packages/sklearn/neural_network/multilayer_perceptron.py", line 973, in fit
hasattr(self, "classes_")))
  File "/usr/local/lib/python3.5/dist-packages/sklearn/neural_network/multilayer_perceptron.py", line 331, in _fit
X, y = self._validate_input(X, y, incremental)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/neural_network/multilayer_perceptron.py", line 910, in _validate_input
multi_output=True)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 542, in check_X_y
ensure_min_features, warn_on_dtype, estimator)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 410, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:

然后,它以以下格式打印出所有 X 数据的列表:

list(['237', '128', '352', '721.6', '11.275'])]

然后说:

Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Git 存储库

假设 x 是一个 numpy 数组,您正在创建一个 (N,) 形状向量,它不能作为训练数据输入。尝试print(x.shape()),看看它打印出什么。

如果要创建包含 5 列的矩阵,则应使用 numpy 文档中指定的np.append(x, [row[0],row[1],row[2],row[3],row[4]], axis=0)