import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import warningsfrom sklearn.linear_model import LogisticRegressionCV  # 逻辑回归模型
from sklearn.linear_model.coordinate_descent import ConvergenceWarning  # 警告处理
from sklearn.model_selection import train_test_split  # 数据划分
from sklearn.preprocessing import MinMaxScaler  # 数据标准化
from sklearn.preprocessing import label_binarize
from sklearn import metrics
from matplotlib.font_manager import FontProperties# 设置显示中文字体
my_font = FontProperties(fname="/usr/share/fonts/chinese/simsun.ttc")
# fontproperties = my_font
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 拦截异常
warnings.filterwarnings(action = 'ignore', category=ConvergenceWarning)
warnings.filterwarnings(action = 'ignore', category=UserWarning)
# 1.读取数据
path1 = "/root/zhj/python3/code/data/winequality-red.csv"
df1 = pd.read_csv(path1, sep=";")
df1['type'] = 1  # 设置数据类型为红葡萄酒
path2 = "/root/zhj/python3/code/data/winequality-white.csv"
df2 = pd.read_csv(path2, sep=";")
df2['type'] = 2  # 设置数据类型为白葡萄酒
# print(df1.head())
# print(df2.head())
# 2.数据预处理
# a.合并两个df
df = pd.concat([df1,df2], axis=0)
# b.自变量名称
names = ["fixed acidity","volatile acidity","citric acid","residual sugar","chlorides","free sulfur dioxide","total sulfur dioxide","density","pH","sulphates","alcohol", "type"]
# print(df.head(5))
# c.因变量名称
quality = "quality"# d.异常数据处理
new_df = df.replace('?', np.nan)
datas = new_df.dropna(how = 'any') # 只要有空,就删除所在行
# e.提取自变量和因变量
X = datas[names]
Y = datas[quality]
Y = Y.ravel()  # Y拉长为扁平的数组
# 3.数据分割
# test_size:测试集所占比例
# random_state:保证每次分割所产生的数据集是完全相同的
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)# 4.数据格式化(归一化)
# 将数据缩放到[0,1]
ss = MinMaxScaler()
X_train = ss.fit_transform(X_train)  # 训练模型及归一化数据# 5.模型构建及训练
"""
multi_class: 分类方式参数参数可选: ovr(默认)、multinomial这两种方式在二元分类问题中,效果是一样的;在多元分类问题中,效果不一样ovr: one-vs-rest, 对于多元分类的问题,先将其看做二元分类,分类完成后,再迭代对其中一类继续进行二元分类multinomial: many-vs-many(MVM),即Softmax分类效果
# 对于多元分类问题,如果模型有T类,我们每次在所有的T类样本里面选择两类样本出来,
# 不妨记为T1类和T2类,把所有的输出为T1和T2的样本放在一起,把T1作为正例,T2作为负例,
# 进行二元逻辑回归,得到模型参数。我们一共需要T(T-1)/2次分类penalty: 过拟合解决参数,l1或者l2
solver: 参数优化方式当penalty为l1的时候,参数只能是:liblinear(坐标轴下降法);
nlbfgs和cg都是关于目标函数的二阶泰勒展开当penalty为l2的时候,参数可以是:lbfgs(拟牛顿法)、newton-cg(牛顿法变种),seg(minibatch)
维度<10000时,lbfgs法比较好;维度>10000时,cg法比较好;显卡计算的时候,lbfgs和cg都比seg快
"""
lr = LogisticRegressionCV(fit_intercept=True, Cs=np.logspace(-5, 1, 100), multi_class='multinomial', penalty='l2', solver='lbfgs')
lr.fit(X_train, Y_train)# 6.模型评估
r = lr.score(X_train, Y_train)
print("R值:", r)
print("特征稀疏化比率:%.2f%%" % (np.mean(lr.coef_.ravel() == 0) * 100))
print("参数:",lr.coef_)
print("截距:",lr.intercept_)
print("概率:", lr.predict_proba(X_test)) # 获取sigmoid函数返回的概率值# 7.数据预测
# a. 预测数据格式化(归一化)
X_test = ss.transform(X_test) # 使用模型进行归一化操作
# b. 结果数据预测
Y_predict = lr.predict(X_test)# 8. 图表展示
x_len = range(len(X_test))
plt.figure(figsize=(14,7), facecolor='w')
plt.ylim(-1,11)
plt.plot(x_len, Y_test, 'ro',markersize = 8, zorder=3, label=u'真实值')
plt.plot(x_len, Y_predict, 'go', markersize = 12, zorder=2, label=u'预测值,$R^2$=%.3f' % lr.score(X_train, Y_train))
plt.legend(loc = 'upper left',prop=my_font)
plt.xlabel(u'数据编号', fontsize=18,fontproperties=my_font)
plt.ylabel(u'葡萄酒质量', fontsize=18,fontproperties=my_font)
plt.title(u'葡萄酒质量预测统计', fontsize=20,fontproperties=my_font)
plt.show()
R值: 0.548393303829
特征稀疏化比率:0.00%
参数: [[ 1.21619932  3.74677365 -0.71839545 -0.18595972  1.39633111  1.739506470.7421522   0.26431543  0.39550236 -1.11575742 -0.78206069 -0.26263924][ 0.55588832  5.67085714 -0.55831104 -2.57650998  1.33426214 -4.64664667-1.48473951  1.70518817  0.04972736 -0.93639942 -3.07103904  2.07114777][-2.02307774  2.1221418   0.60060269 -2.22545181  0.4762303  -1.874400212.35380179  1.9534726  -1.55642899 -2.20908627 -5.10355608 -0.81260183][-1.33039784 -3.1761214  -0.22725934 -0.02994433 -0.05474603  0.79907247-0.1920052   0.73437753 -0.88338615  0.21312228 -0.10495969 -0.79175036][ 1.30704733 -5.80729857 -0.28941872  2.58314285 -2.14063825  1.71283315-0.8509861  -2.69824149  0.79358633  2.84348685  3.12408148 -0.94937701][-0.01959941 -2.5312119   0.85904632  2.5135857  -0.73041487  2.16565948-0.35325725 -1.33730743  0.63992529  1.41394196  4.66672131 -0.01923786][ 0.29394003 -0.02514072  0.33373554 -0.0788627  -0.2810244   0.10397532-0.21496593 -0.62180481  0.5610738  -0.20930799  1.27081272  0.76445854]]
截距: [-2.80689365 -0.89785514  4.98899929  4.39691335  1.55409782 -2.39936463-4.83589704]
概率: [[  3.13457616e-024   4.71711101e-206   1.00000000e+000 ...,3.47567793e-086   1.53002058e-054   3.12882407e-082][  1.00000000e+000   2.36097500e-182   4.73044777e-016 ...,1.69809220e-041   3.70654713e-013   3.18507283e-052][  1.61362195e-006   0.00000000e+000   9.99998386e-001 ...,4.31305846e-105   3.63138471e-052   3.61282409e-119]..., [  2.50623526e-013   2.55538947e-079   8.12344420e-042 ...,9.03958880e-011   1.00000000e+000   8.42693297e-026][  6.82723589e-001   3.39702856e-123   3.17272487e-001 ...,1.06295770e-029   3.92382551e-006   3.72676076e-033][  9.99885591e-001   1.74565553e-199   1.14408684e-004 ...,1.15839681e-052   3.16527862e-019   2.23252511e-058]]

