黑马程序员—三天快速入门Python机器学习(第一天)

机器学习入门

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能从入门到精通教程

一、机器学习概述

1.1 人工智能概述

1.1.1 机器学习与人工智能、深度学习

黑马程序员---三天快速入门Python机器学习(第一天)
  • 机器学习是人工智能的一个实现途径
  • 深度学习是机器学习的一种方法

; 1.1.2 机器学习、深度学习能做什么

  • 传统预测:店铺销量预测、量化投资、广告推荐、企业客户分类、SQL语句安全检测分类
  • 图像识别:街道交通标志检测、人脸识别
  • 自然语言处理:文本分类、情感分析、自动聊天、文本检测

1.1.3 人工智能阶段课程安排

黑马程序员---三天快速入门Python机器学习(第一天)

; 1.2 什么是机器学习

1.2.1 定义

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

1.2.2 解释

黑马程序员---三天快速入门Python机器学习(第一天)
对经验归纳总结,对未知事物预测

; 1.2.3 数据集构成

结构:特征值+目标值

黑马程序员---三天快速入门Python机器学习(第一天)
注:
  • 对于每一行数据我们可以称为样本
  • 有些数据集可以没有目标值
    黑马程序员---三天快速入门Python机器学习(第一天)

1.3 机器学习算法分类

第一种:

黑马程序员---三天快速入门Python机器学习(第一天)
识别猫和狗:
特征值:图片
目标值:猫/狗-类别
分类问题

第二种:

黑马程序员---三天快速入门Python机器学习(第一天)
房屋价格预测:
特征值:房屋的各个属性信息
目标值:房屋价格-连续型的数据
回归问题

第三种

黑马程序员---三天快速入门Python机器学习(第一天)
特征值:人物的各个属性信息
目标值:无
无监督学习

; 1.3.1 总结

黑马程序员---三天快速入门Python机器学习(第一天)

1.3.2 练习

说一下他们具体问题分类:
1、预测明天的天气是多少度? 回归
2、依存明天是阴天还是晴天还是雨天?分类
3、人脸年龄预测?分类或回归
4、人脸识别?分类

1.3.3 机器学习算法分类

监督学习:预测

  • 定义:输入数据是由输入特征和目标值所组成,函数的输出可以是一个连续的值,称为 回归;也可以是一个离散的值,称为 分类
  • 分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归
  • 回归:线性回归、岭回归

无监督学习

  • 定义:输入数据是由输入特征值组成
  • 聚类:k-means

1.4 机器学习开发流程

黑马程序员---三天快速入门Python机器学习(第一天)
流程:
1)获取数据
2)数据处理
3)特征工程
4)机器学习算法训练-得到模型
5)模型评估
6)应用

; 1.5 学习框架和资料介绍

大部分复杂模型的算法设计都是算法工程师在做,而我们

  • 分析很多的数据
  • 分析具体的业务
  • 应用常见的算法
  • 特征工程、调参、优化

1.5.1 机器学习库与框架

黑马程序员---三天快速入门Python机器学习(第一天)

; 1.5.2 书籍资料

黑马程序员---三天快速入门Python机器学习(第一天)

1.5.3 提深内功

黑马程序员---三天快速入门Python机器学习(第一天)

; 二、特征工程

2.1 数据集

目标

  • 知道数据集分为训练集和测试集
  • 会使用sklearn的数据集

2.1.1 可用数据集

Kaggle网址:https://www.kaggle.com/datasets
UCI数据集网址:http://archive.ics.uci.edu/ml/
scikit-learn网址: http://scikit-learn.org/stable/datasets/index.html#datasets
https://scikit-learn.org.cn/

scikit-learn特点:

  • 1、数据量小
  • 2、方便学习

UCI特点:

  • 1、收录了360个数据集
  • 2、覆盖科学、生活、经济等领域
  • 3、数据集几十万

Kaggle特点:

  • 1、大数据竞赛平台
  • 2、80万科学家
  • 3、数据量巨大

1 Scikit-learn工具介绍

黑马程序员---三天快速入门Python机器学习(第一天)
  • Python语言的机器学习工具
  • Scikit-learn包括许多知名的机器学习算法的实现
  • Scikit-learn文档完善,容易上手,丰富的API
  • 目前稳定版本0.19.1

2 安装

pip install Scikit-learn -i https://pypi.douban.com/simple

