精华内容
下载资源
问答
  • 机器学习案例

    2018-07-25 09:57:40
    python 机器学习示例代码,此代码为线性回归算法示例。
  • 机器学习案例ppt.zip

    2020-11-12 17:19:31
    机器学习案例ppt.zip
  • 机器学习案例研究
  • 机器学习案例讲解

    2019-09-15 16:32:33
    该课程针对机器学习案例进行了讲解,主要是介绍了机器学习常用算法在实际项目中的应用。机器学习针对的是算法的实现,通过案例讲解能够让学习者快速掌握机器学习的经典算法,该课程是以案例的方式讲解,这样便于...
  • 机器学习案例实操——鸢尾花

    千次阅读 多人点赞 2020-10-16 14:24:48
    机器学习案例实操——鸢尾花 本文做要给大家回归一下Numpy的基础知识,毕竟python 中的sklearn中使用的是这种数据类型。然后用一个鸢尾花分类实例给大家演示机器学习的整个过程,让你快速入门机器学习。 1.Numpy...

    机器学习案例实操——鸢尾花

     本文做要给大家回归一下Numpy的基础知识,毕竟python 中的sklearn中使用的是这种数据类型。然后用一个鸢尾花分类实例给大家演示机器学习的整个过程,让你快速入门机器学习。
    

    1.Numpy基础知识回顾
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    import numpy as np
    arr1=np.array([2,3,4,5,6])#数值型数组
    arr2=np.array((2,3,4,5,6))#数值型数组
    arr3=np.array(['a','b','c','d'])#字符串型数组
    arr4=np.array([(1,2,3),(4,5,6)])#二维数组
    print("数组1的各维度:{},数组4的各维度:{}".format(arr1.shape,arr4.shape))
    print("数组1的元素个数:{},数组4的元素个数:{}".format(arr1.size,arr4.size))
    print("数组1的维度:{},数组4的维度:{}".format(arr1.ndim,arr4.ndim))
    print("数组1的数据类型:{},数组4的数据类型:{}".format(arr1.dtype,arr4.dtype))
    

    在这里插入图片描述

    #数据类型转换
    arr1=np.arange(6)
    print("将数组arr1元素转为浮点型:{}".format(arr1.astype(np.float64)))
    arr2=np.arange(1.0,1.5,0.1)#小数转为整数,小数部分会截断
    print("将数组arr2元素转为整型:{}".format(arr2.astype(np.int32)))
    arr3=np.array(['1','1.2','1.5'])#含有小数,不能直接转为整数
    print("将数组arr3元素转为浮点型:{}".format(arr3.astype(np.float)))
    print("将数组arr1元素转为arr3元素类型:{}".format(arr1.astype(arr3.dtype)))
    print("将数组arr2元素转为arr3元素类型:{}".format(arr2.astype(arr3.dtype)))
    

    在这里插入图片描述

    #数据类型转换
    arr1=np.arange(6)
    print("将数组arr1元素转为浮点型:{}".format(arr1.astype(np.float64)))
    arr2=np.arange(1.0,1.5,0.1)#小数转为整数,小数部分会截断
    print("将数组arr2元素转为字符串型:{}".format(arr2.astype(np.int32)))
    arr3=np.array(['1','1.2','1.5'])#含有小数,不能直接转为整数
    print("将数组arr3元素转为浮点型:{}".format(arr3.astype(np.float)))
    print("将数组arr1元素转为arr3元素类型:{}".format(arr1.astype(arr3.dtype)))
    print("将数组arr2元素转为arr3元素类型:{}".format(arr2.astype(arr3.dtype)))
    

    在这里插入图片描述

    #数据预处理
    arr1=np.array([1,2,np.nan,4])
    print("一维数组arr1:{}".format(arr1))
    print("判断arr1所有元素是否有缺失值:\n{}".\
          format(np.isnan(arr1)))
    arr1[np.isnan(arr1)]=0#缺失值填充
    print("将arr1中缺失值替换为0:{}".format(arr1))
    
    
    arr2=np.array([1,2,2,3,3,4])
    print("将arr2去重后为:{}".format(np.unique(arr2)))
    print("将arr2用set去重后为:{}".\
          format(np.array(list(set(arr2)))))
    

    2.辨异识花
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

    import csv
    import numpy as np
    with open('iris.csv','r') as  f :
        rows=csv.reader(f)
        for row in rows:
            print(row)
    

    在这里插入图片描述

    import csv
    import numpy as np
    with open('iris.csv','r') as  f :
        rows=csv.reader(f)
        data_file=np.array(list(rows))#将数据转换为数组
        print(data_file.shape)#查看数组的形状
        print(data_file.size)#查看数组的元素个数
        print(data_file.ndim)#查看数组维数
    

    在这里插入图片描述

    Data=data_file[1:,1:5].astype(float)#将字符串转为浮点
    print(np.isnan(Data).any())#检查是否有缺失值
    Labels=data_file[1:,-1]#鸢尾花类型标识
    print(Labels[Labels==""].shape)#检查是否有缺失值
    

    在这里插入图片描述

    from sklearn import datasets
    iris_data = datasets.load_iris()
    data = iris_data.data#训练样本的值
    feature = iris_data.feature_names  #训练样本的值对应的名称
    target = iris_data.target  # 所有样本的目标值
    target_names = iris_data.target_names  # 目标值对应的名称
    X_train = data[:,0:2]  # 训练样本的特征
    y_train = target  # 训练样本的结果
    #目前取得样本特征和结果依旧是一一对应的关系
    #X_train = data[:,2:4]  # 训练样本的特征
    import matplotlib.pyplot as plt
    plt.scatter(X_train[:,0],X_train[:,1],c=y_train)
    plt.xlabel('Sepal length')  #设置x轴的标签
    plt.ylabel('Sepal width')  #设置y轴的标签
    #plt.scatter(X_train[:,0],X_train[:,1],c=y_train)
    #plt.xlabel('Petal length')  #设置x轴的标签
    #plt.ylabel('Petal width')  #设置y轴的标签
    plt.show()
    

    在这里插入图片描述
    在这里插入图片描述

    #机器学习
    from sklearn.neighbors import KNeighborsClassifier
    np.random.seed(0)#设置随机种子,产生的随机数一样
    indices = np.random.permutation(len(Data))#随机打乱数组
    print(indices)
    Data_train = Data[indices[:-10]]#随机选取140样本作为训练集
    Labels_train = Labels[indices[:-10]]#随机选取140样本标签作为训练集
    
    Data_test = Data[indices[-10:]]#剩下10个样本作为测试集
    Labels_test = Labels[indices[-10:]]#剩下10个样本标签作为测试集
    

    在这里插入图片描述
    在这里插入图片描述

    knn = KNeighborsClassifier()#定义一个knn分类器对象
    knn.fit(Data_train,Labels_train)#接收两个参数:训练数据集及其样本标签
    Labels_predict = knn.predict(Data_test) #调用该对象的测试方法,主要接收一个参数:测试数据集
    probility=knn.predict_proba(Data_test)#计算各测试样本基于概率的预测
    
    score=knn.score(Data_test,Labels_test,sample_weight=None)#调用该对象的打分方法,计算出准确率
    print('Labels_predict = ')
    print(Labels_predict )#输出测试的结果
    print('Labels_test = ')
    print(Labels_test)#输出原始测试数据集的正确标签
    print('Accuracy:',score)#输出准确率计算结果
    print(probility)
    

    更新每页代码给大家O(∩_∩)O

    
    编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • python机器学习案例

    2018-10-14 12:44:09
    机器学习的学习小案例,包含logistic-regression、k-mens、randomforest等
  • 机器学习案例源码

    2018-02-12 15:41:39
    机器学习各种方法的案例源码 由浅入深 完整 可编译运行
  • 10个基于JavaScript的机器学习案例.pdf
  • 机器学习案例——鸢尾花数据集分析

    万次阅读 多人点赞 2018-05-23 21:22:15
        前几天把python基础知识过了一遍,拿了这个小例子作为练手项目,这个案例也有师兄的帮助,记录完,发现代码贴的很多,文章有点长,为了节省篇幅,有一些说明就去掉了,毕竟鸢尾花数据集比较经典,网上能找到...

        前几天把python基础知识过了一遍,拿了这个小例子作为练手项目,这个案例也有师兄的帮助,记录完,发现代码贴的很多,文章有点长,为了节省篇幅,有一些说明就去掉了,毕竟鸢尾花数据集比较经典,网上能找到很多和我差不多的案例。还有就是发现一个新的markdown排版工具,今天想试试效果。

    数据来源

        首先说一下,该数据集来源于网络。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。数据来源:http://archive.ics.uci.edu/ml/datasets/Iris

        先搜了一下,什么是花瓣和花萼,小小科普。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MiqxQnQ6-1601307500587)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/花瓣花萼.png)]

    数据简单处理

    import pandas as pd
    
    # 读入数据
    df = pd.read_csv('iris/iris.csv')
    
    '''
    数据时以逗号为分隔符的,
    但是这个数据没有列的名字,
    所以先给每个列取个名字,
    直接使用数据说明中的描述
    '''
    df.columns = ['sepal_len', 'sepal_width', 'petal_len', 'petal_width', 'class']
    
    # 查看前5条数据
    df.head()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5K45l0Q-1601307500592)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/数据前5行.png)]

    '''
    最后类别一列,感觉前面的'Iris-'有点多余
    即把class这一列的数据按'-'进行切分
    取切分后的第二个数据,为了好看一点点
    '''
    df['class'] = df['class'].apply(lambda x: x.split('-')[1]) 
    
    # 查看数据信息
    df.describe()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YpZ6MoBL-1601307500594)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/数据描述.png)]

        使用describe()可以很方便的查看数据的大致信息,可以看到数据是没有缺失值的,总共有145条,每一列的最大值、最小值、平均值都可以查看。

    数据可视化

        为了比较直观的查看数据的分布,用matplotlib进行了简单的可视化展示,查看数据的分布,画个图。

    import numpy as np
    
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    %matplotlib inline
    
    def scatter_plot_by_category(feat, x, y):
        alpha = 0.5
        gs = df.groupby(feat)
        cs = cm.rainbow(np.linspace(0, 1, len(gs)))
        for g, c in zip(gs, cs):
            plt.scatter(g[1][x], g[1][y], color=c, alpha=alpha)
    
    plt.figure(figsize=(20,5))
    
    plt.subplot(131)
    scatter_plot_by_category('class', 'sepal_len', 'petal_len')
    plt.xlabel('sepal_len')
    plt.ylabel('petal_len')
    plt.title('class')
    
    # 为了节省篇幅,省了第二、三个图的代码
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfob0y8d-1601307500596)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/散点图.png)]

    import seaborn as sb
    
    plt.figure(figsize=(20, 10))
    for column_index, column in enumerate(df.columns):
        if column == 'class':
            continue
        plt.subplot(2, 2, column_index + 1)
        sb.violinplot(x='class', y=column, data=df)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDu1vkwM-1601307500597)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/花花.png)]

    模型训练

        因为鸢尾花数据集很简单,特征已经全部提取好了,而且也很纯,所以就直接放到机器学习算法里面训练了。这里使用的是决策树分类算法。

    # 首先对数据进行切分,即分出数据集和测试集
    from sklearn.cross_validation import train_test_split
    
    all_inputs = df[['sepal_len', 'sepal_width',
                                 'petal_len', 'petal_width']].values
    all_classes = df['class'].values
    
    (X_train,
     X_test,
     X_train,
     Y_test) = train_test_split(all_inputs, all_classes, train_size=0.8, random_state=1)
     
    
    # 使用决策树算法进行训练
    from sklearn.tree import DecisionTreeClassifier
    
    # 定义一个决策树对象
    decision_tree_classifier = DecisionTreeClassifier()
    
    # 训练模型
    model = decision_tree_classifier.fit(training_inputs, training_classes)
    
    # 所得模型的准确性
    print(decision_tree_classifier.score(testing_inputs, testing_classes))
    
    # 使用训练的模型进行预测,为了偷懒,
    # 直接把测试集里面的数据拿出来了三条
    print(X_test[0:3])
    print(Y_test[0:3])
    model.predict(X_test[0:3])
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YELyroAm-1601307500598)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/预测.png)]

        可以看到效果还是不错,在测试集上的准确率达到了97%。网上还有人提供了一个可视化工具Graph Visualization(http://www.graphviz.org/),可以利用它把构建的决策树模型直观的展示出来,这里不展示了,代码贴太多了,文章太长了。

    写在最后

        推荐一个课程,是吴恩达在网易云课堂开设的微专业——深度学习工程师课程,我学了几天了,讲的比较清晰,而且是免费的,现在我已经学完第二周的课时了,后面打算把自己的学习笔记也发出来一起交流。
    课程地址:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

    推荐阅读:

    一个诗意的女孩——西凉忆

    python小结,再谈谈对学习的理解

    从具体案例了解知识图谱构建流程

    个人微信:Guanngxu
    在这里插入图片描述

    展开全文
  • 机器学习基础课 (3):机器学习案例之K-近邻(附详细python代码注释).pdf
  • 分享视频教程——基于Python数据分析与机器学习案例实战教程,课程很棒,附源码和课件,完整版资料,喜欢的同学赶紧下载吧
  • 构造一个端对端的房地产案例描述。主要分为以下几个步骤:1.观察大局,2.获得数据,3.从数据可视化中获得洞见,4.机器学习算法的数据准备,5.选择和训练模型,6.微调模型,7.展示解决方案,8.启动、监控和维护系统
  • python机器学习案例系列教程——LightGBM算法

    万次阅读 多人点赞 2018-05-08 16:23:08
    安装pip install lightgbmgitup网址:https://github.com/Microsoft/LightGBM中文教程http://lightgbm.apachecn.org/cn/latest/index.htmllightGBM简介xgboost的出现,让数据民工们告别了传统的机器学习算法们:RF、...

    分享一个朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开


    全栈工程师开发手册 (作者:栾鹏)
    python教程全解

    安装

    pip install lightgbm
    

    gitup网址:https://github.com/Microsoft/LightGBM

    中文教程

    http://lightgbm.apachecn.org/cn/latest/index.html

    lightGBM简介

    xgboost的出现,让数据民工们告别了传统的机器学习算法们:RF、GBM、SVM、LASSO………。现在微软推出了一个新的boosting框架,想要挑战xgboost的江湖地位。

    顾名思义,lightGBM包含两个关键点:light即轻量级,GBM 梯度提升机。

    <
    展开全文
  • 机器学习案例分析

    2015-01-15 22:03:20
    广告,金融,互联网等行业数据分析使用的机器学习算法,带代码。
  • 本篇文章主要介绍了python机器学习案例教程——K最近邻算法的实现,详细的介绍了K最近邻算法的概念和示例,具有一定的参考价值,有兴趣的可以了解一下
  • UW_ML_Case_Study 华盛顿大学机器学习案例研究在线课程 该代码是以下内容的实现: 一些课程内容 一些分配 实现使用以下方法完成: Apache Spark(PySpark) Matplotlib ans Seaborn的图表
  • 机器学习案例——基于朴素贝叶斯算法的文本分类(垃圾邮件过滤)的数据集,见本人的这篇博客!!!这个资源是本人搜集的支撑数据包!
  • 大数据培训期间,课堂教材
  • 《数据挖掘:你必须知道的32个经典案例》第五章 经典的机器学习案例:李倩星:毕业于西南大学统计学专业,对数据挖掘、机器学习以及人工智能领域有深刻的研究。主持翻译了《传播学中的大数据:发展与不足》、《大数据、...
  • 机器学习案例实战第二课-欺诈检测

    千人学习 2017-04-18 08:50:59
    购买课程后,添加小助手微信...每次课程涉及一个完整的案例,基于案例讲解python库的使用以及如何建立机器学习模型,对涉及到的机器学习算法给出通俗易懂的解释,帮助大家掌握经典机器学习算法,并应用在实际的案例中。
  • 机器学习
  • 机器学习案例实战-信用卡欺诈检测

    千次阅读 2017-03-31 17:34:46
    机器学习案例实战之信用卡欺诈检测故事背景:原始数据为个人交易记录,但是考虑数据本身的隐私性,已经对原始数据进行了类似PCA的处理,现在已经把特征数据提取好了,接下来的目的就是如何建立模型使得检测的效果...

    机器学习案例实战之信用卡欺诈检测

    故事背景:原始数据为个人交易记录,但是考虑数据本身的隐私性,已经对原始数据进行了类似PCA的处理,现在已经把特征数据提取好了,接下来的目的就是如何建立模型使得检测的效果达到最好,这里我们虽然不需要对数据做特征提取的操作,但是面对的挑战还是蛮大的。

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.cross_validation import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.cross_validation import KFold, cross_val_score
    from sklearn.metrics import confusion_matrix,recall_score,classification_report 

    数据分析与建模可不是体力活,时间就是金钱我的朋友(魔兽玩家都懂的!)如果你用python来把玩数据,那么这些就是你的核武器啦。简单介绍一下这几位朋友!
    Numpy-科学计算库 主要用来做矩阵运算,什么?你不知道哪里会用到矩阵,那么这样想吧,咱们的数据就是行(样本)和列(特征)组成的,那么数据本身不就是一个矩阵嘛。
    Pandas-数据分析处理库 很多小伙伴都在说用python处理数据很容易,那么容易在哪呢?其实有了pandas很复杂的操作我们也可以一行代码去解决掉!
    Matplotlib-可视化库 无论是分析还是建模,光靠好记性可不行,很有必要把结果和过程可视化的展示出来。
    Scikit-Learn-机器学习库 非常实用的机器学习算法库,这里面包含了基本你觉得你能用上所有机器学习算法啦。但还远不止如此,还有很多预处理和评估的模块等你来挖掘的!

    data = pd.read_csv("creditcard.csv")
    data.head()

    数据样本

    首先我们用pandas将数据读进来并显示最开始的5行,看见木有!用pandas读取数据就是这么简单!这里的数据为了考虑用户隐私等,已经通过PCA处理过了,现在大家只需要把数据当成是处理好的特征就好啦!

    接下来我们核心的目的就是去检测在数据样本中哪些是具有欺诈行为的!

    count_classes = pd.value_counts(data['Class'], sort = True).sort_index()
    count_classes.plot(kind = 'bar')
    plt.title("Fraud class histogram")
    plt.xlabel("Class")
    plt.ylabel("Frequency")

    这里写图片描述

    千万不要着急去用机器学习算法建模做这个分类问题。首先我们来观察一下数据的分布情况,在数据样本中有明确的label列指定了class为0代表正常情况,class为1代表发生了欺诈行为的样本。从上图中可以看出来。。。等等,你不是说有两种情况吗,为啥图上只有class为0的样本啊?再仔细看看,纳尼。。。class为1的并不是木有,而是太少了,少到基本看不出来了,那么此时我们面对一个新的挑战,样本极度不均衡,接下来我们首先要解决这个问题,这个很常见也是很头疼的问题。

    这里我们提出两种解决方案 也是数据分析中最常用的两种方法,下采样过采样

    先挑个软柿子捏,下采样比较简单实现,咱们就先搞定第一种方案!下采样的意思就是说,不是两类数据不均衡吗,那我让你们同样少(也就是1有多少个 0就消减成多少个),这样不就均衡了吗。

    很简单的实现方法,在属于0的数据中,进行随机的选择,就选跟class为1的那类样本一样多就好了,那么现在我们已经得到了两组都是非常少的数据,接下来就可以建模啦!不过在建立任何一个机器学习模型之前不要忘了一个常规的操作,就是要把数据集切分成训练集和测试集,这样会使得后续验证的结果更为靠谱。

    在训练逻辑回归的模型中做了一件非常常规的事情,就是对于一个模型,咱们再选择一个算法的时候伴随着很多的参数要调节,那么如何找到最合适的参数可不是一件简单的事,依靠经验值并不是十分靠谱,通常情况下我们需要大量的实验也就是不断去尝试最终得出这些合适的参数。

    不同C参数对应的最终模型效果:

    C parameter: 0.01

    Iteration 1 : recall score = 0.958904109589
    Iteration 2 : recall score = 0.917808219178
    Iteration 3 : recall score = 1.0
    Iteration 4 : recall score = 0.972972972973
    Iteration 5 : recall score = 0.954545454545

    Mean recall score 0.960846151257

    C parameter: 0.1

    Iteration 1 : recall score = 0.835616438356
    Iteration 2 : recall score = 0.86301369863
    Iteration 3 : recall score = 0.915254237288
    Iteration 4 : recall score = 0.932432432432
    Iteration 5 : recall score = 0.878787878788

    Mean recall score 0.885020937099

    C parameter: 1

    Iteration 1 : recall score = 0.835616438356
    Iteration 2 : recall score = 0.86301369863
    Iteration 3 : recall score = 0.966101694915
    Iteration 4 : recall score = 0.945945945946
    Iteration 5 : recall score = 0.893939393939

    Mean recall score 0.900923434357

    C parameter: 10

    Iteration 1 : recall score = 0.849315068493
    Iteration 2 : recall score = 0.86301369863
    Iteration 3 : recall score = 0.966101694915
    Iteration 4 : recall score = 0.959459459459
    Iteration 5 : recall score = 0.893939393939

    Mean recall score 0.906365863087

    C parameter: 100

    Iteration 1 : recall score = 0.86301369863
    Iteration 2 : recall score = 0.86301369863
    Iteration 3 : recall score = 0.966101694915
    Iteration 4 : recall score = 0.959459459459
    Iteration 5 : recall score = 0.893939393939

    Mean recall score 0.909105589115

    Best model to choose from cross validation is with C parameter = 0.01

    在使用机器学习算法的时候,很重要的一部就是参数的调节,在这里我们选择使用最经典的分类算法,逻辑回归!千万别把逻辑回归当成是回归算法,它就是最实用的二分类算法!这里我们需要考虑的c参数就是正则化惩罚项的力度,那么如何选择到最好的参数呢?这里我们就需要交叉验证啦,然后用不同的C参数去跑相同的数据,目的就是去看看啥样的C参数能够使得最终模型的效果最好!可以到不同的参数对最终的结果产生的影响还是蛮大的,这里最好的方法就是用验证集去寻找了!

    模型已经造出来了,那么怎么评判哪个模型好,哪个模型不好呢?我们这里需要好好想一想!

    一般都是用精度来衡量,也就是常说的准确率,但是我们来想一想,我们的目的是什么呢?是不是要检测出来那些异常的样本呀!换个例子来说,假如现在医院给了我们一个任务要检测出来1000个病人中,有癌症的那些人。那么假设数据集中1000个人中有990个无癌症,只有10个有癌症,我们需要把这10个人检测出来。假设我们用精度来衡量,那么即便这10个人没检测出来,也是有 990/1000 也就是99%的精度,但是这个模型却没任何价值!这点是非常重要的,因为不同的评估方法会得出不同的答案,一定要根据问题的本质,去选择最合适的评估方法。

    同样的道理,这里我们采用recall来计算模型的好坏,也就是说那些异常的样本我们的检测到了多少,这也是咱们最初的目的!这里通常用混淆矩阵来展示。

    这里写图片描述

    这个图就非常漂亮了!(并不是说画的好而是展示的很直接)从图中可以清晰的看到原始数据中样本的分布以及我们的模型的预测结果,那么recall是怎么算出来的呢?就是用我们的检测到的个数(137)去除以总共异常样本的个数(10+137),用这个数值来去评估我们的模型。利用混淆矩阵我们可以很直观的考察模型的精度以及recall,也是非常推荐大家在评估模型的时候不妨把这个图亮出来可以帮助咱们很直观的看清楚现在模型的效果以及存在的问题。

    这里写图片描述

    这可还木有完事,我们刚才只是在下采样的数据集中去进行测试的,那么这份测试还不能完全可信,因为它并不是原始的测试集,我们需要在原始的,大量的测试集中再次去衡量当前模型的效果。可以看到效果其实还不错,但是哪块有些问题呢,是不是我们误杀了很多呀,有些样本并不是异常的,但是并我们错误的当成了异常的,这个现象其实就是下采样策略本身的一个缺陷。

    对于逻辑回归算法来说,我们还可以指定这样一个阈值,也就是说最终结果的概率是大于多少我们把它当成是正或者负样本。不用的阈值会对结果产生很大的影响。
    这里写图片描述
    这里写图片描述

    上图中我们可以看到不用的阈值产生的影响还是蛮大的,阈值较小,意味着我们的模型非常严格宁肯错杀也不肯放过,这样会使得绝大多数样本都被当成了异常的样本,recall很高,精度稍低 当阈值较大的时候我们的模型就稍微宽松些啦,这个时候会导致recall很低,精度稍高,综上当我们使用逻辑回归算法的时候,还需要根据实际的应用场景来选择一个最恰当的阈值!

    说完了下采样策略,我们继续唠一下过采样策略,跟下采样相反,现在咱们的策略是要让class为0和1的样本一样多,也就是我们需要去进行数据的生成啦。
    这里写图片描述

    SMOTE算法是用的非常广泛的数据生成策略,流程可以参考上图,还是非常简单的,下面我们使用现成的库来帮助我们完成过采样数据生成策略。

    很简单的几步操作我们就完成过采样策略,那么现在正负样本就是一样多的啦,都有那么20多W个,现在我们再通过混淆矩阵来看一下,逻辑回归应用于过采样样本的效果。数据增强的应用面已经非常广了,对于很多机器学习或者深度学习问题,这已经成为了一个常规套路啦!

    这里写图片描述
    我们对比一下下采样和过采样的效果,可以说recall的效果都不错,都可以检测到异常样本,但是下采样是不是误杀的比较少呀,所以如果我们可以进行数据生成,那么在处理样本数据不均衡的情况下,过采样是一个可以尝试的方案!

    总结:对于一个机器学习案例来说,一份数据肯定伴随着很多的挑战和问题,那么最为重要的就是我们该怎么解决这一系列的问题,大牛们不见得代码写的比咱们强但是他们却很清楚如何去解决问题。今天咱们讲述了一个以检测任务为背景的案例,其中涉及到如何处理样本不均衡问题,以及模型评估选择的方法,最后给出了逻辑回归在不用阈值下的结果。这里也是希望同学们可以通过案例多多积攒经验,早日成为大牛。

    这次就先跟大家分享这样一个样本不平衡的检测案例,更多精彩内容欢迎参与到我的视频课程中,更多干货等待你的加入

    展开全文
  • Python项目案例开发从入门到实战源代码第18章 机器学习案例——基于朴素贝叶斯算法的文本分类.rar
  • Python实现经典机器学习案例 良/恶性性乳腺癌肿瘤完整数据预测 首先我们介绍一个概念,监督学习。 监督学习 “机器学习中监督学习模型的任务是根据已有经验知识对未知样本的目标/标签进行预测。根据目标预测变量的...
  • 机器学习
  • CFD中的机器学习案例 该存储库包含出版的文章使用的代码。 安装 我们建议使用单独的虚拟环境。 要创建一个,运行 python3 -m venv 通过运行输入 source < ENV> /bin/activate 要安装需求,请运行 cd flowfusic_...
  • 波士顿住房价格 本项目是对经典机器学习案例-波士顿房价预测模型的复现。 主要收获: 复现流程参考了泰坦尼克案例的分析流程。 巩固探索性分析的一般方法与流程。 作者:许健铭
  • 购买课程后,添加小助手微信(微信号:csdn500)回复【唐宇迪】 进入学习群,获取唐宇迪老师社群答疑 深度学习框架Tensorflow实战,从Tensorflow基本使用方法逐步过渡到神经网络模型,详解模型参数与训练模块。...
  • 今天我们就来看看,在日常生活中有哪些最常见的机器学习用例(有时我们甚至没有意识到这些例子涉及机器学习)。本文涵盖了以下常见的机器学习用例: 1. 机器学习在智能手机中的用例 你知道吗,智能手机中的大多数...
  • 陆续介绍和分享一些机器学习方面的案例,Python基础知识可以参考前面的“Python可以这样学”8套系列课程,或者阅读作者Python系列教材《Python程序设计(第2版)》、《Python程序设计基础(第2版)》、《Python可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,896
精华内容 44,358
关键字:

机器学习案例