In [2]:
import os
import requests
DATASET = (
"https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data",
"https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.names"
)
def download_data(path='data', urls=DATASET):
if not os.path.exists(path):
os.mkdir(path)
for url in urls:
response = requests.get(url)
name = os.path.basename(url)
with open(os.path.join(path, name), 'wb') as f:
f.write(response.content)
download_data()
In [5]:
import pandas as pd
columns = [
"sex",
"length",
"diameter",
"height",
"wweight",
"shuweight",
"vweight",
"sheweight",
"rings"
]
data = pd.read_csv('data/abalone.data', names=columns)
In [7]:
data.head(10)
Out[7]:
sex
length
diameter
height
wweight
shuweight
vweight
sheweight
rings
0
M
0.455
0.365
0.095
0.5140
0.2245
0.1010
0.150
15
1
M
0.350
0.265
0.090
0.2255
0.0995
0.0485
0.070
7
2
F
0.530
0.420
0.135
0.6770
0.2565
0.1415
0.210
9
3
M
0.440
0.365
0.125
0.5160
0.2155
0.1140
0.155
10
4
I
0.330
0.255
0.080
0.2050
0.0895
0.0395
0.055
7
5
I
0.425
0.300
0.095
0.3515
0.1410
0.0775
0.120
8
6
F
0.530
0.415
0.150
0.7775
0.2370
0.1415
0.330
20
7
F
0.545
0.425
0.125
0.7680
0.2940
0.1495
0.260
16
8
M
0.475
0.370
0.125
0.5095
0.2165
0.1125
0.165
9
9
F
0.550
0.440
0.150
0.8945
0.3145
0.1510
0.320
19
In [8]:
data.describe()
Out[8]:
length
diameter
height
wweight
shuweight
vweight
sheweight
rings
count
4177.000000
4177.000000
4177.000000
4177.000000
4177.000000
4177.000000
4177.000000
4177.000000
mean
0.523992
0.407881
0.139516
0.828742
0.359367
0.180594
0.238831
9.933684
std
0.120093
0.099240
0.041827
0.490389
0.221963
0.109614
0.139203
3.224169
min
0.075000
0.055000
0.000000
0.002000
0.001000
0.000500
0.001500
1.000000
25%
0.450000
0.350000
0.115000
0.441500
0.186000
0.093500
0.130000
8.000000
50%
0.545000
0.425000
0.140000
0.799500
0.336000
0.171000
0.234000
9.000000
75%
0.615000
0.480000
0.165000
1.153000
0.502000
0.253000
0.329000
11.000000
max
0.815000
0.650000
1.130000
2.825500
1.488000
0.760000
1.005000
29.000000
In [9]:
y = data["rings"]
In [10]:
y
Out[10]:
0 15
1 7
2 9
3 10
4 7
5 8
6 20
7 16
8 9
9 19
10 14
11 10
12 11
13 10
14 10
15 12
16 7
17 10
18 7
19 9
20 11
21 10
22 12
23 9
24 10
25 11
26 11
27 12
28 15
29 11
..
4147 11
4148 11
4149 6
4150 7
4151 6
4152 7
4153 8
4154 6
4155 6
4156 8
4157 8
4158 8
4159 9
4160 11
4161 11
4162 8
4163 7
4164 7
4165 7
4166 10
4167 9
4168 8
4169 10
4170 10
4171 8
4172 11
4173 10
4174 9
4175 10
4176 12
Name: rings, Length: 4177, dtype: int64
In [15]:
X = data.iloc[:,1:-1]
X
Out[15]:
length
diameter
height
wweight
shuweight
vweight
sheweight
0
0.455
0.365
0.095
0.5140
0.2245
0.1010
0.1500
1
0.350
0.265
0.090
0.2255
0.0995
0.0485
0.0700
2
0.530
0.420
0.135
0.6770
0.2565
0.1415
0.2100
3
0.440
0.365
0.125
0.5160
0.2155
0.1140
0.1550
4
0.330
0.255
0.080
0.2050
0.0895
0.0395
0.0550
5
0.425
0.300
0.095
0.3515
0.1410
0.0775
0.1200
6
0.530
0.415
0.150
0.7775
0.2370
0.1415
0.3300
7
0.545
0.425
0.125
0.7680
0.2940
0.1495
0.2600
8
0.475
0.370
0.125
0.5095
0.2165
0.1125
0.1650
9
0.550
0.440
0.150
0.8945
0.3145
0.1510
0.3200
10
0.525
0.380
0.140
0.6065
0.1940
0.1475
0.2100
11
0.430
0.350
0.110
0.4060
0.1675
0.0810
0.1350
12
0.490
0.380
0.135
0.5415
0.2175
0.0950
0.1900
13
0.535
0.405
0.145
0.6845
0.2725
0.1710
0.2050
14
0.470
0.355
0.100
0.4755
0.1675
0.0805
0.1850
15
0.500
0.400
0.130
0.6645
0.2580
0.1330
0.2400
16
0.355
0.280
0.085
0.2905
0.0950
0.0395
0.1150
17
0.440
0.340
0.100
0.4510
0.1880
0.0870
0.1300
18
0.365
0.295
0.080
0.2555
0.0970
0.0430
0.1000
19
0.450
0.320
0.100
0.3810
0.1705
0.0750
0.1150
20
0.355
0.280
0.095
0.2455
0.0955
0.0620
0.0750
21
0.380
0.275
0.100
0.2255
0.0800
0.0490
0.0850
22
0.565
0.440
0.155
0.9395
0.4275
0.2140
0.2700
23
0.550
0.415
0.135
0.7635
0.3180
0.2100
0.2000
24
0.615
0.480
0.165
1.1615
0.5130
0.3010
0.3050
25
0.560
0.440
0.140
0.9285
0.3825
0.1880
0.3000
26
0.580
0.450
0.185
0.9955
0.3945
0.2720
0.2850
27
0.590
0.445
0.140
0.9310
0.3560
0.2340
0.2800
28
0.605
0.475
0.180
0.9365
0.3940
0.2190
0.2950
29
0.575
0.425
0.140
0.8635
0.3930
0.2270
0.2000
...
...
...
...
...
...
...
...
4147
0.695
0.550
0.195
1.6645
0.7270
0.3600
0.4450
4148
0.770
0.605
0.175
2.0505
0.8005
0.5260
0.3550
4149
0.280
0.215
0.070
0.1240
0.0630
0.0215
0.0300
4150
0.330
0.230
0.080
0.1400
0.0565
0.0365
0.0460
4151
0.350
0.250
0.075
0.1695
0.0835
0.0355
0.0410
4152
0.370
0.280
0.090
0.2180
0.0995
0.0545
0.0615
4153
0.430
0.315
0.115
0.3840
0.1885
0.0715
0.1100
4154
0.435
0.330
0.095
0.3930
0.2190
0.0750
0.0885
4155
0.440
0.350
0.110
0.3805
0.1575
0.0895
0.1150
4156
0.475
0.370
0.110
0.4895
0.2185
0.1070
0.1460
4157
0.475
0.360
0.140
0.5135
0.2410
0.1045
0.1550
4158
0.480
0.355
0.110
0.4495
0.2010
0.0890
0.1400
4159
0.560
0.440
0.135
0.8025
0.3500
0.1615
0.2590
4160
0.585
0.475
0.165
1.0530
0.4580
0.2170
0.3000
4161
0.585
0.455
0.170
0.9945
0.4255
0.2630
0.2845
4162
0.385
0.255
0.100
0.3175
0.1370
0.0680
0.0920
4163
0.390
0.310
0.085
0.3440
0.1810
0.0695
0.0790
4164
0.390
0.290
0.100
0.2845
0.1255
0.0635
0.0810
4165
0.405
0.300
0.085
0.3035
0.1500
0.0505
0.0880
4166
0.475
0.365
0.115
0.4990
0.2320
0.0885
0.1560
4167
0.500
0.380
0.125
0.5770
0.2690
0.1265
0.1535
4168
0.515
0.400
0.125
0.6150
0.2865
0.1230
0.1765
4169
0.520
0.385
0.165
0.7910
0.3750
0.1800
0.1815
4170
0.550
0.430
0.130
0.8395
0.3155
0.1955
0.2405
4171
0.560
0.430
0.155
0.8675
0.4000
0.1720
0.2290
4172
0.565
0.450
0.165
0.8870
0.3700
0.2390
0.2490
4173
0.590
0.440
0.135
0.9660
0.4390
0.2145
0.2605
4174
0.600
0.475
0.205
1.1760
0.5255
0.2875
0.3080
4175
0.625
0.485
0.150
1.0945
0.5310
0.2610
0.2960
4176
0.710
0.555
0.195
1.9485
0.9455
0.3765
0.4950
4177 rows × 7 columns
In [18]:
from sklearn.ensemble import RandomForestRegressor as rfr
estimator = rfr(n_estimators=7)
estimator.fit(X,y)
Out[18]:
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=7, n_jobs=1,
oob_score=False, random_state=None, verbose=0, warm_start=False)
In [19]:
y_hat = estimator.predict(X)
print(y_hat)
[15. 6.85714286 8.85714286 ... 10.71428571 10.
12. ]
In [ ]:
Content source: georgetown-analytics/machine-learning
Similar notebooks: