所以,我正在研究一个基本的机器学习算法,作为一个更大项目的一部分。在本节中,我试图教机器使用两组数据,一组仅包含一个特征的较小数据集,另一组使用六个特征的较大数据集。这两者都可以在下面看到。
“标志”是我试图预测的。标志 0 表示真实/正常数据,而标志 1 表示“异常”数据。那么,我的目标是允许预测“异常”数据输入。从照片中可以看出,用于这些目的的“异常”数据与之前的数据点相比发生了重大变化。问题是,计算机只预测了我插入数据的 450 个左右“假”数据中的 80 个。第二个问题是计算机对某些数据进行了错误分类,将某些真实数据称为假数据。
我现在一直在对小数据集进行大部分测试,只是为了让一切正常。我正在使用 XGBoost 算法,n_estimators 等于 1000,学习率为 0.05。代码非常简单。
data = pd.read_csv('final_angles.csv')
data.dropna(axis=0, subset=['steering_angle'], inplace=True)
y = data.flag
X = data.drop(['flag', 'frame_id'], axis=1)
train_X, test_X, train_y, test_y = train_test_split(X.as_matrix(), y.as_matrix(), test_size=0.25, shuffle=False)
my_model = XGBRegressor(n_estimators=1000, learning_rate=0.05)
my_model.fit(train_X, train_y, early_stopping_rounds=5,
eval_set=[(test_X, test_y)], verbose=False)
predictions = my_model.predict(test_X)
如果预测值超过 0.5,任何东西都被认为是“假的”或“异常的”。
例如,这是我生产的:
文件中有 457 节“假”数据。我们猜测 108 个数据点是假的。其中只有 69 个实际上是假的。我们得到了 457 个中的 69 个(0.15098468271334792)。
我可以做些什么来改善结果?我可能想过改变算法,虽然我不知道它会有多大帮助。使用随机森林或其他东西是否有帮助,或者可能会更多地调整参数?我愿意接受任何想法。
我不会说改变算法/搜索超参数会显着提高分类性能。
在我看来,你应该处理你的数据。
在您的数据中,机器看到的是行数据,但是您说决定 flag 值的因素是与先前数据点的实质性变化。
所以你应该考虑:
以下是一些有用的链接:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句