线性回归算法之鸢尾花特征分类【机器学习】

上进小菜猪 发表于 2022/06/19 15:13:15 2022/06/19
【摘要】 一.前言 1.1 本文原理线性回归就是用一条直线来准确描述数据之间的关系,这样当新数据出现时,就可以预测一个简单的值。一般来说,就是将真实数据映射到坐标轴上,坐标轴上的数据呈线性形状,然后构建一个函数,使函数对应的数据尽可能接近真实数据,使函数在坐标轴上绘制的图像尽可能通过真实数据中的所有点,并尝试最小化我们构建的函数所表示的坐标轴上所有点和线之间的距离。 1.1 本文目的使用scikit...

一.前言

1.1 本文原理

线性回归就是用一条直线来准确描述数据之间的关系,这样当新数据出现时,就可以预测一个简单的值。一般来说,就是将真实数据映射到坐标轴上,坐标轴上的数据呈线性形状,然后构建一个函数,使函数对应的数据尽可能接近真实数据,使函数在坐标轴上绘制的图像尽可能通过真实数据中的所有点,并尝试最小化我们构建的函数所表示的坐标轴上所有点和线之间的距离。

1.1 本文目的

  • 使用scikit-learn机器学习包的线性回归算法,对鸢尾花进行分类;
  • 使用scikit-learn机器学习包的线性回归算法,选择一个特征对鸢尾花进行分类;
  • 使用scikit-learn机器学习包的线性回归算法,选择两个特征对鸢尾花进行分类;
  • 使用scikit-learn机器学习包的线性回归算法,选择三个特征对鸢尾花进行分类;
    结合上一个数据分析和可视化实验,根据对鸢尾花数据的特征两两对比可视化图,分析特征可视化对特征选择及相关分类计算结果的影响;
  • 熟悉机器学习线性回归算法
  • 使用线性回归算法解决问题
    在这里插入图片描述

二.实验过程

2.1使用scikit-learn机器学习包的算法,对鸢尾花进行分类

相信各位,经过上文的学习,我们已经安装了scikit-learn机器学习包。

我们先导入鸢尾花特征数据包如下:
load_iris模块里有150组鸢尾花特征数据供我们学习使用。

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
print(X.shape, X)
y = iris.target
print(y.shape, y)

下面我们对对鸢尾花进行分类。
使用plt.scatter绘制散点图,我们看一下里面的参数。
看一下他的文档:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None,
vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)

在这里插入图片描述

feature = 1
feature_other = 2
plt.scatter(X[0:50,feature], X[0:50,feature_other], color='red', marker='o', label='setosa') #前50个样本
plt.scatter(X[50:100,feature], X[50:100,feature_other], color='blue', marker='x', label='versicolor') #中间50个
plt.scatter(X[100:,feature], X[100:,feature_other],color='green', marker='+', label='Virginica') #后50个样本
plt.show()

上述代码解释:
feature为1,feature_other为2,使用scatter绘制散点图,我们分别使用它的前50个样本,中间50个,后50个样本,采用第二个特征和第三个特征。

plt.show()显示散点图:

在这里插入图片描述
在这里插入图片描述

2.2 使用scikit-learn机器学习包的线性回归算法,选择一个特征对鸢尾花进行分类

导入numpy模块,拟合运算需要;

import numpy as np

我们需要先导入linear_model模块,之后再创建一个线性模型。

from sklearn import linear_model

最小二乘法线性回归

linear_model.LinearRegression(fit_intercept=True, normalize=False,copy_X=True, n_jobs=1)

根据第一个特征进行拟合:

linear.fit(X[:,:1],y)

输出线性回归一个特征拟合得分:

print("线性回归 training score: ",linear.score(X[:,:1],y))

可视化看一下;

plt.scatter(X[:,:1],y)
plt.scatter(X[:,:1],np.dot(X[:,:1],linear.coef_)+linear.intercept_)
plt.plot(X[:,:1],np.dot(X[:,:1],linear.coef_)+linear.intercept_)
plt.show()

可视化结果为:
在这里插入图片描述

2.3 使用scikit-learn机器学习包的线性回归算法,选择两个特征对鸢尾花进行分类

使用循环取出两个不同特征进行训练。
循环训练得分如下:

for j in range(4):
    if i<j:
        x_slice = X[:,[i,j]]
        predict_slice = predict_data[:,[i,j]]
        features.append([i,j])
        func_linear(x_slice,y,scores)
x_slice = X[:,[0,1,2,3]]
predict_slice = predict_data[:,[0,1,2,3]]
features.append([0,1,2,3])
func_linear(x_slice,y,scores)
print(features)
print(scores)
print(predict_results)

在这里插入图片描述

2.4 使用scikit-learn机器学习包的线性回归算法,选择三个特征对鸢尾花进行分类;

写第4项代码,循环取出三个不同特征进行训练。
循环训练得分如下:

for j in range(4):
if i<j:
x_slice = X[:,[i,j]]
predict_slice = predict_data[:,[i,j]]
features.append([i,j])
func_linear(x_slice,y,scores)
for k in range(4):
if i<j and j<k:
x_slice = X[:,[i,j,k]]
predict_slice =predict_data[:,[i,j,k]]
features.append([i,j,k])
func_linear(x_slice,y,scores)

在这里插入图片描述

2.5 结合上一个数据分析和可视化实验,根据对鸢尾花数据的特征两两对比可视化图,分析特征可视化对特征选择及相关分类计算结果的影响

在俩个特征分析是最高为0.925,说明花瓣长度,花瓣宽度属性特征选择比重较大。
在三个特征分析是最高为0.93说明花萼长度,花瓣长度,花瓣宽度属性特征选择比重较大。
,其次为0.928,说明花萼宽度,花瓣长度,花瓣宽度这三个属性特征对计算结果的影响较大。

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。