├── README.md ├── WindTurbine_demo.py ├── WindTurbine.py └── WindTurbine_fvsff_MIQ-10_cv1-run1.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Wind_Turbine 2 | Import, clean, and prepare data and conduct machine learning classification for fault detection in a wind turbine 3 | 4 | 5 | The results are published in a peer-reviewed article. 6 | 7 | -------------------------------------------------------------------------------- /WindTurbine_demo.py: -------------------------------------------------------------------------------- 1 | import WindTurbine as wt 2 | # Initiate the instance 3 | edata = wt.EnerconWindTurbineData() 4 | edata.import_data() 5 | edata.clean_data() 6 | edata.create_new_features() 7 | edata.create_lagged_features(6) 8 | edata.create_mean_std_features() 9 | edata.derived_features = pd.concat([edata.new_features, edata.lagged_features, edata.mean_std], axis=1, join='inner') 10 | # To save memory, delete the redundant dataframes 11 | edata.derived_features.dropna(inplace=True) 12 | edata.xdata = pd.concat([edata.derived_features, edata.scada_data], axis=1, join='inner') 13 | edata.xdata.to_pickle('xdata_all_unscaled.p') -------------------------------------------------------------------------------- /WindTurbine.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import datetime as dt 3 | import pandas as pd 4 | 5 | class EnerconWindTurbineData(object): 6 | """ 7 | Imports the data and returns arrays of SCADA & status data by 8 | calling import_data(). 9 | 10 | Parameters 11 | ---------- 12 | scada_data_file: str, optional 13 | The raw SCADA data csv file. 14 | status_data_wec_file: str, optional 15 | The status/fault csv file for the WEC 16 | status_data_rtu_file: str, optional 17 | The status/fault csv file for the RTU 18 | warning_data_wec_file: str, optional 19 | The warning/information csv file for the WEC 20 | warning_data_rtu_file: str, optional 21 | The warning/information csv file for the RTU 22 | 23 | Notes 24 | ----- 25 | Both status_data_wec.csv & status_data_rtu.csv originally come from 26 | pes_extrainfo.csv, filtered according to their plant number. 27 | SCADA_data.csv contains the wsd, 03d and 04d data files all 28 | combined together. 29 | """ 30 | 31 | def __init__( 32 | self, 33 | scada_data_file='../Data/Source Data/SCADA_data.csv', 34 | status_data_wec_file='../Data/Source Data/status_data_wec.csv', 35 | status_data_rtu_file='../Data/Source Data/status_data_rtu.csv', 36 | warning_data_wec_file='../Data/Source Data/warning_data_wec.csv', 37 | warning_data_rtu_file='../Data/Source Data/warning_data_rtu.csv'): 38 | 39 | self.scada_data_file = scada_data_file 40 | self.status_data_wec_file = status_data_wec_file 41 | self.status_data_rtu_file = status_data_rtu_file 42 | self.warning_data_wec_file = warning_data_wec_file 43 | self.warning_data_rtu_file = warning_data_rtu_file 44 | 45 | # Pandas dataframe of the above 46 | self.status_data_wec = [] 47 | 48 | # Pandas dataframe of all the scada data 49 | self.scada_data = [] 50 | # Pandas dataframe of all the new features 51 | self.new_features = [] 52 | # Pandas Series of labels 53 | self.ylabels = [] 54 | 55 | """ 56 | This imports the data, and returns arrays of SCADA, status & 57 | warning data. Dates are converted to unix time, and strings are 58 | encoded in the correct format (unicode). Two new fields, 59 | "Inverter_averages" and "Inverter_std_dev", are also added to 60 | the SCADA data. These are the average and standard deviation of 61 | all Inverter Temperature fields. 62 | 63 | WARNING: The data is not every 10 minutes. There are errors, 64 | large gaps in data, some values in between 10 minutes, and double values 65 | for the same time 66 | 67 | Set's the following fields 68 | ------- 69 | self.scada_data: ndarray 70 | The imported and correctly formatted SCADA data 71 | self.status_data_wec: ndarray 72 | The imported and correctly formatted WEC status data 73 | self.status_data_rtu: ndarray 74 | The imported and correctly formatted RTU status data 75 | self.warning_data_wec: ndarray 76 | The imported and correctly formatted WEC warning data 77 | self.warning_data_rtu: ndarray 78 | The imported and correctly formatted RTU warning data 79 | """ 80 | def import_data(self): 81 | 82 | self.scada_data = np.genfromtxt( 83 | open(self.scada_data_file, 'rb'), dtype=( 84 | ' 1: 187 | average = self.scada_data.iloc[start_of_dupes:i].mean() 188 | self.scada_data.iloc[start_of_dupes] = average 189 | start_of_dupes = i 190 | self.scada_data["___INDEX___"] = self.scada_data.index 191 | self.scada_data.drop_duplicates(subset="___INDEX___", keep="first", inplace=True) 192 | self.scada_data.drop("___INDEX___", axis=1, inplace=True) 193 | 194 | # Remove the faulty blade temps 195 | self.scada_data.drop(['CS101__Blade_A_temp', 'CS101__Blade_B_temp', 'CS101__Blade_C_temp'], axis=1, inplace=True) 196 | 197 | # Remove the faulty inverters 198 | self.scada_data.drop([ 'CS101__Sys_2_inverter_5_cabinet_temp', 'CS101__Sys_2_inverter_6_cabinet_temp','CS101__Sys_2_inverter_7_cabinet_temp'], axis=1, inplace=True) 199 | self.scada_data.drop(['WEC_Operating_Hours', 'WEC_Production_kWh', 'WEC_Production_minutes'], axis=1, inplace=True) 200 | self.scada_data.drop(['Error'], axis=1, inplace=True) 201 | 202 | ''' 203 | Create new engineering features from the scada_data 204 | ''' 205 | def create_new_features(self): 206 | # Create new dataframe for new features 207 | self.new_features = pd.DataFrame(index=self.scada_data.index) 208 | 209 | # Calculate averages 210 | self.new_features['Avg_Sys_1_inverters_cabinet_temp'] = self.scada_data[['CS101__Sys_1_inverter_1_cabinet_temp', 211 | 'CS101__Sys_1_inverter_2_cabinet_temp', 212 | 'CS101__Sys_1_inverter_3_cabinet_temp', 213 | 'CS101__Sys_1_inverter_4_cabinet_temp', 214 | 'CS101__Sys_1_inverter_5_cabinet_temp', 215 | 'CS101__Sys_1_inverter_6_cabinet_temp', 216 | 'CS101__Sys_1_inverter_7_cabinet_temp']].mean(axis=1) 217 | 218 | self.new_features['Avg_Sys_2_inverters_cabinet_temp'] = self.scada_data[['CS101__Sys_2_inverter_1_cabinet_temp', 219 | 'CS101__Sys_2_inverter_2_cabinet_temp', 220 | 'CS101__Sys_2_inverter_3_cabinet_temp', 221 | 'CS101__Sys_2_inverter_4_cabinet_temp']].mean(axis=1) 222 | 223 | self.new_features['Avg_bearing_temp'] = self.scada_data[['CS101__Front_bearing_temp', 'CS101__Rear_bearing_temp',]].mean(axis=1) 224 | 225 | self.new_features['Avg_pitch_cabinet_blade_temp'] = self.scada_data[['CS101__Pitch_cabinet_blade_A_temp', 226 | 'CS101__Pitch_cabinet_blade_B_temp', 227 | 'CS101__Pitch_cabinet_blade_C_temp',]].mean(axis=1) 228 | 229 | self.new_features['Avg_rotor_temp'] = self.scada_data[[ 'CS101__Rotor_temp_1', 230 | 'CS101__Rotor_temp_2']].mean(axis=1) 231 | 232 | self.new_features['Avg_stator_temp'] = self.scada_data[['CS101__Stator_temp_1', 'CS101__Stator_temp_2',]].mean(axis=1) 233 | 234 | self.new_features['Avg_nacelle_ambient_temp'] = self.scada_data[['CS101__Nacelle_ambient_temp_1', 235 | 'CS101__Nacelle_ambient_temp_2']].mean(axis=1) 236 | 237 | # Create features based on differences 238 | 239 | # Max and Min of (wind speed, rotation, power, reactive power) 240 | self.new_features['Dif_max_min_windspeed'] = self.scada_data['WEC__max_windspeed'] - self.scada_data['WEC__min_windspeed'] 241 | self.new_features['Dif_max_min_rotation'] = self.scada_data['WEC_max_Rotation'] - self.scada_data['WEC_min_Rotation'] 242 | self.new_features['Dif_max_min_Power'] = self.scada_data['WEC_max_Power'] - self.scada_data['WEC_min_Power'] 243 | self.new_features['Dif_max_min_reactive_Power'] = self.scada_data['WEC_max_reactive_Power'] - self.scada_data['WEC_min_reactive_Power'] 244 | 245 | # Max and Average of (wind speed, rotation, power, reactive power) 246 | self.new_features['Dif_max_avg_windspeed'] = self.scada_data['WEC__max_windspeed'] - self.scada_data['WEC_ava_windspeed'] 247 | self.new_features['Dif_max_avg_rotation'] = self.scada_data['WEC_max_Rotation'] - self.scada_data['WEC_ava_Rotation'] 248 | self.new_features['Dif_max_avg_Power'] = self.scada_data['WEC_max_Power'] - self.scada_data['WEC_ava_Power'] 249 | self.new_features['Dif_max_avg_reactive_Power'] = self.scada_data['WEC_max_reactive_Power'] - self.scada_data['WEC_ava_reactive_Power'] 250 | 251 | # Min and Average of (wind speed, rotation, power, reactive power)\\ 252 | self.new_features['Dif_avg_min_windspeed'] = self.scada_data['WEC_ava_windspeed'] - self.scada_data['WEC__min_windspeed'] 253 | self.new_features['Dif_avg_min_rotation'] = self.scada_data['WEC_ava_Rotation'] - self.scada_data['WEC_min_Rotation'] 254 | self.new_features['Dif_avg_min_Power'] = self.scada_data['WEC_ava_Power'] - self.scada_data['WEC_min_Power'] 255 | self.new_features['Dif_avg_min_reactive_Power'] = self.scada_data['WEC_ava_reactive_Power'] - self.scada_data['WEC_min_reactive_Power'] 256 | 257 | # Available Power (from wind, technical reasons, force majeure reasons, force external reasons)\\ 258 | self.new_features['Diff_P_wind_P_technical'] = self.scada_data['WEC_ava_available_P_from_wind'] - self.scada_data['WEC_ava_available_P_technical_reasons'] 259 | self.new_features['Diff_P_wind_P_majeure'] = self.scada_data['WEC_ava_available_P_from_wind'] - self.scada_data['WEC_ava_Available_P_force_majeure_reasons'] 260 | self.new_features['Diff_P_wind_P_technical'] = self.scada_data['WEC_ava_available_P_from_wind'] - self.scada_data['WEC_ava_Available_P_force_external_reasons'] 261 | self.new_features['Diff_P_technical_P_majeure'] = self.scada_data['WEC_ava_available_P_technical_reasons'] - self.scada_data['WEC_ava_Available_P_force_majeure_reasons'] 262 | self.new_features['Diff_P_technical_P_external'] = self.scada_data['WEC_ava_available_P_technical_reasons'] - self.scada_data['WEC_ava_Available_P_force_external_reasons'] 263 | self.new_features['Diff_P_majeure_P_external'] = self.scada_data['WEC_ava_Available_P_force_majeure_reasons'] - self.scada_data['WEC_ava_Available_P_force_external_reasons'] 264 | 265 | # Average Power and Available power (from wind, technical reasons, force majeure reasons, force external reasons)\\ 266 | self.new_features['Diff_avg_Power_P_wind'] = self.scada_data['WEC_ava_Power'] - self.scada_data['WEC_ava_available_P_from_wind'] 267 | self.new_features['Diff_avg_Power_P_wind'] = self.scada_data['WEC_ava_Power'] - self.scada_data['WEC_ava_available_P_technical_reasons'] 268 | self.new_features['Diff_avg_Power_P_wind'] = self.scada_data['WEC_ava_Power'] - self.scada_data['WEC_ava_Available_P_force_majeure_reasons'] 269 | self.new_features['Diff_avg_Power_P_wind'] = self.scada_data['WEC_ava_Power'] - self.scada_data['WEC_ava_Available_P_force_external_reasons'] 270 | 271 | # Inverter Cabinet Temperatures 272 | # Inverter Cabinet Temperatures and Average Inverter Cabinet Temperature by system 273 | self.new_features['Diff_Avg_Sys_1_inverter_1'] = self.scada_data['CS101__Sys_1_inverter_1_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 274 | self.new_features['Diff_Avg_Sys_1_inverter_2'] = self.scada_data['CS101__Sys_1_inverter_2_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 275 | self.new_features['Diff_Avg_Sys_1_inverter_3'] = self.scada_data['CS101__Sys_1_inverter_3_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 276 | self.new_features['Diff_Avg_Sys_1_inverter_4'] = self.scada_data['CS101__Sys_1_inverter_4_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 277 | self.new_features['Diff_Avg_Sys_1_inverter_5'] = self.scada_data['CS101__Sys_1_inverter_5_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 278 | self.new_features['Diff_Avg_Sys_1_inverter_6'] = self.scada_data['CS101__Sys_1_inverter_6_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 279 | self.new_features['Diff_Avg_Sys_1_inverter_7'] = self.scada_data['CS101__Sys_1_inverter_7_cabinet_temp'] - self.new_features['Avg_Sys_1_inverters_cabinet_temp'] 280 | 281 | self.new_features['Diff_Avg_Sys_2_inverter_1'] = self.scada_data['CS101__Sys_2_inverter_1_cabinet_temp'] - self.new_features['Avg_Sys_2_inverters_cabinet_temp'] 282 | self.new_features['Diff_Avg_Sys_2_inverter_2'] = self.scada_data['CS101__Sys_2_inverter_2_cabinet_temp'] - self.new_features['Avg_Sys_2_inverters_cabinet_temp'] 283 | self.new_features['Diff_Avg_Sys_2_inverter_3'] = self.scada_data['CS101__Sys_2_inverter_3_cabinet_temp'] - self.new_features['Avg_Sys_2_inverters_cabinet_temp'] 284 | self.new_features['Diff_Avg_Sys_2_inverter_4'] = self.scada_data['CS101__Sys_2_inverter_4_cabinet_temp'] - self.new_features['Avg_Sys_2_inverters_cabinet_temp'] 285 | 286 | # Front and Rear Bearing Temperature 287 | self.new_features['Diff_font_rear_bearing'] = self.scada_data['CS101__Front_bearing_temp'] - self.scada_data['CS101__Rear_bearing_temp'] 288 | 289 | # Average Bearing Temperature and (Front and Rear Bearing Temperature) 290 | self.new_features['Diff_font_avg_bearing'] = self.scada_data['CS101__Front_bearing_temp'] - self.new_features['Avg_bearing_temp'] 291 | self.new_features['Diff_rear_avg_bearing'] = self.scada_data['CS101__Rear_bearing_temp'] - self.new_features['Avg_bearing_temp'] 292 | 293 | # Pitch Cabinet Blade Temperatures 294 | self.new_features['Diff_cabinet_A_B_temp']= self.scada_data['CS101__Pitch_cabinet_blade_A_temp'] - self.scada_data['CS101__Pitch_cabinet_blade_B_temp'] 295 | self.new_features['Diff_cabinet_A_C_temp']= self.scada_data['CS101__Pitch_cabinet_blade_A_temp'] - self.scada_data['CS101__Pitch_cabinet_blade_C_temp'] 296 | self.new_features['Diff_cabinet_B_C_temp']= self.scada_data['CS101__Pitch_cabinet_blade_B_temp'] - self.scada_data['CS101__Pitch_cabinet_blade_C_temp'] 297 | 298 | # Average Pitch Cabinet Blade Temperature and Pitch Cabinet Blade Temperatures 299 | self.new_features['Diff_cabinet_A_avg_temp'] = self.scada_data['CS101__Pitch_cabinet_blade_A_temp'] - self.new_features['Avg_pitch_cabinet_blade_temp'] 300 | self.new_features['Diff_cabinet_B_avg_temp'] = self.scada_data['CS101__Pitch_cabinet_blade_B_temp'] - self.new_features['Avg_pitch_cabinet_blade_temp'] 301 | self.new_features['Diff_cabinet_C_avg_temp'] = self.scada_data['CS101__Pitch_cabinet_blade_C_temp'] - self.new_features['Avg_pitch_cabinet_blade_temp'] 302 | 303 | # Rotor Temperatures 304 | self.new_features['Diff_rotor_temps'] = self.scada_data['CS101__Rotor_temp_1'] - self.scada_data['CS101__Rotor_temp_2'] 305 | 306 | # Average Rotor Temperature and Rotor Temperatures 307 | self.new_features['Dif_rotor_1_avg_temps'] = self.scada_data['CS101__Rotor_temp_1'] - self.new_features['Avg_rotor_temp'] 308 | self.new_features['Dif_rotor_2_avg_temps'] = self.scada_data['CS101__Rotor_temp_2'] - self.new_features['Avg_rotor_temp'] 309 | 310 | # Stator Temperatures 311 | self.new_features['Diff_stator_temps'] = self.scada_data['CS101__Stator_temp_1'] - self.scada_data['CS101__Stator_temp_2'] 312 | 313 | # Average Stator Temperature and Stator Temperatures 314 | self.new_features['Diff_stator_1_avg_temps'] = self.scada_data['CS101__Stator_temp_1'] - self.new_features['Avg_stator_temp'] 315 | self.new_features['Diff_stator_2_avg_temps'] = self.scada_data['CS101__Stator_temp_2'] - self.new_features['Avg_stator_temp'] 316 | 317 | # Nacelle Ambient Temperatures 318 | self.new_features['Diff_nacelle_ambient_temps'] = self.scada_data['CS101__Nacelle_ambient_temp_1'] - self.scada_data['CS101__Nacelle_ambient_temp_2'] 319 | 320 | # Average Nacelle Ambient Temperatures and Nacelle Temperatures 321 | self.new_features['Diff_avg_nacelle_ambient_temp'] = self.scada_data['CS101__Nacelle_ambient_temp_1'] - self.new_features['Avg_nacelle_ambient_temp'] 322 | self.new_features['Diff_avg_nacelle_ambient_temp'] = self.scada_data['CS101__Nacelle_ambient_temp_2'] - self.new_features['Avg_nacelle_ambient_temp'] 323 | 324 | # Nacelle Temperature and Nacelle Cabinet Temperature 325 | self.new_features['Diff_nacelle_cabinet_temp'] = self.scada_data['CS101__Nacelle_temp'] - self.scada_data['CS101__Nacelle_cabinet_temp'] 326 | 327 | # Ambient Temperature and (Nacelle Temperature, Nacelle Cabinet Temperatures, Main Carrier Temperature, Rectifier Temperature, Inverter Cabinet Temperature, Tower Temperature, Control Cabinet Temperature, Transformer Temperature) 328 | self.new_features['Diff_ambient_nacelle_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Nacelle_temp'] 329 | self.new_features['Diff_ambient_nacelle_cabinet_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Nacelle_cabinet_temp'] 330 | self.new_features['Diff_ambient_rectifier_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Rectifier_cabinet_temp'] 331 | self.new_features['Diff_ambient_main_carrier_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Main_carrier_temp'] 332 | self.new_features['Diff_ambient_yaw_inverter_cabinet_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Yaw_inverter_cabinet_temp'] 333 | self.new_features['Diff_ambient_fan_inverter_cabinet_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Fan_inverter_cabinet_temp'] 334 | self.new_features['Diff_ambient_tower_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Tower_temp'] 335 | self.new_features['Diff_ambient_control_cabinet_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Control_cabinet_temp'] 336 | self.new_features['Diff_ambient_transformer_temp'] = self.scada_data['CS101__Ambient_temp'] - self.scada_data['CS101__Transformer_temp'] 337 | 338 | # Generator Temperature and Nacelle Temperature 339 | self.new_features['Diff_nacelle_stator_1_temp'] = self.scada_data['CS101__Nacelle_temp'] - self.scada_data['CS101__Stator_temp_1'] 340 | self.new_features['Diff_nacelle_stator_2_temp'] = self.scada_data['CS101__Nacelle_temp'] - self.scada_data['CS101__Stator_temp_2'] 341 | self.new_features['Diff_nacelle_rotor_1_temp'] = self.scada_data['CS101__Nacelle_temp'] - self.scada_data['CS101__Rotor_temp_1'] 342 | self.new_features['Diff_nacelle_rotor_2_temp'] = self.scada_data['CS101__Nacelle_temp'] - self.scada_data['CS101__Rotor_temp_2'] 343 | 344 | ''' 345 | Create the mean and standard deviation features. 346 | These calculations take a long time 347 | ''' 348 | def create_mean_std_features(self): 349 | """ 350 | Calculate the 2hr mean and standard deviation for self.scada_data 351 | Saves the new features in self.mean_std 352 | """ 353 | # Make a temporary new dataframe 354 | self.mean_std = pd.DataFrame(index=self.scada_data.index) 355 | temp_features = self.scada_data.copy() 356 | temp_features[:] = np.nan 357 | for time in self.scada_data.index: # Calculate the 2 hr average for the column 358 | if len(self.scada_data.loc[time-pd.Timedelta('2hr'):time])== 13: 359 | temp_features.loc[time] = self.scada_data.loc[time-pd.Timedelta('2hr'):time].mean(axis=0) 360 | # Rename the new columns 361 | new_column_names = [] 362 | for name in self.scada_data.columns.values: 363 | if len(self.scada_data.loc[time-pd.Timedelta('2hr'):time])== 13: 364 | new_column_names.append("2hr_mean_" + name) 365 | temp_features.columns = new_column_names # Rename the columns 366 | # Join the temporary features with the new one 367 | self.mean_std = pd.concat([temp_features, self.mean_std], axis=1) 368 | 369 | # Make a temporary new dataframe 370 | temp_features = self.scada_data.copy() 371 | temp_features[:] = np.nan 372 | for time in self.scada_data.index: # Calculate the 2 hr average for the column 373 | temp_features.loc[time] = self.scada_data.loc[time-pd.Timedelta('2hr'):time].std() 374 | # Rename the new columns 375 | new_column_names = [] 376 | for name in self.scada_data.columns.values: 377 | new_column_names.append("2hr_std_" + name) 378 | temp_features.columns = new_column_names # Rename the columns 379 | # Join the temporary features with the new one 380 | self.mean_std = pd.concat([temp_features, self.mean_std], axis=1) 381 | 382 | ''' 383 | Include lagged variables of self.scada_data 384 | New features are saved in self.lagged_features 385 | ''' 386 | def create_lagged_features(self, n): 387 | 388 | self.lagged_features = pd.DataFrame(index=self.scada_data.index) 389 | 390 | for i in range(1, n+1): 391 | self.temp_lagged_features = self.scada_data.copy() 392 | 393 | # Introduce the delay or lagged features 394 | self.temp_lagged_features.index = self.temp_lagged_features.index +pd.Timedelta(str(i*10) + 'm') 395 | 396 | # Rename the new columns 397 | new_column_names = [] 398 | for name in self.scada_data.columns.values: 399 | new_column_names.append(str(name) + '_t-' + str(i*10) + 'min') 400 | self.temp_lagged_features.columns = new_column_names # Rename the columns 401 | 402 | self.lagged_features = pd.concat([self.lagged_features, self.temp_lagged_features], axis=1, join='inner') 403 | 404 | ''' 405 | Creates a new pandas.Series with the same index as self.scada_data called self.ylabels 406 | self.ylabels = 0 except for the 5 main faults, whereby self.ylabels = Main Status 407 | 408 | Creates: 409 | self.ylabels 410 | ''' 411 | def create_labels(self): 412 | 413 | fault_main_statuses = (80, 62, 228, 60, 9) 414 | self.ylabels = pd.Series(index = self.derived_features.index) 415 | self.ylabels[:] = 0 416 | for i in range(0, len(self.status_data_wec)): 417 | current_status = self.status_data_wec.iloc[i]['Main_Status'] 418 | if current_status in fault_main_statuses: 419 | start_time = self.status_data_wec.iloc[i]['Time'] 420 | if i == (len(self.status_data_wec)-1): 421 | self.ylabels[self.ylabels.index > start_time] = current_status 422 | else: 423 | end_time = self.status_data_wec.iloc[i+1]['Time'] 424 | self.ylabels[(self.ylabels.index > start_time) & (self.ylabels.index < end_time)] = current_status 425 | 426 | -------------------------------------------------------------------------------- /WindTurbine_fvsff_MIQ-10_cv1-run1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import pandas as pd\n", 12 | "import numpy as np\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "% matplotlib inline\n", 15 | "import os\n", 16 | "\n", 17 | "from sklearn import cross_validation as cval\n", 18 | "#from sklearn import utils\n", 19 | "from sklearn.grid_search import GridSearchCV, RandomizedSearchCV\n", 20 | "from sklearn.metrics import classification_report, confusion_matrix\n", 21 | "from sklearn.svm import SVC\n", 22 | "import pickle" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 2, 28 | "metadata": { 29 | "collapsed": true 30 | }, 31 | "outputs": [], 32 | "source": [ 33 | "# Manipulated Variables\n", 34 | "num_features = 10\n", 35 | "selection_method = 'MIQ'\n", 36 | "CV_test_number = 1\n", 37 | "run_num = 1\n", 38 | "output_filename = 'WindTurbine_fvsff_MIQ-' + str(num_features) + '_cv' + str(CV_test_number) + '-run' + str(run_num)" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 3, 44 | "metadata": { 45 | "collapsed": false 46 | }, 47 | "outputs": [], 48 | "source": [ 49 | "# Import training data\n", 50 | "train_filename = '../Data/PickleFiles/3_labels_cv/training_data_cv' + str(CV_test_number) + '.p'\n", 51 | "x_train = pd.read_pickle(train_filename)\n", 52 | "\n", 53 | "train_filename = '../Data//PickleFiles/3_labels_cv/training_data_cv' + str(CV_test_number) + 'labelweights.p'\n", 54 | "labelsweights = pd.read_pickle(train_filename)\n", 55 | "x_train['__weight__'] = labelsweights['__weight__']\n", 56 | "x_train['__label__'] = labelsweights['__label__']\n", 57 | "\n", 58 | "# Shuffle the data\n", 59 | "x_train = x_train.sample(frac=1, random_state=324351369)\n", 60 | "\n", 61 | "# Remove out the labels, weights, and x_train data\n", 62 | "y_train = x_train['__label__'].copy()\n", 63 | "x_train_sample_weights = x_train['__weight__'].copy()\n", 64 | "x_train.drop(['__label__', '__weight__'], 1, inplace=True)\n", 65 | "\n", 66 | "# Import testing data\n", 67 | "test_filename = '../Data/PickleFiles/3_labels_cv/testing_data_cv' + str(CV_test_number) + '.p'\n", 68 | "x_test = pd.read_pickle(test_filename)\n", 69 | "\n", 70 | "test_filename = '../Data/PickleFiles/3_labels_cv/testing_data_cv' + str(CV_test_number) + 'labelweights.p'\n", 71 | "labelsweights = pd.read_pickle(test_filename)\n", 72 | "y_test = labelsweights['__label__'].copy()\n", 73 | "\n", 74 | "del labelsweights\n", 75 | "\n", 76 | "# Import the feature rankings\n", 77 | "feature_filepath = '../Code-WindTurbine2/windturbine_fvsff_' + 'MIQ-first100.txt'\n", 78 | "features = pd.read_csv(feature_filepath, delimiter=' \t ', header=2, engine='python')['Name']" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": 4, 84 | "metadata": { 85 | "collapsed": false 86 | }, 87 | "outputs": [ 88 | { 89 | "name": "stdout", 90 | "output_type": "stream", 91 | "text": [ 92 | "train_filename is: \n", 93 | "../Data//PickleFiles/3_labels_cv/training_data_cv1labelweights.p\n", 94 | "\n", 95 | "test_filename is: \n", 96 | "../Data/PickleFiles/3_labels_cv/testing_data_cv1labelweights.p\n", 97 | "\n", 98 | "output_filename is: \n", 99 | "WindTurbine_fvsff_MIQ-10_cv1-run1\n", 100 | "\n" 101 | ] 102 | } 103 | ], 104 | "source": [ 105 | "print(\"train_filename is: \\n%s\\n\" % train_filename)\n", 106 | "print(\"test_filename is: \\n%s\\n\" % test_filename)\n", 107 | "print(\"output_filename is: \\n%s\\n\" % output_filename)" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 7, 113 | "metadata": { 114 | "collapsed": false 115 | }, 116 | "outputs": [], 117 | "source": [ 118 | "def CVTrainAndScore(X_train, y_train, X_test, y_test, weights, output_filename, search_type=RandomizedSearchCV,\n", 119 | " tuned_parameters={\n", 120 | " 'kernel': ['linear', 'poly', 'rbf', 'sigmoid'], 'gamma': ['auto', 1e-3, 1e-4],\n", 121 | " 'C': [0.01, .1, 1, 10, 100, 1000]},\n", 122 | " #'class_weight':['balanced'],\n", 123 | " scores=['f1']):\n", 124 | " \n", 125 | " for score in scores:\n", 126 | " print(\"# Tuning hyper-parameters for %s \\n\" % score)\n", 127 | "\n", 128 | " # Find the hyperparameters\n", 129 | " clf = search_type(SVC(), tuned_parameters, fit_params={\"sample_weight\":weights}, cv=10, scoring='%s_weighted' % score, verbose=200)\n", 130 | " \n", 131 | " # Train the SVM\n", 132 | " clf.fit(X_train, y_train)\n", 133 | "\n", 134 | " print(\"\\nBest parameters set found on development set: \\n\")\n", 135 | " print(clf.best_params_)\n", 136 | "\n", 137 | " print(\"\\nGrid scores on development set:\\n\")\n", 138 | " for params, mean_score, scores in clf.grid_scores_:\n", 139 | " print(\"%0.3f (+/-%0.03f) for %r\"\n", 140 | " % (mean_score, scores.std() * 2, params))\n", 141 | "\n", 142 | " print(\"\\nDetailed classification report:\\n\")\n", 143 | "\n", 144 | "\n", 145 | " # Make the predictions on training set\n", 146 | " y_true, y_pred = y_train, clf.predict(X_train)\n", 147 | " print('Report on Training Set')\n", 148 | " print(classification_report(y_true, y_pred))\n", 149 | " print()\n", 150 | " # Evaluate the SVM using Confusion Matrix\n", 151 | " cm = confusion_matrix(y_true, y_pred)\n", 152 | " print(cm)\n", 153 | " cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 154 | " # Also print specificity metric\n", 155 | " print(\"Specificity:\", cm[0, 0] / (cm[0, 1] + cm[0, 0]))\n", 156 | "\n", 157 | " # Make the predictions on the test set\n", 158 | " y_true, y_pred = y_test, clf.predict(X_test)\n", 159 | " print('Report on Test Set\\n')\n", 160 | " print(classification_report(y_true, y_pred))\n", 161 | " print()\n", 162 | " # Evaluate the SVM using Confusion Matrix\n", 163 | " cm = confusion_matrix(y_true, y_pred)\n", 164 | " print(cm)\n", 165 | " cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 166 | " # Also print specificity metric\n", 167 | " print(\"Specificity:\", cm[0, 0] / (cm[0, 1] + cm[0, 0]))\n", 168 | " \n", 169 | " # plot the confusion matrices\n", 170 | " plot = plot_confusion_matrix(cm_normalized)\n", 171 | " \n", 172 | " print(clf.best_params_)\n", 173 | " f=open(output_filename+score+'.p', 'wb')\n", 174 | " pickle.dump(clf, f)\n", 175 | " f.close()\n", 176 | " \n", 177 | " \n", 178 | "def plot_confusion_matrix(cm):\n", 179 | " title='Confusion matrix',\n", 180 | " cmap=plt.cm.Blues\n", 181 | " labels=['No-Fault', 'Fault']\n", 182 | " \n", 183 | " plot = plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", 184 | " plt.title(title)\n", 185 | " plt.colorbar()\n", 186 | " tick_marks = np.arange(len(labels))\n", 187 | " plt.xticks(tick_marks, labels, rotation=45)\n", 188 | " plt.yticks(tick_marks, labels)\n", 189 | " # plt.tight_layout()\n", 190 | " plt.ylabel('True label')\n", 191 | " plt.xlabel('Predicted label')\n", 192 | " plt.show()" 193 | ] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "execution_count": 8, 198 | "metadata": { 199 | "collapsed": false 200 | }, 201 | "outputs": [ 202 | { 203 | "name": "stdout", 204 | "output_type": "stream", 205 | "text": [ 206 | "# Tuning hyper-parameters for f1 \n", 207 | "\n", 208 | "Fitting 10 folds for each of 10 candidates, totalling 100 fits\n", 209 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 210 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.996327 - 0.0s\n", 211 | "[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n", 212 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 213 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.997961 - 0.0s\n", 214 | "[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.1s\n", 215 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 216 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.994839 - 0.0s\n", 217 | "[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.1s\n", 218 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 219 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.997956 - 0.0s\n", 220 | "[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.2s\n", 221 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n" 222 | ] 223 | }, 224 | { 225 | "name": "stderr", 226 | "output_type": "stream", 227 | "text": [ 228 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/cross_validation.py:516: Warning: The least populated class in y has only 6 members, which is too few. The minimum number of labels for any class cannot be less than n_folds=10.\n", 229 | " % (min_labels, self.n_folds)), Warning)\n" 230 | ] 231 | }, 232 | { 233 | "name": "stdout", 234 | "output_type": "stream", 235 | "text": [ 236 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.997956 - 0.0s\n", 237 | "[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.2s\n", 238 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 239 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=1.000000 - 0.0s\n", 240 | "[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.2s\n", 241 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 242 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.996301 - 0.0s\n", 243 | "[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.3s\n", 244 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 245 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.996301 - 0.0s\n", 246 | "[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.3s\n", 247 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 248 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=1.000000 - 0.0s\n", 249 | "[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.4s\n", 250 | "[CV] gamma=auto, kernel=rbf, C=10 ....................................\n", 251 | "[CV] ........... gamma=auto, kernel=rbf, C=10, score=0.993820 - 0.0s\n", 252 | "[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.4s\n", 253 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 254 | ] 255 | }, 256 | { 257 | "name": "stderr", 258 | "output_type": "stream", 259 | "text": [ 260 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 261 | " 'recall', 'true', average, warn_for)\n", 262 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 263 | " 'recall', 'true', average, warn_for)\n", 264 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 265 | " 'recall', 'true', average, warn_for)\n", 266 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 267 | " 'precision', 'predicted', average, warn_for)\n" 268 | ] 269 | }, 270 | { 271 | "name": "stdout", 272 | "output_type": "stream", 273 | "text": [ 274 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996334 - 0.5s\n", 275 | "[Parallel(n_jobs=1)]: Done 11 tasks | elapsed: 0.9s\n", 276 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 277 | ] 278 | }, 279 | { 280 | "name": "stderr", 281 | "output_type": "stream", 282 | "text": [ 283 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 284 | " 'precision', 'predicted', average, warn_for)\n" 285 | ] 286 | }, 287 | { 288 | "name": "stdout", 289 | "output_type": "stream", 290 | "text": [ 291 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996334 - 0.5s\n", 292 | "[Parallel(n_jobs=1)]: Done 12 tasks | elapsed: 1.5s\n", 293 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 294 | ] 295 | }, 296 | { 297 | "name": "stderr", 298 | "output_type": "stream", 299 | "text": [ 300 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 301 | " 'precision', 'predicted', average, warn_for)\n" 302 | ] 303 | }, 304 | { 305 | "name": "stdout", 306 | "output_type": "stream", 307 | "text": [ 308 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996325 - 0.5s\n", 309 | "[Parallel(n_jobs=1)]: Done 13 tasks | elapsed: 2.0s\n", 310 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 311 | ] 312 | }, 313 | { 314 | "name": "stderr", 315 | "output_type": "stream", 316 | "text": [ 317 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 318 | " 'precision', 'predicted', average, warn_for)\n" 319 | ] 320 | }, 321 | { 322 | "name": "stdout", 323 | "output_type": "stream", 324 | "text": [ 325 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996325 - 0.5s\n", 326 | "[Parallel(n_jobs=1)]: Done 14 tasks | elapsed: 2.6s\n", 327 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 328 | ] 329 | }, 330 | { 331 | "name": "stderr", 332 | "output_type": "stream", 333 | "text": [ 334 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 335 | " 'precision', 'predicted', average, warn_for)\n" 336 | ] 337 | }, 338 | { 339 | "name": "stdout", 340 | "output_type": "stream", 341 | "text": [ 342 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996325 - 0.5s\n", 343 | "[Parallel(n_jobs=1)]: Done 15 tasks | elapsed: 3.1s\n", 344 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 345 | ] 346 | }, 347 | { 348 | "name": "stderr", 349 | "output_type": "stream", 350 | "text": [ 351 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 352 | " 'precision', 'predicted', average, warn_for)\n" 353 | ] 354 | }, 355 | { 356 | "name": "stdout", 357 | "output_type": "stream", 358 | "text": [ 359 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.996325 - 0.5s\n", 360 | "[Parallel(n_jobs=1)]: Done 16 tasks | elapsed: 3.6s\n", 361 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 362 | ] 363 | }, 364 | { 365 | "name": "stderr", 366 | "output_type": "stream", 367 | "text": [ 368 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 369 | " 'precision', 'predicted', average, warn_for)\n", 370 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 371 | " 'recall', 'true', average, warn_for)\n" 372 | ] 373 | }, 374 | { 375 | "name": "stdout", 376 | "output_type": "stream", 377 | "text": [ 378 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.000000 - 0.6s\n", 379 | "[Parallel(n_jobs=1)]: Done 17 tasks | elapsed: 4.2s\n", 380 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 381 | ] 382 | }, 383 | { 384 | "name": "stderr", 385 | "output_type": "stream", 386 | "text": [ 387 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 388 | " 'precision', 'predicted', average, warn_for)\n", 389 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 390 | " 'recall', 'true', average, warn_for)\n" 391 | ] 392 | }, 393 | { 394 | "name": "stdout", 395 | "output_type": "stream", 396 | "text": [ 397 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.000000 - 0.6s\n", 398 | "[Parallel(n_jobs=1)]: Done 18 tasks | elapsed: 4.7s\n", 399 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 400 | ] 401 | }, 402 | { 403 | "name": "stderr", 404 | "output_type": "stream", 405 | "text": [ 406 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 407 | " 'precision', 'predicted', average, warn_for)\n", 408 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 409 | " 'recall', 'true', average, warn_for)\n" 410 | ] 411 | }, 412 | { 413 | "name": "stdout", 414 | "output_type": "stream", 415 | "text": [ 416 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.000000 - 0.6s\n", 417 | "[Parallel(n_jobs=1)]: Done 19 tasks | elapsed: 5.3s\n", 418 | "[CV] gamma=auto, kernel=sigmoid, C=1 .................................\n" 419 | ] 420 | }, 421 | { 422 | "name": "stderr", 423 | "output_type": "stream", 424 | "text": [ 425 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 426 | " 'precision', 'predicted', average, warn_for)\n", 427 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 428 | " 'recall', 'true', average, warn_for)\n" 429 | ] 430 | }, 431 | { 432 | "name": "stdout", 433 | "output_type": "stream", 434 | "text": [ 435 | "[CV] ........ gamma=auto, kernel=sigmoid, C=1, score=0.000000 - 0.6s\n", 436 | "[Parallel(n_jobs=1)]: Done 20 tasks | elapsed: 5.8s\n", 437 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 438 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.520482 - 1.0s\n", 439 | "[Parallel(n_jobs=1)]: Done 21 tasks | elapsed: 6.9s\n", 440 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 441 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.520482 - 1.0s\n", 442 | "[Parallel(n_jobs=1)]: Done 22 tasks | elapsed: 7.9s\n", 443 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 444 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.529404 - 1.0s\n", 445 | "[Parallel(n_jobs=1)]: Done 23 tasks | elapsed: 8.9s\n", 446 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 447 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.474507 - 1.0s\n", 448 | "[Parallel(n_jobs=1)]: Done 24 tasks | elapsed: 9.9s\n", 449 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 450 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.507928 - 1.0s\n", 451 | "[Parallel(n_jobs=1)]: Done 25 tasks | elapsed: 10.9s\n", 452 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n", 453 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.499711 - 1.0s\n", 454 | "[Parallel(n_jobs=1)]: Done 26 tasks | elapsed: 12.0s\n", 455 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n" 456 | ] 457 | }, 458 | { 459 | "name": "stderr", 460 | "output_type": "stream", 461 | "text": [ 462 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 463 | " 'recall', 'true', average, warn_for)\n" 464 | ] 465 | }, 466 | { 467 | "name": "stdout", 468 | "output_type": "stream", 469 | "text": [ 470 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.511883 - 1.0s\n", 471 | "[Parallel(n_jobs=1)]: Done 27 tasks | elapsed: 13.0s\n", 472 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n" 473 | ] 474 | }, 475 | { 476 | "name": "stderr", 477 | "output_type": "stream", 478 | "text": [ 479 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 480 | " 'recall', 'true', average, warn_for)\n" 481 | ] 482 | }, 483 | { 484 | "name": "stdout", 485 | "output_type": "stream", 486 | "text": [ 487 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.492593 - 0.9s\n", 488 | "[Parallel(n_jobs=1)]: Done 28 tasks | elapsed: 13.9s\n", 489 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n" 490 | ] 491 | }, 492 | { 493 | "name": "stderr", 494 | "output_type": "stream", 495 | "text": [ 496 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 497 | " 'recall', 'true', average, warn_for)\n" 498 | ] 499 | }, 500 | { 501 | "name": "stdout", 502 | "output_type": "stream", 503 | "text": [ 504 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.530686 - 1.0s\n", 505 | "[Parallel(n_jobs=1)]: Done 29 tasks | elapsed: 14.9s\n", 506 | "[CV] gamma=0.001, kernel=rbf, C=0.1 ..................................\n" 507 | ] 508 | }, 509 | { 510 | "name": "stderr", 511 | "output_type": "stream", 512 | "text": [ 513 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 514 | " 'recall', 'true', average, warn_for)\n" 515 | ] 516 | }, 517 | { 518 | "name": "stdout", 519 | "output_type": "stream", 520 | "text": [ 521 | "[CV] ......... gamma=0.001, kernel=rbf, C=0.1, score=0.535971 - 1.0s\n", 522 | "[Parallel(n_jobs=1)]: Done 30 tasks | elapsed: 15.9s\n", 523 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 524 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.994852 - 0.2s\n", 525 | "[Parallel(n_jobs=1)]: Done 31 tasks | elapsed: 16.0s\n", 526 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 527 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.993456 - 0.1s\n", 528 | "[Parallel(n_jobs=1)]: Done 32 tasks | elapsed: 16.2s\n", 529 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 530 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.996317 - 0.1s\n", 531 | "[Parallel(n_jobs=1)]: Done 33 tasks | elapsed: 16.3s\n", 532 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 533 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.993440 - 0.1s\n", 534 | "[Parallel(n_jobs=1)]: Done 34 tasks | elapsed: 16.5s\n", 535 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 536 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.996317 - 0.1s\n", 537 | "[Parallel(n_jobs=1)]: Done 35 tasks | elapsed: 16.6s\n", 538 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 539 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.996317 - 0.1s\n", 540 | "[Parallel(n_jobs=1)]: Done 36 tasks | elapsed: 16.7s\n", 541 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 542 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.996301 - 0.2s\n", 543 | "[Parallel(n_jobs=1)]: Done 37 tasks | elapsed: 16.9s\n", 544 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n" 545 | ] 546 | }, 547 | { 548 | "name": "stderr", 549 | "output_type": "stream", 550 | "text": [ 551 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 552 | " 'recall', 'true', average, warn_for)\n", 553 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 554 | " 'recall', 'true', average, warn_for)\n" 555 | ] 556 | }, 557 | { 558 | "name": "stdout", 559 | "output_type": "stream", 560 | "text": [ 561 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.992574 - 0.2s\n", 562 | "[Parallel(n_jobs=1)]: Done 38 tasks | elapsed: 17.1s\n", 563 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n", 564 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.995062 - 0.1s\n", 565 | "[Parallel(n_jobs=1)]: Done 39 tasks | elapsed: 17.3s\n", 566 | "[CV] gamma=0.001, kernel=linear, C=1000 ..............................\n" 567 | ] 568 | }, 569 | { 570 | "name": "stderr", 571 | "output_type": "stream", 572 | "text": [ 573 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 574 | " 'recall', 'true', average, warn_for)\n", 575 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 576 | " 'recall', 'true', average, warn_for)\n" 577 | ] 578 | }, 579 | { 580 | "name": "stdout", 581 | "output_type": "stream", 582 | "text": [ 583 | "[CV] ..... gamma=0.001, kernel=linear, C=1000, score=0.992574 - 0.1s\n", 584 | "[Parallel(n_jobs=1)]: Done 40 tasks | elapsed: 17.4s\n", 585 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 586 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.980447 - 0.1s\n", 587 | "[Parallel(n_jobs=1)]: Done 41 tasks | elapsed: 17.5s\n", 588 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 589 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.985586 - 0.1s\n", 590 | "[Parallel(n_jobs=1)]: Done 42 tasks | elapsed: 17.6s\n", 591 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 592 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.984261 - 0.1s\n", 593 | "[Parallel(n_jobs=1)]: Done 43 tasks | elapsed: 17.8s\n", 594 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 595 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.985550 - 0.1s\n", 596 | "[Parallel(n_jobs=1)]: Done 44 tasks | elapsed: 17.9s\n", 597 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 598 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.982973 - 0.1s\n", 599 | "[Parallel(n_jobs=1)]: Done 45 tasks | elapsed: 18.0s\n", 600 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 601 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.980398 - 0.1s\n", 602 | "[Parallel(n_jobs=1)]: Done 46 tasks | elapsed: 18.1s\n", 603 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 604 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.985037 - 0.1s\n", 605 | "[Parallel(n_jobs=1)]: Done 47 tasks | elapsed: 18.3s\n", 606 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n" 607 | ] 608 | }, 609 | { 610 | "name": "stderr", 611 | "output_type": "stream", 612 | "text": [ 613 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 614 | " 'recall', 'true', average, warn_for)\n", 615 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 616 | " 'recall', 'true', average, warn_for)\n" 617 | ] 618 | }, 619 | { 620 | "name": "stdout", 621 | "output_type": "stream", 622 | "text": [ 623 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.973518 - 0.1s\n", 624 | "[Parallel(n_jobs=1)]: Done 48 tasks | elapsed: 18.4s\n", 625 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n", 626 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.985037 - 0.1s\n", 627 | "[Parallel(n_jobs=1)]: Done 49 tasks | elapsed: 18.5s\n", 628 | "[CV] gamma=0.001, kernel=sigmoid, C=100 ..............................\n" 629 | ] 630 | }, 631 | { 632 | "name": "stderr", 633 | "output_type": "stream", 634 | "text": [ 635 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 636 | " 'recall', 'true', average, warn_for)\n", 637 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 638 | " 'recall', 'true', average, warn_for)\n" 639 | ] 640 | }, 641 | { 642 | "name": "stdout", 643 | "output_type": "stream", 644 | "text": [ 645 | "[CV] ..... gamma=0.001, kernel=sigmoid, C=100, score=0.976101 - 0.1s\n", 646 | "[Parallel(n_jobs=1)]: Done 50 tasks | elapsed: 18.6s\n", 647 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 648 | ] 649 | }, 650 | { 651 | "name": "stderr", 652 | "output_type": "stream", 653 | "text": [ 654 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 655 | " 'precision', 'predicted', average, warn_for)\n" 656 | ] 657 | }, 658 | { 659 | "name": "stdout", 660 | "output_type": "stream", 661 | "text": [ 662 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996334 - 1.0s\n", 663 | "[Parallel(n_jobs=1)]: Done 51 tasks | elapsed: 19.7s\n", 664 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 665 | ] 666 | }, 667 | { 668 | "name": "stderr", 669 | "output_type": "stream", 670 | "text": [ 671 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 672 | " 'precision', 'predicted', average, warn_for)\n" 673 | ] 674 | }, 675 | { 676 | "name": "stdout", 677 | "output_type": "stream", 678 | "text": [ 679 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996334 - 1.0s\n", 680 | "[Parallel(n_jobs=1)]: Done 52 tasks | elapsed: 20.7s\n", 681 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 682 | ] 683 | }, 684 | { 685 | "name": "stderr", 686 | "output_type": "stream", 687 | "text": [ 688 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 689 | " 'precision', 'predicted', average, warn_for)\n" 690 | ] 691 | }, 692 | { 693 | "name": "stdout", 694 | "output_type": "stream", 695 | "text": [ 696 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996325 - 1.0s\n", 697 | "[Parallel(n_jobs=1)]: Done 53 tasks | elapsed: 21.8s\n", 698 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 699 | ] 700 | }, 701 | { 702 | "name": "stderr", 703 | "output_type": "stream", 704 | "text": [ 705 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 706 | " 'precision', 'predicted', average, warn_for)\n" 707 | ] 708 | }, 709 | { 710 | "name": "stdout", 711 | "output_type": "stream", 712 | "text": [ 713 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996325 - 1.0s\n", 714 | "[Parallel(n_jobs=1)]: Done 54 tasks | elapsed: 22.8s\n", 715 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 716 | ] 717 | }, 718 | { 719 | "name": "stderr", 720 | "output_type": "stream", 721 | "text": [ 722 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 723 | " 'precision', 'predicted', average, warn_for)\n" 724 | ] 725 | }, 726 | { 727 | "name": "stdout", 728 | "output_type": "stream", 729 | "text": [ 730 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996325 - 1.0s\n", 731 | "[Parallel(n_jobs=1)]: Done 55 tasks | elapsed: 23.8s\n", 732 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 733 | ] 734 | }, 735 | { 736 | "name": "stderr", 737 | "output_type": "stream", 738 | "text": [ 739 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 740 | " 'precision', 'predicted', average, warn_for)\n" 741 | ] 742 | }, 743 | { 744 | "name": "stdout", 745 | "output_type": "stream", 746 | "text": [ 747 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.996325 - 1.0s\n", 748 | "[Parallel(n_jobs=1)]: Done 56 tasks | elapsed: 24.9s\n", 749 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 750 | ] 751 | }, 752 | { 753 | "name": "stderr", 754 | "output_type": "stream", 755 | "text": [ 756 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 757 | " 'precision', 'predicted', average, warn_for)\n", 758 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 759 | " 'recall', 'true', average, warn_for)\n" 760 | ] 761 | }, 762 | { 763 | "name": "stdout", 764 | "output_type": "stream", 765 | "text": [ 766 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.000000 - 1.1s\n", 767 | "[Parallel(n_jobs=1)]: Done 57 tasks | elapsed: 26.0s\n", 768 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 769 | ] 770 | }, 771 | { 772 | "name": "stderr", 773 | "output_type": "stream", 774 | "text": [ 775 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 776 | " 'precision', 'predicted', average, warn_for)\n", 777 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 778 | " 'recall', 'true', average, warn_for)\n" 779 | ] 780 | }, 781 | { 782 | "name": "stdout", 783 | "output_type": "stream", 784 | "text": [ 785 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.000000 - 1.1s\n", 786 | "[Parallel(n_jobs=1)]: Done 58 tasks | elapsed: 27.1s\n", 787 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 788 | ] 789 | }, 790 | { 791 | "name": "stderr", 792 | "output_type": "stream", 793 | "text": [ 794 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 795 | " 'precision', 'predicted', average, warn_for)\n", 796 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 797 | " 'recall', 'true', average, warn_for)\n" 798 | ] 799 | }, 800 | { 801 | "name": "stdout", 802 | "output_type": "stream", 803 | "text": [ 804 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.000000 - 1.1s\n", 805 | "[Parallel(n_jobs=1)]: Done 59 tasks | elapsed: 28.2s\n", 806 | "[CV] gamma=0.0001, kernel=rbf, C=0.1 .................................\n" 807 | ] 808 | }, 809 | { 810 | "name": "stderr", 811 | "output_type": "stream", 812 | "text": [ 813 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n", 814 | " 'precision', 'predicted', average, warn_for)\n", 815 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 816 | " 'recall', 'true', average, warn_for)\n" 817 | ] 818 | }, 819 | { 820 | "name": "stdout", 821 | "output_type": "stream", 822 | "text": [ 823 | "[CV] ........ gamma=0.0001, kernel=rbf, C=0.1, score=0.000000 - 1.1s\n", 824 | "[Parallel(n_jobs=1)]: Done 60 tasks | elapsed: 29.3s\n", 825 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 826 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.992103 - 0.0s\n", 827 | "[Parallel(n_jobs=1)]: Done 61 tasks | elapsed: 29.4s\n", 828 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 829 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.993456 - 0.0s\n", 830 | "[Parallel(n_jobs=1)]: Done 62 tasks | elapsed: 29.4s\n", 831 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 832 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.996317 - 0.0s\n", 833 | "[Parallel(n_jobs=1)]: Done 63 tasks | elapsed: 29.5s\n", 834 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 835 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.990754 - 0.0s\n", 836 | "[Parallel(n_jobs=1)]: Done 64 tasks | elapsed: 29.5s\n", 837 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 838 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.993440 - 0.0s\n", 839 | "[Parallel(n_jobs=1)]: Done 65 tasks | elapsed: 29.6s\n", 840 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 841 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.994839 - 0.0s\n", 842 | "[Parallel(n_jobs=1)]: Done 66 tasks | elapsed: 29.6s\n", 843 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 844 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.996301 - 0.0s\n", 845 | "[Parallel(n_jobs=1)]: Done 67 tasks | elapsed: 29.7s\n", 846 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n" 847 | ] 848 | }, 849 | { 850 | "name": "stderr", 851 | "output_type": "stream", 852 | "text": [ 853 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 854 | " 'recall', 'true', average, warn_for)\n", 855 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 856 | " 'recall', 'true', average, warn_for)\n", 857 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 858 | " 'recall', 'true', average, warn_for)\n", 859 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 860 | " 'recall', 'true', average, warn_for)\n" 861 | ] 862 | }, 863 | { 864 | "name": "stdout", 865 | "output_type": "stream", 866 | "text": [ 867 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.991326 - 0.0s\n", 868 | "[Parallel(n_jobs=1)]: Done 68 tasks | elapsed: 29.7s\n", 869 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 870 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.995062 - 0.0s\n", 871 | "[Parallel(n_jobs=1)]: Done 69 tasks | elapsed: 29.8s\n", 872 | "[CV] gamma=0.001, kernel=linear, C=10 ................................\n", 873 | "[CV] ....... gamma=0.001, kernel=linear, C=10, score=0.992574 - 0.0s\n", 874 | "[Parallel(n_jobs=1)]: Done 70 tasks | elapsed: 29.8s\n", 875 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 876 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.980447 - 0.1s\n", 877 | "[Parallel(n_jobs=1)]: Done 71 tasks | elapsed: 29.9s\n", 878 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 879 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.988167 - 0.1s\n", 880 | "[Parallel(n_jobs=1)]: Done 72 tasks | elapsed: 30.0s\n", 881 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 882 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.988138 - 0.1s\n", 883 | "[Parallel(n_jobs=1)]: Done 73 tasks | elapsed: 30.1s\n", 884 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 885 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.985550 - 0.1s\n", 886 | "[Parallel(n_jobs=1)]: Done 74 tasks | elapsed: 30.2s\n", 887 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 888 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.984261 - 0.1s\n", 889 | "[Parallel(n_jobs=1)]: Done 75 tasks | elapsed: 30.3s\n", 890 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 891 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.984261 - 0.1s\n", 892 | "[Parallel(n_jobs=1)]: Done 76 tasks | elapsed: 30.4s\n", 893 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n" 894 | ] 895 | }, 896 | { 897 | "name": "stderr", 898 | "output_type": "stream", 899 | "text": [ 900 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 901 | " 'recall', 'true', average, warn_for)\n", 902 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 903 | " 'recall', 'true', average, warn_for)\n", 904 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 905 | " 'recall', 'true', average, warn_for)\n" 906 | ] 907 | }, 908 | { 909 | "name": "stdout", 910 | "output_type": "stream", 911 | "text": [ 912 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.985037 - 0.1s\n", 913 | "[Parallel(n_jobs=1)]: Done 77 tasks | elapsed: 30.5s\n", 914 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 915 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.978670 - 0.1s\n", 916 | "[Parallel(n_jobs=1)]: Done 78 tasks | elapsed: 30.6s\n", 917 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n", 918 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.991326 - 0.1s\n", 919 | "[Parallel(n_jobs=1)]: Done 79 tasks | elapsed: 30.7s\n", 920 | "[CV] gamma=0.001, kernel=rbf, C=100 ..................................\n" 921 | ] 922 | }, 923 | { 924 | "name": "stderr", 925 | "output_type": "stream", 926 | "text": [ 927 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 928 | " 'recall', 'true', average, warn_for)\n" 929 | ] 930 | }, 931 | { 932 | "name": "stdout", 933 | "output_type": "stream", 934 | "text": [ 935 | "[CV] ......... gamma=0.001, kernel=rbf, C=100, score=0.985037 - 0.1s\n", 936 | "[Parallel(n_jobs=1)]: Done 80 tasks | elapsed: 30.8s\n", 937 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 938 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.869290 - 0.7s\n", 939 | "[Parallel(n_jobs=1)]: Done 81 tasks | elapsed: 31.5s\n", 940 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 941 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.877026 - 0.7s\n", 942 | "[Parallel(n_jobs=1)]: Done 82 tasks | elapsed: 32.2s\n", 943 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 944 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.875145 - 0.7s\n", 945 | "[Parallel(n_jobs=1)]: Done 83 tasks | elapsed: 32.9s\n", 946 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 947 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.861062 - 0.7s\n", 948 | "[Parallel(n_jobs=1)]: Done 84 tasks | elapsed: 33.6s\n", 949 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 950 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.891892 - 0.7s\n", 951 | "[Parallel(n_jobs=1)]: Done 85 tasks | elapsed: 34.3s\n", 952 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n", 953 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.873598 - 0.7s\n", 954 | "[Parallel(n_jobs=1)]: Done 86 tasks | elapsed: 35.0s\n", 955 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n" 956 | ] 957 | }, 958 | { 959 | "name": "stderr", 960 | "output_type": "stream", 961 | "text": [ 962 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 963 | " 'recall', 'true', average, warn_for)\n" 964 | ] 965 | }, 966 | { 967 | "name": "stdout", 968 | "output_type": "stream", 969 | "text": [ 970 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.874136 - 0.7s\n", 971 | "[Parallel(n_jobs=1)]: Done 87 tasks | elapsed: 35.7s\n", 972 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n" 973 | ] 974 | }, 975 | { 976 | "name": "stderr", 977 | "output_type": "stream", 978 | "text": [ 979 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 980 | " 'recall', 'true', average, warn_for)\n" 981 | ] 982 | }, 983 | { 984 | "name": "stdout", 985 | "output_type": "stream", 986 | "text": [ 987 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.858345 - 0.7s\n", 988 | "[Parallel(n_jobs=1)]: Done 88 tasks | elapsed: 36.5s\n", 989 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n" 990 | ] 991 | }, 992 | { 993 | "name": "stderr", 994 | "output_type": "stream", 995 | "text": [ 996 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 997 | " 'recall', 'true', average, warn_for)\n" 998 | ] 999 | }, 1000 | { 1001 | "name": "stdout", 1002 | "output_type": "stream", 1003 | "text": [ 1004 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.858345 - 0.7s\n", 1005 | "[Parallel(n_jobs=1)]: Done 89 tasks | elapsed: 37.2s\n", 1006 | "[CV] gamma=0.0001, kernel=sigmoid, C=10 ..............................\n" 1007 | ] 1008 | }, 1009 | { 1010 | "name": "stderr", 1011 | "output_type": "stream", 1012 | "text": [ 1013 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 1014 | " 'recall', 'true', average, warn_for)\n" 1015 | ] 1016 | }, 1017 | { 1018 | "name": "stdout", 1019 | "output_type": "stream", 1020 | "text": [ 1021 | "[CV] ..... gamma=0.0001, kernel=sigmoid, C=10, score=0.886457 - 0.7s\n", 1022 | "[Parallel(n_jobs=1)]: Done 90 tasks | elapsed: 37.9s\n", 1023 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1024 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.967514 - 0.2s\n", 1025 | "[Parallel(n_jobs=1)]: Done 91 tasks | elapsed: 38.1s\n", 1026 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1027 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.972713 - 0.2s\n", 1028 | "[Parallel(n_jobs=1)]: Done 92 tasks | elapsed: 38.3s\n", 1029 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1030 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.967432 - 0.2s\n", 1031 | "[Parallel(n_jobs=1)]: Done 93 tasks | elapsed: 38.5s\n", 1032 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1033 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.972645 - 0.2s\n", 1034 | "[Parallel(n_jobs=1)]: Done 94 tasks | elapsed: 38.7s\n", 1035 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1036 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.968739 - 0.2s\n", 1037 | "[Parallel(n_jobs=1)]: Done 95 tasks | elapsed: 38.9s\n", 1038 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1039 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.960855 - 0.2s\n", 1040 | "[Parallel(n_jobs=1)]: Done 96 tasks | elapsed: 39.1s\n", 1041 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n" 1042 | ] 1043 | }, 1044 | { 1045 | "name": "stderr", 1046 | "output_type": "stream", 1047 | "text": [ 1048 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 1049 | " 'recall', 'true', average, warn_for)\n" 1050 | ] 1051 | }, 1052 | { 1053 | "name": "stdout", 1054 | "output_type": "stream", 1055 | "text": [ 1056 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.964377 - 0.2s\n", 1057 | "[Parallel(n_jobs=1)]: Done 97 tasks | elapsed: 39.3s\n", 1058 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n" 1059 | ] 1060 | }, 1061 | { 1062 | "name": "stderr", 1063 | "output_type": "stream", 1064 | "text": [ 1065 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 1066 | " 'recall', 'true', average, warn_for)\n" 1067 | ] 1068 | }, 1069 | { 1070 | "name": "stdout", 1071 | "output_type": "stream", 1072 | "text": [ 1073 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.961735 - 0.2s\n", 1074 | "[Parallel(n_jobs=1)]: Done 98 tasks | elapsed: 39.5s\n", 1075 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n", 1076 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.968314 - 0.2s\n", 1077 | "[Parallel(n_jobs=1)]: Done 99 tasks | elapsed: 39.7s\n", 1078 | "[CV] gamma=0.0001, kernel=rbf, C=100 .................................\n" 1079 | ] 1080 | }, 1081 | { 1082 | "name": "stderr", 1083 | "output_type": "stream", 1084 | "text": [ 1085 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 1086 | " 'recall', 'true', average, warn_for)\n", 1087 | "/home/lhu/.local/lib/python3.5/site-packages/sklearn/metrics/classification.py:1076: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n", 1088 | " 'recall', 'true', average, warn_for)\n" 1089 | ] 1090 | }, 1091 | { 1092 | "name": "stdout", 1093 | "output_type": "stream", 1094 | "text": [ 1095 | "[CV] ........ gamma=0.0001, kernel=rbf, C=100, score=0.964377 - 0.2s\n", 1096 | "[Parallel(n_jobs=1)]: Done 100 tasks | elapsed: 40.0s\n", 1097 | "[Parallel(n_jobs=1)]: Done 100 out of 100 | elapsed: 40.0s finished\n", 1098 | "\n", 1099 | "Best parameters set found on development set: \n", 1100 | "\n", 1101 | "{'gamma': 'auto', 'kernel': 'rbf', 'C': 10}\n", 1102 | "\n", 1103 | "Grid scores on development set:\n", 1104 | "\n", 1105 | "0.997 (+/-0.004) for {'gamma': 'auto', 'kernel': 'rbf', 'C': 10}\n", 1106 | "0.599 (+/-0.976) for {'gamma': 'auto', 'kernel': 'sigmoid', 'C': 1}\n", 1107 | "0.512 (+/-0.036) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 0.1}\n", 1108 | "0.995 (+/-0.003) for {'gamma': 0.001, 'kernel': 'linear', 'C': 1000}\n", 1109 | "0.982 (+/-0.008) for {'gamma': 0.001, 'kernel': 'sigmoid', 'C': 100}\n", 1110 | "0.599 (+/-0.976) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 0.1}\n", 1111 | "0.994 (+/-0.004) for {'gamma': 0.001, 'kernel': 'linear', 'C': 10}\n", 1112 | "0.985 (+/-0.007) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 100}\n", 1113 | "0.873 (+/-0.021) for {'gamma': 0.0001, 'kernel': 'sigmoid', 'C': 10}\n", 1114 | "0.967 (+/-0.008) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 100}\n", 1115 | "\n", 1116 | "Detailed classification report:\n", 1117 | "\n", 1118 | "Report on Training Set\n", 1119 | " precision recall f1-score support\n", 1120 | "\n", 1121 | " 0 1.00 1.00 1.00 4072\n", 1122 | " 1 0.27 1.00 0.43 6\n", 1123 | "\n", 1124 | "avg / total 1.00 1.00 1.00 4078\n", 1125 | "\n", 1126 | "\n", 1127 | "[[4056 16]\n", 1128 | " [ 0 6]]\n", 1129 | "Specificity: 0.996070726916\n", 1130 | "Report on Test Set\n", 1131 | "\n", 1132 | " precision recall f1-score support\n", 1133 | "\n", 1134 | " 0 1.00 0.99 0.99 4059\n", 1135 | " 1 0.00 0.00 0.00 19\n", 1136 | "\n", 1137 | "avg / total 0.99 0.99 0.99 4078\n", 1138 | "\n", 1139 | "\n", 1140 | "[[4037 22]\n", 1141 | " [ 19 0]]\n", 1142 | "Specificity: 0.994579945799\n" 1143 | ] 1144 | }, 1145 | { 1146 | "data": { 1147 | "image/png": "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\n1IqWRmxaxt4AAAAASUVORK5CYII=\n", 1148 | "text/plain": [ 1149 | "" 1150 | ] 1151 | }, 1152 | "metadata": {}, 1153 | "output_type": "display_data" 1154 | }, 1155 | { 1156 | "name": "stdout", 1157 | "output_type": "stream", 1158 | "text": [ 1159 | "{'gamma': 'auto', 'kernel': 'rbf', 'C': 10}\n" 1160 | ] 1161 | } 1162 | ], 1163 | "source": [ 1164 | "x_train = x_train.loc[:, features[0:num_features]]\n", 1165 | "x_test = x_test.loc[:, features[0:num_features]]\n", 1166 | "CVTrainAndScore(x_train, y_train, x_test, y_test, x_train_sample_weights, output_filename=output_filename)" 1167 | ] 1168 | }, 1169 | { 1170 | "cell_type": "code", 1171 | "execution_count": 21, 1172 | "metadata": { 1173 | "collapsed": false 1174 | }, 1175 | "outputs": [ 1176 | { 1177 | "data": { 1178 | "text/plain": [ 1179 | "Index(['Diff_P_technical_P_majeure_mean', 'Dif_rotor_1_avg_temps_t-4',\n", 1180 | " 'CS101__Rear_bearing_temp_std', 'Diff_Avg_Sys_2_inverter_4_t-6',\n", 1181 | " 'Diff_P_technical_P_external_std', 'CS101__Ambient_temp_mean',\n", 1182 | " 'Diff_P_technical_P_external_mean', 'CS101__Control_cabinet_temp_std',\n", 1183 | " 'Diff_Avg_Sys_1_inverter_6_std', 'Dif_max_avg_rotation_std'],\n", 1184 | " dtype='object')" 1185 | ] 1186 | }, 1187 | "execution_count": 21, 1188 | "metadata": {}, 1189 | "output_type": "execute_result" 1190 | } 1191 | ], 1192 | "source": [ 1193 | "x_train.columns" 1194 | ] 1195 | } 1196 | ], 1197 | "metadata": { 1198 | "kernelspec": { 1199 | "display_name": "Python 3", 1200 | "language": "python", 1201 | "name": "python3" 1202 | }, 1203 | "language_info": { 1204 | "codemirror_mode": { 1205 | "name": "ipython", 1206 | "version": 3 1207 | }, 1208 | "file_extension": ".py", 1209 | "mimetype": "text/x-python", 1210 | "name": "python", 1211 | "nbconvert_exporter": "python", 1212 | "pygments_lexer": "ipython3", 1213 | "version": "3.5.1" 1214 | } 1215 | }, 1216 | "nbformat": 4, 1217 | "nbformat_minor": 0 1218 | } 1219 | --------------------------------------------------------------------------------