Logistic回归----葡萄酒案例相关推荐

  1. R语言Logistic回归模型案例基于AER包的affair数据分析

    R语言Logistic回归模型案例基于AER包的affair数据 目录 R语言Logistic回归模型案例基于AER包的affair数据 #数据加载及目标变量二值化

  2. R语言Logistic回归模型案例:低出生婴儿体重的影响因素分析(列线图、校准曲线)

    R语言Logistic回归模型案例:低出生婴儿体重影响因素分析(列线图.校准曲线) 目录 R语言Logistic回归模型案例:低出生婴儿体重影响因素分析(列线图.校准曲线ÿ

  3. R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系

    R语言Logistic回归模型案例:分析吸烟.饮酒与食管癌的关系 目录 R语言Logistic回归模型案例分析吸烟.饮酒与食管癌的关系 #样例数据

  4. R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系

    R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 目录 R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 #样例数据

  5. R语言Logistic回归模型案例(绘制列线图、校正曲线):研究低出生体重婴儿的核心影像因素

    R语言Logistic回归模型案例(绘制列线图.校正曲线):研究低出生体重婴儿的核心影像因素 目录

  6. c语言statistics函数,Logistic回归中C-Statistics计算方法

    1. 背景知识 上一节中我们讲解了R语言在Cox回归模型中计算C-index的方法,参见:预测模型系列 05 -- Cox回归中C-index的两种常用计算方法.本节我们将介绍用R语言计算Logist ...

  7. logistic回归分析优点_机器学习实战项目-Logistic回归

    Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 Sigmoid 函数 回归 概 ...

  8. R语言logistic回归、判别分析(LDA)、多元自适应样条回归MARS分析案例:分析乳腺癌数据集明确细针穿刺肿瘤活检结果

    R语言logistic回归.判别分析(LDA).多元自适应样条回归MARS分析案例:分析乳腺癌数据集明确细针穿刺肿瘤活检结果 目录

  9. R语言广义线性模型Logistic回归案例代码

    R语言广义线性模型Logistic回归案例代码 在实际应用中,Logistic模型主要有三大用途: 1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素 ...

最新文章

  1. Java:多个文档合并输出到一个文档
  2. xslt 标签取集合第一条数据_XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数...
  3. vc简易网络服务器、客户端实现
  4. 6、图书类别修改删除功能
  5. 研旭电子dsp配套程序_为什么自动调音DSP还火不了?
  6. 他是我们内心世界的一员 (见信息时报2011年7月10日)
  7. 无锁队列设计思路以及简要代码
  8. 2021抚顺高考成绩查询,2021年抚顺高考成绩排名及成绩公布时间什么时候出来
  9. linux malloc free 内存碎片_内存申请malloc/new与内存释放free/delete的区别
  10. 共建数据库软件全生态,新数科技宣布 ShinSight 开放共享!
  11. 好看兼好用的编程专用字体
  12. 基于树莓派的DLNA和Airplay无线音频传输
  13. 工作之RF功能开发入门
  14. 诚风老师-十年了,当年那帮做直销的穷小子都成了富豪
  15. 深入浅出面板数据分析
  16. Python基础概要(一天快速入门)
  17. 梦幻西游手游经验任务链计算机,梦幻西游手游经验和道具任务链攻略
  18. vue 自定义事件 解绑
  19. UEFI开发历程2—基于SuperIO芯片的寄存器读写
  20. 点云 3D 目标检测 - PointPillars(CVPR 2019)

热门文章

  1. [SWPU2019]ReverseMe
  2. 微信摩拜怎么提示服务器错误,微信摩拜老是定位失败
  3. Oracle 的表分区详解
  4. 西北工业大学国家精品课--流媒体课程
  5. Hadoop集群搭建之SSH无密码登录配置
  6. 分布式光纤测温系统DTS-BLY-5S
  7. minio的安装及使用
  8. js-day01-02
  9. Flash Timeout.Reset the Target and try it again 报错解决方案 STM32 ST-LINK Utility下载程序操作
  10. 我是一位40岁的“老程序员”,我有一些想法