转眼已经到了第四周了! 除了第一周提前交了作业,其它的都是在每周的周末写好了再发推送。这个作业,交起来也是越来越难,越来越吃力。毕竟机器学习这些东西以及统计学的一些理论知识,我都不会。机器学习是没学过,统计学的基本已经忘光了。每次的作业都是边查边写,对自己是挑战,希望一直坚持下去,能有提高!
ok,既然是实践,就直接上代码吧!
'''
Created on 2019年8月10日
@author: uYaoQi
'''
from scipy import stats as st
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
#防止乱码
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#读入数据,并设置表头
#pandas支持网络路径
data = data = pd.read_csv('http://jse.amstat.org/datasets/normtemp.dat.txt',sep='\s+',header=None,names='Body temperature;Gender;Heart rate'.split(';'))
#首先对数据进行一下检验看看是否符合正态分布
print(st.shapiro(data['Body temperature']))
#output:(0.9865769743919373, 0.2331680953502655)
#看这个输出结果,是符合正态分布的,那接下来就开始绘图了
#绘制正态分布图形
x = data['Body temperature']
#这里进行了一个排序
x = x.sort_values()
#求出相关参数
loc,scale = st.norm.fit(x)
plt.plot(x, st.norm.pdf(x,loc,scale),'b-',label = 'norm')
plt.title(u'体温正态分布图')
plt.show()
#验证一下温度与心率的相关性
print(data['Body temperature'].corr(data['Heart rate']))
#output:0.25365640272076434
#来个回归?看下是不是跟说明中的一样
r = st.linregress(data['Body temperature'],data['Heart rate'])
print(r.slope)
#output:2.443238038611885