python导入鸢尾花数据集_python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析…

#2018-04-0516:57:26AprilThursdaythe14week,the095daySZSSMRpython数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析1.鸢尾花数据集可视化分析2.线性回归分析鸢尾花花瓣长度和宽度的关系3.决策树分析鸢尾花数据集4.Kmeans聚类分析鸢尾花数据集一.鸢尾花数据集介绍本章采用Python的Sklea…

大家好,又见面了,我是你们的朋友全栈君。

#2018-04-05 16:57:26 April Thursday the 14 week, the 095 day SZ SSMR

python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析

1.鸢尾花数据集可视化分析

2.线性回归分析鸢尾花花瓣长度和宽度的关系

3.决策树分析鸢尾花数据集

4.Kmeans聚类分析鸢尾花数据集

一. 鸢尾花数据集介绍

本章采用Python的Sklearn机器学习库中自带的数据集——鸢尾花数据集。简单分析数据集之间特征的关系图,

根据花瓣长度、花瓣宽度、花萼长度、花萼宽度四个特征进行绘图。

本章采用Python的Sklearn机器学习库中自带的数据集——鸢尾花数据集。简单分析数据集之间特征的关系图,根据花瓣长度、花瓣宽度、花萼长度、花萼宽度四个特征进行绘图。

#导入数据集iris

from sklearn.datasets import load_iris

#载入数据集

iris = load_iris()

#输出数据集

#print iris.data

target是一个数组,存储了data中每条记录属于哪一类鸢尾植物,数组长度是150,数组元素的值因为共有3类鸢尾植物,所以不同值只有3个。种类:

Iris Setosa(山鸢尾)

Iris Versicolour(杂色鸢尾)

Iris Virginica(维吉尼亚鸢尾)

二. 可视化分析鸢尾花

数据可视化可以更好地了解数据,主要调用Pandas扩展包进行绘图操作。

首先绘制直方图,直观的表现花瓣、花萼的长和宽特征的数量,纵坐标表示汇总的数量,横坐标表示对应的长度。

import pandas

#导入数据集iris

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names) #读取csv数据

print(dataset.describe())

#直方图 histograms

dataset.hist()

接下来通过dataset.plot()绘制散点图,这里设置三个参数,显示的x坐标、y坐标和设置绘图种类。

import pandas

#导入数据集iris

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names) #读取csv数据

print(dataset.describe())

dataset.plot(x=’sepal-length’, y=’sepal-width’, kind=’scatter’)

通过dataset.plot(kind=’kde’)绘制KDE图,KDE图也被称作密度图(Kernel Density Estimate,核密度估计)。

import pandas

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names) #读取csv数据

print(dataset.describe())

dataset.plot(kind=’kde’)

设置dataset.plot()函数的类型kind=’box’绘制箱图,在这里注意各个箱形图的纵坐标(y轴)的刻度是不同的,有明显的区分,因此可以看到,各变量表示的属性是有区分的。

import pandas

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names) #读取csv数据

print(dataset.describe())

dataset.plot(kind=’kde’)

dataset.plot(kind=’box’, subplots=True, layout=(2,2),

sharex=False, sharey=False)

接下来调用radviz()函数、andrews_curves()函数和parallel_coordinates()函数绘制图形,这里选择petal-length特征,代码如下所示:

import pandas

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names)

from pandas.tools.plotting import radviz

radviz(dataset, ‘class’)

from pandas.tools.plotting import andrews_curves

andrews_curves(dataset, ‘class’)

from pandas.tools.plotting import parallel_coordinates

parallel_coordinates(dataset, ‘class’)

最后补充散点图矩阵,这有助于发现变量之间的结构化关系,散点图代表了两变量的相关程度,如果呈现出沿着对角线分布的趋势,说明它们的相关性较高。

import pandas

url = “https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”

names = [‘sepal-length’, ‘sepal-width’, ‘petal-length’, ‘petal-width’, ‘class’]

