簡體   English   中英

這個迭代循環如何適合 model? (機器學習)

[英]How does this iterative loop fit the model? ( Machine Learning)

for m in range(1, len(X_train)):在行model.fit(X_train[:m], y_train[:m]) y_train_predict = model.predict(X_train[:m]) 所以我認為 m 將遍歷訓練數據的大小。對於每個循環 m+=1 但我不明白 rest

from sklearn.model_selection import train_test_split

def plot_learning_curves(model, X, y):
    X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=10)
    train_errors, val_errors = [], []
    for m in range(1, len(X_train)):
        model.fit(X_train[:m], y_train[:m])
        y_train_predict = model.predict(X_train[:m])
        y_val_predict = model.predict(X_val)
        train_errors.append(mean_squared_error(y_train_predict, y_train[:m]))
        val_errors.append(mean_squared_error(y_val_predict, y_val))

    plt.figure(figsize=(8,4))
    plt.plot(np.sqrt(train_errors), "r-+", linewidth=2, label="Training set")
    plt.plot(np.sqrt(val_errors), "b-", linewidth=3, label="Validation set")
    plt.legend(loc="upper right", fontsize=14)   
    plt.xlabel("Training set size", fontsize=14) 
    plt.ylabel("RMSE", fontsize=14)      ```

此 function 的目的是展示 model 在使用不同大小的數據集進行訓練時的性能。 使用X[:m]索引數組選擇X的前m個元素(如果X是多維的,則沿着第一個維度)。 對於 for 循環中的每個 m 值,它的意思是“假設我們只有 m 個數據點,我們的訓練和驗證准確度是多少?”。 您應該看到,對於較小的 m,model 會過擬合,因此訓練准確度會接近完美,而驗證准確度會非常低。 隨着m的增加,訓練准確率會降低,但驗證准確率會增加。 曲線的確切形狀對於診斷欠擬合/過擬合很有用。

暫無
暫無

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

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