【发布时间】:2019-10-21 01:02:41
【问题描述】:
因此,作为一个更大项目的一部分,我正在研究一种基本的机器学习算法。对于本节,我试图教机器使用两组数据,一组较小的数据集只有一个特征,而较大的数据集使用六个特征。这两个都可以在下面看到。
“标志”是我试图预测的。标志 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)。
我可以做些什么来改善结果吗?我可能考虑过改变算法,虽然我不知道它会有多大帮助。使用随机森林或其他东西是否有帮助,或者更多地调整参数?我愿意接受任何想法。
【问题讨论】:
-
我不会说改变算法可以做得更好。处理数据(特征工程)比选择算法/参数更有价值。
标签: python machine-learning classification data-science