安装好之后可以通过以下命令查看是否安装成功

import sklearn

黑马程序员---三天快速入门Python机器学习(第一天)

注:安装scikit-learn需要Numpy,Scipy等库

3 Scikit-learn包含的内容

黑马程序员---三天快速入门Python机器学习(第一天)

2.1.2 sklearn数据集

1 scikit-learn数据集API介绍

  • sklearn.datasets.load_*():获取小规模数据集,数据包含在datasets里
  • sklearn.datasets.fetch_*(data_home=None):获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是*~/scikit_learn_data/

2 sklearn小数据集

  • sklearn.datasets.load_iris():加载并返回鸢尾花数据集
    黑马程序员---三天快速入门Python机器学习(第一天)
  • sklearn.datasets.load_boston():加载并返回波士顿房价数据集
    黑马程序员---三天快速入门Python机器学习(第一天)

3 sklearn大数据集
sklearn.datasets.fetch_20newsgroups(data=None, subset=’train’)

  • subset:’train’或者’test’,’all’,可选,选择要加载的数据集
  • 训练集的’训练’,测试集的’测试’,两者的’全部’

4 sklearn数据集的使用
sklearn数据集返回值介绍
load和fetch返回的数据类型datasets.base.Bunch( 字典格式

  • data:特征数据数组,是[n_samples * n_features]的二维numpy.ndarry数组
  • target:标签数组,是n_samples的一维numpy.ndarry数组
  • DESCR:数据描述
  • feature_names:特征名,新闻数据,手写数字、回归数据集没有
  • target_names:标签名
from sklearn.datasets import load_iris

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)
    return None

if __name__ == "__main__":
    datasets_demo()
查看特征值的名字:
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

2.1.3 数据集的划分

机器学习一般的数据集会划分为两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

划分比例:

  • 训练集:70%、80%
  • 测试集:30%、20%

数据集划分api:sklearn.model_selection.train_test_split(arrays, *options)

  • x 数据集的特征值
  • y 数据集的标签值
  • test_size测试集的大小,一般为float
  • random_state随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同
  • return训练集特征值,测试集特征值,训练集目标值,测试集目标值
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

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

if __name__ == "__main__":
    datasets_demo()

2.2 特征工程介绍

2.2.1 为什么需要特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

2.2.2 什么是特征工程

特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程
意义:会直接影响机器学习的效果

2.2.3 特征工程的位置与数据处理的比较

  • pandas:一个数据读取非常方便以及基本的处理格式的工具
  • sklearn:对于特征的处理提供了强大的接口

特征工程包含内容:

  • 特征抽取/特征提取
  • 特征预处理
  • 特征降维

什么是特征提取?

黑马程序员---三天快速入门Python机器学习(第一天)

; 2.3 特征提取

2.3.1 什么是特征提取

1 将任意数据(如文本或图像)转换为可用于机器学习的数字特征
注:特征值是为了计算机更好的去理解数据

  • 字典特征提取(特征离散化)
  • 文本特征提取
  • 图像特征提取(深度学习再介绍)

2 特征提取API

sklearn.feature_extraction

2.3.2 字典特征提取

作用:对字典数据进行特征值化

sklearn.feature_extraction.DictVectorizer(sparse=True, …)

  • DictVectorizer.fit_transform(X), X:字典或者包含字典的迭代器返回值,返回sparse矩阵
  • DictVectorizer.inverse_transform(X), X:array数组或者sparse矩阵 返回值:转换之前数据格式
  • DictVectorizer.get_feature_names():返回类别名称

1 应用
对数据进行特征提取: 将类别转换为one-hot编码,节省内存,提高下载效率

from sklearn.feature_extraction import DictVectorizer

def dict_demo():
"""
    字典特征抽取
    :return:
"""
    data = [{'city':'北京', 'temperature':100},
            {'city':'上海', 'temperature':60},
            {'city':'深圳', 'temperature':30}]

    transfer = DictVectorizer(sparse=False)

    data_new = transfer.fit_transform(data)
    print("data_new:\n", data_new)
    print("特征名字:\n", transfer.get_feature_names())

    return None

if __name__ == "__main__":
    dict_demo()
data_new:
 [[  0.   1.   0. 100.]
 [  1.   0.   0.  60.]
 [  0.   0.   1.  30.]]
 特征名字:
 ['city=上海', 'city=北京', 'city=深圳', 'temperature']

