我正在对https://www.physionet.org/challenge/2017/sources/提交进行实验。
我喜欢其中一种使用Xgboost
来训练分类器的提交代码。训练数据位于.mat
文件中,我将其转换为CSV文件以进行训练。
在下面的代码中,我有一个预先训练的模型xgb.bin
,可以用它测试任何输入信号。但是我想使用不同的数据来训练模型并创建自己的训练模型。
这里是预测给定输入ECG文件的类名的代码:
def predict(data):
#data = io.loadmat(path)['val'][0]
from numpy import genfromtxt
data = genfromtxt('testdata/val.csv', delimiter=',')
features_noise = np.zeros((5, ))
snr, rr_num, var, fr, fr2 = find_noise_features(data)
features_noise[0] = snr
features_noise[1] = rr_num
features_noise[2] = var
features_noise[3] = fr
features_noise[4] = fr2
features = extract_basic_features(data, 30000)
features = np.hstack((features, features_noise.reshape(1, -1)))
mean_ = np.array([15.96300284066109753667, 0.00412371298595770857, 38811.34497233365254942328,
0.48050717744965593115, 0.14397582347542958736])
scale_ = np.array([4.22917401559752281770, 0.00093664880988427878, 62350.76443798459513345733,
0.15396567666240373873, 0.07085474966801086349])
features_noise -= mean_
features_noise /= scale_
prediction = 0
if features_noise[0] < -2.9:
prediction = 3
if features_noise[2] > 6.0:
prediction = 3
if features_noise[3] > 3.0:
prediction = 3
if features_noise[4] < -2.0:
prediction = 3
bst = xgb.Booster({'nthread': 4})
bst.load_model("xgb.bin")
dfeatures = xgb.DMatrix(features)
prediction_prob = bst.predict(dfeatures)
prediction = np.argmax(prediction_prob)
return prediction
def run(data):
prediction = predict(data)
print(prediction)
我可以为CSV文件中的所有训练数据创建dfeatures
。 (我正在分别读取每个CSV并计算功能。对吗?)
现在,一旦我拥有所有训练ECG文件的默认值,我便想创建一个xgboost模型。但是我没有任何线索。任何建议都值得赞赏。