如何通过合奏技术进行半监督学习

时间:2020-08-27 05:41:09

标签: python machine-learning scikit-learn svm

non_fraud = df[df['Class']== 0] #Only normal transactions
fraud = df[df['Class']== 1] #Fraudulent transactions

# Spltting normal transactions into one for training and one for validation later on
df_train, val = train_test_split(non_fraud, test_size=0.20)

df_val = val.drop('Class',axis=1) # Drop Class Column from validation normal transactions
df_fraud = fraud.drop('Class',axis=1) #Drop Class Column from fraudulent transactions 

y_val = val['Class'] #Class of validation noraml transactions
y_fraud = fraud['Class'] #Class of fraudulent transactions
y_testval = pd.concat([y_val, y_fraud]) #Combine Classes of above two, will be used for evaluation
y_testval = np.array(y_testval)  
df_testval = pd.concat([df_val, df_fraud]) #Combine validation normal transactions and fraudulent transactions

from sklearn import svm
from pyod.models.feature_bagging import FeatureBagging

ocsvm = svm.OneClassSVM(kernel='rbf', nu=0.01,gamma=0.007, verbose=1)

FB_IF = FeatureBagging(base_estimator=ocsvm, n_estimators=10, n_jobs=1)
FB_IF.fit(df_train.drop('Class',axis=1))

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<timed exec> in <module>

~\anaconda3\lib\site-packages\pyod\models\feature_bagging.py in fit(self, X, y)
    288 
    289         # decision score matrix from all estimators
--> 290         all_decision_scores = self._get_decision_scores()
    291 
    292         if self.combination == 'average':

~\anaconda3\lib\site-packages\pyod\models\feature_bagging.py in _get_decision_scores(self)
    357         all_decision_scores = np.zeros([self.n_samples_, self.n_estimators])
    358         for i in range(self.n_estimators):
--> 359             all_decision_scores[:, i] = self.estimators_[i].decision_scores_
    360         return all_decision_scores
    361 

AttributeError: 'OneClassSVM' object has no attribute 'decision_scores_'

我正在尝试通过One class SVM学习不平衡数据。 为了在没有标签的情况下学习,请删除class属性并将其应用于fit函数。 如何解决这个问题?

0 个答案:

没有答案
相关问题