在进行可视化及聚类分析前,我们需要为IDLE安装sklearn库,scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上能够为用户提供各种机器学习算法接口,可以让用户简单、高效地进行数据挖掘和数据分析。

以下皆是在cmd命令行进行。

目录

一、全部代码

二、分步骤浏览

python中安装sklearn机器学习库

1、数据集可视化

2、线性回归

3、决策树分析

4、KMeans聚类分析


一、全部代码

#安装 numpy、scipy、matplotlib三个库
pip install numpy
pip install scipy
pip install matplotlib
pip install sklearn#导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfrom pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']    #用于画图时显示中文from sklearn.datasets import load_iris #导入数据集iris
iris = load_iris() #载入数据集
print(iris.data)  #打印输出数据集#共150条记录,分别代表50条山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)、维吉尼亚鸢尾(Iris-virginica)
print(iris.target) iris.data.shape  # iris数据集150行4列的二维数组url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['花萼-length', '花萼-width', '花瓣-length', '花瓣-width', 'class']
dataset = pd.read_csv(url, names=names)#************************可视化显示*************************************#
#显示直方图
zhifangtu=dataset.hist() #数据直方图histograms
plt.show(zhifangtu.data) print(dataset.describe())#显示散点图
sandian=dataset.plot(x='花萼-length', y='花萼-width', kind='scatter') #散点图,x轴表示花萼长度,y轴表示花萼宽度
plt.show(sandian)  #kde图
plt.show(dataset.plot(kind='kde')) #KDE图,也被称作密度图(Kernel Density Estimate,核密度估计)#显示箱图
#kind='box'绘制箱图,包含子图且子图的行列布局layout为2*2,子图共用x轴、y轴刻度,标签为False
xiangtu = dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)plt.show(xiangtu.data)#*****************************线性回归*************************************#pos = pd.DataFrame(dataset)
#获取花瓣的长和宽,转换Series为ndarray
x = pos['花瓣-length'].values
y = pos['花瓣-width'].values
x = x.reshape(len(x),1)
y = y.reshape(len(y),1)from sklearn.linear_model import LinearRegression
clf = LinearRegression()
clf.fit(x,y)
pre = clf.predict(x)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()#*****************************决策树分析***********************************#from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)
predicted = clf.predict(iris.data)    #获取花卉两列数据集
L1 = pos['花萼-length'].values
L2 = pos['花萼-width'].values   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()  #将iris_data分为70%的训练,30%的进行预测 然后进行优化 输出准确率、召回率等,优化后的完整代码如下:from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metricsx_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target, test_size=0.3)
clf = DecisionTreeClassifier()
clf.fit(x_train,y_train)
predict_target = clf.predict(x_test)print(sum(predict_target == y_test)) #预测结果与真实结果比对
print(metrics.classification_report(y_test,predict_target))
print(metrics.confusion_matrix(y_test,predict_target))L1 = [n[0] for n in x_test]
L2 = [n[1] for n in x_test]
plt.scatter(L1,L2, c=predict_target,marker='x')
plt.title('决策树分类器')
plt.show()#*****************************KMeans聚类分析*******************************#from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
iris = load_iris()
clf = KMeans()
clf.fit(iris.data,iris.target)
predicted = clf.predict(iris.data)pos = pd.DataFrame(dataset)
L1 = pos['花萼-length'].values
L2 = pos['花萼-width'].values    plt.scatter(L1, L2, c=predicted, marker='s',s=100,cmap=plt.cm.Paired)
plt.title("KMeans聚类分析")
plt.show() #*******************************************from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier# Parameters
n_classes = 3
plot_colors = "ryb"
plot_step = 0.02# Load data
iris = load_iris()for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3],[1, 2], [1, 3], [2, 3]]):# We only take the two corresponding featuresX = iris.data[:, pair]y = iris.target# Trainclf = DecisionTreeClassifier().fit(X, y)# Plot the decision boundaryplt.subplot(2, 3, pairidx + 1)x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),np.arange(y_min, y_max, plot_step))plt.tight_layout(h_pad=0.5, w_pad=0.5, pad=2.5)Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)cs = plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu)plt.xlabel(iris.feature_names[pair[0]])plt.ylabel(iris.feature_names[pair[1]])# Plot the training pointsfor i, color in zip(range(n_classes), plot_colors):idx = np.where(y == i)plt.scatter(X[idx, 0], X[idx, 1], c=color, label=iris.target_names[i],cmap=plt.cm.RdYlBu, edgecolor='black', s=15)plt.suptitle("Decision surface of a decision tree using paired features")
plt.legend(loc='lower right', borderpad=0, handletextpad=0)
plt.axis("tight")
plt.show()

二、分步骤浏览

python中安装sklearn机器学习库

安装sklearn前。需要先安装 numpy、scipy、matplotlib三个库。

pip install numpy
pip install scipy
pip install matplotlib
pip install sklearn

1、数据集可视化

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

Iris plants 数据集可以从KEEL dataset数据集网站获取,也可以直接从Sklearn.datasets机器学习包得到。数据集共包含4个特征变量、1个类别变量,共有150个样本。类别变量分别对应鸢尾花的三个亚属,分别是山鸢尾 (Iris-setosa)变色鸢尾(Iris-versicolor)维吉尼亚鸢尾(Iris-virginica) 分别用[0,1,2]来做映射

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfrom pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']    #用于画图时显示中文from sklearn.datasets import load_iris #导入数据集iris  
iris = load_iris() #载入数据集
print(iris.data)  #打印输出显示

#共150条记录,分别代表50条山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)、维吉尼亚鸢尾(Iris-virginica)
print(iris.target) iris.data.shape  # iris数据集150行4列的二维数组
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['花萼-length', '花萼-width', '花瓣-length', '花瓣-width', 'class']
dataset = pd.read_csv(url, names=names)
zhifangtu=dataset.hist() #数据直方图histogramsplt.show(zhifangtu) #显示直方图

print(dataset.describe())

dataset.plot(x='花萼-length', y='花萼-width', kind='scatter') #散点图,x轴表示花萼长度,y轴表示花萼宽度
plt.show(dataset.plot)  #显示散点图

plt.show(dataset.plot(kind='kde')) #KDE图,也被称作密度图(Kernel Density Estimate,核密度估计)

#kind='box'绘制箱图,包含子图且子图的行列布局layout为2*2,子图共用x轴、y轴刻度,标签为False
xiangtu = dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)plt.show(xiangtu)#显示箱图

RadViz(雷达图)

RadViz是一种可视化多维数据的方式。它基于基本的弹簧压力最小化算法(在复杂网络分析中也会经常应用)。简单来说,将一组点放在一个平面上,每一个点代表一个属性,我们案例中有四个点,被放在一个单位圆上,接下来你可以设想每个数据集通过一个弹簧联接到每个点上,弹力和他们属性值成正比(属性值已经标准化),数据集在平面上的位置是弹簧的均衡位置。不同类的样本用不同颜色表示。

from pandas.plotting import radviz
radviz(dataset,'class')

Andrews曲线

Andrews曲线将每个样本的属性值转化为傅里叶序列的系数来创建曲线。通过将每一类曲线标成不同颜色可以可视化聚类数据,属于相同类别的样本的曲线通常更加接近并构成了更大的结构。

from pandas.plotting import andrews_curves
andrews_curves(dataset,'class')

平行坐标

平行坐标也是一种多维可视化技术。它可以看到数据中的类别以及从视觉上估计其他的统计量。使用平行坐标时,每个点用线段联接。每个垂直的线代表一个属性。一组联接的线段表示一个数据点。可能是一类的数据点会更加接近。

from pandas.plotting import parallel_coordinates
parallel_coordinates(dataset,'class')

散点图矩阵

scatter_matrix散点矩阵图代表了两变量的相关程度,如果呈现出沿着对角线分布的趋势,说明它们的相关性较高。

from pandas.plotting import scatter_matrix
scatter_matrix(dataset, alpha=0.2, figsize=(6, 6), diagonal='kde') 

