逻辑回归python录取_案例之python实现—逻辑回归

案例-自动识别窃漏电用户

目前防窃漏电方法主要有两种:1,通过定期巡检、定期校验电表、用户举报窃电等手段来发现窃电或计量装置故障。2,利用计量异常报警功能和电能量数据查询功能实现在线监控工作,通过采集电量异常、负荷异常、终端报警、主站报警、线损异常等信息,来实时监测窃漏电情况和发现计量装置的故障。根据报警事件发生前后客户计量点有关的电流、电压、负荷数据情况等,实现用电故障及类型的甄别。弊端:对人的依赖性太强,抓窃查漏的目标不明确;由于终端误报或漏报过多,无法达到真正快速精确定位窃漏电嫌疑用户的目的。

构建自动识别模型:采集各相电流、电压、功率因数等用电负荷数据以及用电异常等终端报警信息(业务);

异常告警信息和用电负荷数据能够反映用户的用电情况(数据);

稽查工作人员也会通过在线稽查系统和现场稽查来查找出窃漏电用户(业务),并录入系统;

从数据信息提取出窃漏电用户的关键特征(数据),达到自动识别窃漏电用户的目的;

达到自动检查判断用户是否存在窃漏电行为。

我们将业务问题进行理解,从数据分析的角度进行阐述。建模目标为: 归纳出窃漏电用户的关键特征,构建窃漏电用户的识别模型;利用实时监测数据,调用窃漏电用户识别模型实现实时诊断。(我们只做数据分析与挖掘部分的详细论述,其他部分一带而过)。

构建指标体系如下:

1,电量趋势下降指标(用电量趋势):正常用户的用电量较为平稳;窃漏电用户的用电量呈现下降的趋势,然后趋于平缓。

2,线损指标(线损增长率):在输送和分配电能过程中,电力网中各个元件所产生的电能损失以及其他损失,统称为线路损失(线损)。

3,告警类指标(终端报警数):与窃漏电相关的终端报警主要有电压缺相、电压断相、电流反极性等告警,计算发生与窃漏电相关的终端报警的次数总和。

python实现

导入所需的库#-*- coding:utf-8 -*-

import pandas as pd

import numpy as np

from sklearn.model_selection import KFold

from sklearn.model_selection import cross_val_score

from sklearn.linear_model import LogisticRegression

导入并查看数据data_lr = pd.read_excel('D:\python原始数据\logist_model.xlsx','logist_model')

print(data_lr.shape)

print(data_lr.head(10))

将数据分为训练数据和测试数据array = data_lr.values

X_train =array[0:200,2:5]

Y_train = array[0:200, 5]

X_test =array[200:291,2:5]

Y_test = array[200:291,5]

构建逻辑回归及查看model = LogisticRegression()

model.fit(X_train, Y_train)

print("截距项",model.intercept_)

print("系数",model.coef_)

效果评估#准确率

scores = cross_val_score(model, X_train, Y_train, cv=10)

print("准确率", np.mean(scores), scores)

#混淆矩阵

from sklearn.metrics import confusion_matrix

predicted = model.predict(X_test)

matrix = confusion_matrix(Y_test, predicted)

classes = ['0', '1']

dataframe = pd.DataFrame(data=matrix,

index=classes,

columns=classes)

print(dataframe)

#AUC图

from sklearn.metrics import roc_curve, auc

predictions = model.predict_proba(X_test)

fpr, tpr, thresholds = roc_curve(Y_test, predictions[:,1])

roc_auc = auc(fpr, tpr)

import matplotlib.pyplot as plt

plt.plot(fpr, tpr,'b', label='auc=%0.2f' % roc_auc)

plt.legend(loc ='lower right')

plt.plot([0, 1],[0,1],'r--')

plt.xlim([0.0, 1.0])

plt.ylim([0.0, 1.0])

plt.xlabel("fpr")

plt.ylabel("tpr")

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的逻辑回归分类的 Python 实例。 首先,我们需要导入必要的库和数据集。在这个例子中,我们使用了 scikit-learn 库中的鸢尾花数据集。 ```python from sklearn import datasets import numpy as np # 导入鸢尾花数据集 iris = datasets.load_iris() # 只使用前两个特征:花萼长度和花萼宽度 X = iris.data[:, :2] y = (iris.target != 0) * 1 ``` 接下来,我们将数据集拆分为训练集和测试集。 ```python # 将数据集拆分为训练集和测试集 train_X, train_y = X[:80], y[:80] test_X, test_y = X[80:], y[80:] ``` 然后,我们可以使用 scikit-learn 库中的 LogisticRegression 类来建立逻辑回归模型。 ```python from sklearn.linear_model import LogisticRegression # 创建一个逻辑回归模型 clf = LogisticRegression() # 在训练集上拟合模型 clf.fit(train_X, train_y) ``` 接着,我们可以使用训练好的模型来进行预测。 ```python # 在测试集上进行预测 pred_y = clf.predict(test_X) ``` 最后,我们可以使用 scikit-learn 库中的 metrics 模块来评估模型的性能。 ```python from sklearn import metrics # 计算模型的准确率、精度和召回率 print("Accuracy:", metrics.accuracy_score(test_y, pred_y)) print("Precision:", metrics.precision_score(test_y, pred_y)) print("Recall:", metrics.recall_score(test_y, pred_y)) ``` 完整代码如下: ```python from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn import metrics import numpy as np # 导入鸢尾花数据集 iris = datasets.load_iris() # 只使用前两个特征:花萼长度和花萼宽度 X = iris.data[:, :2] y = (iris.target != 0) * 1 # 将数据集拆分为训练集和测试集 train_X, train_y = X[:80], y[:80] test_X, test_y = X[80:], y[80:] # 创建一个逻辑回归模型 clf = LogisticRegression() # 在训练集上拟合模型 clf.fit(train_X, train_y) # 在测试集上进行预测 pred_y = clf.predict(test_X) # 计算模型的准确率、精度和召回率 print("Accuracy:", metrics.accuracy_score(test_y, pred_y)) print("Precision:", metrics.precision_score(test_y, pred_y)) print("Recall:", metrics.recall_score(test_y, pred_y)) ``` 这就是一个简单的逻辑回归分类的 Python 实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值