簡體   English   中英

將對象類型轉換為浮點類型

[英]Convert Object type to Float type

目的是將KDD 99數據集的類型從“對象”轉換為“浮動”。

這是數據集的信息:

class 'pandas.core.frame.DataFrame'
RangeIndex: 494020 entries, 0 to 494019
Data columns (total 42 columns):
duration                       494020 non-null int64
protocol_type                  494020 non-null object
service                        494020 non-null object
src_bytes                      494020 non-null object
dst_bytes                      494020 non-null int64
flag                           494020 non-null int64
land                           494020 non-null int64
wrong_fragment                 494020 non-null int64
urgent                         494020 non-null int64
hot                            494020 non-null int64
num_failed_logins              494020 non-null int64
logged_in                      494020 non-null int64
num_compromised                494020 non-null int64
root_shell                     494020 non-null int64
su_attempted                   494020 non-null int64
num_root                       494020 non-null int64
num_file_creations             494020 non-null int64
num_shells                     494020 non-null int64
num_access_files               494020 non-null int64
num_outbound_cmds              494020 non-null int64
is_hot_login                   494020 non-null int64
is_guest_login                 494020 non-null int64
count                          494020 non-null int64
serror_rate                    494020 non-null int64
rerror_rate                    494020 non-null float64
same_srv_rate                  494020 non-null float64
diff_srv_rate                  494020 non-null float64
srv_count                      494020 non-null float64
srv_serror_rate                494020 non-null float64
srv_rerror_rate                494020 non-null float64
srv_diff_host_rate             494020 non-null float64
dst_host_count                 494020 non-null int64
dst_host_srv_count             494020 non-null int64
dst_host_same_srv_rate         494020 non-null float64
dst_host_diff_srv_rate         494020 non-null float64
dst_host_same_src_port_rate    494020 non-null float64
dst_host_srv_diff_host_rate    494020 non-null float64
dst_host_serror_rate           494020 non-null float64
dst_host_srv_serror_rate       494020 non-null float64
dst_host_rerror_rate           494020 non-null float64
dst_host_srv_rerror_rate       494020 non-null float64
class                          494020 non-null object
dtypes: float64(15), int64(23), object(4)
memory usage: 158.3+ MB

有4種對象類型需要轉換為float包含:

1. protocol type : 'tcp' , 'udp' , 'icmp'
2. service : 'http' , 'auth' , 'http_443' , etc
3. src_bytes : 'OTH' 'REJ' , 'SF' , etc
4. class : 'normal' , 'neptune' , 'smurf' , etc

model('protocol_type').astype(float)

但是我得到了這個錯誤:

TypeError: 'DataFrame' object is not callable

我希望有人可以幫助我解決此問題。 謝謝 :)

首先,正如@thecruisy指出的那樣,您應該使用方括號而不是(),這將導致:

model['protocol_type'].astype(float)

但是,由於該列位於object(或str )中,因此將引發ValueError

ValueError: could not convert string to float: 'tcp'

相反,您應該它們進行編碼 您可以使用pandas.DataFrame

model['protocol_type'].astype('category').cat.codes.astype(float)
#                                                  ^^^^^^^^^^^^^^
#                                   This may be redundant, though

或使用sklearn.preprocessing.LabelEncoder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM