使用KNN實現充電樁分類
阿新 • • 發佈:2018-12-18
import lightgbm as lgb import pandas as pd import numpy as np from sklearn.model_selection import train_test_split # 匯入資料 col_names = ["ID","K1K2驅動訊號","電子鎖驅動訊號","急停訊號","門禁訊號","THDV-M","THDI-M","label"] data = pd.read_csv("data_train.csv",names=col_names) dataset_X = data[["K1K2驅動訊號","電子鎖驅動訊號","急停訊號","門禁訊號","THDV-M","THDI-M"]].as_matrix() dataset_Y = data[["label"]].as_matrix() dataset_Y = np.array(dataset_Y).reshape(len(dataset_Y)) x_train, x_test, y_train, y_test = train_test_split(dataset_X, dataset_Y,test_size=0.2,) # create dataset for lightgbm lgb_train = lgb.Dataset(x_train, y_train) lgb_eval = lgb.Dataset(x_test, y_test, reference=lgb_train) param = { 'max_depth':8, 'num_leaves':16, 'learning_rate':0.4, 'scale_pos_weight':1, 'num_threads':8, 'objective':'binary', 'bagging_fraction':1, 'bagging_freq':1, 'min_sum_hessian_in_leaf':0.01 } param['is_unbalance']='true' param['metric'] = 'auc' print('Start training...') gbm = lgb.train(param, lgb_train, num_boost_round=500, valid_sets=lgb_eval, ) print('Start predicting...') y_predict_test = gbm.predict(x_test) print(y_predict_test) def read_data(): col_names = ["ID", "K1K2驅動訊號", "電子鎖驅動訊號", "急停訊號", "門禁訊號", "THDV-M", "THDI-M"] data = pd.read_csv("data_test.csv", names=col_names) # print(data.info()) data = data.fillna(0) return data[["K1K2驅動訊號", "電子鎖驅動訊號", "急停訊號", "門禁訊號", "THDV-M", "THDI-M"]],data["ID"] subdata ,Id = read_data() y_predict = gbm.predict(subdata) print(y_predict) for i in range(len(y_predict)): if y_predict[i]>0.5: y_predict[i]=1 else: y_predict[i]=0 y_predict = [int(item) for item in y_predict] print(y_predict) submission = pd.DataFrame({ "id":Id, "predictrion": y_predict }) submission.to_csv("lgb_test1234.csv",index=None,header=None)