【问题标题】:How to train an unlabled data in machine learning?如何在机器学习中训练未标记的数据?
【发布时间】:2021-10-03 07:56:44
【问题描述】:

我有近 9000 个实体的数据,我想训练我的模型并从数据中检测异常。

我尝试了几件事来完成我的工作,而我做的一件事是

def create_sequences(values, time_steps=TIME_STEPS):
 output = []
 for i in range(len(values) - time_steps):
     output.append(values[i : (i + time_steps)])
 return np.stack(output)

这里我开始拆分我的训练数据

x_train = create_sequences(data['HR'].values)
x_train = np.expand_dims(x_train,axis=2)

x_train = create_sequences(data['PULSE'].values)
x_train = np.expand_dims(x_train,axis=2)

x_train = create_sequences(data['SpO2'].values)
x_train = np.expand_dims(x_train,axis=2)

x_train = create_sequences(data['ABPDias'].values)
x_train = np.expand_dims(x_train,axis=2)

x_train = create_sequences(data['ABPMean'].values)
x_train = np.expand_dims(x_train,axis=2)

x_train = create_sequences(data['RESP'].values)
x_train = np.expand_dims(x_train,axis=2)

这是我的训练模型

model = Sequential()
model.add(Conv1D(filters=32, kernel_size=7, padding="same", strides=2, input_shape=(x_train.shape[1],x_train.shape[2])))
model.add(MaxPooling1D(pool_size=1,padding="valid"))
model.add(Dropout(0.2))
model.add(Conv1D(filters=16, kernel_size=7, padding="same", strides=2))
model.add(LSTM(units=20, return_sequences=True))
model.add(Dropout(0.2))
model.add(Conv1DTranspose(filters=16, kernel_size=7, padding="same",strides=2))
model.add(Conv1D(filters=32, kernel_size=7, padding="same"))
model.add(MaxPooling1D(pool_size=2,padding="valid"))
model.add(Conv1DTranspose(filters=32, kernel_size=7, padding="same",strides=4,activation="relu"))
model.add(Conv1DTranspose(filters=1, kernel_size=7, padding="same"))

model.compile(optimizer="adam", loss="mse")

model.summary()



history = model.fit(
 x_train,
 x_train,
 epochs=150,
 batch_size=128,
 validation_split=0.1
)

但这花了很多时间。我错过了什么?,有人可以指导我吗?

还有一件事是,我应该将train_test_split 用于未标记的数据吗?

【问题讨论】:

    标签: python tensorflow machine-learning keras classification


    【解决方案1】:

    如果没有标记数据,您就无法进行监督学习。将特征同时用作输入和标签是不可取的。您正在寻找的是基于聚类的异常检测,它属于无监督学习的范畴。 DBSCAN 可能是这个任务的一个不错的选择,它可以在 scikit-learn 中找到。

    【讨论】:

      【解决方案2】:

      您使用一些层来编码然后解码数据。您应用的技术是监督机器学习 (ML)。由于您的数据集未标记,因此您需要采用无监督的 ML 方法。 聚类是一种在多维未标记数据中寻找模式的技术。 基于聚类的异常检测有两种不同的方法。 1- 无监督聚类,其中异常检测模型使用由正常流量和攻击流量组成的未标记数据进行训练。 2- 半监督聚类,其中模型仅使用正常数据进行训练,以构建正常活动的概况。

      【讨论】:

        猜你喜欢
        • 2017-06-25
        • 2017-04-06
        • 2020-06-15
        • 2020-02-21
        • 2019-07-03
        • 2020-05-06
        • 2016-03-10
        • 2011-02-15
        • 1970-01-01
        相关资源
        最近更新 更多