dataset = pandas.read_csv(url, names=names)

from pandas.tools.plotting import scatter_matrix

scatter_matrix(dataset, alpha=0.2, figsize=(6, 6), diagonal=’kde’)

三. 线性回归分析鸢尾花

第一步 导入鸢尾花数据集并获取前两列数据,分别存储至x和y数组

from sklearn.datasets import load_iris

hua = 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)

第二步 导入Sklearn机器学习扩展包中线性回归模型,然后进行训练和预测

from sklearn.linear_model import LinearRegression

clf = LinearRegression()

clf.fit(x,y)

pre = clf.predict(x)

第三步 调用Matplotlib扩展包并绘制相关图形

#第三步 画图

import matplotlib.pyplot as plt

plt.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()

输出如下图所示,同时绘制了所有散点图到直线的距离。其中散点图为鸢尾花真实的花萼长度和花萼宽度关系,红色直线为预测的线性回归方程,即预测结果。

最后对该算法进行评估,主要是计算其线性回归方程,代码如下:

print(u”系数”, clf.coef_)

print (u”截距”, clf.intercept_)

print (np.mean(y-pre)**2)

# 系数 [[-0.05726823]]

# 截距 [ 3.38863738]

# 1.91991214088e-31

假设现在存在一个花萼长度为5.0的花,需要预测其花萼宽度,则使用该已经训练好的线性回归模型进行预测,其结果应为[3.10229621]。

print(clf.predict([[5.0]]))

四. 决策树分析鸢尾花

鸢尾花数据集使用决策树的代码如下:

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

iris = load_iris()

clf = DecisionTreeClassifier()

clf.fit(iris.data, iris.target)

#print clf

predicted = clf.predict(iris.data)

#获取花卉两列数据集

X = iris.data

L1 = [x[0] for x in X]

#print L1

L2 = [x[1] for x in X]

#print L2

import numpy as np

import matplotlib.pyplot as plt

plt.scatter(L1, L2, c=predicted, marker=’x’) #cmap=plt.cm.Paired

plt.title(“DTC”)

plt.show()

这里使用70%的训练,30%的进行预测,其中70%的训练集为0-40、50-90、100-140行,30%的预测集40-50、90-100、140-150行。同时输出准确率、召回率等,优化后的完整代码如下所示:

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

import numpy as np

iris = load_iris()

#训练集

train_data = np.concatenate((iris.data[0:40, :], iris.data[50:90, :], iris.data[100:140, :]), axis = 0)

train_target = np.concatenate((iris.target[0:40], iris.target[50:90], iris.target[100:140]), axis = 0)

#测试集

test_data = np.concatenate((iris.data[40:50, :], iris.data[90:100, :], iris.data[140:150, :]), axis = 0)

test_target = np.concatenate((iris.target[40:50], iris.target[90:100], iris.target[140:150]), axis = 0)

#训练

clf = DecisionTreeClassifier()

clf.fit(train_data, train_target)

predict_target = clf.predict(test_data)

#print predict_target

#预测结果与真实结果比对

print(sum(predict_target == test_target) )

#输出准确率 召回率 F值

from sklearn import metrics

print(metrics.classification_report(test_target,predict_target))

print(metrics.confusion_matrix(test_target,predict_target))

X = test_data

L1 = [n[0] for n in X]

#print L1

L2 = [n[1] for n in X]

#print L2

import numpy as np

import matplotlib.pyplot as plt

plt.scatter(L1, L2, c=predict_target, marker=’x’) #cmap=plt.cm.Paired

plt.title(“DecisionTreeClassifier”)

plt.show()

五. Kmeans聚类分析鸢尾花

KMeans聚类鸢尾花的代码如下,它则不需要类标(属于某一类鸢尾花),而是根据数据之间的相似性,按照“物以类聚,人以群分”进行聚类。代码如下:

# -*- coding: utf-8 -*-

from sklearn.datasets import load_iris

