我的数据集有 140k 行,其中 5 个属性和 1 个 Attrition 作为目标变量(值可以是 0(客户流失)或 1(客户不流失))。我将我的数据集分为 80% 的训练和 20% 的测试。我的数据集严重不平衡。我的数据集 84% 的目标变量为 0,只有 16% 的目标变量为 1。
我的训练数据集的特征重要性如下:
A 栏 = 28%,B 栏 = 27%,年费 - 17%,D 栏 - 17% 和 E 栏 - 11%
我最初想对我的模型做一个非常简单的检查。创建随机森林分类器后,我在只有 5 行的数据集上测试了模型。我保持所有变量不变,除了列年费。下面是我的测试数据集的快照:
Column A Column B AnnualFee ColumnD ColumnE
4500 3.9 5% 2.1 7
4500 3.9 10% 2.1 7
4500 3.9 15% 2.1 7
4500 3.9 20% 2.1 7
4500 3.9 25% 2.1 7
我预计随着年费的增加,客户流失的可能性也会增加。但是我的rf.predict_proba(X_test)似乎到处都是。我不确定为什么会这样:
我尝试了两种不同的代码,但两种代码似乎都发生了异常:
代码 1:
rf = RandomForestClassifier(n_estimators = 400,random_state = 0,
min_samples_split=2,min_samples_leaf=5,
class_weight = {0:.0001,1:.9999})
rf.fit(X_train, Y_train )
代码 2:不是我的代码 - 在线获取
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import GridSearchCV
clf_4 = RandomForestClassifier(class_weight = {0:1,1:5})
estimators_range = np.array([2,3,4,5,6,7,8,9,10,15,20,25])
depth_range = np.array([11,21,35,51,75,101,151,201,251,301,401,451,501])
kfold = 5
skf = StratifiedKFold(n_splits = kfold,random_state = 42)
model_grid = [{'max_depth': depth_range, 'n_estimators': estimators_range}]
grid = GridSearchCV(clf_4, model_grid, cv = StratifiedKFold(n_splits = 5,
random_state = 42),n_jobs = 8, scoring = 'roc_auc')
grid.fit(X_train,Y_train)
我真的很感激这方面的任何帮助!