关于线性回归

线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
  • 相关系数就是两个变量之间的相关程度,r<0负相关,r>0正相关,r越接近1表示越相关
    P值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为显著, P<0.01 为非常显著,其含义是样本间的差异由抽样误差所致的概率小于0.05 或0.01。
  • 需要注意的是:在非线性回归中,不可以用p值检验相关显著性, 因为在非线性回归中,残差均值平方不再是误差方差的无偏估计,因而不能使用线性模型的检验方法来检验非线性模型,从而不能用F统计量及其P值进行检验
  • 对于非线性相关可以从两个方面来看拟合情况
    1、通过“非线性模型统计摘要表”计算出R2=1-residual/correct,越接近于1越好
    2、通过“观测与预测值的双轴散点图”来直观地判断模型拟合情况

1、工具
选择Excel进行数据分析
2、下载安装
百度网盘链接:
Excel
提取码:x6tv

准备工作

添加数据分析工具

1、选择文件,点击更多打开选项

2、点击加载项,将管理中的改为Excel加载项,点击转到
3、勾选分析数据库、分析数据库-VBA点击确定

4、可以看到有数据这一栏表述添加成功

一、“父母子女身高”数据集线性回归分

1、删除重复项
打开数据选项点击删除重复项


2、点击数据分析,选择回归点击确定

3、输入X、Y值区域以及确定回归分析图位置,点击对应数据位置,会显示区域
在这里我以父亲身高为X值,儿子身高为Y值

4、点击散点,点击设置趋势线格式

5、勾选所需要的趋势线选项

6、可双击坐标轴设置最大值与最小值,最终生成图表


父母身高的平均值与子女身高的线性相关性较弱,R平方表现为相关性较弱,P值远远小于0.01,回归方程是可靠的。

二、 Anscombe四重奏数据集线性回归分析

不是很能够表现原始数据的一个变化趋势,所有该线性回归方程不成立。


该线性回归方程不成立


线性基本能够表现原始数据的一个变化趋势
,有少数极端数据存在


该线性回归方程不成立

三、鸢尾花Iris数据集SVM线性分类

1、Anaconda的下载

1.1点击下载地址
下载地址:ANACONDA
1.2进入官网,点击Download
1.3根据自己的电脑选择合适的版本下载

2、Anaconda的安装

2.1找到安装程序,点击安装
欢迎界面,点击next

2.2点击I Agree,建议选择All Users,点击next

2.3选择路径,选择将Anaconda作为我的默认Python,并点击"Install"

2.4安装完成,点击next

2.5一直next,后面两个选项建议不选,点击finish

2.6安装完毕,运行Anacontda Prompt
输入conda --version,显示版本信息,验证安装成功

3、配置环境

3.1打开我的电脑\属性\高级系统设置\环境属性\用户变量\Path
3.2将Anaconda下的Scripts与Library\bin的安装路径写入PATH
3.3更改环境变量后重启电脑,验证成功

4、Anaconda创建虚拟环境及安装包

2.1创建虚拟环境

(1)创建命令行
打开Anaconda Powershell Promot
输入下面的命令

conda create -n sklearn python=3.6

tf1是自己为创建虚拟环境取的名字,后面python的版本可以根据自己需求进行选择
(2)界面创建
打开Anaconda Navigator
创建环境,填写相应的信息

2.2添加安装包

pip install 包名
直接这样安装可以由于网络的原因,安装失败或者安装很慢
解决方式:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
此处安装的包包括numpy、pandas、sklearn、matplotlib

鸢尾花数据集使用SVM线性分类

LinearSVC(Linear Support Vector Classification)线性支持向量机,核函数是 linear
相关参数说明:

C:目标函数的惩罚系数C,默认C = 1.0;
loss:指定损失函数. squared_hinge(默认), squared_hinge
penalty : 惩罚方式,str类型,l1, l2
dual :选择算法来解决对偶或原始优化问题。当nsamples>nfeatures时dual=false
tol :svm结束标准的精度, 默认是 1e - 3
multi_class:如果y输出类别包含多类,用来确定多类策略, ovr表示一对多,“crammer_singer”优化所有类别的一个共同的目标 。如果选择“crammer_singer”,损失、惩罚和优化将会被被忽略。
max_iter : 要运行的最大迭代次数。int,默认1000

LinearSVC(C)方式实现分类

导入需要使用的包

#导入相应的包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC

获取数据

