首页 > 分享 > 鸢尾花数据集降维可视化

鸢尾花数据集降维可视化

1.利用python sklearn下载鸢尾花数据集,并分析数据集的维度属性,绘制二维散点图; 2.同时对鸢尾花数据集利用PCA和t-SNE进行降维,并对降维的结果进行可视化;

 1.利用python sklearn下载鸢尾花数据集,并分析数据集的维度属性,绘制二维散点图

from joblib.numpy_pickle_utils import xrange

from sklearn.datasets import load_iris

import numpy as np

import matplotlib.pyplot as plt

import itertools

if __name__ == '__main__':

data = load_iris()

x = data['data']

y = data['target']

col_name = data['feature_names']

plt.close('all')

plt.figure(1)

subplot_start = 321

col_numbers = xrange(0, 4)

col_pairs = itertools.combinations(col_numbers, 2)

for i in col_pairs:

plt.subplot(subplot_start)

plt.scatter(x[:,i[0]], x[:,i[1]], c=y)

plt.xlabel(col_name[i[0]])

plt.ylabel(col_name[i[1]])

subplot_start += 1

plt.show()

输出结果: 

2.理解两种降维方法,线性的主成分分析(PCA)方法和非线性的t-SNE方法,将原理阐述清楚,同时对鸢尾花数据集利用PCA和t-SNE进行降维,并对降维的结果进行可视化;

让我们先用PCA进行降维

**主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处PCA可以把具有相关性的高维变量合成为线性无关的低维变量,称为主成分。主成分能够尽可能保留原始数据的信息。 ** 目标 :已知鸢尾花数据是4维的,共三类样本。使用PCA实现对鸢尾花数据进行降维,实现在二维平面上的可视化。

**原理 :矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。 **

import matplotlib.pyplot as plt

from sklearn.decomposition import PCA

from sklearn.datasets import load_iris

data = load_iris()

y = data.target

X = data.data

pca = PCA(n_components=2)

reduced_X = pca.fit_transform(X)

red_x, red_y = [], []

blue_x, blue_y = [], []

green_x, green_y = [], []

for i in range(len(reduced_X)):

if y[i] == 0:

red_x.append(reduced_X[i][0])

red_y.append(reduced_X[i][1])

elif y[i] == 1:

blue_x.append(reduced_X[i][0])

blue_y.append(reduced_X[i][1])

else:

green_x.append(reduced_X[i][0])

green_y.append(reduced_X[i][1])

plt.scatter(red_x, red_y, c='r', marker='x')

plt.scatter(blue_x, blue_y, c='b', marker='D')

plt.scatter(green_x, green_y, c='g', marker='.')

plt.show()

输出结果: 

**T-distributed Stochastic Neighbor Embedding (T-SNE) 是一种可视化高维数据的工具。T-SNE 基于随机邻域嵌入,是一种非线性降维技术,用于在二维或三维空间中可视化数据。

Python API 提供 T-SNE 方法可视化数据。在本教程中,我们将简要了解如何在 Python 中使用 TSNE 拟合和可视化数据。

我们将从加载所需的库和函数开始。 获取鸢尾花数据集,采用t-SNE方法进行二维可视化,设置困惑度的三种不同取值(perplexity=5,30,300)观察可视化空间不同类别样本的分布情况。最后300,图形太大无法在页面显示。

from re import M

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.manifold import TSNE

import pandas as pd

import seaborn as sns

iris = load_iris()

y = iris.target

X = iris.data

n_samples,n_features = X.shape

dicts = {0:'first',1:'second',2:'third'}

m = pd.Series(y)

m = m.map(dicts)

for i in (5,30,300):

tsne_model = TSNE(n_components=2, init='pca', learning_rate=200, perplexity=i)

tsne = tsne_model.fit_transform(X)

Data_frame = pd.DataFrame({'tsne1': tsne[:, 0], 'tsne2': tsne[:, 1], 'y': m})

sns.lmplot(data=Data_frame, x='tsne1', y='tsne2', hue='y', fit_reg=False)

Data_frame2 = pd.DataFrame({'sepal length (cm)': X[:, 0], 'sepal width (cm)': X[:, 1], 'petal length (cm)': X[:, 2],

'petal width (cm)': X[:, 3], 'y': m})

Data_frame2.groupby(Data_frame2['y']).mean()

X_min, X_max = tsne.min(0), tsne.max(0)

X_norm = (tsne - X_min) / (X_max - X_min)

for j in range(X_norm.shape[0]):

plt.text(X_norm[j, 0], X_norm[j, 0], str(y[j]), color=plt.cm.Set1(y[j]), fontdict={'size': 8})

plt.xticks([])

plt.yticks([])

plt.title('当perplexity=%d时'%i)

plt.show()

 

 

相关知识

基于PCA的数据降维(鸢尾花(iris)数据集)
机器学习(三)降维之PCA及鸢尾花降维
鸢尾花数据集的数据可视化
鸢尾花(Iris)数据集入门
决策树可视化:鸢尾花数据集分类(附代码数据集)
利用PCA(主成分分析法)实现鸢尾花数据集的分类
多元统计分析——聚类分析——鸢尾花数据集在K
鸢尾花数据集可视化
机器学习之路:经典的鸢尾花数据集
鸢尾花数据集可视化分析

网址: 鸢尾花数据集降维可视化 https://m.huajiangbk.com/newsview830591.html

所属分类:花卉
上一篇: 成为免费培训的Google Ad
下一篇: FoodAnalyst