Python进行Logistic回归
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回归相关推荐
- logistic回归 如何_第七章:利用Python实现Logistic回归分类模型
免责声明:本文是通过网络收集并结合自身学习等途径合法获取,仅作为学习交流使用,其版权归出版社或者原创作者所有,并不对涉及的版权问题负责.若原创作者或者出版社认为侵权,请联系及时联系,我将立即删除文章, ...
- Python实现 logistic 回归算法
Python实现 logistic 回归算法 1.算法介绍 模型描述: sigmoid函数: 原理: 优化目标:最小化 sigmoid(f(x)) 和真实标签的差别(有不同的 cost functio ...
- circle loss代码实现_Python全栈之路-23-使用Python实现Logistic回归算法
视频讲解地址 使用Python实现Logistic回归算法_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com 本文代码 地址github.com Logistic ...
- 使用 python 实现 Logistic 回归
使用 python 实现 Logistic 回归 原理回顾 预测函数 代价函数 参数更新 代码分析 算法的实现 算法的使用 算法的对比 全部代码 这节课我们将使用 numpy 实现 逻辑回归算法,然后 ...
- python基于logistic回归模型的预测概率和标签信息可视化ROC曲线
python基于logistic回归模型的预测概率和标签信息可视化ROC曲线 目录 python基于logistic回归模型的预测概率和标签信息可视化ROC曲线
- python做logistic回归_用Python做Logistic回归
为什么写这篇文章 本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘.结果大囧==..出来的相关结果少得可怜 ...
- Python与logistic回归——理解与实践
文章参考 https://www.cnblogs.com/chamie/p/4876149.html [Machine Learning in Action --5]逻辑回归(LogisticRegr ...
- python实现logistic回归对样本量有要求么_logistic回归样本量多少合适?
以下内容由小兵精选自百度文库,分享给读者朋友们. 样本量的估计可能是临床最头疼的一件事了,其实很多的临床研究事前是从来不考虑样本量的,至少我接触的临床研究大都如此. 他们大都是想到就开始做,但是事后他 ...
- 用python计算贷款_Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例...
本文实例讲述了Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据.分享给大家供大家参考,具体如下: 一.Logistic回归模型: 二.Logistic回归建模步骤 1.根据分析 ...
最新文章
- 区块链的爆炸式增长使其成为第二大热门需求技能
- 高并发场景之RabbitMQ篇
- Struts 2常用的Ajax标签
- js循环判断有无重复值_JavaScript中的while循环
- mysql 远程连接
- mysql中基本的DML语句
- excel的宏与VBA入门——代码调试
- ANDROID窗体跳转
- JDK时区与电脑系统时区不一致,导致时间new date不对
- leetcode力扣49. 字母异位词分组
- Machine Learning - XIV. Dimensionality Reduction降维 (Week 8)
- python的基本语法while true_Python正课15 —— 流程控制之while循环
- 【腐蚀率预测】基于matlab GUI BP神经网络钢筋腐蚀率预测【含Matlab源码 107期】
- 小偷写给失主的一封信 雷人啊!!
- linux中dpkg找不到命令_Linux中tree命令的使用
- 计算机网络之物理层、链路层、网络层
- 02142数据结构导论
- Java8 lambda表达式详解
- Bluetooth Core Architecture Blocks----蓝牙核心架构
- java script jsp_JSP和Java Script问题