Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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_Svm - Fatal编程技术网

Python 一个类中的异常行为

Python 一个类中的异常行为,python,svm,Python,Svm,在我的研究中,我试图从数据中生成数据。在我的代码中,我尝试从原始数据中获取部分数据,并在其上训练one-class svm。我的目标是生成与原始数据非常相似的合成数据。因此,one类svm无法区分原始和生成的svm之间的差异 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn import svm from sklearn.metrics

在我的研究中,我试图从数据中生成数据。在我的代码中,我尝试从原始数据中获取部分数据,并在其上训练
one-class svm
。我的目标是生成与原始数据非常相似的合成数据。因此,
one类svm
无法区分原始和生成的svm之间的差异

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score
from sklearn import preprocessing

DATA_FILE = "breastcancer.txt"

adversary_percentages = [0.01, 0.02, 0.04, 0.08, 0.16]
for adversary_percentage in adversary_percentages:
    data = pd.read_csv(DATA_FILE, sep=",")
    data = data.dropna(how='any', axis=0)
    data = data.drop(data.columns[0], axis=1)

    main_data, adversary_data = train_test_split(data, test_size=adversary_percentage, random_state=1234)

    scaler = preprocessing.MinMaxScaler()
    adversary_input = scaler.fit_transform(adversary_data)

    svc = svm.OneClassSVM(nu=0.01, gamma=0.1).fit(adversary_input)
    predicted = svc.predict(adversary_input)
    print("accuracy: " + str(np.round(sum(predicted[predicted==1.0])/len(predicted),2)))
在代码结束时,我意识到一些我无法解释的异常情况。当
一类svm
的原始数据百分比增加时,较少的数据被标记为异常值,准确度增加。你能帮我理解这个问题吗

percentage_of_data_one_class_has: 0.01 accuracy: 0.79
percentage_of_data_one_class_has: 0.02 accuracy: 0.78
percentage_of_data_one_class_has: 0.04 accuracy: 0.88
percentage_of_data_one_class_has: 0.08 accuracy: 0.94
percentage_of_data_one_class_has: 0.16 accuracy: 0.96

为什么使用敌手输入进行训练和预测???在使用一类支持向量机预测合成数据时,随着我增加敌手拥有的原始数据百分比,准确性会提高。这看起来很奇怪,因为我预计当对手有更多原始数据时,准确率会下降。所以我试着对原始数据进行预测,得出一些结论。