python - 使用 cross_val_scores 时性能更差,为什么?

标签 python machine-learning scikit-learn

我首先使用train_test_split来分离训练数据和测试数据,代码:

X=LOG.iloc[:,:-3]
y=LOG.iloc[:,-3]
X_train,X_test,y_train, y_test=train_test_split(X,y)

scaler=MinMaxScaler().fit(X)
X_train_scaled=scaler.transform(X_train)
X_test_scaled=scaler.transform(X_test)

for thisalpha in [0.1,1,10]:
    mlpreg=MLPRegressor(hidden_layer_sizes=(11,8,4),
                    activation ="tanh",
                    alpha = thisalpha,
                    solver ="lbfgs",max_iter=20000).fit(X_train_scaled, y_train)

    y_test_predict = mlpreg.predict(X_test_scaled)
    y_train_predict= mlpreg.predict(X_train_scaled)
    print "aipha = {}, train score= {:.4f}, test score = {:.4f}, iter_number={}, loss={:.4f}".format(
        thisalpha,
        mlpreg.score(X_train_scaled,y_train),
        mlpreg.score(X_test_scaled,y_test),
        mlpreg.n_iter_,
        mlpreg.loss_)

我得到这样的性能:

aipha = 0.1,训练分数= 0.7696,测试分数= 0.7358

aipha = 1,训练分数= 0.7419,测试分数= 0.7219

aipha = 10,训练分数= 0.6414,测试分数= 0.6494

然后我尝试使用交叉验证来测试相同的数据集,我得到的分数要低得多:

X=LOG.iloc[:,:-3]
y=LOG.iloc[:,-3]

scaler= MinMaxScaler()

X_scaled=scaler.fit_transform(X)
clf=MLPRegressor(hidden_layer_sizes=(11,8,4),alpha= 
1,solver="lbfgs",max_iter=20000)
scores = cross_val_score(clf,X_scaled,y,cv=3)     

print scores

cross_val_score 是:

[0.04719619 0.36858483 0.36004186]

最佳答案

我找到了问题所在。我的数据实际上是以“堆栈”方式放置的:所有类 1 都位于顶部,然后类 n 位于底部。所以它给了我奇怪的结果。我这样改变了我的代码,我需要首先对数据进行洗牌,然后使用交叉验证方法。

kfold = KFold(n_splits=3,shuffle=True,random_state=0)

X_scaled=scaler.fit_transform(X)
clf=MLPRegressor(hidden_layer_sizes=(11,8,4),alpha= 1,solver="lbfgs",max_iter=20000)
scores = cross_val_score(clf,X_scaled,y,cv=kfold)

print scores

我得到的分数是这样的:

[0.68697805 0.70411961 0.69466066]

关于python - 使用 cross_val_scores 时性能更差,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54817846/

相关文章:

url - 如何对URL进行分类? URL 的特点是什么?如何从 URL 中选择和提取特征

python - 如何提高 DQN 的性能?

python - Scikit-Learn:如何使用矩阵 X 的变换来变换目标变量 Y

python - 使用我的分类器和数据试用 scikit 学习示例

带有 CSS 的 python gtk webkit,宽度问题

python - "is"和 "=="有什么区别?

python - Python中嵌套sort(),同时进行多属性函数排序

python - 我可以在没有任何给定函数形式的情况下使用 Python 中的多变量数据框运行非线性回归吗?

python - 使用 scikit-learn PCA.score() 时出错

python - 当某些标签自闭且不同时时,BeautifulSoup可以解析xml吗