Sklearn 鸢尾花
鸢尾花 从sklearn 包自带的数据集中读出鸢尾花数据集 data
1 2 3 4 5 6 7 8 9 10 from sklearn.datasets import load_irisimport numpy as npimport matplotlib.pyplot as pltdata = load_iris() print (data)
查看data类型,包含哪些数据 1 2 print (type (data))print (data.keys())
取出鸢尾花特征和鸢尾花类别数据,查看其形状及数据类型 1 2 3 4 5 6 iris_feature = data.feature_names,data.data iris_target = data.target_names,data.target print ('鸢尾花特征数据:' ,iris_feature)print ('鸢尾花类别:' ,iris_target)sepal_len = np.array(list (len [0 ] for len in data.data)) print ('花萼长度:' ,sepal_len)
取出所有花的花萼长度(cm)的数据 1 2 sepal_len = np.array(list (len [0 ] for len in data.data)) print ('所有花萼长宽:' ,sepal_len)
取出所有花的花瓣长度(cm)+花瓣宽度(cm)的数据 1 2 3 4 5 6 7 for item in data: petal_len = np.array(list (len [2 ] for len in data.data)) petal_wid = np.array(list (len [3 ] for len in data.data)) iris_len = (petal_len,petal_wid) print (iris_len)
取出某朵花的四个特征及其类别。 1 print ('四个特征' ,data.data[1 ],data.target[1 ])
将所有花的特征和类别分成三组,每组50个 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 iris_set = [] iris_ver = [] iris_vir = [] for i in range (0 , 150 ): if data.target[i] == 0 : Data = data.data[i].tolist() Data.append('setosa' ) iris_set.append(Data) elif data.target[i] == 1 : Data = data.data[i].tolist() Data.append('versicolor' ) iris_ver.append(Data) else : Data = data.data[i].tolist() Data.append('virginica' ) iris_vir.append(Data) print (iris_set,iris_ver,iris_vir)
生成新的数组,每个元素包含四个特征+类别 1 2 iris_result = np.array([iris_set, iris_ver, iris_vir]) print ("分组:" , iris_result)
计算鸢尾花花瓣长度的最大值,平均值,中值,均方差。 1 2 3 4 5 6 7 petal_length = np.array(list (len [3 ] for len in data.data)) print (petal_length) print ('花瓣长度的最大值' ,np.max (petal_length))print ('平均值:' ,np.mean(petal_length))print ('中值:' ,np.median(petal_length))print ('均方差:' ,np.std(petal_length))
显示鸢尾花某一特征的曲线图,散点图。 1 2 3 4 5 6 iris_feature = data.feature_names,data.data x = np.linspace(0 ,150 ,num = 150 ) plt.plot(x,iris_feature) plt.savefig("特征曲线图.png" ) plt.show()
1 2 3 plt.scatter(x,iris_feature) plt.savefig("特征散点图.png" ) plt.show()
np.random 用 np.random.normal() 产生一个正态分布的随机数组,并显示出来。 1 2 3 4 5 6 7 8 mu = 50 sigma = 0.6 num = 3000 zu = np.random.normal(mu,sigma,num) count,bins,ignored = plt.hist(zu,30 ,normed = True ) plt.plot(bins,1 /(sigma*np.sqrt(2 *np.pi))*np.exp( - (bins-mu)**2 /(2 *sigma*2 )),linewidth=2 ,color='g' ) plt.savefig("np.random.normal().png" ) plt.show()
np.random.randn()产生一个正态分布的随机数组,并显示出来。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ''' np.random.rand(n) 产生标准正态分布, 即均值为0 标准差为1 的高斯分布 同于 np.random.normal(0, 1, n) ''' mu = 100 sigma = 15 num_bins = 50 x = mu + sigma * np.random.randn(500 ) fig, ax = plt.subplots() n, bins, patches = ax.hist(x, num_bins, normed=True ) plt.plot(bins,1 /(sigma*np.sqrt(2 *np.pi))*np.exp( - (bins-mu)**2 /(2 *sigma*2 )),linewidth=2 ,color='r' ) plt.savefig("np.random.randn().png" ) plt.show()
显示鸢尾花花瓣长度的正态分布图,曲线图,散点图 1 2 3 4 5 6 7 8 9 mu = np.mean(petal_length) sigma = np.std(petal_length) num = 500 normal_data = np.random.normal(mu,sigma,num) count,bins,ignored = plt.hist(normal_data,20 ,normed=True ) plt.plot(bins,1 /(sigma*np.sqrt(2 *np.pi))*np.exp( - (bins-mu)**2 /(2 *sigma*2 )),linewidth=2 ,color='b' ) plt.savefig("花瓣长度正态分布图.png" ) plt.show()
1 2 3 4 x = np.linspace(0 ,150 ,num=150 ) plt.plot(x,petal_len) plt.savefig("花瓣长度曲线图.png" ) plt.show()
1 2 3 plt.scatter(x,petal_len,) plt.savefig("花瓣长度散点图.png" ) plt.show()