IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习入门 -> 正文阅读

[人工智能]机器学习入门

机器学习的目的与流程

目的:机器学习是从数据中自动分析获得规律(模型),并用规律对未知数据进行预测
建立模型:根据数据类型划分应用种类

原始数据明确问题要做什么
数据的基本处理:pandas去处理数据(缺失值、合并表等等)
特征工程(特征进行处理) :
? ? 分类:目标值离散型
? ? 回归:目标值连续型
找到合适的算法进行预测
模型的评估,判断效果(上线以API形式提供)
如果没有合格 换算法 换参数 特征工程

特征工程

数据集:数据的集合

常用数据集的构成: 特征值+目标值(有些数据集可以没有目标值)

读取的工具 :pandas (基于numpy 释放了GIL锁 能采用真的多线程)

学习可用的数据集:
在这里插入图片描述

在机器学习的时候数据一般都是使用文件 ,因为数据库(MySql)等都可能具有一下问题:

性能瓶颈、读取速度
格式不符合机器学习的要求数据格式

特征工程概述与意义

概述:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性
意义: 最大限度地从原始数据中提取特征以供算法和模型使用

scikit - learn 库的介绍

python语言机器学习的工具
Scikit-learn包括了许多的知名的机器学习的算法的实现
scikit-learn文档完善,容易上手,有丰富的API

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

特征选择

特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。

选择依据:

冗余:部分特征的相关度高,容易消耗计算性能I
噪声:部分特征对预测结果有影响

数据类型区别:

离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所
有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度。
连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续
的,如,长度、时间、质量值等,这类整数通常是非整数,含有小数部分。

只要记住一点,离散型是区间内不可分,连续型是区间内可分

主要方法(三大武器): Filter(过滤式):VarianceThreshold、Embedded(嵌入式):正则化、决策树Wrapper(包裹式)

特征数据抽取

特征处理就是通过特定的统计学方法(数学方法)将数据转换成算法要求的数据

1.字典数据抽取:把字典中一些类别的数据,分别转化成特征
2.数组类型:有类别的特征先要转换成字典数据
PS:数据中有重复值不需要进行处理

字典数据特征

API: sklearn_feature_extraction
语法:DictVectorizer(sparse = True) sparse为True表示默认返回一个Sparse矩阵
用法:实例化DictVectorizer

from sklearn.feature_extraction import DictVectorizer
dict = DictVectorizer(sparse = False) ??目的是为了返回一个ndarray的矩阵
dict.方法

方法描述
fit_transfrom(X)X:字典或者包含字典的迭代器 返回值默认是sparse矩阵
inverse_transfrom(X)X:array数组或者sparse矩阵 返回之前的数据格式
get_feature_names()返回类别名称

案例:

from sklearn.feature_extraction import DictVectorizer

def dictdec():
    list = [{'city':"北京",'temperature':100},
            {'city':"上海",'temperature':60},
            {'city':"深圳",'temperature':30},]
    # 字典特征抽取
    dict = DictVectorizer(sparse = False) # 让它返回数组ndarray
    # 调用fit_transfrom  默认返回sparse矩阵 节约内存 方便读取处理
    data = dict.fit_transform(list)
    print(dict.get_feature_names())
    # print(dict.inverse_transform(data))         # 看原来的数据
    print(data)
    return None

if __name__ == '__main__':
    dictdec()

文本数据特征

类:from sklearn.feature_extraction.text import CountVectorizer
功能:对文本数据进行特征值化处理,可以用一段文字(词语)的频率来判断文章是什么类型
在这里插入图片描述
单独原因:汉字的特征化要使用另一种方法 不然就会变成一个字一个特征的情况
PS:一个字母或者一个汉字都没有分类的依据 DictVectorizer不会进行统计
目的:对文本数据进行特征值化
需求:
jieba库 ??????返回词语的汉字生成器
from sklearn.feature_extraction.text import CountVectorizer库

案例:

import jieba        # 返回汉字的词语生成器
from sklearn.feature_extraction.text import CountVectorizer

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

    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    # print(content1)
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)

    return c1,c2,c3

def hanzi():
    #中文特征值化
    c1,c2,c3 = cutword()
    # print(c1,c2,c3)
    list = [c1,c2,c3]
    cv = CountVectorizer()
    data = cv.fit_transform(list)
    print(cv.get_feature_names())
    print(data.toarray())

    return None

if __name__ == '__main__':
    hanzi()

在这里插入图片描述

TF-IDE 分析问题

TF:汉字的出现频率

