import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math
transistor_counts=pd.read_csv("transistor_counts.csv")
transistor_counts.columns=['year','mounts']
zuo_integre=np.mat("0.0,0.0;0.0,0.0")
you_integre=np.mat("0.0;0.0")
xp_year=list(transistor_counts['year'])
yp_year=list(transistor_counts['mounts'])
for p in range(len(xp_year)):
xp_new=np.mat("1;%s"%xp_year[p])
zuo_integre=zuo_integre+np.dot(xp_new,xp_new.T)
you_integre=you_integre+np.dot(xp_new,int(math.log(yp_year[p])))
# print(zuo_integre)
# print(you_integre)
w=np.dot(np.linalg.inv(zuo_integre),you_integre)
# xp_year=xp_year.reshape(-1,1)#进行运算的时候应该是以向量的格式进行
yp_fout=list()
for p in range(len(xp_year)):
yp_fout.append(math.exp(w[0]+w[1]*xp_year[p]))
yp_fout=np.array(yp_fout)#### 加深理解!!!!!
#如果希望np.sin(x)函数内部可以处理矩阵或者向量运算,那么x必须是ndarray或者array的变量且shape(n,1)类型的,否则计算机就会出错。
# print(len(xp_year))
# xp_array=np.array(xp_year)
# print(xp_array.shape)
# c=np.sin(5*xp_year)#
plt.scatter(xp_year,yp_year,s=10,c='r',marker='x')
plt.plot(xp_year,yp_fout)
plt.show()