2、线性回归

采用线性回归算法对鸢尾花的特征数据进行分析,预测花瓣长度、花瓣宽度、花萼长度、花萼宽度四个特征之间的线性关系。核心代码如下:

pos = pd.DataFrame(dataset)
#获取花瓣的长和宽,转换Series为ndarray
x = pos['花瓣-length'].values
y = pos['花瓣-width'].values
x = x.reshape(len(x),1)
y = y.reshape(len(y),1)from sklearn.linear_model import LinearRegression
clf = LinearRegression()
clf.fit(x,y)
pre = clf.predict(x)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()

3、决策树分析

Sklearn机器学习包中,决策树实现类是DecisionTreeClassifier,能够执行数据集的多类分类。

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)
predicted = clf.predict(iris.data)    #获取花卉两列数据集
L1 = pos['花萼-length'].values
L2 = pos['花萼-width'].values   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()  

将iris_data分为70%的训练,30%的进行预测 然后进行优化 输出准确率、召回率等,优化后的完整代码如下:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metricsx_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target, test_size=0.3)
clf = DecisionTreeClassifier()
clf.fit(x_train,y_train)
predict_target = clf.predict(x_test)print(sum(predict_target == y_test)) #预测结果与真实结果比对
print(metrics.classification_report(y_test,predict_target))
print(metrics.confusion_matrix(y_test,predict_target))L1 = [n[0] for n in x_test]
L2 = [n[1] for n in x_test]
plt.scatter(L1,L2, c=predict_target,marker='x')
plt.title('DecisionTreeClassifier')
plt.show()

4、KMeans聚类分析

from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
iris = load_iris()
clf = KMeans()
clf.fit(iris.data,iris.target)
predicted = clf.predict(iris.data)pos = pd.DataFrame(dataset)
L1 = pos['花萼-length'].values
L2 = pos['花萼-width'].values    plt.scatter(L1, L2, c=predicted, marker='s',s=100,cmap=plt.cm.Paired)
plt.title("KMeans聚类分析")
plt.show() 

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier# Parameters
n_classes = 3
plot_colors = "ryb"
plot_step = 0.02# Load data
iris = load_iris()for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3],[1, 2], [1, 3], [2, 3]]):# We only take the two corresponding featuresX = iris.data[:, pair]y = iris.target# Trainclf = DecisionTreeClassifier().fit(X, y)# Plot the decision boundaryplt.subplot(2, 3, pairidx + 1)x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),np.arange(y_min, y_max, plot_step))plt.tight_layout(h_pad=0.5, w_pad=0.5, pad=2.5)Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)cs = plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu)plt.xlabel(iris.feature_names[pair[0]])plt.ylabel(iris.feature_names[pair[1]])# Plot the training pointsfor i, color in zip(range(n_classes), plot_colors):idx = np.where(y == i)plt.scatter(X[idx, 0], X[idx, 1], c=color, label=iris.target_names[i],cmap=plt.cm.RdYlBu, edgecolor='black', s=15)plt.suptitle("Decision surface of a decision tree using paired features")
plt.legend(loc='lower right', borderpad=0, handletextpad=0)
plt.axis("tight")
plt.show()

