机器学习(一):低纬数据可视化
(第一次写博客,后续相关学习任务应该会继续发布)
任务要求

1.安装软件python和工具包sklearn
①安装python,可以直接从官网https://www.python.org/进行下载
②sklearn包可以通过pip install sklearn命令进行安装(若安装失败,可能是pip未升级,
可通过’python -m pip install --upgrade pip’ 进行升级)
2.生成数据 make_circles和make_moons,并显示X=400x2,Y = {0, 1}400
① make_circles函数
sklearn.datasets.make_circles(n_samples=100, shuffle=True,
noise=None, random_state=None, factor=0.8)
作用是生成一个二维的大圆,包含一个小圆
相关参数说明:
n_samples:整数 可选 默认为100生成的总点数。(如果是奇数,内圆比外圆多一点,但是测试输入5后,内圆和外圆均是两个点)
shuffle:布尔变量 可选 默认为True,是否打乱样本。
noise:double或None ,默认为None,将高斯噪声的标准差加入到数据中。
random_state:整数 RandomState instance or None,确定数据集变换和噪声的随机数生成。
factor:0 < double < 1 默认值0.8,内外圆之间的比例因子。
② make_moons函数
x,y = datasets.make_moons(n_samples=800,noise=None,shuffle=False,random_state=None)
相关参数说明:
n_numbers:生成样本数量
shuffle:数据是否打乱
noise:默认是false,数据集是否加入高斯噪声
random_state:生成随机种子,给定一个int型数据,能够保证每次生成数据相同。
③代码
from sklearn.datasets import make_circles
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(1)
x1, y1 = make_circles(n_samples=400, factor=0.2, noise=0.1)
# datasets.make_circles()用来生成圆圈状的二维样本.
# factor表示里圈和外圈的距离之比.
# 每圈共有n_samples/2个点.
plt.subplot(121)
plt.title('make_circles')
plt.scatter(x1[:,0],x1[:,1],marker='o',c=y1,cmap='plasma')
# x1[:,0]表示取所有坐标的第一维数据 x1[0,:]表示第一个坐标的所有维数据
#marker用于确定点的形状,c和cmap用于调整颜色
x1,y1 = make_moons(n_samples=400,noise=0.1)
plt.subplot(122)
plt.title('make_moons')
plt.scatter(x1[:,0],x1[:,1],marker='*',c=y1,cmap='Spectral')
plt.show()
最终结果:
颜色处理可参考plt.scatter-颜色设置
3.思考:高维数据如何可视化(不要求)
①因为人类对二维的数据才有最直观的感受,所以我们才要将高维的数据可视化,从而能直观地感受数据分布情况。
②目前主流的数据降维算法是 t-SNE(暂时还不会),相关代码可以参考
An illustrated introduction to the t-SNE algorithm
4.上机器学习数据库机器学习数据库下载并显示至少一个图像和一个文档数据集
(一)下载文档数据集
①先进入网站http://archive.ics.uci.edu/ml/index.php(或可用新地址https://archive-beta.ics.uci.edu/)
②点击Adult数据集(任意数据集均可),进入该数据集详情页面:
③点击Data Folder
④点击adult data,文档数据集下载完毕
(二)下载图片数据集
①此处先进入新网址https://archive-beta.ics.uci.edu/,先在搜索栏输入Image
②点击CMU Face Images
③点击Download
④点击face.tar.Z进行下载
⑤下载完毕后,可以查看图片,以下展示部分图片
总结
第一次写博客,感觉有很多地方写得不大好,有什么不妥之处还请多多包涵,后续会慢慢改进。