sklearn分类分析实战
sklearn分类分析实战
任务:商业异常消费数据预测
基于taskdata.csv数据,建立二阶多项式逻辑回归模型实现异常消费数据预测,与线性逻辑回归模型结果进行对比。

分析:
-
-
假设用户在某一个地方进行了两次消费
-
根据这两次消费去判断这是否是一个正常消费行为
-
本次任务即将橙色点和蓝色点区分开
过程:
-
建立线性边界的逻辑回归模型评估模型表现
-
建立二阶多项式边界的逻辑回归模型,对比其与线性边界的表现
-
预测pay1=70,pay2=20时对应消费是否为异常消费
-
获取边界函数参数、绘制边界函数
# 数据加载
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
data = pd.read_csv('../task_data.csv')
# 数据中类别1为异常的消费
# 创建mask筛选变量将图形区分
mask = data.loc[:, 'y'] == 1
# 数据可视化
fig1 = plt.figure()
abnormal = plt.scatter(data.loc[:, 'pay1'][mask], data.loc[:, 'pay2'][mask])
normal = plt.scatter(data.loc[:, 'pay1'][~mask], data.loc[:, 'pay2'][~mask])
plt.title('pay1_pay2')
plt.xlabel('pay1')
plt.ylabel('pay2')
plt.legend((abnormal, normal), ('abnormal', 'normal')) # 数据标签
plt.show()
# X,y赋值
X = data.drop(['y'], axis=1)
y = data.loc[:, 'y']
# 格式转化
X = np.array(X)
y = np.array(y)
# 建立逻辑回归模型
LR1 = LogisticRegression()
# 模型训练
LR1.fit(X, y)
# 模型预测
y_predict = LR1.predict(X)
# print(y_predict)
# print(y)
# 计算准确率
accuracy = accuracy_score(y, y_predict)
print(accuracy)
# 获取边界函数核心参数theta
theta0 = LR1.intercept_
theta1, theta2 = LR1.coef_[0][0], LR1.coef_[0][1]
# print(theta0,theta1,theta2)
X1 = data.loc[:, 'pay1']
X2 = data.loc[:, 'pay2']
# 计算出来的X2
X2_new = -(theta0 + theta1 * X1) / theta2
# print(X2_new)
# 数据可视化
# 画出边界函数的图形
fig2 = plt.figure()
abnormal 