3天简单快速入门Python机器学习【视频+讲义+代码+笔记】_延锋L的博客-CSDN博客

目录

1、课堂纪要

2、课堂案例代码

3、内容总结-思维导图

4、课堂截图


1、课堂纪要

人工智能阶段
    机器学习 三天
    深度学习 三天
    量化交易 四天

传统的机器学习算法
    机器学习概述、特征工程 1天
    分类算法             1天
    回归算法、聚类        1天

机器学习概述
    1.1 人工智能概述
        达特茅斯会议-人工智能的起点
        机器学习是人工智能的一个实现途径
        深度学习是机器学习的一个方法发展而来
        1.1.2 机器学习、深度学习能做些什么
            传统预测
            图像识别
            自然语言处理
    1.2 什么是机器学习
        数据
        模型
        预测
        从历史数据当中获得规律?这些历史数据是怎么的格式?
        1.2.3 数据集构成
            特征值 + 目标值
    1.3 机器学习算法分类
        监督学习
            目标值:类别-分类问题
                k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归
            目标值:连续型的数据-回归问题
                线性回归、岭回归
        目标值:无-无监督学习
            聚类 k-means
        1、预测明天的气温是多少度?回归
        2、预测明天是阴、晴还是雨?分类
        3、人脸年龄预测?回归/分类
        4、人脸识别?分类
    1.4 机器学习开发流程
        1)获取数据
        2)数据处理
        3)特征工程
        4)机器学习算法训练-模型
        5)模型评估
        6)应用
    1.5 学习框架和资料介绍
        1)算法是核心,数据与计算是基础
        2)找准定位
        3)怎么做?
            1、入门
            2、实战类书籍
            3、机器学习-”西瓜书”-周志华
               统计学习方法-李航
               深度学习-“花书”
        4)1.5.1 机器学习库与框架

