Я новичок ie в ноутбуке Jupyter (и python). Это пример набора данных, который у меня есть:
Time Source Destination Protocol Source port Dest port User-Agent Accept Encoding Length Host Full request URI Request Method
04:29:02 172.31.64.26 23.219.88.136 HTTP 49454.0 80.0 Microsoft BITS/7.8 identity 333 img-s-msn-com.akamaized.net http://img-s-msn-com.akamaized.net/tenant/amp/... GET
04:29:04 172.31.64.26 23.219.88.136 HTTP 49454.0 80.0 Microsoft BITS/7.8 identity 388 img-s-msn-com.akamaized.net http://img-s-msn-com.akamaized.net/tenant/amp/... GET
04:30:43 172.31.64.26 23.219.88.136 HTTP 49458.0 80.0 Microsoft BITS/7.8 identity 332 img-s-msn-com.akamaized.net http://img-s-msn-com.akamaized.net/tenant/amp/... GET
04:31:21 172.31.64.26 169.254.169.254 HTTP 49460.0 80.0 aws-sdk-go/1.12.20 (go1.9; windows; amd64) gzip 202 169.254.169.254 http://169.254.169.254/latest/meta-data/instan... GET
04:31:21 172.31.64.26 169.254.169.254 HTTP 49461.0 80.0 aws-sdk-go/1.12.20 (go1.9; windows; amd64) gzip 215 169.254.169.254 http://169.254.169.254/latest/meta-data/iam/se... GET
Я преобразовал IP-адреса и все другие атрибуты в целые числа, поэтому я могу передать их в алгоритм KNN, используя:
from functools import reduce
ip2int = lambda ip: reduce(lambda a,b: int(a)*256 + int(b), ip.split('.'))
df['Source'] = df['Source'].apply(ip2int)
df['Destination'] = df['Destination'].apply(ip2int)
Вывод пример (Пожалуйста, игнорируйте атрибуты User Agent и Accept Encoding):
Time Source Destination Protocol Source port Dest port User-Agent Accept Encoding Length Host Full request URI Request Method
16142 2887729178 400251016 HTTP 49454.0 80.0 Microsoft BITS/7.8 identity 333 (0, 1325)\t0.2549063512932777\n (0, 60)\t0.... (0, 5188)\t0.30234613640985336\n (0, 17099)... 0
16144 2887729178 400251016 HTTP 49454.0 80.0 Microsoft BITS/7.8 identity 388 (0, 1325)\t0.2549063512932777\n (0, 60)\t0.... (0, 5188)\t0.30234613640985336\n (0, 17099)... 0
16243 2887729178 400251016 HTTP 49458.0 80.0 Microsoft BITS/7.8 identity 332 (0, 1325)\t0.2549063512932777\n (0, 60)\t0.... (0, 5188)\t0.30234613640985336\n (0, 17099)... 0
16281 2887729178 2852039166 HTTP 49460.0 80.0 aws-sdk-go/1.12.20 (go1.9; windows; amd64) gzip 202 (0, 1325)\t0.2549063512932777\n (0, 60)\t0.... (0, 5188)\t0.30234613640985336\n (0, 17099)... 0
Однако, когда я пытаюсь соответствовать обучающему набору данных:
X = df.iloc[:, :-1].values
y = df.iloc[:, 4].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
Это показывает мне эту ошибку:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-182-701d38c6b940> in <module>
5 from sklearn.preprocessing import StandardScaler
6 scaler = StandardScaler()
----> 7 scaler.fit(X_train)
ValueError: could not convert string to float: '169.254.169.254'
Что я сделал не так? Это потому, что я не преобразовал набор данных в фрейм данных? Заранее спасибо.