[英]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.