2.3.3 文本特征提取

单词作为特征

作用:对文本数据进行特征值化

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):返回词频矩阵

  • CountVectorizer.fit_transform(X),X:文本或者包含文本字符串的可迭代对象,返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X),X:array数组或者sparse矩阵,返回值:转换之前数据格
  • CountVectorizer.get_feature_names():返回值:单词列表

sklearn.feature_extraction.text.TfidVectorizer

1 应用
英文文本分词

from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
"""
    文本特征抽取:CountVectorizer
    :return:
"""
    data = ['life is short,i like like python',
            'life is too long,i dislike python']

    transfer = CountVectorizer()

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

    return None

if __name__ == "__main__":
    count_demo()
data_new:
 [[0 1 1 2 0 1 1 0]
 [1 1 1 0 1 1 0 1]]
特征名字:
 ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']

停用词: stop_words=[]

from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
"""
    文本特征抽取:CountVectorizer
    :return:
"""
    data = ['life is short,i like like python',
            'life is too long,i dislike python']

    transfer = CountVectorizer(stop_words=['is', 'too'])

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

    return None

if __name__ == "__main__":
    count_demo()
data_new:
 [[0 1 2 0 1 1]
 [1 1 0 1 1 0]]
特征名字:
 ['dislike', 'life', 'like', 'long', 'python', 'short']

中文文本分词
注意:不支持单个中文词!
这个方法是计算特征词出现的个数的

from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
"""
    文本特征抽取:CountVectorizer
    :return:
"""
    data = ['我 爱 北京 天安门',
            '天安门 上 太阳 升']

    transfer = CountVectorizer()

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

    return None

if __name__ == "__main__":
    count_demo()
data_new:
 [[1 1 0]
 [0 1 1]]
特征名字:
 ['北京', '天安门', '太阳']

例2

from sklearn.feature_extraction.text import CountVectorizer
import jieba

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

    transfer = CountVectorizer()

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

    return None

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

    return ' '.join(jieba.cut(text))

if __name__ == "__main__":
    count_chinese_demo2()

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

关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章当中出现很少

5 Tf-idf文本特征提取

  • Tf-idf的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分来
  • Tf-idf作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度
    这种方法是计算特征词的重要程度的
    TF-IDF:衡量重要程度
    TF:词频
    IDF:逆向文档频率,可以 *由总文件数目 / 包含该词语之文件的数目,再将得到的商取以10为底的对数得到
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
import jieba

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

    return ' '.join(jieba.cut(text))

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

    transfer = TfidfVectorizer()

    data_final = transfer.fit_transform(data_new)
    print("data_final:\n", data_final.toarray())
    print("特征名字:\n", transfer.get_feature_names())
    return None

if __name__ == "__main__":
    tfidf_demo()

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

  0.40560694 0.         0.         0.         0.         0.

  0.20280347 0.         0.20280347 0.         0.         0.

  0.         0.20280347 0.20280347 0.         0.40560694 0.

  0.20280347 0.         0.40560694 0.20280347 0.         0.

  0.         0.20280347 0.20280347 0.         0.         0.20280347
  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.

  0.2410822 ]
 [0.12826533 0.16865349 0.         0.         0.67461397 0.33730698
  0.         0.         0.         0.         0.16865349 0.16865349
  0.         0.16865349 0.         0.16865349 0.16865349 0.

  0.12826533 0.         0.         0.16865349 0.         0.

  0.         0.16865349 0.         0.         0.         0.33730698
  0.16865349 0.         0.         0.16865349 0.         0.

  0.        ]]
特征名字:
 ['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某件事', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '还是', '这样']

2.4 特征预处理

黑马程序员---三天快速入门Python机器学习(第一天)

; 2.4.1 什么是特征预处理

通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程

数值数据的 无量纲化

  • 归一化
  • 标准化

2 特征预处理API

sklearn.preprocessing

为什么要进行归一化/标准化?

  • 特征 的单位或者大小相差较大,或者某特征的方法相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征
    黑马程序员---三天快速入门Python机器学习(第一天)

2.4.2 归一化

1 定义
通过对原始的数据进行变换把数据映射到(默认为[0,1]之间)

2 公式

黑马程序员---三天快速入门Python机器学习(第一天)
3 API
sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
MinMaxScaler.fit_transform(X),X:numpy array格式的数据[n_samples,n_features],返回值:转换后的形式相同的array