IDE:逆文档次数 总文档数/出现文档的次数

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

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

类:sklearn.feature_extraction.text.TfidfVectorizer

语法:

TfidfVectorizer(stop_words = None,…) 返回词的权重矩阵
tf = TfidfVectorizer() 实例化

函数名介绍
fit_transform(X)X:文本或者文本字符串的可迭代对象 返回值默认spare矩阵
inverse_transform(X)X:array数据或者sparse矩阵 返回之前的数据格式
get_feature_names()返回值:单词列表

归一化和标准化对比

sklearn归一化API:from sklearn.preprocessing import MinMaxScaler

归一化特点: 通过对原始数据进行变换把数据映射到(默认为[0,1])之间

公式:
在这里插入图片描述
语法:

mm = MinMaxScaler(feature_range=(2,3)) # 通过元组指定范围,实例化
通过fit_transform转换

fit_transform(x)x:numpy array格式的数据 返回值:转换后的形状相同的array

案例:

from sklearn.preprocessing import MinMaxScaler

def mm():
    list = [
        [90,2,10,40],
        [60,4,15,45],
        [75,3,13,46]
    ]
    mm = MinMaxScaler(feature_range=(2,3))          # 通过元组指定范围
    data = mm.fit_transform(list)
    print(data)
    return None

if __name__ == '__main__':
     mm()

总结:
注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。(这种场景很少)
我们一般使用标准化

sklearn标准化API:from sklearn.preprocessing import StandardScaler
在这里插入图片描述

特点:1、特点:通过对原始数据进行变换把数据变换到均值为0,比标准差为1范围内

公式:
在这里插入图片描述

语法:

   std = StandardScaler()         #实例化
 通过fit_transform转换
fit_transform(x)x:numpy array格式的数据 返回值:转换后的形状相同的array
mean_原始数据每列特征的平均值
std_原始数据每列特征的方差

总结 : 适用现在的大数据场景

数值型数据的标准缩放便是归一化、标准化

数据的特征预处理

缺失数据的处理方法:(其实一般使用pandas中的方法)

删除插补
如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列可以通过缺失值每列或者每行的平均值、中位数来填充

sklearn缺失值API:sklearn.preprocessing.Imputer

Imputer语法:

Imputer(missing_values = ‘NaN’,strategy = ‘mean’,axis =0)
Imputer.fit_transform(X) X:ndarray格式的数据,返回值,转换后的形状相同的array

数据降维

维度:不是数组的维度 而是特征的数量

过滤式

特征选择三大武器之一的过滤式: 通过方差大小来考虑所有样本这个特征的数据情况

API :VarianceThreshold

语法:

初始化VarianceThreshold(x) 指定x阈值方差,将所有低于阈值的方差数据舍弃,因为他们特征值离散程度低,参考价值不大

def var():          # 方差
    list = [[0,2,0,3],
            [0,1,4,3],
            [0,1,1,3]]
    var = VarianceThreshold(threshold = 1.0)        # 一般可以取0-10 个位数
    data = var.fit_transform(list)

    print(data)

    return None

PCA

API :from sklearn.decomposition import PCA
本质:PCA是一种分析、简化数据集的技术

目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量

适用条件:特征的数量达到上百的时候就可以考虑要不要用PCA来简化数据

结果:数据也会改变,特征也会减少
作用:消减回归分析或者聚类分析中特征的数量

PCA语法:

PCA(n_components = 0.9) 控制为90%数据保留有效值
pca.fit_transform(cross) cross是numpy_array格式的数据 返回的是指定后维度的array

案例:

import pandas as pd
from sklearn.decomposition import PCA

aisles = pd.read_csv(r"需要的数据/aisles.csv")
orders = pd.read_csv(r"需要的数据/orders.csv")
products = pd.read_csv(r"需要的数据/products.csv")
prior = pd.read_csv(r"需要的数据/order_products__prior.csv")

# 数据合并
_mg = pd.merge(prior,products,on = ['product_id','product_id'])
_mg = pd.merge(_mg,orders,on = ['order_id','order_id'])
mt = pd.merge(_mg,aisles,on = ['aisle_id','aisle_id'])

# print(mt.info())
# print(mt.head(10))

# 使用交叉表(特殊的分组工具)
cross = pd.crosstab(mt['user_id'],mt['aisle'])
print(cross)

# 进行主成分分析
pca = PCA(n_components = 0.9)
data = pca.fit_transform(cross)
# 完成了分析
print(data.shape())

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:41:36  更:2021-08-23 16:44:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:46:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码