糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 阿里天池心跳信号分类预测baseline

阿里天池心跳信号分类预测baseline

时间:2018-12-24 10:20:16

相关推荐

阿里天池心跳信号分类预测baseline

阿里天池又来了一个数据挖掘新人赛,是关于心跳信号分类的预测问题,主要针对初学者学习数据挖掘知识

比赛地址链接

这次数据比较有意思,和最常见的多属性结构化数据不同,本次数据是心电图数据记录,所以用一下传统的思维方法可能做出来效果并不好,但是baseline还是采用传统的方法做的,仅仅只是实现做出结果的步骤,没有优化方法,最后会提到几个优化的思路。

baseline代码如下:

import pandas as pdimport numpy as npfrom lightgbm import LGBMClassifierfrom sklearn.model_selection import StratifiedKFold, KFoldfrom sklearn.preprocessing import OneHotEncodertrain = pd.read_csv('train_xt.csv')test=pd.read_csv('testA_xt.csv')for data in [train,test]: data1 = data["heartbeat_signals"].str.split(",", expand=True)for i in data1.columns:data[i] = data1[i].astype("float64")train_x = train.drop(['id','label','heartbeat_signals'], axis=1)target = train['label']test1=test.drop(['id','heartbeat_signals'], axis=1)def abs_sum(y_pre,y_tru):loss=sum(sum(abs(y_pre-y_tru)))return lossclf = LGBMClassifier(learning_rate=0.1,#0.05n_estimators=10230,num_leaves=31,max_depth=7,subsample=0.8,colsample_bytree=0.8, metric=None,objective='multiclass')answers = []mean_score = 0onehot_encoder = OneHotEncoder(sparse=False)sk = StratifiedKFold(n_splits=10, shuffle=True, random_state=)for train, testA in sk.split(train_x, target):x_train = train_x.iloc[train]y_train = target.iloc[train]x_test = train_x.iloc[testA]y_test = target.iloc[testA]clf.fit(x_train,y_train,eval_set=[(x_test, y_test)],verbose=100, early_stopping_rounds=100)y_pre=clf.predict(x_test)y_test=np.array(y_test).reshape(-1, 1)y_test = onehot_encoder.fit_transform(y_test)y_pre=np.array(y_pre).reshape(-1, 1)y_pre = onehot_encoder.fit_transform(y_pre)print('lgb验证的auc:{}'.format(abs_sum(y_test, y_pre)))mean_score += abs_sum(y_test, y_pre) / 10y_pred_valid = clf.predict_proba(test1)answers.append(y_pred_valid)print('mean valAuc:{}'.format(mean_score))lgb_pre=sum(answers)/10re=pd.DataFrame(lgb_pre)result=pd.read_csv('sample_submit.csv')result['label_0']=re[0]result['label_1']=re[1]result['label_2']=re[2]result['label_3']=re[3]result.to_csv('submit.csv',index=False)

上面代码只是将heartbeat_signals列中所有心跳信号数据记录分别单独提取出来了,然后将其放入模型中进行训练,也没有加额外的特征,也没有进行其他处理,全部是原始数据。

优化思路

1.可以将其转化为时序问题,因为心跳信号记录是根据时间进行变化的,所以可以对每个记录都添加时间序列,可能会有意想不到的效果。

2.根据信号值可以计算信号的变化率,心跳类别肯定和心跳信号的变化率有关系,或者是信号的统计特征也可以尝试加入训练。

3.模型方面可以尝试神经网络,我尝试了这次数据用传统的树模型或者传统机器学习的模型进行训练,但是感觉效果达不到预期,也可能是初步尝试思路不对,但是模型方面还是可以尝试神经网络,没准效果非常好。

写在最后

本人才疏学浅,有不正确或者理解错误的地方请指正!

如果觉得《阿里天池心跳信号分类预测baseline》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。