特征工程
    2.1 数据集
        2.1.1 可用数据集
            公司内部 百度
            数据接口 花钱
            数据集
            学习阶段可以用的数据集:
                1)sklearn
                2)kaggle
                3)UCI
            1 Scikit-learn工具介绍
        2.1.2 sklearn数据集
            sklearn.datasets
                load_*  获取小规模数据集
                fetch_* 获取大规模数据集
                2 sklearn小数据集
                    sklearn.datasets.load_iris()
                3 sklearn大数据集
                    sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
                4 数据集的返回值
                    datasets.base.Bunch(继承自字典)
                        dict["key"] = values
                        bunch.key = values
                思考:拿到的数据是否全部都用来训练一个模型?
        2.1.3 数据集的划分
            训练数据:用于训练,构建模型
            测试数据:在模型检验时使用,用于评估模型是否有效
                测试集 20%~30%
                sklearn.model_selection.train_test_split(arrays, *options)
                训练集特征值,测试集特征值,训练集目标值,测试集目标值
                x_train, x_test, y_train, y_test
    2.2 特征工程介绍
        算法 特征工程
        2.2.1 为什么需要特征工程(Feature Engineering)
        2.2.2 什么是特征工程
            sklearn 特征工程
            pandas 数据清洗、数据处理
                特征抽取/特征提取
                    机器学习算法-统计方法-数学公式
                        文本类型->数值
                        类型->数值
                    2.3.1 特征提取
                        sklearn.feature_extraction
                    2.3.2 字典特征提取 - 类别 -> one-hot编码
                        sklearn.feature_extraction.DictVectorizer(sparse=True,…)
                        vector 数学:向量 物理:矢量
                            矩阵 matrix 二维数组
                            向量 vector 一维数组
                        父类:转换器类
                        返回sparse矩阵
                            sparse稀疏
                                将非零值 按位置表示出来
                                节省内存 - 提高加载效率
                        应用场景:
                            1)pclass, sex 数据集当中类别特征比较多
                                1、将数据集的特征-》字典类型
                                2、DictVectorizer转换
                            2)本身拿到的数据就是字典类型
                     2.3.3 文本特征提取
                        单词 作为 特征
                        句子、短语、单词、字母
                        特征:特征词
                        方法1:CountVectorizer
                            统计每个样本特征词出现的个数
                            stop_words停用词
                            停用词表
                        关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章当中出现很少
                        方法2:TfidfVectorizer
                            TF-IDF - 重要程度
                            两个词 “经济”,“非常”
                            1000篇文章-语料库
                            100篇文章 - "非常"
                            10篇文章 - “经济”
                            两篇文章
                            文章A(100词) : 10次“经济” TF-IDF:0.2
                                tf:10/100 = 0.1
                                idf:lg 1000/10 = 2
                            文章B(100词) : 10次“非常” TF-IDF:0.1
                                tf:10/100 = 0.1
                                idf: log 10 1000/100 = 1
                                对数?
                                    2 ^ 3 = 8
                                    log 2 8 = 3
                                    log 10 10 = 1
                            TF - 词频(term frequency,tf)
                            IDF - 逆向文档频率
                特征预处理
                    2.4.1 什么是特征预处理
                    为什么我们要进行归一化/标准化?
                        无量纲化
                        2.4.2 归一化
                            异常值:最大值、最小值
                        2.4.3 标准化
                            (x - mean) / std
                            标准差:集中程度
                            应用场景:
                            在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
                特征降维
                    2.5.1 降维 - 降低维度
                        ndarray
                            维数:嵌套的层数
                            0维 标量
                            1维 向量
                            2维 矩阵
                            3维
                            n维
                        二维数组
                            此处的降维:
                            降低特征的个数
                            效果:
                            特征与特征之间不相关
                    2.5.1 降维
                        特征选择
                            Filter过滤式
                                方差选择法:低方差特征过滤
                                相关系数 - 特征与特征之间的相关程度
                                    取值范围:–1≤ r ≤+1
                                    皮尔逊相关系数
                                    0.9942
                                    特征与特征之间相关性很高:
                                        1)选取其中一个
                                        2)加权求和
                                        3)主成分分析
                            Embeded嵌入式
                                决策树 第二天
                                正则化 第三天
                                深度学习 第五天
                        主成分分析
                            2.6.1 什么是主成分分析(PCA)
                                sklearn.decomposition.PCA(n_components=None)
                                n_components
                                    小数 表示保留百分之多少的信息
                                    整数 减少到多少特征
                            2.6.2 案例:探究用户对物品类别的喜好细分
                                用户          物品类别
                                user_id         aisle
                                1)需要将user_id和aisle放在同一个表中 - 合并
                                2)找到user_id和aisle - 交叉表和透视表
                                3)特征冗余过多 -> PCA降维

2、课堂案例代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.feature_selection import VarianceThreshold
from sklearn.decomposition import PCA
from scipy.stats import pearsonr
import jieba
import pandas as pd


def datasets_demo():
    """
    sklearn数据集使用
    :return:
    """
    # 获取数据集
    iris = load_iris()
    print("鸢尾花数据集:\n", iris)
    print("查看数据集描述:\n", iris["DESCR"])
    print("查看特征值的名字:\n", iris.feature_names)
    print("查看特征值:\n", iris.data, iris.data.shape)

    # 数据集划分
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
    print("训练集的特征值:\n", x_train, x_train.shape)

    return None


def dict_demo():
    """
    字典特征抽取
    :return:
    """
    data = [{'city': '北京', 'temperature': 100}, {'city': '上海', 'temperature': 60}, {'city': '深圳', 'temperature': 30}]
    # 1、实例化一个转换器类
    transfer = DictVectorizer(sparse=True)

    # 2、调用fit_transform()
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new.toarray(), type(data_new))
    print("特征名字:\n", transfer.get_feature_names())

    return None


def count_demo():
    """
    文本特征抽取:CountVecotrizer
    :return:
    """
    data = ["life is short,i like like python", "life is too long,i dislike python"]
    # 1、实例化一个转换器类
    transfer = CountVectorizer(stop_words=["is", "too"])

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None


