2021-03-17

文章目录

  • 一元线性回归练习
  • Anscombe四重奏数据集,用excel对四组数据进行线性回归分析
  • 装python3.6/3.7、Anaconda 和 jupyter、spyder软件
  • 创建一个名为 exam1的虚拟环境,在虚拟环境下安装 numpy、pandas、sklearn包
    • 1、创建sklearn虚拟环境
    • 2、在sklearn虚拟环境中安装包
    • 3、在jupyter notebook中运行该虚拟环境
  • 基于svm的鸢尾花数据集分类
    • 1.问题描述
    • 2.数据描述
    • 实现代码步骤
    • 数值实验

一元线性回归练习

数据录入到Excel
2021-03-17_第1张图片
数据分析
2021-03-17_第2张图片
回归分析
2021-03-17_第3张图片
2021-03-17_第4张图片
2021-03-17_第5张图片

Anscombe四重奏数据集,用excel对四组数据进行线性回归分析

线性分析
2021-03-17_第6张图片
2021-03-17_第7张图片
这四组数据中,x值的平均数都是9.0,y值的平均数都是7.5;x值的方差都是10.0,y值的方差都是3.75;它们的相关度都是0.816,线性回归线都是y=3+0.5x。单从这些统计数字上看来,四组数据所反映出的实际情况非常相近,而事实上,这四组数据有着天壤之别
2021-03-17_第8张图片
把它们描绘在图表中,你会发现这四组数据是四种完全不同的情况。第一组数据是大多人看到上述统计数字的第一反应,是最“正常”的一组数据;第二组数据所反映的事实上是一个精确的二次函数关系,只是在错误地应用了线性模型后,各项统计数字与第一组数据恰好都相同;第三组数据描述的是一个精确的线性关系,只是这里面有一个异常值,它导致了上述各个统计数字,尤其是相关度值的偏差;第四组数据则是一个更极端的例子,其异常值导致了平均数、方差、相关度、线性回归线等所有统计数字全部发生偏差。

装python3.6/3.7、Anaconda 和 jupyter、spyder软件

.第一步先去python的官方网站下载python的安装包
python的官方网站
2021-03-17_第9张图片
2021-03-17_第10张图片
中间过程略
设置环境变量
2021-03-17_第11张图片

Anaconda下载
2021-03-17_第12张图片

2021-03-17_第13张图片
2021-03-17_第14张图片
spyder的官方下载地址
2021-03-17_第15张图片
安装好后,解压,我是放在了当初下载Python安装包时的文件夹中。

解压成功后,进入DOS界面(WIN+R,输入cmd.exe可进入DOS界面),进入spyder文件夹所在的位置,进入spyder文件夹所在的位置后,输入python setup.py install,然后回车,接下来,等到安装成功后,依次输入下面的语句(注意耐心等待,有些语句出来一条进度条,有些语句没有进度条,有些语句会有多条进度条,所以等看到安装成功并且提示输入出来后,再输入下一条语句)


python -m pip install --upgrade pip  
pip install zmq
pip install chardet
pip install psutil
pip install qtawesome
pip install pickleshare
pip install docutils
pip install jinja2
pip install sphinx
pip install jupyter_client
pip install qtconsole
pip install pyflakes
pip install pycodestyle
pip install rope
pip install nbconvert
pip install pylint
pip install qtpy
pip3 install PyQt5

最后再输入spyder,来启动

创建一个名为 exam1的虚拟环境,在虚拟环境下安装 numpy、pandas、sklearn包

1、创建sklearn虚拟环境

#1、创建虚拟环境的名称为sklearn,python版本为3.6.5
conda create -n sklearn python=3.6.5
#2、激活虚拟环境
conda activate sklearn

2、在sklearn虚拟环境中安装包

#可以选择指定具体的版本,如
conda install numpy
conda install pandas
conda install scipy
conda install matplotlib
conda install scikit-learn==0.20.0

3、在jupyter notebook中运行该虚拟环境

#1、激活虚拟环境,已经在虚拟环境中
conda install ipykernel
#2、在jupyter notebook中取名,名字为:sklearn-notebook,自由取名。
python -m ipykernel install --name sklearn-notebook

基于svm的鸢尾花数据集分类

1.问题描述

本次主要是在二分类的基础上实现一个多分类问题,即鸢尾花的分类。使用一对多的方法,
训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。有三类要划分(也就是3个Label),记为A、B、C。于是抽取训练集的时候,分别抽取
  (1)A所对应的向量作为正集,B,C所对应的向量作为负集;
  (2)B所对应的向量作为正集,A,C所对应的向量作为负集;
  (3)C所对应的向量作为正集,A,B所对应的向量作为负集;
使用这四个训练集分别进行训练,然后的得到四个训练结果文件。在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试。最后每个测试都有一个结果f1(x),f2(x),f3(x)。最终的结果便是这三个值中最大的一个作为分类结果。

2.数据描述

matlab中有自带的鸢尾花数据集,且都是已经处理好成mat格式,故只要直接导入便可。它是很常用的一个数据集,鸢尾花有三个分类,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。而且只有四个属性,分别是花萼长度、花萼宽度、花瓣长度、花瓣宽度。总共150条数据。
三.如何解决问题
(一)模型假设
将鸢尾花的属性以坐标形式表示,建立以下支持向量机模型:
2021-03-17_第16张图片

实现代码步骤

1.导入数据集
鸢尾花数据集在matlab中为fisheriris,故使用load fisheriris即可。
2.数据预处理
(1)转化标签
matlab自带的鸢尾花数据集的标签为setosa、versicolo和Iris-virginica,在建立支持向量机的时候,要将其转化为+1,-1。如先建立变色鸢尾versicolor的支持向量机时,使用ismember()函数对标签进行转化。
(2)划分训练集与测试集
交叉验证来选取训练集与测试集,将原始数据分成5组(K-Fold),将每个子集数据分别做一次验证集,其余的4组子集数据作为训练集,这样会得到5个模型。这5个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,使得评估结果能够尽可能接近模型在测试集上的表现。

数值实验

(一)分析结果
1.编程实现svm结果
类别:
(1)versicolor,最优惩罚参数C为6,最优径向核函数常数r为3,训练得到的准确率为98%;
(2)virginica,最优惩罚参数C为1,最优径向核函数常数r为2,训练得到的准确率为97.33%;
(3)setosa,最优惩罚参数C为1,最优径向核函数常数r为1,训练得到的准确率为100%;
建立的多分类向量机的结果:准确率为90%;

你可能感兴趣的:(2021-03-17)