首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何在不同的时间训练相同的模型?

Python:如何在不同的时间训练相同的模型?
EN

Stack Overflow用户
提问于 2018-02-08 00:02:14
回答 2查看 70关注 0票数 0

我有一个很小的数据集,我想尝试使用sklearn中的Multi-layer Perceptron regressor预测相同变量的值。

这就是我正在做的事情:

代码语言:javascript
复制
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor


X_train, X_test, y_train, y_test = train_test_split(X, Y)
scaler  = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test  = scaler.transform(X_test)

mlp    = MLPRegressor(hidden_layer_sizes=(10,10))
mlp    = mlp.fit(X_train,y_train)
test_y = mlp.predict(X_test)

现在,训练集由100示例组成。我想要做的是在7525中将训练集分割四次,以便使用4不同的数据集来训练相同的模型。

这就是我要做的:

代码语言:javascript
复制
c1 = 0
c2 = 25
for i in range(0,4):
    xt = X_train[c1:c2]
    yt = np.setdiff1d(X_train, xt)
    c1 = c2 + 1
    c2 = c2 + 25
    mlp = mlp.fit(xt ,yt)
EN

回答 2

Stack Overflow用户

发布于 2019-03-29 20:16:59

您应该会得到一个错误,因为您在最后一次迭代中访问的X_train超出了它的界限。当然,鉴于X_train只有100个样本。

访问以下形式的数组myArray[a:b]意味着我希望检索从a开始直到b的元素。

因此,您需要更改此行:

c1 = c2 + 1

对于这一条:

c1 = c2

看一看documentation,了解如何访问numpy数组。

票数 0
EN

Stack Overflow用户

发布于 2019-03-29 21:11:19

代码语言:javascript
复制
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor
import numpy as np
from sklearn.model_selection import cross_validate

# Generate some random data
X = np.random.rand(100,5)
Y = np.dot(X, np.random.rand(5))+np.random.rand(100)

# Split into train and test
X_train, X_test, y_train, y_test = train_test_split(X, Y)

# Use 4 fold cross validation on train data
cv_results = cross_validate(MLPRegressor(hidden_layer_sizes=(10,10)), X_train, y_train, cv=4, 
                            scoring=('neg_mean_squared_error'), return_estimator=True)
print (cv_results['test_score'])

# Make predictions on test data
y = np.zeros(len(y_test))
for i, model in enumerate(cv_results['estimator']):
    y_hat = model.predict(X_test)
    print ("Model {0} MSE Error: {1}".format(i, 
        mean_squared_error(y_test, y_hat)))
    y += y_hat

print ("Average Test MSE Error: {0}".format(
        mean_squared_error(y_test, y/len(models))))

代码在注释中进行了解释。我们将数据分为训练数据和隐藏测试数据。我们对训练数据做了4倍的CV。它如下图所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48668186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档