from sklearn.cluster import KMeans

iris = load_iris()

clf = KMeans()

clf.fit(iris.data, iris.target)

#print clf

predicted = clf.predict(iris.data)

#获取花卉两列数据集

X = iris.data

L1 = [x[0] for x in X]

#print L1

L2 = [x[1] for x in X]

#print L2

import numpy as np

import matplotlib.pyplot as plt

plt.scatter(L1, L2, c=predicted, marker=’s’,s=20,cmap=plt.cm.Paired)

plt.title(“DTC”)

plt.show()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127951.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月16日 下午1:40
下一篇 2022年4月16日 下午1:40


相关推荐

  • 使用 vlmcsd 部署 KMS 服务器

    使用 vlmcsd 部署 KMS 服务器一 前言 vlmcsd 就是一个仿真 KMS 管理工具 可以部署在内网或者公网可以运行在 Linux Windows 等系统平台上 由于 WindowsVL 都是为批量激活而诞生 KMS 服务器的作用是给局域网中的所有计算机的操作系统定周期 一般是 180 天 提供一个随机的激活 ID 不同于产品激活密钥 然后计算机里面的 KMS 服务就会自动将系统激活 实现正常的系统软件服务与操作 所以计算机必须保持与 KMS 服务器的定期连接 以便 KMS 激活服务的自动检查实现激活的自动续期 这样就实现了限制于公司域

    2026年3月20日
    2
  • Lasso回归总结

    Lasso回归总结Ridge回归由于直接套用线性回归可能产生过拟合,我们需要加入正则化项,如果加入的是L2正则化项,就是Ridge回归,有时也翻译为岭回归。它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和一个调节线性回归项和正则化项权重的系数α。损失函数表达式如下:J(θ)=1/2(Xθ−Y)T(Xθ−Y)+1/2α||θ||22其中α为常数系数,需要进行调优。||θ||2为L…

    2022年5月30日
    43
  • 读书笔记—《雷达信号处理基础》第一章 雷达系统与信号处理概述

    读书笔记—《雷达信号处理基础》第一章 雷达系统与信号处理概述为什么想要进行雷达信号处理基础的学习呢 因为现在学习阶段 做项目的阶段 确实对于很多雷达基础不是很清楚 之前学习的课程 雷达系统导论 是水过去的 感到知识的匮乏 所以整理了一下书中的一些重点内容以及要点 自己在学习的过程中也分享给各位做雷达的同学 本周对于 雷达信号处理基础 进行了第一章节的学习 主要学习内容如下 1 2 雷达的基本功能主要用途 检测 跟踪 成像距离公式 c 为

    2026年3月26日
    2
  • SQL中limit的用法

    SQL中limit的用法limit 子句用于限制查询结果返回的数量 格式 select fromtableNam n tableName 表名 i 为查询结果的索引值 默认从 0 开始 n 为查询结果返回的数量 i 与 n 之间使用英文逗号 隔开栗子 select fromCustomer 检索前 10 行数据 显示 1 10 条数据 select

    2026年3月20日
    2
  • 解决跨域问题 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present[通俗易懂]

    解决跨域问题 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present[通俗易懂]说一下做项目时需要用到html2canvas做项目截图踩到的跨域坑。项目需要拉取用户的头像,而linkedin和微信的头像存放于cdn中,这边涉及到的跨域问题。坑1:由于跨域,画布被污染,不能调用toBlob(),toDataURL()或getImageData()方法,调用它们会抛出安全错误。按网上说的做,配置useCORS:true,…

    2022年8月24日
    53
  • vue 时间戳转换日期格式

    vue 时间戳转换日期格式项目中需要将接口返回的时间戳转换为 2019 10 08 格式 虽然简单 但也让自己浪费了很多时间 做下记录 方便以后使用在公共 js 中添加以下代码 exportfuncti date fmt if y test fmt fmt fmt replace RegExp 1 date getFullYear s

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号