4 数据计算

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

def minmax_demo():
"""
    归一化
    :return:
"""

    data = pd.read_csv("datingTestSet2.txt", sep='\t')
    data = data.iloc[:, :3]
    print("data:\n", data)

    transform = MinMaxScaler()

    data_new = transform.fit_transform(data)
    print("data_new:\n", data_new)

    return None

if __name__ == "__main__":
    minmax_demo()

黑马程序员---三天快速入门Python机器学习(第一天)
问题:如果有异常值会有什么影响
异常值:最大值,最小值
黑马程序员---三天快速入门Python机器学习(第一天)
5 归一化总结
注意最大值最小值是变化的,另外,最大值与最小值非常容易受到异常值影响,
所以这种方法鲁棒性较差,只适合传统精确小数据场景

2.4.3 标准化

1 定义
通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围内

2 公式

黑马程序员---三天快速入门Python机器学习(第一天)
黑马程序员---三天快速入门Python机器学习(第一天)
  • 对于归一化来说:如果出现异常点,影响了最大值和最小值,name结果显然会发生改变
  • 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响不大,从而方差改变较小

4 代码
sklearn.perprocessing.StandradScaler()
处理之后,对每列来说,所有数据都聚集在均值为0附近,标准差为1
StandardScaler.fit_transform(X),X;numpy array格式的数据[n_samples,n_features],返回值:转化后的形状相同的array

from sklearn.preprocessing import MinMaxScaler, StandardScaler

def stand_demo():
"""
    标准化
    :return:
"""

    data = pd.read_csv("datingTestSet2.txt", sep='\t')
    data = data.iloc[:, :3]
    print("data:\n", data)

    transform = StandardScaler()

    data_new = transform.fit_transform(data)
    print("data_new:\n", data_new)

    return None

if __name__ == "__main__":
    stand_demo()

黑马程序员---三天快速入门Python机器学习(第一天)
5 标准化总结
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景

2.5 特征降维

2.5.1 降维

降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组”不相关”主变量的过程

2.5.2 降维的两种方式

  • 特征选择
  • *主成分分析(可以理解一种特征提取的方式)

2.5.3 什么是特征选择

1 定义
数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征

黑马程序员---三天快速入门Python机器学习(第一天)
2 方法
Filter过滤式:主要探究特征本身特点、特征与特征和目标值之间关联
  • (1)方差选择法:低方差特征过滤
  • (2)相关系数:特征与特征之间的相关程度

Embedded嵌入式:算法自动选择特征(特征与目标值之间的关联)

  • (1)决策树:信息熵、信息增益
  • (2)正则化:L1,L2
  • (3)深度学习:卷积等

3 模块

sklearn.feature_selection

4 过滤式
4.1 低方差特征过滤
删除低方差的一些特征

  • 特征方差小:某个特征大多样本的值 比较相近
  • 特征方差大:某个特征很多样本的值都有差别

4.1.1 API
sklearn.feature_selection.VArianceThreshold(threshold=0.0)
删除所有低方差特征
Variance.fit_transform(X),X:numpy array格式的数据[m_sample,n_features],返回值:训练集差异低于threadshold的特征将被删除。默认值是保留非零方差特征,即删除所有样本中具有相同值的特征

4.1.2 数据计算

from sklearn.feature_selection import VarianceThreshold

def variance_demo():
"""
    低方差特征过滤
    :return:
"""

    data = pd.read_csv('factor_returns.csv')
    print('data:\n', data)
    data = data.iloc[:,1:-2]
    print('data:\n', data)

    transform = VarianceThreshold(threshold=10)

    data_new = transform.fit_transform(data)
    print("data_new\n", data_new, data_new.shape)

    return None

if __name__ == "__main__":
    variance_demo()

黑马程序员---三天快速入门Python机器学习(第一天)
皮尔逊相关系数(Pearson Correlation Coefficient):反映变量之间相关关系密切程度的统计指标

公式:

黑马程序员---三天快速入门Python机器学习(第一天)

计算过程

黑马程序员---三天快速入门Python机器学习(第一天)
黑马程序员---三天快速入门Python机器学习(第一天)

4.2.3 特点
相关系数的值介于-1与+1之间,即-1

Original: https://blog.csdn.net/qq_39236499/article/details/115723947
Author: zdb呀
Title: 黑马程序员—三天快速入门Python机器学习(第一天)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/648111/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球