Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提高二元分类模型的精度_Python_Machine Learning_Classification_Data Science - Fatal编程技术网

Python 提高二元分类模型的精度

Python 提高二元分类模型的精度,python,machine-learning,classification,data-science,Python,Machine Learning,Classification,Data Science,所以,作为一个更大项目的一部分,我正在研究一个基本的机器学习算法。在本节中,我试图教机器使用两组数据,一组较小的数据只有一个特性,另一组较大的数据有六个特性。下面可以看到这两种情况 “旗帜”是我试图预测的。0标志表示真实/正常数据,而1标志表示“异常”数据。因此,我的目标是允许is预测“异常”数据输入。从照片中可以看出,这些目的的“异常”数据与以前的数据点相比有很大变化。问题之一是,在我插入数据的450个左右的假数据中,计算机只预测了80个。第二个问题是,计算机对某些数据进行了错误分类,称某些真

所以,作为一个更大项目的一部分,我正在研究一个基本的机器学习算法。在本节中,我试图教机器使用两组数据,一组较小的数据只有一个特性,另一组较大的数据有六个特性。下面可以看到这两种情况

“旗帜”是我试图预测的。0标志表示真实/正常数据,而1标志表示“异常”数据。因此,我的目标是允许is预测“异常”数据输入。从照片中可以看出,这些目的的“异常”数据与以前的数据点相比有很大变化。问题之一是,在我插入数据的450个左右的假数据中,计算机只预测了80个。第二个问题是,计算机对某些数据进行了错误分类,称某些真实数据为伪造数据

我现在已经在小数据集上做了大部分测试,只是为了让一切正常工作。我使用的是XGBoost算法,n_估计值等于1000,学习率为0.05。代码非常简单

数据=pd.read_csv'final_angles.csv' data.dropnaaxis=0,subset=['steering_angle',inplace=True y=data.flag X=数据。放置['flag','frame_id',],轴=1 列X,测试列X,测试列y,测试列y=列X,测试列X拆分X.as矩阵,y.as矩阵,测试列大小=0.25,无序=假 my_模型=xGBregressionBorn_估计量=1000,学习率=0.05 my_model.fittrain_X,train_y,早停轮数=5, eval_set=[test_X,test_y],verbose=False 预测=我的模型。预测测试 如果预测值超过0.5,则任何内容都被视为“虚假”或“异常”

例如,这是我制作的:

文件中有457段“假”数据。我们猜测108个数据点是假的。其中只有69件是假的。我们从4570.15098468271334792中得到69分


我能做些什么来改善结果吗?我考虑过改变算法,虽然我不知道这会有多大帮助。使用随机林或其他东西会有帮助吗,或者可能会进一步调整参数?我愿意接受任何想法。

我不会说更改算法/搜索超参数会显著提高分类性能

在我看来,你应该处理你的数据

在您的数据中,机器看到的是一行数据,但您说过决定标志值的是与前一个数据点的实质性更改

所以你应该考虑:

尝试使用适合timeseries数据的算法 或者尝试进行一些特征工程,以便在每一行/每一行,机器能够看到与前一行/每一行相比,变化是否很大 以下是一些有用的链接,从这里开始:

关于更改算法:

在处理ML问题时,一种常见的方法是首先定义一种基线方法,您的解决方案应该优于此方法。 有时,有一个简单的方法(如NaiveBayes)会有所帮助,它不需要作为基线进行调优

关于改进结果:

您是如何为每组数据选择功能的? 尽管我们可以通过改变n_估计量和学习率值来调整算法,但结果仍将取决于研究的特征工程阶段有多好

参考:

我不会说改变算法可以做得更好。从事数据特性工程比选择算法/参数更有价值。谢谢,我会研究一下。你会推荐一些特定于时间序列的算法,还是更新我的算法以更好地处理此类数据?是的,我曾考虑尝试进行更多调整,并进行功能工程,但问题是,例如,在短数据集中,我们只有一个“功能”。刚刚编辑了答案