在Sklearn机器学习包中 , 集成了各种各样的数据集 , 包括前面的糖尿病数据集 , 这里引入的是鸢尾花卉(Iris)数据集 , 它也是一个很常用的数据集 。该数据集一共包含4个特征变量 , 1个类别变量 , 共有150个样本 。其中四个特征分别是萼片的长度和宽度、花瓣的长度和宽度 , 一个类别变量是标记鸢尾花所属的分类情况 , 该值包含三种情况 , 即山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica) 。鸢尾花数据集详细介绍如表2所示:
文章插图
Class 类别变量 。0表示山鸢尾 , 1表示变色鸢尾 , 2表示维吉尼亚鸢尾 。int
iris里有两个属性iris.data , iris.target 。data是一个矩阵 , 每一列代表了萼片或花瓣的长宽 , 一共4列 , 每一行代表一个被测量的鸢尾植物 , 一共采样了150条记录 , 即150朵鸢尾花样本 。
from sklearn.datasets import load_iris #导入数据集irisiris = load_iris() #载入数据集print(iris.data)
输出如下所示:
[[ 5.1 3.5 1.4 0.2][ 4.9 3. 1.4 0.2][ 4.7 3.2 1.3 0.2][ 4.6 3.1 1.5 0.2]....[ 6.7 3. 5.2 2.3][ 6.3 2.5 5. 1.9][ 6.5 3. 5.2 2. ][ 6.2 3.4 5.4 2.3][ 5.9 3. 5.1 1.8]]
target是一个数组 , 存储了每行数据对应的样本属于哪一类鸢尾植物 , 要么是山鸢尾(值为0) , 要么是变色鸢尾(值为1) , 要么是维吉尼亚鸢尾(值为2) , 数组的长度是150 。
print(iris.target) #输出真实标签print(len(iris.target)) #150个样本 每个样本4个特征print(iris.data.shape)[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2]150(150L, 4L)
从输出结果可以看到 , 类标共分为三类 , 前面50个类标位0 , 中间50个类标位1 , 后面为2 。下面给详细介绍使用逻辑回归对这个数据集进行分析的代码 。
(2).散点图绘制
在载入了鸢尾花数据集(数据data和标签target)之后 , 我们需要获取其中两列数据或两个特征 , 再调用scatter()函数绘制散点图 。其中获取一个特征的核心代码为:X = [x[0] for x in DD] , 将获取的值赋值给X变量 。完整代码如下:
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03import matplotlib.pyplot as pltimport numpy as npfrom sklearn.datasets import load_iris #导入数据集iris#载入数据集iris = load_iris()print(iris.data) #输出数据集print(iris.target) #输出真实标签#获取花卉两列数据集DD = iris.dataX = [x[0] for x in DD]print(X)Y = [x[1] for x in DD]print(Y)#plt.scatter(X, Y, c=iris.target, marker='x')plt.scatter(X[:50], Y[:50], color='red', marker='o', label='setosa') #前50个样本plt.scatter(X[50:100], Y[50:100], color='blue', marker='x', label='versicolor') #中间50个plt.scatter(X[100:], Y[100:],color='green', marker='+', label='Virginica') #后50个样本plt.legend(loc=2) #左上角plt.show()
输出如图11所示:
文章插图
(3).线性回归分析
下述代码先获取鸢尾花数据集的前两列数据 , 再调用Sklearn库中线性回归模型进行分析 , 完整代码如文件所示 。
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03#之一步 导入数据集from sklearn.datasets import load_irishua = load_iris()#获取花瓣的长和宽x = [n[0] for n in hua.data]y = [n[1] for n in hua.data]import numpy as np #转换成数组x = np.array(x).reshape(len(x),1)y = np.array(y).reshape(len(y),1)#第二步 线性回归分析from sklearn.linear_model import LinearRegressionclf = LinearRegression()clf.fit(x,y)pre = clf.predict(x)print(pre)#第三步 画图import matplotlib.pyplot as pltplt.scatter(x,y,s=100)plt.plot(x,pre,"r-",linewidth=4)for idx, m in enumerate(x):plt.plot([m,m],[y[idx],pre[idx]], 'g-')plt.show()
输出图形如图12所示 , 并且可以看到所有散点到拟合的一元一次方程的距离 。
文章插图
(4).逻辑回归分析鸢尾花
讲解完线性回归分析之后 , 那如果用逻辑回归分析的结果究竟如何呢?下面开始讲述 。从散点图(图11)中可以看出 , 数据集是线性可分的 , 划分为3类 , 分别对应三种类型的鸢尾花 , 下面采用逻辑回归对其进行分析预测 。
推荐阅读
- 删档内测充了钱怎么办
- 拍拍贷借款在审核中是借到款了吗?
- 梦见家里养了一只白色的小狗 梦见家里养白色猫
- 2015我被广东医学院大学录取了,怎么查询自己在哪个校区
- 脸上痘痘抠破了怎么办 脸上痘痘怎么办啊
- 为什么我的电脑连接不了宽带,为什么座机好用电脑连不上网呢?
- 写教师节到了600字初中作文
- 开关贴纸 开关贴
- 单身者梦见别人把自己打了
- 解决电脑开不了机的思路方法 电脑开不了机了怎么办