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