Cross_val_score 出來的結果
 Q1:請問一下這出來的結果就是R^2(相關係數)嗎? Q2:請問利用cross_val_score(estimator, train_X, train_Y, cv=5).mean(),CV=5 分成五組是將整個DATA分成五組嗎?大致上是怎麼分的? ex ALL data :A B C D E F G H I J 這些欄位那 CV=5 是分成 AB/CD/EF/GH/IJ 這樣嗎? 如果是的話是出來的準確度怎麼知道是哪個欄位影響的?還是這種情況要CV=10是最好的?
回答列表
-
2022/04/23 上午 00:30王健安贊同數:0不贊同數:0留言數:0
Jicri 您好, Q1 解答: 根據 Sklearn 官方文件說明, 直接使用 .score 或其他引用計算評估分數的函數(諸如:cross_val_score), 計算的評估分數會按照每個模型預設的不同而有不同, 在 Linear Regression 中的確是計算 $$ R^2 $$。 Q2 解答: cross_val_score 會涉及到 Cross Validation 的概念, 透過切割不同資料展示出最佳的模型。(這裡的「資料」在表格中指的是 Row,而非 Column) 如下圖所示,假設 CV = 5, 代表「有五組訓練集與測試集組合」的資料, 每一組的訓練集與測試集資料皆不同, 在 Sklearn 中則會按照資料先後順序進行切割。  我們會將每組使用訓練資料訓練出模型、使用測試評估模型好壞, 因此當 CV = 5,有五組不同的訓練集與測試集資料, 代表會有五個不同的模型與評估結果, 而 cross_val_score(estimator, train_X, train_Y, cv=5).mean() 則是將五個評估結果進行平均, 得到綜合性的結果。 參考資料: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html https://github.com/scikit-learn/scikit-learn/blob/69132ebbd39f070590ca01813340b5b12c0d02ab/sklearn/model_selection/_split.py#L365