机器学习之--数据构造,函数图显示

mport numpy as np       #数据包
import scipy
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot  as plt        #画图

# # 1.  数据的形成
x = np.arange(0,51,10).reshape((-1,1))
#   b
# [[ 0]
#  [10]
#  [20]
#  [30]
#  [40]
#  [50]]

a =np.arange(0,51,10).reshape((-1,1))+ np.arange(0,5,1)
#           a
# [[ 0  1  2  3  4]
#  [10 11 12 13 14]
#  [20 21 22 23 24]
#  [30 31 32 33 34]
#  [40 41 42 43 44]
#  [50 51 52 53 54]]

c = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
#       c
# [[ 1  2  3]
#  [ 4  5  6]
#  [ 7  8  9]
#  [10 11 12]]
c.shape = 2,-1
#           c
# [[ 1  2  3  4  5  6]
#  [ 7  8  9 10 11 12]]
d = c.reshape((3,-1))
#         d
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

e = np.array([[1,2,3],[4,5,6],[7,8,9],[10.5,11,12]],dtype=np.float)
#           e
# [[ 1.   2.   3. ]
#  [ 4.   5.   6. ]
#  [ 7.   8.   9. ]
#  [10.5 11.  12. ]]
f = e.astype(np.int)
#       f
# [[ 1  2  3]
#  [ 4  5  6]
#  [ 7  8  9]
#  [10 11 12]]

# #linspace函数通过指定起始值,终止值和元素个数来创建数组,区别:arange最后一个参数是步长,这个是个数
a = np.linspace(0,10,15)            #等差数列
#                                       a
# [ 0.          0.71428571  1.42857143  2.14285714  2.85714286  3.57142857
#   4.28571429  5.          5.71428571  6.42857143  7.14285714  7.85714286
#   8.57142857  9.28571429 10.        ]
#                                   len(a) = 15
b = np.linspace(0,10,10,endpoint=False)         #endpoint 为False时不包含终止值
#               b
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
# #logspace 可创建等比数列
#下面函数创造的是base = 10(10进制)起始值是10^0,终止值10^2,个数为4的等比数列
a = np.logspace(0,2,4)
#                           a
# [  1.           4.64158883  21.5443469  100.        ]
# #base = 2  则是二进制的数据  起始值2^0,终止值2^5,个数为6
b = np.logspace(0,5,6,base=2)
#              b
# [ 1.  2.  4.  8. 16. 32.]

# # 使用frombuffer,fromstring,fromfile等函数可以从字节序列创建数组
s = 'abcd'
# g = np.fromstring(s,dtype = np.int8)
#          g
# [ 97  98  99 100]

# #
a = np.array([1,3,5,7,9,11])
b = np.array([1,3,5])
#     a[b]
# [ 3  7 11]
# # np.random.rand()    取[0,1)中均匀分布的随机数
a = np.random.rand(12)
#                                   a
# [0.8521443  0.59647865 0.80059422 0.93992606 0.37162934 0.37548125
#  0.40950715 0.40181645 0.72717888 0.25377955 0.38971442 0.98884064]
#                                   a>0.5
# [ True  True  True  True False False False False  True False False  True]
#                                   a[a>0.5]
# [0.8521443  0.59647865 0.80059422 0.93992606 0.72717888 0.98884064]

a = np.arange(0,51,10)          #行向量
#           a                       #   a+[1,3,5,7,9,10]
# [ 0 10 20 30 40 50]               # [ 1 13 25 37 49 60]
b = a.reshape((-1,1))           #转化成1列的  相当于转化成了列向量
#   b                                      b+[1,3,5,7,9,10]
# [[ 0]                                 [[ 1  3  5  7  9 10]
#  [10]                                  [11 13 15 17 19 20]
#  [20]                                  [21 23 25 27 29 30]
#  [30]                                  [31 33 35 37 39 40]
#  [40]                                  [41 43 45 47 49 50]
#  [50]]                                 [51 53 55 57 59 60]]

# # 二维数组切片
a = np.arange(0,50,10).reshape((-1,1)) + np.arange(0,5,1)
#           a                 a[(0,1,2),2:]         a[(1,2,3),(0,1,2)]
# [[ 0  1  2  3  4]          [[ 2  3  4]               [10 21 32]
#  [10 11 12 13 14]           [12 13 14]
#  [20 21 22 23 24]           [22 23 24]]
#  [30 31 32 33 34]
#  [40 41 42 43 44]]

# #绘图
# 绘制正态分布概率密度函数
# E = 0           #均值
# q = 1           #标准差
# x = np.linspace(E - 3 * q, E + 3 * q, 55)
# y = np.exp(- (x - E) ** 2 / (2 * q ** 2)) / (q * np.sqrt(np.pi))
# y2 = 0.1 * x + 0.2
# print(x)
# print(y)
# print(y.shape)
# plot1 = plt.plot(x,y,'r-',x,y,'go',label = 'myline1',linewidth = 1, markersize = 2)       #'r-'是red的线,'go'是指green的圈(点)
# plot2 = plt.plot(x,y2,'y-',x,y2,'bo',label = 'myline2',linewidth = 1, markersize = 2)
# plt.legend(loc = 'upper right')                       #将label显示在右上角'upper right'
#
# plt.grid(True)              #虚线方格
# mpl.rcParams['font.sans-serif'] = [u'SimHei']           #FangSong/黑体
# mpl.rcParams['axes.unicode_minus'] = False              #s上面加下面为False就可以显示中文标题了
# plt.title(u'Guess高斯分布')             #标题
# plt.savefig('1.png')                    #保存图片
# plt.show()

              图1
# # 均匀分布
# y = np.random.rand(10000)
# x = np.arange(len(y))
# print(y)
# print(x)
# plt.grid()
# plt.hist(y,30,color = 'r', alpha = 0.7)   #柱形图 1-2
# plt.savefig('1-2.png')

               图1-2
#
plt.plot(x,y,'r-',label = '均匀') # 1-3 # plt.savefig('1-3.png')

# plt.show()

              图1-3
# mu = 2
# sigma = 3
# data = mu + sigma * np.random.randn(1000)           #直接生成高斯分布的1000个随机值
# # print(data)
# plt.grid(True)
# h = plt.hist(data,30,normed=1,color='yellow')                  # x轴分为30份做直方图
# # print(h[1])
# # print(h[0])
# x = h[1]
# y = stats.norm.pdf(x,loc = mu,scale = sigma)
# plt.plot(x,y,'r--',x,y,'bo',linewidth = 1,markersize = 2)
# # plt.savefig('1-4.png')
# plt.show()

                    图1-4

# # 利用 scipy 中的 stats.norm.pdf 函数画高斯分布函数                1-5
# E = 0
# q = 1
# x = np.linspace(E - 3 * q,E + 3 * q,60)
#
# y = stats.norm.pdf(x,0,1)
# plt.grid()
# plt.plot(x,y,'r-')
# plt.savefig('1-5')
# plt.show()

                      图1-5

 

 

 

posted @ 2019-03-26 13:07  山…隹  阅读(183)  评论(0编辑  收藏  举报