半监督学习:样本集部分有标注,部分无标注(常远大于有标注样本)
标签传播算法(LabelPropagation):物以类聚的思想,把没有标注的样本和有标注的样本进行比较,相似度高的标为同标注,会优先标注离有标注近的无标注样本,然后再进行传播。要求未标注样本的标注值是-1。
以Iris数据集(山鸢花)为例
import numpy as np
from sklearn import datasets
#引入datasets中提供的iris数据集,分data和target两部分
iris=datasets.load_iris()
print(iris)
labels=np.copy(iris.target) #获取标注,修改标注时,保证原始数据不发生变化
print(len(labels))
random_unlabeled_points=np.random.rand(len(iris.target))#随机生成len(iris.target)个0~1的数
random_unlabeled_points=random_unlabeled_points<0.3#小于0.3的返回1,大于等于0.3返回0
#重置标签
Y=labels[random_unlabeled_points]
labels[random_unlabeled_points]=-1#把labels中对应于random_unlabeled_points是1的数换为-1
print("Unlabeled Number:",list(labels).count(-1))
print(labels)
from sklearn.semi_supervised import LabelPropagation#从半监督学习中引入标签传播算法
label_prop_model=Labe