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 |