Python进行Logistic回归

  • 第一步,导入库和数据;
  • 第二步,处理数据;
  • 第三步,数据建模;
  • 最后,模型评价。

第一步,导入库和数据;

# 导入库
from sklearn import datasets
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 使文字可以展示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 使负号可以展示
plt.rcParams['axes.unicode_minus'] = False# 读取数据
data = pd.read_excel('F:\\Desktop\\数据.xlsx')
data[:5]

第二步,处理数据;

# 增加 起点 和 终点 两列
data = pd.concat([data, pd.DataFrame(columns = ['起点', '终点'])], sort = True)# 分割 I 列,为 起点 和 终点 列添加数据
n1 = []
for i in list(data['起终点'].values):i = i.split('-')n1.append(i)for i in range(len(n1)):data['起点'][i] = n1[i][0]data['终点'][i] = n1[i][1]import numpy as np
# 设置类标映射
class_mapping = {label:k for k,label in enumerate(np.unique(data['终点']))}
# 将类标转换为数字(这里数字仅代表类别,不代表大小)
data['终点'] = data['终点'].map(class_mapping)
data[:5]

第三步,数据建模;

# 选取 建模 数据
data1 = data[['乘车方式', '终点', '里程距离',  '行驶时间', '是否合心意', '可支配收入', '是否报销', '购票价格', '是否舒适', '是否注重时间成本']]# 设置 X 和 y
X = data1.iloc[:, 1:]
y = data1.iloc[:, 0]from sklearn.cross_validation import train_test_split
# 设置训练数据集和测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)# 数据标准化
from sklearn.preprocessing import StandardScaler
stdsc = StandardScaler()
# 将训练数据标准化
X_train_std = stdsc.fit_transform(X_train)
# 将测试数据标准化
X_test_std = stdsc.transform(X_test)from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C = 10)
# lr在原始测试集上的表现
lr.fit(X_train_std, y_train)
# 打印训练集精确度
print('Training accuracy:', lr.score(X_train_std, y_train))
# 打印测试集精确度
print('Test accuracy:', lr.score(X_test_std, y_test))# 打印系数
lr.coef_
# 打印截距
lr.intercept_

最后,模型评价。

# 绘制混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred = lr.predict(X_test_std)
confmat = confusion_matrix(y_true=y_test, y_pred=y_pred)
print(confmat)# 将混淆矩阵可视化
fig, ax = plt.subplots(figsize=(2.5, 2.5))
ax.matshow(confmat, cmap=plt.cm.Blues, alpha=0.3)
for i in range(confmat.shape[0]):for j in range(confmat.shape[1]):ax.text(x=j, y=i, s=confmat[i, j], va='center', ha='center')plt.xlabel('预测类标')
plt.ylabel('真实类标')
plt.show()

# 获取模型的准确率和召回率
from sklearn.metrics import precision_score, recall_score, f1_score
# 准确率
print('Precision: %.4f' % precision_score(y_true=y_test, y_pred=y_pred))
# 召回率
print('Recall: %.4f' % recall_score(y_true=y_test, y_pred=y_pred))
# F1
print('F1: %.4f' % f1_score(y_true=y_test, y_pred=y_pred))
from sklearn.metrics import roc_curve, auc
from scipy import interp# 设置图形大小
fig = plt.figure(figsize=(7, 5))mean_tpr = 0.0
mean_fpr = np.linspace(0, 1, 100)
all_tpr = []
# 计算 预测率
probas = lr.fit(X_train, y_train).predict_proba(X_test)
# 计算 fpr,tpr
fpr, tpr, thresholds = roc_curve(y_test, probas[:, 1], pos_label=1)
mean_tpr += interp(mean_fpr, fpr,  tpr)
mean_tpr[0] = 0.0
roc_auc = auc(fpr, tpr)
plt.plot(fpr, tpr, lw=1, label='ROC (area = %0.2f)' % ( roc_auc))
plt.plot([0, 1], [0, 1], linestyle='--', color=(0.6, 0.6, 0.6), label='random guessing')mean_tpr /= len(X_train)
mean_tpr[-1] = 1.0
mean_auc = auc(mean_fpr, mean_tpr)
plt.plot([0, 0, 1], [0, 1, 1], lw=2, linestyle=':', color='black', label='perfect performance')plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
plt.xlabel('假正率')
plt.ylabel('真正率')
plt.title('')
plt.legend(loc="lower right")
plt.show()

