精华内容
下载资源
问答
  • 为了提高中文文本情感识别精度, 从集成学习角度出发, 提出了一种基于样本空间动态划分的机制构建文本情感分类器。该算法充分利用训练样本空间鉴别信息, 通过引入核平滑方法对样本空间进行自适应划分, 形成...
  • 其次,根据样本隶属度分布信息划分出离群样本空间,将普通样本分类结果作为离群样本聚类先验类属信息,并对该空间样本提出一种新半监督模糊学习策略进行动态聚类.该算法同时具备了监督学习和无监督学习方法优势...
  • 为了将流形学习算法获取的...在流形映射重构的基础上,针对新样本数据,判断其局部线性空间的归属,进而采用线性近似映射获取低维空间上的映射估计值.在人工合成数据集以及手写数字图像库上的实验证明本文算法的有效性.
  • 该算法采用预先计算类Haar特征所对应弱分类器在样本空间的划分,并动态更新人脸训练样本的权值。与以往的Real-Adaboost算法比较,该算法大大缩短了训练时间,算法训练时间复杂度降到O(T*M*N),同时加速了强分类器的...
  • 此时,不能从整体样本空间划分数据集, 应按照每个类别,进行8/2分 理解: 若在整个样本集上划分,比如 对2类样本规律学习到很少,模型有偏差 用学习到大多数0,1类样本规律模型,预测2类样本,准确率也不会...

    数据集的划分

    训练模型的时候,为防止模型只在训练集上有效,需将数据集划分为训练集,验证集,如8/2分,训练集占比80%, 验证集占比20%
    此时,不能从整体样本空间划分数据集,
    应按照每个类别,进行8/2分

    理解:
    若在整个样本集上划分,比如
    在这里插入图片描述

    1. 对2类样本的规律学习到的很少,模型有偏差
    2. 用学习到大多数0,1类样本规律的模型,预测2类样本,准确率也不会很高

    就好比我们人的学习,学习的时候让你学习大量的语文,数学,然后考试的时候让你考大量的英语,那这尴尬了
    能考好吗?肯定不能!

    正确做法:
    每类样本均按照8/2分的思想,保证训练集,验证集中每个类别的样本均衡
    在这里插入图片描述
    sklearn提供的数据集划分API
    sklearn.model_selection.train_test_split(X,y,test_size=0.2,random_state=3,stratify=None)
    stratify默认为None,此时若数据集类别不均衡,那划分的训练集,验证集中的类别也可能差别很大,导致训练的模型不能学习到所有类别的知识规律,然后在不均衡的验证集上预测,效果更好不到哪去。

    此时需指定stratify=y,按照每个类别抽取20%放入验证集,保证训练集,验证集中类别间的样本均衡性跟总数据集中类别的均衡性是一样的

    代码:
    可以更改stratify参数,试着运行看 结果的差异

    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_iris
    import numpy as np
    
    
    #加载鸢尾花数据
    X,y = load_iris(return_X_y=True)
    print("总鸢尾花样本数:",X.shape[0])
    m = X.shape[0]
    
    
    #随机采样  制造样本不均衡的情况
    X_ = np.random.choice(m,200)  #返回一维数组   index
    X_ = list(X_)
    X_.extend(list(range(50)))
    
    X_ = np.array(X_)
    
    X_ = np.unique(X_)  #去除重复的样本
    
    print("随机选择%d个样本"%X_.shape[0])
    
    #选出样本
    X = X[X_]
    y = y[X_]
    print("总0类:",X[y==0].shape[0]/X.shape[0])
    print("总1类:",X[y==1].shape[0]/X.shape[0])
    print("总2类:",X[y==2].shape[0]/X.shape[0])
    
    
    #
    #划分随机采样的样本集
    #在样本类别不均衡时,才可以看出stratify=y效果
    X_train,X_verify,y_train,y_verify=train_test_split(X,y,test_size=0.2,\
                                                   random_state=3,stratify=None)
    print("\n")
    print("train 0类:",X_train[y_train==0].shape)
    print("train 1类:",X_train[y_train==1].shape)
    print("train 2类:",X_train[y_train==2].shape)
    
    
    #验证集
    v0 = X_verify[y_verify==0]
    v1 = X_verify[y_verify==1]
    v2 = X_verify[y_verify==2]
    
    #验证集里第0类   占总样本中第0类 的比例
    print("test 0类:",v0.shape[0],"占比:",v0.shape[0]/X[y==0].shape[0])
    
    #验证集里第1类   占总样本中第1类 的比例
    print("test 1类:",v1.shape[0],"占比:",v1.shape[0]/X[y==1].shape[0])
    
    #验证集里第2类   占总样本中第2类 的比例
    print("test 2类:",v2.shape[0],"占比:",v2.shape[0]/X[y==2].shape[0])
    
    

    交叉验证

    数据集的划分具有不确定性,一次的划分可能会使训练集或者验证集中具有某些特殊样本,那此时仅经过一次数据集划分训练的模型,预测的准确率可能会受到到这些特殊样本的影响。
    比如:我们该考试了,复习的全是基础题型,结果一考试全是竞赛题型,瞬间蒙圈,能考好吗?肯定不能

    所以模型也是一样

    解决方法:多次交叉验证,取准确率的平均值
    如下:
    在这里插入图片描述
    代码:
    在这里插入图片描述

    from sklearn.neighbors import KNeighborsClassifier
    clf = KNeighborsClassifier(n_neighbors=5,weights="distance")
    
    from sklearn.model_selection import train_test_split
    from sklearn.model_selection import cross_val_score
    
    #划分数据集
    X_train,X_verify,y_train,y_verify = train_test_split(X,y,test_size=0.2,random_state=3,stratify=y)
    
    #交叉验证
    cv_score = cross_val_score(clf,X_train,y_train,cv=10,scoring="accuracy")
    print("交叉验证分数:",cv_score)
    print("平均准确率:%.5f"%(cv_score.mean()))
    

    学习曲线

    学习曲线是诊断模型的最有效方法之一
    可以清楚的看出是过拟合/欠拟合
    选择训练集的大小

    在这里插入图片描述

    #sklearn API
    from sklearn.model_selection import learning_curve
    #model
    #X,y
    #cv
    #train_sizes
    

    验证曲线

    模型性能 关于某个超参数不同取值的函数关系
    只能验证一个参数

    from sklearn.model_selection import validation_curve
    
    #参数
    #model
    #X,y
    #参数名--“n_estimators”  只能对一个参数验证
    #序列值
    #cv=5
    
    #原理
    #当前model取不同的参数值时,分别对数据集进行5次交叉验证
    #返回train_scores验证分数,test_scores验证分数 
    
    

    使用鸢尾花数据,基于随机森林建立分类模型,并对max_depth验证最佳取值

    from sklearn.datasets import load_iris
    from sklearn.ensemble import RandomForestClassifier
    from matplotlib import pyplot as plt
    from sklearn.model_selection import validation_curve
    
    X,y = load_iris(return_X_y=True)
    rf = RandomForestClassifier()
    train_scores,test_scores = validation_curve(rf,X,y,"max_depth",range(2,12),cv=5,scoring="f1_weighted")
    
    #画验证曲线
    plt.plot(range(2,12),test_scores.mean(axis=1),"go-",lw=2,label="max_depth CV")
    plt.grid(linestyle=":")
    plt.legend()
    plt.show()
    

    在这里插入图片描述

    网格搜索

    可以同时搜索多组参数的组合

    from sklearn.model_selection import GridSearchCv
    from sklearn.ensemble import RandomForestClassifier
    rf = RandomForestClassifier()
    params = [{"n_estimators":range(100,500,50),"max_depth":range(2,12)}]
    
    gs = GridSearchCV(rf,params,cv=5,scoring="f1_weighted")
    gs.fit(X,y)
    
    gs.predict(y_test)
    gs.cv_results_
    gs.best_estimator_
    gs.best_params_
    gs.best_score_
    
    展开全文
  • 该算法将每类仅有单个训练样本图像和该类虚拟样本图像划分为互不重叠局部块并构建流形,然后为每个流形学习一个投影矩阵,使得相同流形内局部块在投影后低维特征空间间隔最小化,不同流形中局部块在投影...
  • 该算法将每类仅有单个训练样本图像和该类虚拟样本图像划分为互不重叠局部块并构建流形,然后为每个流形学习一个投影矩阵,使得相同流形内局部块在投影后低维特征空间间隔最小化,不同流形中局部块在投影...
  • 根据样本数据随机选择20%做测试样本,80%做训练样本# 数据划分# 设置工作空间# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间setwd("F:/数据及程序/chapter6/示例程序")# 把数据分为两部分:...

    根据样本数据随机选择20%做测试样本,80%做训练样本

    # 数据划分
    # 设置工作空间
    # 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
    setwd("F:/数据及程序/chapter6/示例程序")
    # 把数据分为两部分:训练数据、测试数据
    # 读入数据
    Data <- read.csv("./data/model.csv")
    # 数据命名
    colnames(Data) <- c("time", "userid", "ele_ind", "loss_ind", "alarm_ind", "class")
    # 数据分割

    set.seed(1234)  # 设置随机种子,改成set.seed(5)...都行,R语言中set.seed(),该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。如果不设定种子,生成的随机数无法重现。

    > set.seed(5) #设定种子

    > x<-rnorm(10) # 在设定种子的前提下生成10个随机数

    > x

    [1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639

    [8] -0.63537131 -0.28577363 0.13810822

    > set.seed(5) # 设定种子

    > y<-rnorm(10)

    > y

    [1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639

    [8] -0.63537131 -0.28577363 0.13810822

    )# 定义序列ind,随机抽取1和2,1的个数占80%,2的个数占20%
    ind <- sample(2, nrow(Data), replace = TRUE, prob = c(0.8, 0.2))
    trainData <- Data[ind == 1,]
     # 训练数据
    testData <- Data[ind == 2,]  # 测试数据
    # 数据存储
    write.csv(trainData, "./tmp/trainData.csv", row.names = FALSE)

    write.csv(testData, "./tmp/testData.csv", row.names = FALSE)

    。。。。。。。。。。。。。。。。完。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    > set.seed(1234)  # 设置随机种子
     set.seed()中的数字是一个标记啦,下次你还想取这个随机序列就启用set.seed(1234),后面随机函数会和上次一样生成样本。
    > ind <- sample(3, nrow(Data), replace = TRUE, prob = c(0.8, 0.2,0.4))
    > ind
      [1] 1 3 3 3 2 3 1 1 3 1 3 1 1 2 1 3 1 1 1 1 1 1 1 1 1 3 1 2
     [29] 3 1 1 1 1 1 1 3 1 1 2 3 1 3 1 3 1 1 3 1 1 3 1 1 3 1 1 1
     [57] 1 3 1 3 2 1 1 1 1 3 1 1 1 1 1 2 1 3 1 1 1 1 1 3 2 1 1 1
     [85] 1 2 1 1 1 2 1 2 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 3 1


    其他关于sample()的小例子

    > x=1:10
    > sample(x=x)

     [1]  5  9  2 10  7  4  1  8  6  3


    > x=1:1000
    > sample(x=x,size=20)
     [1] 981 539 444 947 451 190 986 545 763 906 676 403 989 145

    [15] 194 995 402 343 820 195


    > x=1:10
    > sample(x=x,size=5,replace=T)

    [1] 9 4 2 4 4


    > a=c("A","B")
    > sample(x=a,size=10,replace=T)

     [1] "A" "A" "B" "B" "B" "B" "B" "A" "A" "A"




    展开全文
  • 对于分类问题训练集和测试集的划分不应该用整个样本空间的特定百分比作为训练数据, 而应该在其每一个类别的样本中抽取特定百分比作为训练数据。sklearn模块提供了数据集划分相关方法, 可以方便的划分训练集与...
    '''
        分类模型数据集划分问题:
                对于分类问题训练集和测试集的划分不应该用整个样本空间的特定百分比作为训练数据,
                而应该在其每一个类别的样本中抽取特定百分比作为训练数据。sklearn模块提供了数据集划分相关方法,
                可以方便的划分训练集与测试集数据,使用不同数据集训练或测试模型,达到提高分类可信度。
        回归模型数据集直接打乱按照二八原则划分即可
    
        数据集划分相关API:
                import sklearn.model_selection as ms
                ms.train_test_split(输入集, 输出集, test_size=测试集占比, random_state=随机种子)
                ->训练输入, 测试输入, 训练输出, 测试输出
    
        案例:
    '''
    
    import numpy as np
    import matplotlib.pyplot as mp
    import sklearn.naive_bayes as nb
    import sklearn.model_selection as ms
    
    data = np.loadtxt('./ml_data/multiple1.txt', delimiter=',', unpack=False, dtype='f8')
    print(data.shape)
    x = np.array(data[:, :-1])
    y = np.array(data[:, -1])
    
    # 训练集和测试集的划分    使用训练集训练 再使用测试集测试,并绘制测试集样本图像
    train_x, test_x, train_y, test_y = ms.train_test_split(x, y, test_size=0.25, random_state=7)
    
    # 训练NB模型,完成分类业务
    model = nb.GaussianNB()
    model.fit(train_x, train_y)
    pred_test_y = model.predict(test_x)
    # 得到预测输出,可以与真实输出作比较,计算预测的精准度(预测正确的样本数/总测试样本数)
    ac = (test_y == pred_test_y).sum() / test_y.size
    print('预测精准度 ac=', ac)
    
    # 绘制分类边界线
    l, r = x[:, 0].min() - 1, x[:, 0].max() + 1
    b, t = x[:, 1].min() - 1, x[:, 1].max() + 1
    n = 500
    grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
    bg_x = np.column_stack((grid_x.ravel(), grid_y.ravel()))
    bg_y = model.predict(bg_x)
    grid_z = bg_y.reshape(grid_x.shape)
    
    # 画图
    mp.figure('NB Classification', facecolor='lightgray')
    mp.title('NB Classification', fontsize=16)
    mp.xlabel('X', fontsize=14)
    mp.ylabel('Y', fontsize=14)
    mp.tick_params(labelsize=10)
    mp.pcolormesh(grid_x, grid_y, grid_z, cmap='gray')
    mp.scatter(test_x[:, 0], test_x[:, 1], s=80, c=test_y, cmap='jet', label='Samples')
    
    mp.legend()
    mp.show()
    
    
    输出结果:
    (400, 3)
    预测精准度 ac= 0.99

      

    转载于:https://www.cnblogs.com/yuxiangyang/p/11191048.html

    展开全文
  • 同时 ,还给出了一种依据样本前沿面移动划分可行集算法 ( MSF) .根据划分的各区域特征 ,可以对决策单元性状进行比较或排序 .在此基础上 ,给出了 n维空间中最大可接受风险曲面概念 ,推广了传统 F-N曲线分析...
  • 通过逐步改变样本空间范围的方法对松塔水电站右岸某平硐的岩体结构统计均质区进行划分,证明了岩体结构统计均质区存在空间效应.最后将考虑空间效应的划分结果与岩体声波测试曲线进行对比,证明了划分结果与现场实际是...
  • 问题:研究表明,在某些应用下,1∶35的比例就会使...很多分类算法采用分治法,样本空间的逐渐划分会导致数据碎片问题,这样只能在各个独立的子空间中寻找数据的规律,对于少数类来说每个子空间中包含了很少的数据信息

    问题:研究表明,在某些应用下,1∶35的比例就会使某些分类方法无效,甚至1∶10的比例也会使某些分类方法无效。
    (1)少数类所包含的信息就会很有限,从而难以确定少数类数据的分布,即在其内部难以发现规律,进而造成少数类的识别率低
    (2)数据碎片。很多分类算法采用分治法,样本空间的逐渐划分会导致数据碎片问题,这样只能在各个独立的子空间中寻找数据的规律,对于少数类来说每个子空间中包含了很少的数据信息,一些跨空间的数据规律就不能被挖掘出来。
    (3)不恰当的归纳偏置。许多归纳推理系统在存在不确定时往往倾向于把样本分类为多数类。
    ——————————————
    经验:
    我现在要对一个非平衡数据进行分类 类别0占比例很大 类别1占比例很小 这时候我该怎么处理呢? 想了想 你们做贴吧分类应该也遇到过数据不平衡问题。
    那你只能人工调整训练样本中类别1的数量啊 ,自己在样本中加点
    一般加多少 ?
    差不多1:1或者4:6 ,特别是加一些那种靠近分类面的样本(典型样本挑选)
    人工挑一些?
    恩 ,我之前做马甲挖掘,也是人工加一些,后来效果提升明显
    ——————————————
    解决办法总结:

    1. 过抽样
    抽样处理不平衡数据的最常用方法,基本思想就是通过改变训练数据的分布来消除或减小数据的不平衡。
    过抽样方法通过增加少数类样本来提高少数类的分类性能 ,最简单的办法是简单复制少数类样本,缺点是可能导致过拟合,没有给少数类增加任何新的信息。改进的过抽样方法通过在少数类中加入随机高斯噪声或产生新的合成样本等方法。
    注意:好像对svm没用

    2.欠抽样
    欠抽样方法通过减少多数类样本来提高少数类的分类性能,最简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息,不能够充分利用已有的信息。

    3. 算法层面,采用代价敏感方法。
    (1)重构训练集的方法。不改变已有算法,而是根据样本的不同错分代价给训练集中的每一个样本赋一个权值,接着按权重对原始样本集进行重构。
    (2)引入代价敏感因子,设计出代价敏感的分类算法。通常对小样本赋予较高的代价,大样本赋予较小的代价,期望以此来平衡样本之间的数目差异。

    4. 特征选择
    样本数量分布很不平衡时,特征的分布同样会不平衡。尤其在文本分类问题中,在大类中经常出现的特征,也许在稀有类中根本不出现。因此,根据不平衡分类问题的特点,选取最具有区分能力的特征,有利于提高稀有类的识别率 。
    按照一个经验性的样本比例,挑选正负2个样本集,分别从中选择最能表示该类样本的特征集,然后将这些特征集合并作为最后挑选的特征。


    装载自 http://blog.csdn.net/dream2009gd/article/details/35569343


    参考:http://wenku.baidu.com/view/28946d32f111f18583d05a37.html
               http://wenku.baidu.com/view/83ab4beb6294dd88d0d26b7c

    展开全文
  • (2)依据样本点向量模和样本点向量间夹角余弦值将总体空间划分成多个子空间,确保每个子空间的样本点能由一个线性支持向量机完全分开。(3)采用一种基于扩充样本点对迭代算法不断更新样本点集合,
  • 在机器学习的学习和理解过程中,需要学习者具备概率论的知识。在此记录下经常遇到的概率知识。...我们先来说样本空间的划分。 假设Ω \Omega 是随机试验E E的样本空间,而B 1 ,B 2 ,B 3 ,⋯B n {B_
  • 其次, 对局部线性嵌入(LLE)算法做了两方面改进, 并采用改进的LLE算法依次实现每个子空间从高维空间向低维空间的特征映射, 计算生成子空间的相似度矩阵。最后, 将子空间相似度矩阵归一化处理并求解所累加和生成光谱...
  • 样本空间的划分 定义 设为试验E的样本空间B1,B 1 则称B1,B 2.全概率公式 定义 设为试验E的样本空间A为E的事件B1,B2, P 证明 A 说明 全概率公式的主要用途在于它可以将一个复杂事件的概率计算问题分解为若干个简单...
  • 聚类算法之DBSCAN划分高密度区域

    千次阅读 2018-05-01 17:46:23
    k-means算法需要事先指定簇的个数,而凝聚不需要指定簇的个数,这两个算法会将所有的样本的划分到簇中,无法区分出噪声,k-means算法的簇空间是球状的,它们都无法很好的区分出高密度的区域。这篇文章主要介绍聚类...
  • 知识回顾 贝叶斯知识 1 2 0 0 1 2 1 2 , , , , , 1 , , 1, 2, , ; 2 , , , , . n i j n n E B B B E B B i j n B B B B B B ? ? ? ? ? ? ? 定义 设 为试验 的样本空间... 样本空间的划分 1 B 2 B 3 B n B 1 n B ? 2. 全
  • 解决样本不平衡问题

    千次阅读 2017-03-22 19:45:31
    (2)很多分类算法采用分治法,样本空间的逐渐划分会导致数据碎片问题,这样只能在各个独立的子空间中寻找数据的规律,对于少数类来说每个子空间中包含了很少的数据信息,一些跨空间的数据规律就不能被挖掘出来。...
  • 解决分类样本不平衡问题

    千次阅读 2018-07-31 22:06:59
    (2)很多分类算法采用分治法,样本空间的逐渐划分会导致数据碎片问题,这样只能在各个独立的子空间中寻找数据的规律,对于少数类来说每个子空间中包含了很少的数据信息,一些跨空间的数据规律就不能被挖掘出来。...
  • 朴素贝叶斯分类

    2020-07-02 00:54:38
    样本空间的划分 设S为试验E的样本空间,B1,B2,…,Bn为E的一组事件,若 称B1,B2,…,Bn为样本空间S的一个划分。 事件独立性 事件A,B满足 则事件A,B相互独立。 A,B相互独立与A,B互不相容是两个概念 A,B相互独立...
  • 该网络采用减法聚类算法在线辨识工况数据的空间分布, 利用RBF 神经元实现对数据样本空间的划分, 并结合模糊策略将不同子样本空间的数据动态分配给不同的子网络, 最后对各子网络的输出进行集成. 该模块化网络中子...
  • 该方法通过计算已知类别样本空间重叠度,合并有重叠类,组合为一个新类,再基于一种有效类间可分性准则进行划分,使得容易划分的类能从决策树根节点开始逐层分割出来,再划分有类间重叠类,这样就...
  • 回归树模型的本质是对样本空间的划分。划分的区域不相交的子区域。回归树模型的构建方法注意:区域Rj中的样本的结果是所有的样本点取平均得到的结果。RSS的偏差,这个是指预估结果和真实结果的差异。yi是真实值,yRj...
  • 首先对高分辨率图像中与岩性相关光谱、纹理、形状、高程等特征信息进行样本选取,选取过程中以图像纹理为主要特征信息,同时以J-M距离、转换分类度为依据选取最优特征空间,采用因子分析变换降维对特征空间进行...
  • 机器学习;PowerPoint 演示文稿;参考教材;机器学习的定义;机器学习的定义;机器学习是多学科的交叉;机器学习的重要性;机器学习的应用;机器学习的应用;机器学习的分支;...要素2对样本空间的划分;要素3
  • Java机器学习库ML之五样本不均衡

    千次阅读 2017-06-23 10:06:09
    样本不均衡的问题是指训练集中类别之间的样本数据量比例失衡。有研究表明,部分学习任务,在类别出现1∶35比例时...2)数据碎片,很多分类算法采用分治法,样本空间的逐渐划分会导致数据碎片问题,这样只能在各个独立的
  • 1. 样本空间的划分;2. 全概率公式;图示;说明 全概率公式的主要用途在于它可以将一个复杂事件的概率计算问题,分解为若干个简单事件的概率计算问题,最后应用概率的可加性求出最终结果;称此为贝叶斯公式;由以往的数据...
  • 以满足多种人脸识别任务中不同人脸数据需求,然后使用人脸识别模型将人脸数据映射到特征空间,使用改进K近邻算法把人脸数据划分到不同子特征空间,最后在每个子特征空间内使用K均值算法分离人脸数据中样本、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 817
精华内容 326
关键字:

样本空间的划分