def count_chinese_demo():
    """
    中文文本特征抽取:CountVecotrizer
    :return:
    """
    data = ["我 爱 北京 天安门", "天安门 上 太阳 升"]
    # 1、实例化一个转换器类
    transfer = CountVectorizer()

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None


def cut_word(text):
    """
    进行中文分词:"我爱北京天安门" --> "我 爱 北京 天安门"
    :param text:
    :return:
    """
    return " ".join(list(jieba.cut(text)))


def count_chinese_demo2():
    """
    中文文本特征抽取,自动分词
    :return:
    """
    # 将中文文本进行分词
    data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
            "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
            "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]

    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))
    # print(data_new)
    # 1、实例化一个转换器类
    transfer = CountVectorizer(stop_words=["一种", "因为", "所以"])

    # 2、调用fit_transform
    data_final = transfer.fit_transform(data_new)
    print("data_new:\n", data_final.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None


def tfidf_demo():
    """
    用TF-IDF的方法进行文本特征抽取
    :return:
    """
    # 将中文文本进行分词
    data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。",
            "我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。",
            "如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]

    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))
    # print(data_new)
    # 1、实例化一个转换器类
    transfer = TfidfVectorizer(stop_words=["一种", "所以"])

    # 2、调用fit_transform
    data_final = transfer.fit_transform(data_new)
    print("data_new:\n", data_final.toarray())
    print("特征名字:\n", transfer.get_feature_names())

    return None


def minmax_demo():
    """
    归一化
    :return:
    """
    # 1、获取数据
    data = pd.read_csv("dating.txt")
    data = data.iloc[:, :3]
    print("data:\n", data)

    # 2、实例化一个转换器类
    transfer = MinMaxScaler(feature_range=[2, 3])

    # 3、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)

    return None


def stand_demo():
    """
    标准化
    :return:
    """
    # 1、获取数据
    data = pd.read_csv("dating.txt")
    data = data.iloc[:, :3]
    print("data:\n", data)

    # 2、实例化一个转换器类
    transfer = StandardScaler()

    # 3、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)
    return None


def variance_demo():
    """
    过滤低方差特征
    :return:
    """
    # 1、获取数据
    data = pd.read_csv("factor_returns.csv")
    data = data.iloc[:, 1:-2]
    print("data:\n", data)

    # 2、实例化一个转换器类
    transfer = VarianceThreshold(threshold=10)

    # 3、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new, data_new.shape)

    # 计算某两个变量之间的相关系数
    r1 = pearsonr(data["pe_ratio"], data["pb_ratio"])
    print("相关系数:\n", r1)
    r2 = pearsonr(data['revenue'], data['total_expense'])
    print("revenue与total_expense之间的相关性:\n", r2)

    return None


def pca_demo():
    """
    PCA降维
    :return:
    """
    data = [[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]]

    # 1、实例化一个转换器类
    transfer = PCA(n_components=0.95)

    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)
    return None


if __name__ == "__main__":
    # 代码1:sklearn数据集使用
    # datasets_demo()
    # 代码2:字典特征抽取
    # dict_demo()
    # 代码3:文本特征抽取:CountVecotrizer
    # count_demo()
    # 代码4:中文文本特征抽取:CountVecotrizer
    # count_chinese_demo()
    # 代码5:中文文本特征抽取,自动分词
    # count_chinese_demo2()
    # 代码6:中文分词
    # print(cut_word("我爱北京天安门"))
    # 代码7:用TF-IDF的方法进行文本特征抽取
    # tfidf_demo()
    # 代码8:归一化
    minmax_demo()
    # 代码9:标准化
    # stand_demo()
    # 代码10:低方差特征过滤
    # variance_demo()
    # 代码11:PCA降维
    # pca_demo()

3、内容总结-思维导图

Mac App Store上的软件:MindPreviewLite

4、课堂截图

pip3 install Scikit-learn==0.19.1

import sklearn

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