<p>你有几个问题。首先,使用正确的定标器或规范化来处理MLP非常重要。NNS在0到1之间工作得最好,所以请考虑使用{{CD1}} <a href="https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html" rel="nofollow noreferrer">MinMaxScaler</a>来实现这一点。<p>
<p>因此:</p>
<pre><code>from sklearn.preprocessing import Normalizer
scaler = Normalizer().fit(X_train)
X_train_norm = scaler.transform(X_train)
X_test_norm = scaler.transform(X_test)
</code></pre>
<p>应该是:</p>
<pre><code>from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train_norm = scaler.fit_transform(X_train)
X_test_norm = scaler.fit_transform(X_test)
</code></pre>
<p>接下来,您将在<em>无标度</em>数据上进行训练和测试,然后在<em>有标度</em>数据上进行评分。意思是:</p>
<pre><code>nnref = MLPRegressor(hidden_layer_sizes = [4], activation = 'logistic', solver = 'sgd', alpha = 1,
learning_rate= 'constant', learning_rate_init= 0.6, max_iter=40000, momentum=
0.3).fit(X_train, y_train)
</code></pre>
<p>应该是:</p>
<pre><code>nnref = MLPRegressor(hidden_layer_sizes = [4], activation = 'logistic', solver = 'sgd', alpha = 1,
learning_rate= 'constant', learning_rate_init= 0.6, max_iter=40000, momentum=
0.3).fit(X_train_norm , y_train)
</code></pre>
<p>而且</p>
<pre><code>y_predictions= nnref.predict(X_test)
</code></pre>
<p>应该是:</p>
<pre><code>y_predictions= nnref.predict(X_test_norm)
</code></pre>
<p>附加说明</p>
<ul>
<li>根据你的训练数据进行预测没有任何意义。这没有任何价值,因为它正在测试从中学到的相同数据,并且应该100%预测。这是<a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjZs63o2-DpAhVclnIEHXhoAlgQFjAMegQIAxAB&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOverfitting&usg=AOvVaw15Bea2nVsUGiMjDU4IUG8D" rel="nofollow noreferrer">overfitting</a>的一个例子</李>
</ul>