Iris鸢尾花数据集可视化、线性回归、决策树分析、KMeans聚类分析相关推荐

  1. matlab鸢尾花数据线性分析,Iris鸢尾花数据集可视化、线性回归、决策树分析、KMeans聚类分析...

    数据集可视化 采用Python的Sklearn机器学习库中自带的数据集--鸢尾花数据集.简单分析数据集之间特征的关系图,根据花瓣长度.花瓣宽度.花萼长度.花萼宽度四个特征进行绘图 Iris plant ...

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

    #2018-04-05 16:57:26 April Thursday the 14 week, the 095 day SZ SSMR python数据挖掘学习笔记]十九.鸢尾花数据集可视化.线性回 ...

  3. 【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析

    这是<Python数据挖掘课程>系列文章,也是我这学期上课的部分内容.本文主要讲述鸢尾花数据集的各种分析,包括可视化分析.线性回归分析.决策树分析等,通常一个数据集是可以用于多种分析的,希 ...

  4. 数据挖掘算法和实践(二):决策树(iris鸢尾花数据集)

    决策树是直观运用概率分析的树形分类器,是很常用的分类方法,属于监管学习,决策树分类过程是从根节点开始,根据特征属性值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果. 比如说买瓜的时候 ...

  5. ML之DT:利用DT(DTC)实现对iris(鸢尾花)数据集进行分类并可视化DT结构

    ML之DT:利用DT(DTC)实现对iris(鸢尾花)数据集进行分类并可视化DT结构 目录 输出结果 实现代码 输出结果 实现代码 #1. iris = load_iris() dir(iris)ir ...

  6. ML之mlxtend:基于iris鸢尾花数据集利用逻辑回归LoR/随机森林RF/支持向量机SVM/集成学习算法结合mlxtend库实现模型可解释性(决策边界可视化)

    ML之mlxtend:基于iris鸢尾花数据集利用逻辑回归LoR/随机森林RF/支持向量机SVM/集成学习算法结合mlxtend库实现模型可解释性(决策边界可视化) 目录 相关文章 ML之mlxten ...

  7. TensorFlow基础1(波士顿房价/鸢尾花数据集可视化)

    记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,波士顿房价数据集可视化 1.1介绍波士顿房价数据集 1.2波士顿房价数据集加载 1.3将平均房间数与房价之间的关系可视 ...

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

    在搜索鸢尾花数据集时看到一篇基于鸢尾花数据集的文章,其中数据可视化部分做的很好,所以自己在此复现一下,原文链接如下:https://www.jianshu.com/p/52b86c774b0b 一:导 ...

  9. Iris鸢尾花数据集的逻辑回归分析

    逻辑回归分析(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,是一种广义的线性回归分析模型. 逻辑回归的原理是在线性回归的基础上加了一个Sigmoid函 ...

最新文章

  1. 机器学习视觉图像算法工程师--面试笔试--常考知识点乱找总结
  2. 对于DataSet中的问题真是郁闷啊
  3. Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap
  4. 数据结构之求二叉树的所有叶子和以及叶子总数
  5. GetClientRect相当于GetWindowRect和ScreenToClient区别
  6. python装饰器简单理解_python装饰器的简单理解
  7. gauscoor软件怎么用_影视解说月入近万元怎么做到的,没基础照样用软件制作
  8. [转]Hive:简单查询不启用Mapreduce job而启用Fetch task
  9. 怎么写c++ documentation_球鞋鞋标怎么看真假、有几种 耐克鞋标鉴定方法推荐
  10. vpay软件系统开发
  11. Netlimiter 3.0 注册码
  12. 前端录屏工具开发--可用于工程化错误回放
  13. HTML入门之常用标签以及框架写法
  14. 菜鸟入门_Python_机器学习(1)_线性可分的双月实验
  15. 2023北京影视技术设备展览会
  16. ms721调试总结及光电传感器板测试总结
  17. 华为电子邮件显示未读邮件1_您所说的话:如何使电子邮件垃圾邮件保持整洁...
  18. 哨向 Mika Lelush 1
  19. 计算机毕设(附源码)JAVA-SSM基于智慧农业的水果销售系统
  20. OpenCV 中getTickCount()计时

热门文章

  1. 用户登入系统的c语言代码大全,C语言 登录系统代码
  2. matlab fft实现dft,matlab实现dft和fft
  3. Android的swift语言Kotlin中文开发文档
  4. 数据库 主键 外键 唯一键区别
  5. 程序员的数学基础课 二进制(自我提升第6天)
  6. Open-Falcon学习之路(1)
  7. 35岁后失业,出路在哪里?
  8. 计算机软件 csc csu,4-TS-软件设计说明模板(GJB438A).doc
  9. 简单最短路径问题编程c语言,最短路径动态规划问题及C语言_实现.pdf
  10. python中的isdigit()函数