我的資料集由用于輸入的 10 個特征(10 列)和用于 3 個不同輸出的最后 3 列組成。如果我使用一列作為輸出,例如 y = newDf.iloc[:, 10].values ,它可以作業;但是如果我使用所有 3 列,它會在 pipe_lr.fit 上給我一個錯誤并說:y 應該是一個一維陣列,而是得到一個形狀為 (852, 3) 的陣列。我怎樣才能通過 y ?
X = newDf.iloc[:, 0:10].values
y = newDf.iloc[:, 10:13].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
pipe_lr = make_pipeline(StandardScaler(),
PCA(n_components=2),
LogisticRegression(random_state=1, solver='lbfgs'))
pipe_lr.fit(X_train, y_train)
uj5u.com熱心網友回復:
Thepipeline本身并不關心 的格式y,它只是將其交給每個步驟。在您的情況下,它LogisticRegression確實不是為多標簽分類設定的。您可以使用MultiOutputClassification包裝器管理它:
pipe_lr = make_pipeline(
StandardScaler(),
PCA(n_components=2),
MultiOutputClassifier(LogisticRegression(random_state=1, solver='lbfgs'))
)
(還有一個MultiOutputRegressor更復雜的東西,比如ClassifierChain和RegressorChain。請參閱用戶指南。但是,據我所知,沒有內置的方法來混合和匹配回歸和分類任務。)
uj5u.com熱心網友回復:
簡單地說,不。你想要的叫做多標簽學習,Scikit-Learn 不支持。
您應該訓練三個模型,每個模型都有一個標簽。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348113.html
標籤:Python 班级 for循环 scikit 学习 管道
上一篇:使用itertools.product時如何跳過一些迭代?
下一篇:使用FOR回圈遍歷JSON物件