# 获取所需数据集
iris=datasets.load_iris()
#每行的数据,一共四列,每一列映射为feature_names中对应的值
X=iris.data
#每行数据对应的分类结果值(也就是每行数据的label值),取值为[0,1,2]
Y=iris.target
#通过Y=iris.target.size,可以得到一共150行数据,三个类别个50条数据,并且数据是按照0,1,2的顺序放的

对数据处理

#只取y<2的类别,也就是0 1并且只取前两个特征
X=X[:,:2]
#获取0 1类别的数据
Y1=Y[Y<2]
y1=len(Y1)
#获取0类别的数据
Y2=Y[Y<1]
y2=len(Y2)
X=X[:y1,:2]

未经标准化的原始数据点的绘制

#绘制出类别0和类别1
plt.scatter(X[0:y2,0],X[0:y2,1],color='red')
plt.scatter(X[y2+1:y1,0],X[y2+1:y1,1],color='blue')
plt.show()


数据归一化处理

#标准化
standardScaler=StandardScaler()
standardScaler.fit(X)
#计算训练数据的均值和方差
X_standard=standardScaler.transform(X)
#用scaler中的均值和方差来转换X,使X标准化
svc=LinearSVC(C=1e9)
svc.fit(X_standard,Y1)

画出决策边界
相关函数的说明:

meshgrid() 返回了有两个向量定义的方形空间中的所有点的集合。x0是x值,x1是y的值
ravel() 将向量拉成一行
c_[] 将向量排列在一起
contourf() 等高线

def plot_decision_boundary(model, axis):x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),# 600个,影响列数np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),# 600个,影响行数)# x0 和 x1 被拉成一列,然后拼接成360000行2列的矩阵,表示所有点X_new = np.c_[x0.ravel(), x1.ravel()]    # 变成 600 * 600行, 2列的矩阵y_predict = model.predict(X_new)   # 二维点集才可以用来预测zz = y_predict.reshape(x0.shape)   # (600, 600)from matplotlib.colors import ListedColormapcustom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)#print(X_new)
plot_decision_boundary(svc, axis=[-3, 3, -3, 3])
plt.scatter(X_standard[0:y2,0], X_standard[0:y2,1],color='red')
plt.scatter(X_standard[y2:y1,0], X_standard[y2:y1,1],color='blue')
plt.show()


例化一个svc2

svc2=LinearSVC(C=0.01)
svc2.fit(X_standard,Y1)
print(svc2.coef_)
print(svc2.intercept_)
plot_decision_boundary(svc2, axis=[-3, 3, -3, 3])
plt.scatter(X_standard[0:y2,0], X_standard[0:y2,1],color='red')
plt.scatter(X_standard[y2:y1,0], X_standard[y2:y1,1],color='blue')
plt.show()


决策边界的不同,表面C C 越小容错空间越大

添加上下边界

def plot_svc_decision_boundary(model, axis):x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),# 600个,影响列数np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),# 600个,影响行数)# x0 和 x1 被拉成一列,然后拼接成360000行2列的矩阵,表示所有点X_new = np.c_[x0.ravel(), x1.ravel()]    # 变成 600 * 600行, 2列的矩阵y_predict = model.predict(X_new)   # 二维点集才可以用来预测zz = y_predict.reshape(x0.shape)   # (600, 600)from matplotlib.colors import ListedColormapcustom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)w = model.coef_[0]b = model.intercept_[0]index_x = np.linspace(axis[0], axis[1], 100)
#     f(x,y) = w[0]x1 + w[1]x2 + b
#     1 = w[0]x1 + w[1]x2 + b    上边界
#     -1 = w[0]x1 + w[1]x2 + b   下边界y_up = (1-w[0]*index_x - b) / w[1]y_down = (-1-w[0]*index_x - b) / w[1]x_index_up = index_x[(y_up<=axis[3])  & (y_up>=axis[2])]x_index_down = index_x[(y_down<=axis[3]) & (y_down>=axis[2])]y_up = y_up[(y_up<=axis[3])  & (y_up>=axis[2])]y_down = y_down[(y_down<=axis[3]) & (y_down>=axis[2])]plt.plot(x_index_up, y_up, color="black")plt.plot(x_index_down, y_down, color="black")plot_svc_decision_boundary(svc, axis=[-3, 3, -3, 3])
plt.scatter(X_standard[0:y2,0], X_standard[0:y2,1],color='red')
plt.scatter(X_standard[y2:y1,0], X_standard[y2:y1,1],color='blue')
plt.show()


修改c值