Python进行Logistic回归相关推荐

  1. logistic回归 如何_第七章:利用Python实现Logistic回归分类模型

    免责声明:本文是通过网络收集并结合自身学习等途径合法获取,仅作为学习交流使用,其版权归出版社或者原创作者所有,并不对涉及的版权问题负责.若原创作者或者出版社认为侵权,请联系及时联系,我将立即删除文章, ...

  2. Python实现 logistic 回归算法

    Python实现 logistic 回归算法 1.算法介绍 模型描述: sigmoid函数: 原理: 优化目标:最小化 sigmoid(f(x)) 和真实标签的差别(有不同的 cost functio ...

  3. circle loss代码实现_Python全栈之路-23-使用Python实现Logistic回归算法

    视频讲解地址 使用Python实现Logistic回归算法_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 本文代码 地址​github.com Logistic ...

  4. 使用 python 实现 Logistic 回归

    使用 python 实现 Logistic 回归 原理回顾 预测函数 代价函数 参数更新 代码分析 算法的实现 算法的使用 算法的对比 全部代码 这节课我们将使用 numpy 实现 逻辑回归算法,然后 ...

  5. python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

    python基于logistic回归模型的预测概率和标签信息可视化ROC曲线 目录 python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

  6. python做logistic回归_用Python做Logistic回归

    为什么写这篇文章 本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘.结果大囧==..出来的相关结果少得可怜 ...

  7. Python与logistic回归——理解与实践

    文章参考 https://www.cnblogs.com/chamie/p/4876149.html [Machine Learning in Action --5]逻辑回归(LogisticRegr ...

  8. python实现logistic回归对样本量有要求么_logistic回归样本量多少合适?

    以下内容由小兵精选自百度文库,分享给读者朋友们. 样本量的估计可能是临床最头疼的一件事了,其实很多的临床研究事前是从来不考虑样本量的,至少我接触的临床研究大都如此. 他们大都是想到就开始做,但是事后他 ...

  9. 用python计算贷款_Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例...

    本文实例讲述了Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据.分享给大家供大家参考,具体如下: 一.Logistic回归模型: 二.Logistic回归建模步骤 1.根据分析 ...

最新文章

  1. 区块链的爆炸式增长使其成为第二大热门需求技能
  2. 高并发场景之RabbitMQ篇
  3. Struts 2常用的Ajax标签
  4. js循环判断有无重复值_JavaScript中的while循环
  5. mysql 远程连接
  6. mysql中基本的DML语句
  7. excel的宏与VBA入门——代码调试
  8. ANDROID窗体跳转
  9. JDK时区与电脑系统时区不一致,导致时间new date不对
  10. leetcode力扣49. 字母异位词分组
  11. Machine Learning - XIV. Dimensionality Reduction降维 (Week 8)
  12. python的基本语法while true_Python正课15 —— 流程控制之while循环
  13. 【腐蚀率预测】基于matlab GUI BP神经网络钢筋腐蚀率预测【含Matlab源码 107期】
  14. 小偷写给失主的一封信 雷人啊!!
  15. linux中dpkg找不到命令_Linux中tree命令的使用
  16. 计算机网络之物理层、链路层、网络层
  17. 02142数据结构导论
  18. Java8 lambda表达式详解
  19. Bluetooth Core Architecture Blocks----蓝牙核心架构
  20. java script jsp_JSP和Java Script问题

热门文章

  1. 为邮件创建完美的HTML正文
  2. JavaScript—jQuery
  3. 使用Kali-linux快速 搭建vulfocus靶场
  4. 又变脸了,扎克伯格说:元宇宙是时间点不是地方
  5. go每日新闻(2021-02-05)——Golang 中 nil==nil 是对是错?
  6. 向正展厅云平台:推动数字化展示转型的不二之选
  7. 网站域名个人备案和企业备案有什么区别?域名个人备案需要多久?
  8. 微软黑科技背后的技术路径 | 极客公园超频之旅
  9. 性能改善后复杂SQL
  10. 你是否适合从标准键盘布局转向德沃夏克布局?