likes
comments
collection
share

客户流失预警模型(2) | 更文挑战

作者站长头像
站长
· 阅读数 35

接上文

2.模型搭建

模型的搭建相对比较容易,通过如下代码即可搭建逻辑回归模型。

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train,y_train)

第1行代码从Scikit-Learn库中引入逻辑回归模型LogisticRegression。

第2行代码将逻辑回归模型赋给变量model,这里没有设置参数,即使用默认参数。

第3行代码用fit()函数进行模型的训练,其中传入的参数就是上一步骤获得的训练集数据X_train、y_train。

至此,一个逻辑回归模型便搭建完成了,随后就可以利用该模型来进行预测。此时,之前划分的测试集就可以发挥作用了,可以利用测试集来进行预测并评估模型的预测效果。

3.模型使用:预测数据结果

搭建模型是为了利用它来预测数据,下面把测试集中的数据导入模型中进行预测,代码如下,其中model就是上面搭建的逻辑回归模型。

y_pred = model.predict(X_test)

通过打印y_pred[0:100]查看预测结果的前100项,如下图所示,其中0为预测不会流失,1为预测会流失。

客户流失预警模型(2) | 更文挑战

接着将模型的预测值y_pred和测试集的实际值y_test进行汇总。其中y_pred是一个numpy.ndarray类型的一维数组结构,y_test为Series类型的一维序列结构,用list()函数将它们都转换为列表,将它们集成到一个DataFrame中,代码如下。

a = pd.DataFrame()
a['预测值']= list(y_pred)
a['实际值']= list(y-test)

通过打印a.head()查看表格的前5行,结果见下表。

客户流失预警模型(2) | 更文挑战

可以看到,前5项的预测准确度为80%。如果想查看所有测试集数据的预测准确度,可以使用如下代码。

from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)

第1行代码引入可以计算准确度的accuracy_score()函数;第2行代码将预测值y_pred和实际值y_test传入accuracy_score()函数,便能计算预测准确度。将score打印输出,结果为0.7977,即预测准确度为79.77%,说明近1400组测试数据中,约1117组数据预测正确,283组数据预测错误。

除了使用accuracy_score()函数,还可以使用模型自带的score()函数来计算预测准确度,代码如下,其结果同样为0.7977。

model.score(X_test,y_test)

4.模型使用:预测概率

逻辑回归模型的本质是预测概率,而不是直接预测具体类别。通过如下代码就可以获取概率值。

y_pred_proba=model.predict_proba(X_test)

通过打印y_pred_proba[0:5]查看结果的前5项,结果是一个二维数组,数组左列是不流失(分类为0)概率,右列是流失(分类为1)概率。或者通过如下代码得到更美观的结果。

a=pd.DataFrame(y_pred_proba,columns=['不流失概率','流失概率'])

通过打印a.head()查看前5行,结果见下表。

客户流失预警模型(2) | 更文挑战

可以看到前5行数据的不流失(分类为0)概率都大于0.5,因而必然都大于流失(分类为1)概率,因此,这5行数据都会被判定为不流失(分类为0)。

转载自:https://juejin.cn/post/6974931327917228069
评论
请登录