机器学习算法基础(基础机器学习课程)——第一天

01.机器学习简介

演变过程

机器学习算法基础(基础机器学习课程)——第一天_第1张图片

02.机器学习概述

什么是机器学习

机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测

为什么需要机器学习

机器学习算法基础(基础机器学习课程)——第一天_第2张图片

机器学习的应用场景

医疗、航空、教育、物流、电商......

03.数据集的组成

数据来源以及数据格式

机器学习算法基础(基础机器学习课程)——第一天_第3张图片

可用数据集 

机器学习算法基础(基础机器学习课程)——第一天_第4张图片

常用数据集数据的结构组成

结构:特征值+目标值

机器学习算法基础(基础机器学习课程)——第一天_第5张图片

04.特征工程的定义

特征工程是什么

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性

Scikit-learn库介绍

  1. Python语言的机器学习工具
  2. Scikit-learn包括许多知名的机器学习算法的实现
  3. Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。
  4. 目前稳定版本0.18

05.字典特征数据抽取

sklearn特征抽取API

sklearn.feature_extraction

字典特征抽取

作用:对字典数据进行特征值化类:sklearn.feature_extraction.DictVectorizer

DictVectorizer.fit_transform(X)      

  1. X:字典或者包含字典的迭代器
  2. 返回值:返回sparse矩阵

DictVectorizer.inverse_transform(X)

  1. X:array数组或者sparse矩阵
  2. 返回值:转换之前数据格式

DictVectorizer.get_feature_names()

  1. 返回类别名称

DictVectorizer.transform(X)

  1. 按照原先的标准转换

机器学习算法基础(基础机器学习课程)——第一天_第6张图片

one-hot编码分析 

机器学习算法基础(基础机器学习课程)——第一天_第7张图片   

机器学习算法基础(基础机器学习课程)——第一天_第8张图片

06.文本特征抽取以及中文问题

文本特征抽取

作用:对文本数据进行特征值化类:sklearn.feature_extraction.text.CountVectorizer

CountVectorizer语法

  • CountVectorizer(max_df=1.0,min_df=1,…)
  • 返回词频矩阵
  • CountVectorizer.fit_transform(X,y)      
  • X:文本或者包含文本字符串的可迭代对象
  • 返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X)
  • X:array数组或者sparse矩阵
  • 返回值:转换之前数据格式
  • CountVectorizer.get_feature_names()
  • 返回值:单词列表
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import sklearn
from sklearn import feature_extraction

cv = sklearn.feature_extraction.text.CountVectorizer()
data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])
print(cv.get_feature_names())
print(data.toarray())
/Users/zhucan/PycharmProjects/pythonProject9/venv/bin/python /Users/zhucan/PycharmProjects/pythonProject9/main.py
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 1 1 1 0 1 1 0]
 [1 1 1 0 1 1 0 1]]

注意:

  1. 单个字母不会被提取
  2. 中文需要分词后才能被提取
from sklearn import feature_extraction
import jieba
def cutword():
    con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天")
    con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
#转换成列表
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)
#把列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
    return c1,c2,c3

def hanzivec():
    c1,c2,c3 = cutword()
    print(c1,c2,c3)
    cv = sklearn.feature_extraction.text.CountVectorizer()
    data = cv.fit_transform([c1,c2,c3])
    print(cv.get_feature_names())
    print(data.toarray())

hanzivec()
今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。 如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。
['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '这样']
[[0 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 0 2 1 0 0 0 1 1 0 0 0]
 [0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 1]
 [1 1 0 0 4 3 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 0]]

07.tf-df分析问题

机器学习算法基础(基础机器学习课程)——第一天_第9张图片

TF-IDF

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高, 并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

import sklearn
from sklearn import feature_extraction
import jieba
def cutword():
    con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天")
    con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
#转换成列表
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)
#把列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
    return c1,c2,c3

def tfidfvec():
    c1,c2,c3 = cutword()
    print(c1,c2,c3)
    tf = sklearn.feature_extraction.text.TfidfVectorizer()
    data = tf.fit_transform([c1,c2,c3])
    print(tf.get_feature_names())
    print(data.toarray())

tfidfvec()
今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。 如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。
['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '这样']
[[0.         0.         0.21821789 0.         0.         0.
  0.43643578 0.         0.         0.         0.         0.
  0.21821789 0.         0.21821789 0.         0.         0.
  0.         0.21821789 0.21821789 0.         0.43643578 0.
  0.21821789 0.         0.43643578 0.21821789 0.         0.
  0.         0.21821789 0.21821789 0.         0.         0.        ]
 [0.         0.         0.         0.2410822  0.         0.
  0.         0.2410822  0.2410822  0.2410822  0.         0.
  0.         0.         0.         0.         0.         0.2410822
  0.55004769 0.         0.         0.         0.         0.2410822
  0.         0.         0.         0.         0.48216441 0.
  0.         0.         0.         0.         0.2410822  0.2410822 ]
 [0.15698297 0.15698297 0.         0.         0.62793188 0.47094891
  0.         0.         0.         0.         0.15698297 0.15698297
  0.         0.15698297 0.         0.15698297 0.15698297 0.
  0.1193896  0.         0.         0.15698297 0.         0.
  0.         0.15698297 0.         0.         0.         0.31396594
  0.15698297 0.         0.         0.15698297 0.         0.        ]]

你可能感兴趣的:(算法,机器学习,概率论)