plot_svc_decision_boundary(svc2, axis=[-3, 3, -3, 3])
plt.scatter(X_standard[0:y2,0], X_standard[0:y2,1],color='red')
plt.scatter(X_standard[y2:y1,0], X_standard[y2:y1,1],color='blue')
plt.show()


常数C越大,容错空间越小,上下边界较近;常数C越小,容错空间越大,上下边界越远。

Excel数据线性回归相关推荐

  1. Excel作出线性回归图像

    Microsoft Excel作出线性回归图像 文章目录 Microsoft Excel作出线性回归图像 加载数据分析功能 导入需处理的数据 数据分析 加载数据分析功能 ①文件–>选项–> ...

  2. 视频教程-Excel数据透视表-Office/WPS

    Excel数据透视表 熟练python 独立开发相关程序 熟练使用django,tornado 框架相关开发技术 熟悉常用机器学习和深度学习算法的软件库TensorFlow,如线性回归.逻辑回归.聚类 ...

  3. 计算机进行回归分析,excel表格数据分析回归的模型是-excel数据分析线性回归中MS,SS,F,DF分别是什么意思...

    excel回归结果的每个值 都是什么含义,都是怎么来的? SS表示均值偏差的平方和和数据的总变化量. F是F的值,F是方差分析得到的统计量,用来检验回归方程是否显著. DF表示自由度,自由度是在计算某 ...

  4. Excel一元线性回归示例与演算步骤详解含源码及注释

    Excel一元线性回归示例 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 一元线性回归简介 回归分析只涉及到两个变量(Y因变 ...

  5. matlab在曲线给命名,matlab 利用xlsread画图,怎么将一组excel数据导入,通过matlab作图...

    Matlab 循环 for 语句 xlsread EXCEL表格数据导入 画图 Matlab的 xlsread() 函数可以将Excel数据到matlab工作空间,然后就可以根据读入据作图.下面给出操 ...

  6. EXCEL数据导入数据库

    1.类设计,EXCEL要据配置读入DATASET using System; using System.Data; using System.Collections; using System.Dat ...

  7. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  8. Python 批量处理 Excel 数据后,导入 SQL Server

    作者 | 老表 来源 | 简说Python 1.前言 2.开始动手动脑 2.1 拆解+明确需求 2.2 安装第三方包 2.3 读取excel数据 2.4 特殊数据数据处理 2.5 其他需求 2.6 完 ...

  9. android读取excel数据库,Android 读取Excel数据并保存在本地数据库

    在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...

  10. python绘制动态图表怎么存下来_用python如何实现导入excel数据后自动生成图表?python如何实现交互式动态图表?...

    这个需求涉及的环节太多了.导入excel文件,获取数据 -- 需要xlrd模块把数据导入python 2. 设定输出图表类型 -- 需要matplot模块.根据数据复杂度,可能需要ETL,那么需要pa ...

最新文章

  1. linux下配java环境的小结
  2. oracle巡检 博客,自己总结了一下巡检的工作 for Oracle RAC
  3. c语言字母随机初始值,C语言的未初始化的数组的值为什么是随机的
  4. 计算机考试交互,2017计算机等级考试HTTP的基本概念与交互模型练习题
  5. PHP json_encode 中文乱码
  6. SQL2000升级到2005过程中的用户和登录名问题
  7. 设为首页 和 收藏本页
  8. 单链表反转--Java实现
  9. 软件测试工程师...我是如何正确地申请加薪的!
  10. 数据结构期末作业思路分享——库存管理小程序(云数据库)
  11. pool(二)——动手入门
  12. 【无标题】免费源码资源,游戏源码下载
  13. OneDrive撸5T硬盘空间教程
  14. 个是云计算,一个大数据,一个人工智能,
  15. 【和ChatGPT对话】帮助新手批量提取图片文字信息到文件
  16. Vue指令之条件渲染
  17. 小野さん と ペット
  18. CreateWindowEx和CreateWindow的区别
  19. Android TabLayout基本使用及完美调整指示器位置的技巧
  20. 通用mapper(mapper-mybatis)

热门文章

  1. html仿酷狗音乐界面代码,模仿酷狗7(Kugou7)音乐魔方界面源码
  2. Python科学计算
  3. 1、NoSQL数据库简介
  4. f分布表完整图a=0.01_【知识】二元概率分布
  5. 程序猿最喜欢哪一个浏览器?
  6. Java并发编程的艺术下载
  7. IntelliJ Idea 主题(黑色)+代码高亮显示
  8. 51单片机c语言两个变量比对,51单片机C语言编程技巧
  9. 【单片机】keil 2032
  10. 基于Seay的PHP源代码审计