亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 cross_val_scores 時性能更差,為什么?

使用 cross_val_scores 時性能更差,為什么?

揚帆大魚 2021-11-16 10:34:21
我首先使用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.7358aipha = 1,訓練分數 = 0.7419,測試分數 = 0.7219aipha = 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 scorescross_val_score 是:[0.04719619 0.36858483 0.36004186]
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我找到了問題所在。我的數據實際上是以“堆?!钡姆绞椒胖玫模核蓄?one 在頂部,然后類 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]


查看完整回答
反對 回復 2021-11-16
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

查看您的代碼,也許這是因為您activation="tanh"在運行交叉驗證模型時遺漏了。否則,我能看到的唯一真正區別是,您在第一種情況下測試了 25% 的數據,而在第二種情況下則為 33%。這不會像您展示的那樣顯著影響準確性。

請注意,您不應使用驗證/測試集來擬合縮放器,因為這會將模型(間接)暴露給您的測試數據。這在第一種情況下很容易解決,但在使用cross_val_score.


查看完整回答
反對 回復 2021-11-16
  • 2 回答
  • 0 關注
  • 513 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號