亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在管道內使用 SMOTENC(錯誤:某些分類索引超出范圍)?

如何在管道內使用 SMOTENC(錯誤:某些分類索引超出范圍)?

慕少森 2021-10-19 14:58:16
如果您能讓我知道如何使用 SMOTENC,我將不勝感激。我寫:# DataXX = pd.read_csv('Financial Distress.csv')y = np.array(XX['Financial Distress'].values.tolist())y = np.array([0 if i > -0.50 else 1 for i in y])Na = np.array(pd.read_csv('Na.csv', header=None).values)XX = XX.iloc[:, 3:127]# Use get-dummies to convert categorical features into dummy onesdis_features = ['x121']X = pd.get_dummies(XX, columns=dis_features)# # Divide Data into Train and Testindices = np.arange(y.shape[0])X_train, X_test, y_train, y_test, idx_train, idx_test = train_test_split(X, y, indices, stratify=y, test_size=0.3,                                                                         random_state=42)num_indices=list(X)[:X.shape[1]-37]cat_indices=list(X)[X.shape[1]-37:]num_indices1 = list(X.iloc[:,np.r_[0:94,95,97,100:123]].columns.values)cat_indices1 = list(X.iloc[:,np.r_[94,96,98,99,123:160]].columns.values)print(len(num_indices1))print(len(cat_indices1))pipeline=Pipeline(steps= [    # Categorical features    ('feature_processing', FeatureUnion(transformer_list = [            ('categorical', MultiColumn(cat_indices)),            #numeric            ('numeric', Pipeline(steps = [                ('select', MultiColumn(num_indices)),                ('scale', StandardScaler())                        ]))        ])),    ('clf', rg)    ])pipeline_with_resampling = make_pipeline(SMOTENC(categorical_features=cat_indices1), pipeline)# # Grid Search to determine best paramscv=StratifiedKFold(n_splits=5,random_state=42)rg_cv = GridSearchCV(pipeline_with_resampling, param_grid, cv=cv, scoring = 'f1')rg_cv.fit(X_train, y_train)因此,正如所指出的,我有 5 個分類特征。實際上,索引 123 到 160 與一個具有 37 個可能值的分類特征相關,這些特征使用 get_dummies 轉換為 37 列。
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

您不能模擬您的分類變量并稍后在 SMOTENC 中使用它,因為它已經在其算法 get_dummies 中實現了會使您的模型產生偏差的內容。不過,我推薦使用SMOTE()而不是SMOTENC(),但在這種情況下你必須先應用get_demmies。


查看完整回答
反對 回復 2021-10-19
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您不能將 scikit 學習管道與 imblearn 管道一起使用。imblearn 管道實現了 fit_sample 和 fit_predict。Sklearn 管道僅實現 fit_predict。你不能把它們結合起來。


查看完整回答
反對 回復 2021-10-19
  • 3 回答
  • 0 關注
  • 356 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號