簡體   English   中英

使用數據集 A 訓練 model 並使用數據集 B 進行測試

[英]train model with dataset A and test with dataset B

在這個例子中,我有一個假設的平衡數據集,其中包含關於大學生的幾個屬性和一個指示他們是否通過考試的目標屬性(0=失敗 1=通過)。 我已經創建並安裝了一個 GBM model (scikit-learn xgboost),其中包含 75% 的原始數據集(18000 條記錄),並且在我的保留集(4700 條記錄)上看到了 80% 的准確度和 91.6% 的准確度,關於失敗的學生考試。

在這一點上,我現在非常想使用這個數據集的 100% 作為訓練數據,並使用一組新的 2000 個學生記錄(平衡)作為測試數據。 我想根據數據集 A 的訓練對數據集 B 進行預測。最終,我想將這些預測提供給我的老板/上級作為驗證我的工作的一種方式,然后開始向我的 model 提供新數據以進行預測未來的學生在考試中的表現如何。 我目前被困在如何使用我的整個原始數據集作為我的訓練材料和整個新數據集作為測試材料的 go。

我試圖使用

X = original data minus target feature
y = original data target feature only
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 
0.00001, random_state=0)

N = new data minus target feature
z = new data target feature only
N_train, N_test, z_train, z_test = (train_test_split(N, z, test_size = 
.999, random_state=0))

創建我的測試和訓練變量。然后我嘗試使用以下方法擬合並將新記錄傳遞給我的 model:

# Fit model with original X and y data
xg_class.fit(X_train, y_train)

# Generate predictions based off of X_test
new_preds = xg_class.predict(N_test)

我沒有收到任何錯誤,但我的 output 遠低於拆分數據集 A 的初始結果。

Accuracy (75%/25% split of dataset A):  79%
Precision (75%/25% split of dataset A): 91.1% TP / 71.5% TN

Accuracy (99% trained dataset A, tested dataset B): 45%
Precision (99% trained dataset A, tested dataset B): 18.7% TP / 62.4% TN

這是由於我的一個/兩個數據集的大小差異還是可以預期的? 從我正在閱讀的內容來看,這可能是使用兩個獨特的數據集進行訓練和測試的方法問題。 但是,如果是這種情況,那么我什至看不出構建 model 的意義何在,因為它無法以任何合理的成功預期提供獨特的數據。 我顯然不相信這是真的,但我沒有通過搜索找到任何關於如何執行 model 評估的這一部分的信息。 如果有人可以幫助我提供一些一般性的見解,那將不勝感激。

原來我的問題的第一部分是一個簡單的答案:不要使用 train_test_split()。 您將您的特定算法分配給一個變量(例如“模型”),然后以與 train_test_split 相同的方式將其與所有數據相匹配。

model.fit(X, y)

然后傳遞新數據(例如,N 作為特征數據,z 作為標簽)

new_predictions = model.predict(N)

我的問題的第二部分仍然讓我感到困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM