python多元线性回归预测分析:python数据分析之单因素分析
python多元线性回归预测分析:python数据分析之单因素分析from scipy import optimize3import pandas as pd2from pylab import mpl
实现功能:
线性拟合:单因素分析,对散点图进行线性拟合,并放大散点图的局部位置
实现代码:
|
1 |
import pandas as pd |
|
2 |
from pylab import mpl |
|
3 |
from scipy import optimize |
|
4 |
import numpy as np |
|
5 |
import matplotlib.pyplot as plt |
|
7 | |
|
8 |
def f_1(x A B): |
|
9 |
return A*x B |
|
10 | |
|
11 |
def draw_cure(file): |
|
12 |
data1=pd.read_excel(file) |
|
13 |
data1=pd.DataFrame(data1) |
|
14 |
hz=list(data1['患者密度(人/10万人)']) |
|
15 |
rk=list(data1['人口密度(人/平方千米)']) |
|
16 |
hz_gy=[] |
|
17 |
rk_gy=[] |
|
18 | |
|
19 |
for i in hz: |
|
20 |
hz_gy.append((i-min(hz))/(max(hz)-min(hz))) |
|
21 | |
|
22 |
for i in rk: |
|
23 |
rk_gy.append((i-min(rk))/(max(rk)-min(rk))) |
|
24 | |
|
25 |
n=['玄武区' '秦淮区' '建邺区' '鼓楼区' '浦口区' '栖霞区' '雨花台区' '江宁区' '六合区' '溧水区' '高淳区' |
|
26 |
'锡山区' '惠山区' '滨湖区' '梁溪区' '新吴区' '江阴市' '宜兴市' |
|
27 |
'鼓楼区' '云龙区' '贾汪区' '泉山区' '铜山区' '丰县' '沛县' '睢宁县' '新沂市' '邳州市' |
|
28 |
'天宁区' '钟楼区' '新北区' '武进区' '金坛区' '溧阳市' |
|
29 |
'虎丘区' '吴中区' '相城区' '姑苏区' '吴江区' '常熟市' '张家港市' '昆山市' '太仓市' |
|
30 |
'崇川区' '港闸区' '通州区' '如东县' '启东市' '如皋市' '海门市' '海安市' |
|
31 |
'连云区' '海州区' '赣榆区' '东海县' '灌云县' '灌南县' |
|
32 |
'淮安区' '淮阴区' '清江浦区' '洪泽区' '涟水县' '盱眙县' '金湖县' |
|
33 |
'亭湖区' '盐都区' '大丰区' '响水县' '滨海县' '阜宁县' '射阳县' '建湖县' '东台市' |
|
34 |
'广陵区' '邗江区' '江都区' '宝应县' '仪征市' '高邮市' |
|
35 |
'京口区' '润州区' '丹徒区' '丹阳市' '扬中市' '句容市' |
|
36 |
'海陵区' '高港区' '姜堰区' '兴化市' '靖江市' '泰兴市' |
|
37 |
'宿城区' '宿豫区' '沭阳县' '泗阳县' '泗洪县'] |
|
38 | |
|
40 |
mpl.rcParams['font.sans-serif'] = ['FangSong'] |
|
41 |
plt.figure(figsize=(16 8) dpi=98) |
|
42 |
p1 = plt.subplot(121) |
|
43 |
p2 = plt.subplot(122) |
|
44 | |
|
45 |
p1.scatter(rk_gy hz_gy c='r') |
|
46 |
p2.scatter(rk_gy hz_gy c='r') |
|
47 | |
|
48 |
p1.axis([0.0 1.01 0.0 1.01]) |
|
49 |
p1.set_ylabel("患者密度(人/10万人)" fontsize=13) |
|
50 |
p1.set_xlabel("人口密度(人/平方千米)" fontsize=13) |
|
51 |
p1.set_title("人口密度—患者密度相关性" fontsize=13) |
|
52 | |
|
53 |
for i txt in enumerate(n): |
|
54 |
p1.annotate(txt (rk_gy[i] hz_gy[i])) |
|
55 | |
|
56 |
A1 B1 = optimize.curve_fit(f_1 rk_gy hz_gy)[0] |
|
57 |
x1 = np.arange(0 1 0.01) |
|
58 |
y1 = A1*x1 B1 |
|
59 |
p1.plot(x1 y1 "blue" label='一次拟合直线') |
|
60 |
x2 = np.arange(0 1 0.01) |
|
61 |
y2 = x2 |
|
62 |
p1.plot(x2 y2 'g--' label='y=x') |
|
63 |
p1.legend(loc='upper left' fontsize=13) |
|
64 | |
|
65 |
# # plot the box |
|
66 |
tx0 = 0;tx1 = 0.1;ty0 = 0;ty1 = 0.2 |
|
67 |
sx = [tx0 tx1 tx1 tx0 tx0] |
|
68 |
sy = [ty0 ty0 ty1 ty1 ty0] |
|
69 |
p1.plot(sx sy "purple") |
|
70 | |
|
71 |
p2.axis([0 0.1 0 0.2]) |
|
72 |
p2.set_ylabel("患者密度(人/10万人)" fontsize=13) |
|
73 |
p2.set_xlabel("人口密度(人/平方千米)" fontsize=13) |
|
74 |
p2.set_title("人口密度—患者密度相关性" fontsize=13) |
|
75 | |
|
76 |
for i txt in enumerate(n): |
|
77 |
p2.annotate(txt (rk_gy[i] hz_gy[i])) |
|
78 | |
|
79 |
p2.plot(x1 y1 "blue" label='一次拟合直线') |
|
80 |
p2.plot(x2 y2 'g--' label='y=x') |
|
81 |
p2.legend(loc='upper left' fontsize=13) |
|
82 | |
|
83 |
plt.show() |
|
84 | |
|
85 |
if __name__ == '__main__': |
|
86 |
draw_cure("F:\医学大数据课题\论文终稿修改\scientific report\返修\市区县相关分析 _2231.xls") |
实现效果:

关注V数据杂坛学习更多!




