python编程总结

1. from sklearn.feature_extraction import DictVectorizer和pd.get_dummies类似,都是对数值特征直接使用,对类别特征one-hot编码,都有sparse和dense特征。但是如果想要按自己设置的类别进行,需要设置数值astype(int),类别astype(str)
2. 如果行连接可以使用pd.concat,列连接最好使用np.concat,因为列需要对应索引;列合并 np.column_stack((x_train_data_features, X_train_new))
3. df.ix[:,index-1:] df.ix[index:,:]; nparr[:index,:], nparr[index:,:]
4. np.arange和range类似
5. class()继承
6. y_test_csv.to_csv(y_test_out + "%s.csv" % str(thread_num), index=False) 输出不带索引或者save_datas.to_csv(eval("config_nls.test_train_data_unlabel_scv%d" % i),index=False)
7. 抽样:
   rand_int = np.random.randint(1, 1000, 1)
   random_state = 31 * i * rand_int[0]
   all_datas1 = all_datas[all_datas['cls_last'] == 'normal'].sample(frac=0.53, random_state=random_state)
  打乱
  save_datas=shuffle(pd.concat([all_datas1,all_datas2,all_datas3,all_datas4,all_datas5],axis=0))
8. encoder_dict = DictVectorizer(sparse=False) 最好是对训练和测试都做
    x_train_data_features = encoder_dict.fit_transform(X_train.to_dict(orient='record'))
    x_train_data_features2 = preprocessing.minmax_scale(x_train_data_features)
9. 选数据x_test_data_features20 = x_test_data_features2_df[y_test00['new_cls']==0]
10. 读数据
attack_types = pd.read_table(config_nls.AttackTypes, sep=',', names=['label_cls', 'cls_last'])
attack_types['label_cls'] = attack_types['label_cls'].apply(lambda x: x.strip())

test_train_data = test_data.merge(attack_types, how='left', left_on='label_cls', right_on='label_cls')
1. 对不平衡数据使用Adam优化要比SGD优化好很多,而且能够处理不平衡数据。
2. 使用elu,relu作为激活函数,就不能使用交叉熵损失,需要用平方损失,如果使用sigmoid作为激活函数就可以使用交叉熵损失。
3. pandas不要轻易相信列截取,因为列的位置发生了变化,最好使用 arr[col]=arr[col]
4. 数值属性进入DNN时要最大最小归一化,类别属性可以使用Dict或者get_dummis(对训练和测试数据同时做再分开)

 

你可能感兴趣的:(python)