Logistic回归----葡萄酒案例
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回归----葡萄酒案例相关推荐
- R语言Logistic回归模型案例基于AER包的affair数据分析
R语言Logistic回归模型案例基于AER包的affair数据 目录 R语言Logistic回归模型案例基于AER包的affair数据 #数据加载及目标变量二值化
- R语言Logistic回归模型案例:低出生婴儿体重的影响因素分析(列线图、校准曲线)
R语言Logistic回归模型案例:低出生婴儿体重影响因素分析(列线图.校准曲线) 目录 R语言Logistic回归模型案例:低出生婴儿体重影响因素分析(列线图.校准曲线ÿ
- R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系
R语言Logistic回归模型案例:分析吸烟.饮酒与食管癌的关系 目录 R语言Logistic回归模型案例分析吸烟.饮酒与食管癌的关系 #样例数据
- R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系
R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 目录 R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 #样例数据
- R语言Logistic回归模型案例(绘制列线图、校正曲线):研究低出生体重婴儿的核心影像因素
R语言Logistic回归模型案例(绘制列线图.校正曲线):研究低出生体重婴儿的核心影像因素 目录
- c语言statistics函数,Logistic回归中C-Statistics计算方法
1. 背景知识 上一节中我们讲解了R语言在Cox回归模型中计算C-index的方法,参见:预测模型系列 05 -- Cox回归中C-index的两种常用计算方法.本节我们将介绍用R语言计算Logist ...
- logistic回归分析优点_机器学习实战项目-Logistic回归
Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 Sigmoid 函数 回归 概 ...
- R语言logistic回归、判别分析(LDA)、多元自适应样条回归MARS分析案例:分析乳腺癌数据集明确细针穿刺肿瘤活检结果
R语言logistic回归.判别分析(LDA).多元自适应样条回归MARS分析案例:分析乳腺癌数据集明确细针穿刺肿瘤活检结果 目录
- R语言广义线性模型Logistic回归案例代码
R语言广义线性模型Logistic回归案例代码 在实际应用中,Logistic模型主要有三大用途: 1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素 ...
最新文章
- Java:多个文档合并输出到一个文档
- xslt 标签取集合第一条数据_XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数...
- vc简易网络服务器、客户端实现
- 6、图书类别修改删除功能
- 研旭电子dsp配套程序_为什么自动调音DSP还火不了?
- 他是我们内心世界的一员 (见信息时报2011年7月10日)
- 无锁队列设计思路以及简要代码
- 2021抚顺高考成绩查询,2021年抚顺高考成绩排名及成绩公布时间什么时候出来
- linux malloc free 内存碎片_内存申请malloc/new与内存释放free/delete的区别
- 共建数据库软件全生态,新数科技宣布 ShinSight 开放共享!
- 好看兼好用的编程专用字体
- 基于树莓派的DLNA和Airplay无线音频传输
- 工作之RF功能开发入门
- 诚风老师-十年了,当年那帮做直销的穷小子都成了富豪
- 深入浅出面板数据分析
- Python基础概要(一天快速入门)
- 梦幻西游手游经验任务链计算机,梦幻西游手游经验和道具任务链攻略
- vue 自定义事件 解绑
- UEFI开发历程2—基于SuperIO芯片的寄存器读写
- 点云 3D 目标检测 - PointPillars(CVPR 2019)