In [1]:
import sys
sys.path.append('../src')
import Pyfuzzy as Fuzz
import numpy as np
import pylab as plt
import pandas as pd
%matplotlib inline
In [2]:
f1=Fuzz.read_model('zr_simple.fis') # 27 rules, 3*3*3 membership functions (soil, T, P))
# f1=Fuzz.read_model('zr_simple334.fis') # 36 rules, 3*4*3 membership functions
# f1=Fuzz.read_model('zr_simple344.fis') # 48 rules, 3*4*4 membership functions
In [3]:
f1.show_model(tag1=0,default1=60)
('a0:', 50.0, 'b0:', 68.0)
('a1:', 50.0, 'b1:', 380.0)
('a:', 50.0, 'b:', 380.0, 'c:', 60.0)
Out[3]:
True
In [4]:
f1.show_model(tag1=1,default1=55)
('a0:', 20.0, 'b0:', 60.0)
('a1:', 50.0, 'b1:', 380.0)
('a:', 50.0, 'b:', 380.0, 'c:', 55.0)
Out[4]:
True
In [5]:
f1.show_model(tag1=2,default1=150)
('a0:', 20.0, 'b0:', 60.0)
('a1:', 50.0, 'b1:', 68.0)
('a:', 50.0, 'b:', 68.0, 'c:', 150.0)
Out[5]:
True
In [6]:
ZR=pd.ExcelFile('ZR_Daten_DDR_1976_1990.xlsx')
df=ZR.parse("Tabelle1")
df[(df['ERTRAG (dt/ha)']<600) & (df['ERTRAG (dt/ha)']>100)] # exclude outliers
Out[6]:
FRUCHTART
ERNTEJAHR
NATUERLICHE_STANDORTEINHEIT
Mittlere Ackerzahl
TAG_AUSSAAT
TAG_AUFGANG
Tage Aussaat bis Aufgang
N_DUENGUNG
TAG_ERNTEABSCHLUSS
ERTRAG (dt/ha)
...
NI_4
NI_5
NI_6
NI_7
NI_8
NI_9
NI_10
NI_11
NI_12
NI_4-10
0
Zuckerrüben zur Zuckergewinnun
1976
D5/N
48
116
134
18
200
311
275.0
...
19.3
61.7
12.5
30.2
9.2
37.6
62.3
29.9
28.4
33.257143
1
Zuckerrüben zur Zuckergewinnun
1976
D5/N
48
112
132
20
250
308
342.0
...
19.3
61.7
12.5
30.2
9.2
37.6
62.3
29.9
28.4
33.257143
2
Zuckerrüben zur Zuckergewinnun
1976
D4/N
36
118
137
19
185
306
279.0
...
19.3
61.7
12.5
30.2
9.2
37.6
62.3
29.9
28.4
33.257143
3
Zuckerrüben zur Zuckergewinnun
1977
D5/N
48
119
134
15
233
308
320.0
...
71.2
27.4
29.9
55.9
92.2
30.7
22.9
101.6
31.7
47.171429
4
Zuckerrüben zur Zuckergewinnun
1977
D4/N
36
128
142
14
185
301
285.0
...
71.2
27.4
29.9
55.9
92.2
30.7
22.9
101.6
31.7
47.171429
5
Zuckerrüben zur Zuckergewinnun
1977
D4/N
36
134
144
10
262
305
325.0
...
71.2
27.4
29.9
55.9
92.2
30.7
22.9
101.6
31.7
47.171429
6
Zuckerrüben zur Zuckergewinnun
1978
D5/N
48
110
136
26
240
307
264.0
...
15.3
21.5
88.4
57.3
55.8
115.8
38.5
23.4
79.8
56.085714
7
Zuckerrüben zur Zuckergewinnun
1978
D5/N
48
105
135
30
240
293
320.0
...
15.3
21.5
88.4
57.3
55.8
115.8
38.5
23.4
79.8
56.085714
8
Zuckerrüben zur Zuckergewinnun
1978
D5/N
48
118
137
19
220
306
259.0
...
15.3
21.5
88.4
57.3
55.8
115.8
38.5
23.4
79.8
56.085714
9
Zuckerrüben zur Zuckergewinnun
1979
D5/N
48
134
140
6
257
283
247.0
...
32.0
30.3
38.3
84.6
108.8
33.9
20.5
42.1
67.4
49.771429
10
Zuckerrüben zur Zuckergewinnun
1979
D4/N
36
110
128
18
226
319
286.0
...
32.0
30.3
38.3
84.6
108.8
33.9
20.5
42.1
67.4
49.771429
11
Zuckerrüben zur Zuckergewinnun
1979
D4/N
36
131
139
8
322
298
302.0
...
32.0
30.3
38.3
84.6
108.8
33.9
20.5
42.1
67.4
49.771429
12
Zuckerrüben zur Zuckergewinnun
1980
D5/N
48
125
139
14
150
287
280.0
...
44.0
26.1
99.5
85.2
88.6
49.1
85.2
45.6
35.4
68.242857
13
Zuckerrüben zur Zuckergewinnun
1980
D4/N
36
113
135
22
159
314
240.0
...
44.0
26.1
99.5
85.2
88.6
49.1
85.2
45.6
35.4
68.242857
14
Zuckerrüben zur Zuckergewinnun
1980
D5/N
48
126
138
12
235
340
180.0
...
44.0
26.1
99.5
85.2
88.6
49.1
85.2
45.6
35.4
68.242857
15
Zuckerrüben zur Zuckergewinnun
1981
D5/N
48
105
129
24
223
300
335.0
...
17.2
72.9
81.7
96.4
53.2
51.5
92.3
47.0
33.4
66.457143
16
Zuckerrüben zur Zuckergewinnun
1981
D4/N
36
114
132
18
232
318
303.7
...
17.2
72.9
81.7
96.4
53.2
51.5
92.3
47.0
33.4
66.457143
17
Zuckerrüben zur Zuckergewinnun
1981
D5/N
48
114
131
17
218
289
335.0
...
17.2
72.9
81.7
96.4
53.2
51.5
92.3
47.0
33.4
66.457143
18
Zuckerrüben zur Zuckergewinnun
1982
D5/N
48
109
129
20
180
274
225.0
...
18.9
57.1
43.6
26.6
67.4
14.8
42.2
28.9
39.3
38.657143
19
Zuckerrüben zur Zuckergewinnun
1982
D4/N
36
105
129
24
277
301
350.0
...
18.9
57.1
43.6
26.6
67.4
14.8
42.2
28.9
39.3
38.657143
20
Zuckerrüben zur Zuckergewinnun
1982
D5/N
48
106
129
23
226
293
230.0
...
18.9
57.1
43.6
26.6
67.4
14.8
42.2
28.9
39.3
38.657143
21
Zuckerrüben zur Zuckergewinnun
1983
D4/N
36
143
154
11
121
293
228.0
...
97.0
114.5
60.0
4.5
9.6
43.1
70.0
44.3
52.0
56.957143
22
Zuckerrüben zur Zuckergewinnun
1983
D5/N
48
127
138
11
177
302
194.1
...
97.0
114.5
60.0
4.5
9.6
43.1
70.0
44.3
52.0
56.957143
23
Zuckerrüben zur Zuckergewinnun
1983
D5/N
48
159
171
12
100
297
108.4
...
97.0
114.5
60.0
4.5
9.6
43.1
70.0
44.3
52.0
56.957143
24
Zuckerrüben zur Zuckergewinnun
1984
D4/N
36
103
123
20
150
282
350.0
...
23.5
35.1
136.1
71.7
20.8
61.4
60.7
46.4
45.1
58.471429
25
Zuckerrüben zur Zuckergewinnun
1984
D5/N
48
105
125
20
182
298
265.9
...
23.5
35.1
136.1
71.7
20.8
61.4
60.7
46.4
45.1
58.471429
26
Zuckerrüben zur Zuckergewinnun
1984
D5/N
48
105
125
20
194
326
280.0
...
23.5
35.1
136.1
71.7
20.8
61.4
60.7
46.4
45.1
58.471429
27
Zuckerrüben zur Zuckergewinnun
1985
D5/N
48
128
140
12
97
298
380.0
...
54.5
24.0
104.7
49.3
47.5
46.5
12.7
43.9
84.7
48.457143
28
Zuckerrüben zur Zuckergewinnun
1985
D5/N
48
129
141
12
97
298
325.0
...
54.5
24.0
104.7
49.3
47.5
46.5
12.7
43.9
84.7
48.457143
29
Zuckerrüben zur Zuckergewinnun
1985
D5/N
48
127
140
13
174
304
330.0
...
54.5
24.0
104.7
49.3
47.5
46.5
12.7
43.9
84.7
48.457143
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
4519
Zuckerrüben zur Zuckergewinnun
1988
Lö5
51
107
125
18
195
294
276.0
...
21.4
37.4
58.4
71.1
52.1
55.0
25.0
83.7
121.3
45.771429
4520
Zuckerrüben zur Zuckergewinnun
1988
Lö6
46
106
126
20
191
306
285.0
...
21.4
37.4
58.4
71.1
52.1
55.0
25.0
83.7
121.3
45.771429
4521
Zuckerrüben zur Zuckergewinnun
1988
Lö6
46
106
123
17
200
295
279.0
...
21.4
37.4
58.4
71.1
52.1
55.0
25.0
83.7
121.3
45.771429
4522
Zuckerrüben zur Zuckergewinnun
1988
Lö4
56
98
120
22
200
293
280.0
...
21.4
37.4
58.4
71.1
52.1
55.0
25.0
83.7
121.3
45.771429
4523
Zuckerrüben zur Zuckergewinnun
1989
Lö5
51
89
112
23
170
319
400.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4524
Zuckerrüben zur Zuckergewinnun
1989
Lö6
46
95
116
21
170
309
386.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4525
Zuckerrüben zur Zuckergewinnun
1976
V6
43
103
129
26
277
322
256.0
...
21.9
46.0
52.3
36.0
22.9
36.7
29.8
52.2
23.8
35.085714
4526
Zuckerrüben zur Zuckergewinnun
1976
V6
43
107
130
23
210
319
130.0
...
21.9
46.0
52.3
36.0
22.9
36.7
29.8
52.2
23.8
35.085714
4527
Zuckerrüben zur Zuckergewinnun
1977
Lö5
51
119
131
12
170
320
380.0
...
68.6
36.6
170.7
102.7
131.9
77.6
35.8
97.7
29.8
89.128571
4528
Zuckerrüben zur Zuckergewinnun
1977
V6
43
119
131
12
124
316
300.0
...
68.6
36.6
170.7
102.7
131.9
77.6
35.8
97.7
29.8
89.128571
4529
Zuckerrüben zur Zuckergewinnun
1978
V6
43
112
130
18
114
310
300.0
...
22.8
165.0
111.0
65.6
136.5
92.2
64.0
15.9
63.2
93.871429
4530
Zuckerrüben zur Zuckergewinnun
1978
Lö6
46
107
128
21
84
321
310.0
...
22.8
165.0
111.0
65.6
136.5
92.2
64.0
15.9
63.2
93.871429
4531
Zuckerrüben zur Zuckergewinnun
1979
Lö5
51
121
129
8
183
288
315.0
...
50.2
28.9
81.2
76.9
38.9
106.4
15.7
53.7
75.8
56.885714
4532
Zuckerrüben zur Zuckergewinnun
1981
V6
43
100
117
17
105
331
350.0
...
56.2
86.1
44.5
133.4
66.8
75.1
122.5
91.7
59.2
83.514286
4533
Zuckerrüben zur Zuckergewinnun
1981
V6
43
101
117
16
100
309
400.0
...
56.2
86.1
44.5
133.4
66.8
75.1
122.5
91.7
59.2
83.514286
4534
Zuckerrüben zur Zuckergewinnun
1982
V6
43
105
130
25
219
294
260.0
...
35.8
87.2
73.3
46.5
63.9
7.3
21.8
19.5
47.8
47.971429
4535
Zuckerrüben zur Zuckergewinnun
1983
Lö6
46
120
130
10
220
293
355.0
...
96.5
56.0
72.0
25.1
198.6
34.2
11.1
35.0
26.1
70.500000
4536
Zuckerrüben zur Zuckergewinnun
1983
V6
43
117
130
13
220
303
300.0
...
96.5
56.0
72.0
25.1
198.6
34.2
11.1
35.0
26.1
70.500000
4537
Zuckerrüben zur Zuckergewinnun
1987
Lö6
46
116
131
15
185
309
396.0
...
73.1
83.4
96.1
79.6
63.9
76.2
12.7
61.7
71.9
69.285714
4539
Zuckerrüben zur Zuckergewinnun
1977
V6
43
128
141
13
115
316
540.0
...
68.6
36.6
170.7
102.7
131.9
77.6
35.8
97.7
29.8
89.128571
4540
Zuckerrüben zur Zuckergewinnun
1978
Lö5
51
118
135
17
180
319
247.0
...
22.8
165.0
111.0
65.6
136.5
92.2
64.0
15.9
63.2
93.871429
4541
Zuckerrüben zur Zuckergewinnun
1979
Lö5
51
124
136
12
190
334
320.0
...
50.2
28.9
81.2
76.9
38.9
106.4
15.7
53.7
75.8
56.885714
4542
Zuckerrüben zur Zuckergewinnun
1979
V5
34
125
136
11
190
324
580.0
...
50.2
28.9
81.2
76.9
38.9
106.4
15.7
53.7
75.8
56.885714
4544
Zuckerrüben zur Zuckergewinnun
1980
Lö5
51
134
144
10
200
332
290.0
...
92.8
21.0
86.0
166.4
73.8
95.1
84.3
38.8
26.8
88.485714
4545
Zuckerrüben zur Zuckergewinnun
1980
Lö5
51
134
144
10
200
332
290.0
...
92.8
21.0
86.0
166.4
73.8
95.1
84.3
38.8
26.8
88.485714
4546
Zuckerrüben zur Zuckergewinnun
1989
Lö5
51
94
110
16
180
307
395.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4547
Zuckerrüben zur Zuckergewinnun
1989
Lö5
51
94
110
16
180
307
395.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4548
Zuckerrüben zur Zuckergewinnun
1989
V6
43
81
114
33
230
299
345.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4549
Zuckerrüben zur Zuckergewinnun
1989
V6
43
81
114
33
230
299
345.0
...
66.2
31.8
48.7
72.6
73.2
50.3
32.8
79.5
40.9
53.657143
4550
Zuckerrüben zur Zuckergewinnun
1978
V6
43
118
135
17
180
318
247.0
...
22.8
165.0
111.0
65.6
136.5
92.2
64.0
15.9
63.2
93.871429
4474 rows × 36 columns
In [7]:
df['ERTRAG (dt/ha)']-=(2.867*(df['ERNTEJAHR']-1976)) # 2.867 with range correction
#df['ERTRAG (dt/ha)']-=(1.96*(df['ERNTEJAHR']-1976)) # 1.96 without range correction
In [8]:
# df['ERTRAG (dt/ha)']-=(0.752*(df['TAG_AUSSAAT']-75)) # remove the sowing date
In [9]:
Y=np.array(df['ERTRAG (dt/ha)'])
print np.mean(Y), np.std(Y)
286.104324105 92.0581543132
In [10]:
X=np.array([df['Mittlere Ackerzahl'],df['LT_6']+df['LT_7']+df['LT_8']+df['LT_9'],df['NI_6']+df['NI_7']+df['NI_8']+df['NI_9']])
In [11]:
X=X.T
print X.shape
(4551, 3)
In [12]:
index=np.arange(X.shape[0])
s=np.random.permutation(index)
sample=1000
TX=X[s[0:sample],:]
TY=Y[s[0:sample]]
print TX[0:10,:]
print TY[0:10]
print TX.shape
[[ 48. 65. 205.5]
[ 59. 63.5 198.1]
[ 47. 65.3 226.5]
[ 51. 71.8 205. ]
[ 51. 70.7 225.5]
[ 36. 60.1 301.6]
[ 40. 67.5 212.9]
[ 75. 71.1 112. ]
[ 48. 57.8 273.1]
[ 48. 62. 207.9]]
[ 185.596 341.33 371.399 229.931 269.931 281.463 307.729 398.798
182.763 241.33 ]
(1000, 3)
In [13]:
f1.set_trainX(TX)
f1.set_trainY(TY)
In [14]:
print f1.get_rmse(), f1.get_mae()
105.163314819 81.7564849854
In [15]:
for i in range(10):
print TX[i,:], TY[i],f1.calc3(TX[i,0],TX[i,1],TX[i,2])
[ 48. 65. 205.5] 185.596 272.356445312
[ 59. 63.5 198.1] 341.33 352.639312744
[ 47. 65.3 226.5] 371.399 266.078857422
[ 51. 71.8 205. ] 229.931 257.24331665
[ 51. 70.7 225.5] 269.931 267.067199707
[ 36. 60.1 301.6] 281.463 340.782867432
[ 40. 67.5 212.9] 307.729 208.083587646
[ 75. 71.1 112. ] 398.798 241.333328247
[ 48. 57.8 273.1] 182.763 393.210083008
[ 48. 62. 207.9] 241.33 319.429656982
In [16]:
Fuzz.start_training(f1)
('minout:', [-100.0, 0.0, 100.0, 200.0, 300.0, 400.0, 500.0])
('maxout:', [100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0])
('start:', [0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0])
*************Result of Optimization*****************
('max:', 0.8820381164550781)
('parameter:', array([ 0. , 166.66666667, 266.66666667, 300. ,
333.33333333, 433.33333333, 533.33333333]))
In [17]:
for i in range(10):
print TX[i,:], TY[i],f1.calc3(TX[i,0],TX[i,1],TX[i,2])
[ 48. 65. 205.5] 185.596 291.189727783
[ 59. 63.5 198.1] 341.33 317.52166748
[ 47. 65.3 226.5] 371.399 290.390197754
[ 51. 71.8 205. ] 229.931 285.747741699
[ 51. 70.7 225.5] 269.931 289.022399902
[ 36. 60.1 301.6] 281.463 313.511505127
[ 40. 67.5 212.9] 307.729 269.361175537
[ 75. 71.1 112. ] 398.798 280.44442749
[ 48. 57.8 273.1] 182.763 355.124267578
[ 48. 62. 207.9] 241.33 307.481262207
In [18]:
print f1.get_rmse(), f1.get_mae()
89.5490646362 66.2239379883
In [19]:
f1.store_model('zr_simple_t.fis')
Out[19]:
True
In [ ]:
Content source: Ralf3/samt2
Similar notebooks: