zoukankan      html  css  js  c++  java
  • 总结机器学习部分计算原理

      感觉学习python的机器学习还是要总结下的,东西太多了,又不知道那个是常用的,不如总结一下以免忘记,也好以后查看。

      1、数据集

        数据集就是大量的、有效的数据,数据集分为训练集和测试集,以下全部为个人理解:训练集就是样本数据,通过对大量样本数据进行统计学计算,得到“样本们”表达出的共有的性质,就是特征。我觉得就可以类比于人类“找规律”,机器通过训练集“找规律”,找到规律后,就可以以这个规律来验证其他的数据是否符合,从而判断其他数据代表的内容是不是想要得到的目标。

        最常见的小型数据集就是sklearn自带的鸢尾花数据集,sklearn是python的第三方库,开源的机器学习工具包,我们可以从中找到鸢尾花数据集,代码如下

    1 from sklearn.datasets import load_iris
    2 # 测试鸢尾花数集
    3 def dataset():
    4     iris = load_iris()
    5     print(iris)

        打印出来的效果是这样的:

            数据太多了,就不全截屏了,可以看到的是,共150条样本,均分成3类(指3类鸢尾花,分别是'setosa', 'versicolor', 'virginica',分别是山鸢尾花,变色鸢尾花和维吉尼亚鸢尾花),分为4个属性(分别是'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)',分别是花萼长度,花萼宽度,花瓣长度,花瓣宽度)。想要了解更多可以 看一看探索sklearn | 鸢尾花数据集分析鸢尾花数据集

      2、字典特征抽取

        特征抽取,个人理解就是将所有的东西统一转化为数字,因为只有数字才可以进行计算处理。这里就涉及到了one-hot编码的转化方式。这是一个比较难理解的编码方式,它转换的规则应该用程序来解释。下面的程序就是字典特征抽取。

     1 def dict_trans():
     2     # 设置数据
     3     data = [{"关键词": "理工大学","位置":"山西"},
     4             {"关键词": "理工大学","位置":"北京"},
     5             {"关键词": "清华大学","位置":"北京"}]
     6     # 实例化DictVectorizer,参数sparse默认True,默认截图第二个
     7     trans = DictVectorizer(sparse=False)
     8     # 进行特征抽取
     9     datax = trans.fit_transform(data)
    10     print(datax)
    11     # 打印特征属性名字
    12     print(trans.get_feature_names())

        可以通过运行结果了解one-hot编码格式是什么样的:第一张图是3x4矩阵,可以看到提取出4个特征属性对应矩阵的4列,而data中有3个样本正好对应矩阵的3行,所以可以看出,形成的3x4矩阵,行表示样本,列表示4个特征属性,而1和0代表当前样本有没有这个特征属性。

        在第二张图中表示的是图一的描述位置,(0,1)代表第0行第1列有值,1.0表示值为1,剩下的以此类推。当然,如果data中给的特征属性不是字符串,而是数字,那么在图一的矩阵中相应位置上就会显示数字,而图二中的位置表示的值就是给定的数字。

      3、文本特征抽取

        文本特征抽取和字典特征抽取实现代码基本相同,但其中,data应当是列表格式,下附代码和输出

    1 # 文本特征抽取
    2 def text_trans():
    3     data = ['理工大学 山西','理工大学 北京','清华大学 北京']
    4     trans = CountVectorizer()
    5     datax = trans.fit_transform(data)
    6     # CountVectorizer没有参数sparse,所以用toarray达到输出效果
    7     print(datax.toarray())
    8     print(trans.get_feature_names())

     

         文本特征抽取需要注意的一点是输入的数据,CountVectorizer()方法可以识别单个字、符号的无用字符串,它也可以根据标点符号、空格分割出特征属性,但它不可以将中文段落识别成一个个中文词组,所以应当配合jieba(同样是python的第三方库,专门用来处理中文)切词共同食用。

    参考资料:https://blog.csdn.net/u013019338/article/details/87475669

         https://www.cnblogs.com/mandy-study/p/7941365.html

         https://blog.csdn.net/chuan403082010/article/details/85217891

    推荐数据集网站(国内能上的):https://tianchi.aliyun.com/dataset/

                   https://www.kdnuggets.com/datasets/index.html

                   https://www.pkbigdata.com/common/cmptIndex.html

         

  • 相关阅读:
    mysql中的where和having的区别
    php解决前后端验证字符串长度不一致
    复习
    SQL语句执行顺序
    领域驱动设计(DDD)
    什么是ORM?为啥要是用ORM?
    Python web框架搭建
    Python web自动化环境搭建
    Jmeter录制手机app脚本
    Charles截取 Https 通讯信息
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12486156.html
Copyright © 2011-2022 走看看