Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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 基于sklearn的半监督学习_Python_Machine Learning_Svm_Outliers - Fatal编程技术网

Python 基于sklearn的半监督学习

Python 基于sklearn的半监督学习,python,machine-learning,svm,outliers,Python,Machine Learning,Svm,Outliers,我有一个大的多维未标记的汽车数据集(价格、里程、马力等等),我想找到这些数据的异常值。我决定使用sklearn OneClassSVM构建决策边界,我的方法存在两个主要问题: 我的数据集包含许多缺少的值。如果缺失特征的任何可能值都是内插器,有没有办法让svm将缺失特征的数据分类为内插器 我现在想添加一个手动调节异常值的反馈循环。人工调节的数据应该改进SVM的分类。我读过关于半监督学习的标签扩散模型。当手动验证足够数量的记录时,将OneClassSVM的分类输出输入到LabelSpreading

我有一个大的多维未标记的汽车数据集(价格、里程、马力等等),我想找到这些数据的异常值。我决定使用sklearn OneClassSVM构建决策边界,我的方法存在两个主要问题:

  • 我的数据集包含许多缺少的值。如果缺失特征的任何可能值都是内插器,有没有办法让svm将缺失特征的数据分类为内插器
  • 我现在想添加一个手动调节异常值的反馈循环。人工调节的数据应该改进SVM的分类。我读过关于半监督学习的标签扩散模型。当手动验证足够数量的记录时,将OneClassSVM的分类输出输入到LabelSpreading模型并重新训练该模型是否可行

关于第一个问题。您可以使用sklearn.preprocessing.imputer通过平均值或中位数来插补缺失值:

您可以添加一些布尔特征,如果其他一些特征具有NAN,则这些布尔特征将重新编码。因此,如果你有特征X_1,X_2,你可以添加布尔特征

X_1_是n,X_2_是n

如果X_1==NaN或X_2==NaN,则为1。如果X是原始pd.DataFrame,则可以通过

 X = pd.DataFrame()
 # Create your features here 

 # Get the locations of the NaNs
 X_2 = 1.0 * X.isnull()

 # Rename columns
 X_2.rename(columns=lambda x: str(x)+"_has_NaN", inplace=True)

 # Paste them together
 X = pd.concat([X, X_2], axis=1)