机器学习-逻辑回归与线性回归

logistic回归与线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized 
linear 
model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归。logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最为常用的就是二分类的logistic回归。而逻辑回归是用于分类问题,线性回归才是用于回归问题的。

接下来就用python的sklearn实现一个例子,这里用到了skearn中的load_iris数据

#第二天 逻辑回归与线性回归
#导入iris数据
from sklearn.datasets import load_iris
#导入回归方法
from sklearn.linear_model import LinearRegression,LogisticRegression
#导入拆分数据集的方法
from sklearn.model_selection import train_test_split
#用于分析验证测试结果
from sklearn.metrics import confusion_matrix,classification_report

# 载入sklearn数据
iris = load_iris()
# 获取特征数据
iris_data = iris[‘data‘]
# 特征列名
columns = iris[‘feature_names‘]
# 获取签值
iris_label = iris[‘target‘]

# 拆分训练集和测试集
train_x,test_x,train_y,test_y = train_test_split(iris_data,iris_label,test_size=0.3)
clf = LogisticRegression()
#训练
clf.fit(train_x,train_y)
#预测
predict_y = clf.predict(test_x)

print(confusion_matrix(test_y,predict_y))
print(classification_report(test_y,predict_y))

代码很简单,导入数据和训练基本上就是这样,这里说一下confusion_matrix这个主要用于查看预测结果和真是结果的差别

[[18  0  0]
 [ 0 13  1]
 [ 0  1 12]]

以上结果,列是预测结果数量,行是真是结果数量,在对角线上的数据说明预测和真实结果一直,这里看第二行三列,这里就说明真实结果是类型二结果预测成为类型三。

让后就是classification_report这个方法可以看到预测结果的一些信息,比如准确率,召回率等等

             precision    recall  f1-score   support

          0       1.00      1.00      1.00        18
          1       0.93      0.93      0.93        14
          2       0.92      0.92      0.92        13

avg / total       0.96      0.96      0.96        45

可以看到有三个类型0,1,2

第一列precision表示准确率,从上往下意思是预测为0类的准确率为1,预测为1类的准确率是0.93,预测为2类的准确率是0.92,最后一行是平均准确率。

第二列recall表示召回率

第三列f1-score表示F1分数

第四列support表示改分类有多少样本

从这个结果来看,整体预测结果较好,平均准确率和召回率还有F1都比较理想,特别是在类型0上是完全准确,类别2和3相对要差一点。

由于数据特征有3个无法用matplotlib可视化,下面我们用一个特征的数据实现一下线性回归并且可视化出来。

import numpy as np
from matplotlib import pyplot as plt

#生成二维的线性散点,加入一些偏移量
x = np.linspace(0, 50, 100) + 2*np.random.randn(100)
y = 2*x + 5*np.random.randn(100)
#预测需要的x值二维数组,用此方法将数组转换成二维的
x = x.reshape(-1,1)
# 上面例子有,同样是拆分训练集和测试集
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.3)
# 我们先画一下训练集和测试集的数据吧
plt.figure(figsize=(16,6))
plt.subplot(1,2,1)
plt.scatter(train_x,train_y,label=‘train data‘)
plt.legend()
plt.subplot(1,2,2)
plt.scatter(test_x,test_y,label=‘test data‘)
plt.legend()
plt.show()

左边的训练集,右边的是测试集,接下来我们用训练集开始训练,让后用测试集来测训练的效果,并且打印出来

# 线性回归方法
clf = LinearRegression()
# 用训练集训练
clf.fit(train_x,train_y)
# 预测测试集
predict_y = clf.predict(test_x)
# 打印出来
plt.figure(figsize=(8,6))
plt.xlim([-5,55])
plt.ylim([-10,110])
plt.xlabel(‘x‘)
plt.ylabel(‘y‘)
plt.scatter(test_x,test_y,c=‘r‘,label=‘really‘)
plt.plot(test_x,predict_y,color=‘b‘,label=‘predict‘)
plt.legend()
plt.show()

红色点是真是测试集数据,蓝线是预测的线性模型。

原文地址:https://www.cnblogs.com/yifengjianbai/p/10371380.html

时间: 2024-07-30 17:24:39

机器学习-逻辑回归与线性回归的相关文章

机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)

在<机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)>一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质.现在来看一下多分类的情况. 现实中相对于二分类问题,我们更常遇到的是多分类问题.多分类问题如何求解呢?有两种方式.一种是方式是修改原有模型,另一种方式是将多分类问题拆分成一个个二分类问题解决. 先来看一下第一种方式:修改原有模型.即:把二分类逻辑回归模型变为多分类逻辑回归模型. (二分类逻辑回归称为binary

机器学习—逻辑回归理论简介

下面是转载的内容,主要是介绍逻辑回归的理论知识,先总结一下自己看完的心得 简单来说线性回归就是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是这样的结果上加上一个逻辑函数 这里选用的就是Sigmoid函数,在坐标尺度很大的情况下类似于阶跃函数 在确认特征对应的权重值也就是回归系数的时候 最常用的方法是最大似然法,EM参数估计,这个是在一阶导数能够有解的前提下 如果一阶导数无法求得解析值,那么一般选取梯度上升法,通过有限次的迭代过程,结合代价函数更新回归系数至收敛 //////////

机器学习-逻辑回归

(整理的简单,公式也没使用公式编辑器.) 对于数据集D={(x1,y1),(x2,y2),...,{xn,yn}} ,而xi= {xi1,xi2,...,xim} 代表m维 . 在线性回归中,我们想学习一个线性的函数 f(x) = w1*x1+w2*x2+w3*x3+...+wm*xm+b . 向量形式 f(X) = Wt*X +b  其中Wt 是W 向量的转置.其可能值范围是(-oo,+oo). 对于二分类任务,其类别标记为y={0,1},  需要将范围取到(0,1),就使用sigmoid函数

[机器学习]--逻辑回归总结

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类.虽然它名字里面有“回归”两个字,却不是一个回归算法.那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原理里面却残留着回归模型的影子.邮件是否是垃圾邮件.细胞是否是癌细胞. 1. 从线性回归到逻辑回归 我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θθ,满足Y=XθY=Xθ.此时我们的Y是连续的,所以是回归模型.如果我们想要Y是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个

机器学习六--回归--简单线性回归Simple Linear Regression

一.回归和分类 回归(regression)y变量为连续数值型(continuous numerical variable),如房价,降雨量. 分类(classification)y变量为类别型categorical variable.如颜色类别,电脑品牌等. 二.统计量:描述数据特征 2.1集中趋势衡量:均值(mean),中位数,众数. 2.2离散程度衡量:方差       标准差S 三.简单线性回归介绍 1.简单线性回归包含一个自变量(x)和一个因变量(y) 2.以上两个变量的关系用一条直线

机器学习逻辑回归算法推导

1.引自https://www.cnblogs.com/bnuvincent/p/9695666.html 2. 基本原理 Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以简单的描述为这样的过程: (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果.这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的

机器学习七--回归--多元线性回归Multiple Linear Regression

一.不包含分类型变量 from numpy import genfromtxtimport numpy as npfrom sklearn import datasets,linear_modelpath=r'D:\daacheng\Python\PythonCode\machineLearning\Delivery.csv'data=genfromtxt(path,delimiter=',')print(data)x=data[:,:-1]y=data[:,-1]regr=linear_mod

【机器学习】逻辑回归(Logistic Regression)

注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害(评价标准). 1. 什么是逻辑回归? 许多人对线性回归都比较熟悉,但知道逻辑回归的人可能就要少的多.从大的类别上来说,逻辑回归是一种有监督的统计学习方法,主要用于对样本进行分类. 在线性回归模型中,输出一般是连续的,例如$$y = f(x) = ax + b$$,对于每一个输入的x,都有一个对应的y输出.模

[机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自Standford Andrew Ng老师在Coursera的教程以及UFLDL Tutorial,Stanford CS231n等在线课程和Tutorial,同时也参考了大量网上的相关资料(在后面列出). 前言 本文主要介绍逻辑回归的基础知识,文章小节安排如下: 1)逻辑回归定义 2)假设函数(Hypothesis function