我是靠谱客的博主 优秀铅笔,最近开发中收集的这篇文章主要介绍AI学习 入门,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 概述

学习AI相关的已经几个月了,虽然只是一个本科生,虽然业界都认为从事AI相关龚总的人都是研究生起步,曾经也犹豫过,但人吗,不能忘记学习,何况是自己如此喜欢的东西呢。本文就是对我自己前面的学习进行一个简单的总结,不讲原理,只说实现。原理逐渐慢慢总结。

  • 机器学习

特征工程

下面是特征工程的一个简介。

“数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这里的数据指的就是经过特征工程得到的数据。特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限。特征工程能使得模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果。特征工程在机器学习中占有非常重要的作用,一般认为括特征构建、特征提取、特征选择三个部分。特征构建比较麻烦,需要一定的经验。 特征提取与特征选择都是为了从原始特征中找出最有效的特征。它们之间的区别是特征提取强调通过特征转换的方式得到一组具有明显物理或统计意义的特征;而特征选择是从特征集合中挑选一组具有明显物理或统计意义的特征子集。两者都能帮助减少特征的维度、数据冗余,特征提取有时能发现更有意义的特征属性,特征选择的过程经常能表示出每个特征的重要性对于模型构建的重要性。本文主要尝试总结几个常用的特征提取和特征选择的方法。
原文:特征工程概述

  1. 特征构建
    特征构建是指从原始数据中人工的找出一些具有物理意义的特征。需要花时间去观察原始数据,思考问题的潜在形式和数据结构,对数据敏感性和机器学习实战经验能帮助特征构建。除此之外,属性分割和结合是特征构建时常使用的方法。结构性的表格数据,可以尝试组合二个、三个不同的属性构造新的特征,如果存在时间相关属性,可以划出不同的时间窗口,得到同一属性在不同时间下的特征值,也可以把一个属性分解或切分,例如将数据中的日期字段按照季度和周期后者一天的上午、下午和晚上去构建特征。
  2. 特征抽取
    词频统计(CountVectorizer)和TF-IDF重要性统计(TfidfVectorizer).
    词频统计的API是CountVectorizer,对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率,注意单个字符不进行统计,因为没有分类意义。
    CountVectorizer会将文本中的词语转换为词频矩阵,然后调用fit_transform函数计算各个词语出现的次数。
from sklearn.feature_extraction.text import CountVectorizer
import jieba

text = ["第一部分(ISO/IEC 14496-1):系统:描述视讯和音频数据流的控制、同步以及混合方式(即混流 Multiplexing,简写为MUX)。",
        "第二部分(ISO/IEC 14496-2):视讯:定义了一个对各种视觉讯息(包括自然视讯、静止纹理、计算机合成图形等等)的编译码器。(例如XviD编码就属于MPEG-4 Part2)",
        "第三部分(ISO/IEC 14496-3):音讯:定义了一个对各种音频讯号进行编码的编译码器的集合。包括高阶音频编码(AdvancedAudio Coding,缩写为AAC)的若干变形和其他一些音频/语音编码工具。",
        "第四部分(ISO/IEC 14496-4):一致性:定义了对本标准其他的部分进行一致性测试的程序。",
        "第五部分(ISO/IEC 14496-5):参考软件:提供了用于演示功能和说明本标准其他部分功能的软件。",
        "第六部分(ISO/IEC 14496-6):多媒体传输整合框架(DMIF for Delivery Multimedia IntegrationFramework)",
        "第七部分(ISO/IEC 14496-7):优化的参考软件:提供了对实作进行优化的例子(这里的实作指的是第五部分)。",
        "第八部分(ISO/IEC 14496-8):在IP网络上传输:定义了在IP网络上传输MPEG-4内容的方式。",
        "第九部分(ISO/IEC 14496-9):参考硬件:提供了用于演示怎样在硬件上实作本标准其他部分功能的硬件设计方案。",
        "第十部分(ISO/IEC 14496-10):进阶视讯编码或称高阶视讯编码(Advanced Video Coding,缩写为AVC):定义了一个视讯编译码器(codec)。AVC和XviD都属于MPEG-4编码,但由于AVC属于MPEG-4 Part10,在技术特性上比属于MPEG-4Part2的XviD要先进。另外,它和ITU-T H.264标准是一致的,故又称为H.264。",
        "第十二部分(ISO/IEC 14496-12):基于ISO的媒体文件格式:定义了一个储存媒体内容的文件格式。",
        "第十三部分(ISO/IEC 14496-13):知识产权管理和保护(IPMP for Intellectual Property Management andProtection)拓展。",
        "第十四部分(ISO/IEC 14496-14):MPEG-4文件格式:定义了基于第十二部分的用于储存MPEG-4内容的视讯文件格式。",
        "第十五部分(ISO/IEC 14496-15):AVC文件格式:定义了基于第十二部分的用于储存第十部分的视讯内容的文件格式。",
        "第十六部分(ISO/IEC 14496-16):动画框架扩充功能(AFX : Animation Framework eXtension)。",
        "第十七部分(ISO/IEC 14496-17):同步文字字幕格式。",
        "第十八部分(ISO/IEC 14496-18):字型压缩和串流传输(针对开放字型格式 Open Font Format)。",
        "第十九部分(ISO/IEC 14496-19):合成材质流(Synthesized Texture Stream)。",
        "第二十部分(ISO/IEC 14496-20):简单场景表示(LASeR for Lightweight Scene Representation。",
        "第二十一部分(ISO/IEC 14496-21):用于描绘(Rendering)的MPEG-J拓展。",
        "第二十二部分(ISO/IEC 14496-22):开放字型格式(Open Font Format)。",
        "第二十三部分(ISO/IEC 14496-23):符号化音乐表示(Symbolic Music Representation)。",
        "第二十四部分(ISO/IEC 14496-24):音频与系统互动作用(Audio and systems interaction)。",
        "第二十五部分(ISO/IEC 14496-25):3D图形压缩模型(3D GraphicsCompression Model)。",
        "第二十六部分(ISO/IEC 14496-26):音讯一致性检查:定义了测试音频数据与ISO/IEC 14496-3是否一致的方法(Audioconformance)。",
        "第二十七部分(ISO/IEC 14496-27):3D图形一致性检查:定义了测试3D图形数据与ISO/IEC14496-11:2005, ISO/IEC 14496-16:2006, ISO/IEC 14496-21:2006, 和 ISO/IEC14496-25:2009是否一致的方法(3D Graphicsconformance)。"]
ts = []
for t in text:
    ts.append(" ".join(list(jieba.cut(t))))

dv = CountVectorizer()
data = dv.fit_transform(ts)
print(dv.get_feature_names())
print(data.toarray())

text = [
    "BEIJING, April 6 (Xinhua) -- Chinese people used mobile payment 3.25 times a day in 2019 on average, according to a report released by Chinese card payment giant China UnionPay. ",
    "The report, based on a survey of more than 60,000 people, showed that over 20 percent of respondents used mobile payment more than five times a day in 2019.",
    "Customers involved in the survey spent more than 2,900 yuan (about 408 U.S. dollars) each month on average via mobile payment, up 11 percent year on year, the report said.",
    "The survey, jointly conducted by China UnionPay, 17 commercial banks and 18 payment entities, collected about 62,000 questionnaires, with around 70 percent of the respondents aging between 25 and 45 years old.",
    "Owners of micro and small businesses were the most active users of mobile payment, which had deeper penetrations in scenarios including buses, metro systems, parking lots and gas stations in 2019, the report said.",
    "Peole also had better awareness of risk prevention, with the proportion of respondents experiencing online fraud and reporting losses down 16 percentage points and 26 percentage points, respectively over one year earlier, said the report."]
dv = CountVectorizer()
data = dv.fit_transform(text)
print(dv.get_feature_names())
print(data.toarray())

tf-idf是一种统计方法,用以评估某个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在文件集中出现的频率成反比下降。
如果某个词在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词的重要性较高,具有很好的类别区分能力。
计算tf-idf重要性的API是TfidfVectorizer,它会根据指定的公式将文档中的词转换为概率表示。

from sklearn.feature_extraction.text import TfidfVectorizer
import jieba

text = ["第一部分(ISO/IEC 14496-1):系统:描述视讯和音频数据流的控制、同步以及混合方式(即混流 Multiplexing,简写为MUX)。",
        "第二部分(ISO/IEC 14496-2):视讯:定义了一个对各种视觉讯息(包括自然视讯、静止纹理、计算机合成图形等等)的编译码器。(例如XviD编码就属于MPEG-4 Part2)",
        "第三部分(ISO/IEC 14496-3):音讯:定义了一个对各种音频讯号进行编码的编译码器的集合。包括高阶音频编码(AdvancedAudio Coding,缩写为AAC)的若干变形和其他一些音频/语音编码工具。",
        "第四部分(ISO/IEC 14496-4):一致性:定义了对本标准其他的部分进行一致性测试的程序。",
        "第五部分(ISO/IEC 14496-5):参考软件:提供了用于演示功能和说明本标准其他部分功能的软件。",
        "第六部分(ISO/IEC 14496-6):多媒体传输整合框架(DMIF for Delivery Multimedia IntegrationFramework)",
        "第七部分(ISO/IEC 14496-7):优化的参考软件:提供了对实作进行优化的例子(这里的实作指的是第五部分)。",
        "第八部分(ISO/IEC 14496-8):在IP网络上传输:定义了在IP网络上传输MPEG-4内容的方式。",
        "第九部分(ISO/IEC 14496-9):参考硬件:提供了用于演示怎样在硬件上实作本标准其他部分功能的硬件设计方案。",
        "第十部分(ISO/IEC 14496-10):进阶视讯编码或称高阶视讯编码(Advanced Video Coding,缩写为AVC):定义了一个视讯编译码器(codec)。AVC和XviD都属于MPEG-4编码,但由于AVC属于MPEG-4 Part10,在技术特性上比属于MPEG-4Part2的XviD要先进。另外,它和ITU-T H.264标准是一致的,故又称为H.264。",
        "第十二部分(ISO/IEC 14496-12):基于ISO的媒体文件格式:定义了一个储存媒体内容的文件格式。",
        "第十三部分(ISO/IEC 14496-13):知识产权管理和保护(IPMP for Intellectual Property Management andProtection)拓展。",
        "第十四部分(ISO/IEC 14496-14):MPEG-4文件格式:定义了基于第十二部分的用于储存MPEG-4内容的视讯文件格式。",
        "第十五部分(ISO/IEC 14496-15):AVC文件格式:定义了基于第十二部分的用于储存第十部分的视讯内容的文件格式。",
        "第十六部分(ISO/IEC 14496-16):动画框架扩充功能(AFX : Animation Framework eXtension)。",
        "第十七部分(ISO/IEC 14496-17):同步文字字幕格式。",
        "第十八部分(ISO/IEC 14496-18):字型压缩和串流传输(针对开放字型格式 Open Font Format)。",
        "第十九部分(ISO/IEC 14496-19):合成材质流(Synthesized Texture Stream)。",
        "第二十部分(ISO/IEC 14496-20):简单场景表示(LASeR for Lightweight Scene Representation。",
        "第二十一部分(ISO/IEC 14496-21):用于描绘(Rendering)的MPEG-J拓展。",
        "第二十二部分(ISO/IEC 14496-22):开放字型格式(Open Font Format)。",
        "第二十三部分(ISO/IEC 14496-23):符号化音乐表示(Symbolic Music Representation)。",
        "第二十四部分(ISO/IEC 14496-24):音频与系统互动作用(Audio and systems interaction)。",
        "第二十五部分(ISO/IEC 14496-25):3D图形压缩模型(3D GraphicsCompression Model)。",
        "第二十六部分(ISO/IEC 14496-26):音讯一致性检查:定义了测试音频数据与ISO/IEC 14496-3是否一致的方法(Audioconformance)。",
        "第二十七部分(ISO/IEC 14496-27):3D图形一致性检查:定义了测试3D图形数据与ISO/IEC14496-11:2005, ISO/IEC 14496-16:2006, ISO/IEC 14496-21:2006, 和 ISO/IEC14496-25:2009是否一致的方法(3D Graphicsconformance)。"]

ts = []
for t in text:
    ts.append(" ".join(list(jieba.cut(t))))

tfidf = TfidfVectorizer()
data = tfidf.fit_transform(ts)
print(tfidf.get_feature_names())
print(data.toarray())

text = [
    "BEIJING, April 6 (Xinhua) -- Chinese people used mobile payment 3.25 times a day in 2019 on average, according to a report released by Chinese card payment giant China UnionPay. ",
    "The report, based on a survey of more than 60,000 people, showed that over 20 percent of respondents used mobile payment more than five times a day in 2019.",
    "Customers involved in the survey spent more than 2,900 yuan (about 408 U.S. dollars) each month on average via mobile payment, up 11 percent year on year, the report said.",
    "The survey, jointly conducted by China UnionPay, 17 commercial banks and 18 payment entities, collected about 62,000 questionnaires, with around 70 percent of the respondents aging between 25 and 45 years old.",
    "Owners of micro and small businesses were the most active users of mobile payment, which had deeper penetrations in scenarios including buses, metro systems, parking lots and gas stations in 2019, the report said.",
    "Peole also had better awareness of risk prevention, with the proportion of respondents experiencing online fraud and reporting losses down 16 percentage points and 26 percentage points, respectively over one year earlier, said the report."]
tfidf = TfidfVectorizer()
data = tfidf.fit_transform(text)
print(tfidf.get_feature_names())
print(data.toarray())

字典相关:

from sklearn.feature_extraction import DictVectorizer

print("sparse=True", "*" * 30)
dv = DictVectorizer(sparse=True)
data = dv.fit_transform([{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}])
print(dv.get_feature_names())
print(data)

print("sparse=False", "*" * 30)
dv = DictVectorizer(sparse=False)
data = dv.fit_transform([{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}])
print(dv.get_feature_names())
print(data)
  1. 特征预处理
    归一化:
    基于参数的模型或基于距离的模型,都要进行特征的归一化。
    把数据变为(0,1)之间的小数。主要是为了方便数据处理,因为将数据映射到0~1范围之内,可以使处理过程更加便捷、快速。
    把有量纲表达式变换为无量纲表达式,成为纯量。经过归一化处理的数据,处于同一数量级,可以消除指标之间的量纲和量纲单位的影响,提高不同数据指标之间的可比性。 大白话:使某一个特征不会对最终的结果造成大的影响

有量纲量和无量纲量: 物理量按照其属性分为两类:1.物理量的大小与度量所选用的单位有关,称为有量纲量,例如,时间、长度、质量、速度、力、能量等。2.物理量的大小与度量所选的单位无关,称为无量纲量,例如角度、增益、两个长度之比等。

主要算法
线性转换,min-max归一化
缺点:最大值和最小值受异常点影响较大,适合传统的异常点少的场景。鲁棒性较差。
y = x’(ma - mi) + mi x’=(x-min)/(max-min)
b. 对数函数转换
y=log10(x)
c.反余切函数转换
*y=atan(x)2/PI

from sklearn.preprocessing import MinMaxScaler
d = [
    [90, 22, 32],
    [60, 23, 55],
    [75, 67, 35],
    [70, 67, 35]
]
print(d)
mm_scaler = MinMaxScaler(feature_range=(3, 5))
data = mm_scaler.fit_transform(d)
print(data)

标准化
方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。
方差是衡量源数据和期望值相差的度量值。
标准差是用来衡量一组数据的离散程度的统计量。
公式:
方差:var = ((x1-mean)^2 + (x2-mean)^2 + (x3-mean)^2))/count
标准差:o = 根号下var
y = (x-mean)/o

from sklearn.preprocessing import StandardScaler

"""
y = (x-mean)/o
"""
"""
d = [
    [90, 22, 32],
    [60, 23, 55]
]
column 1: mean = 75
        var = ((90-75)^2+(60-75)^2)/2 = 15^2 o = 15
        row 1: x = (90-75)/15 = 1
        row 2: x = (60-75)/15 = -1
"""

"""
d = [
    [90, 22, 32],
    [60, 23, 55],
    [75, 67, 35]
]
column 1: mean = 75
        var = ((90-75)^2+(60-75)^2+(75-75)^2)/3 = 2*15^2/3 o ~= 15*(2/3)
        row 1: x = (90-75)/o = 1.22
        row 2: x = (60-75)/o = -1.22
        row 3: x = (60-75)/o = 0
"""
d = [
    [90, 22, 32],
    [60, 23, 55],
    [75, 67, 35],
    # [70, 67, 35]
]
scaler = StandardScaler()
data = scaler.fit_transform(d)
print(data)
  1. 降维
    特征选择
    过滤式(Filter):VarianceThreshlod.过滤方差较小的特征
from sklearn.feature_selection import VarianceThreshold

d = [
    [90, 22, 32, 3],
    [60, 23, 55, 3],
    [75, 67, 35, 2],
    [70, 67, 35, 3],
    [2, 2, 2, 3]
]
variance = VarianceThreshold(threshold=0)
data = variance.fit_transform(d)

print(data)

嵌入式(Emedded):
包裹式(Wrapper):
主成分分析
PCA主成分分析

from sklearn.decomposition import PCA

d = [
    [90, 22, 32, 3],
    [60, 23, 55, 3],
    [75, 67, 35, 3],
    [70, 67, 35, 3],
    [2, 2, 2, 3]
]
"""
n_components: 
    decimals:0.0~1.0 数据保留率
    integer:保留特征的个数
"""
pca = PCA(n_components=0.99)
data = pca.fit_transform(d)
print(data)

最后

以上就是优秀铅笔为你收集整理的AI学习 入门的全部内容,希望文章能够帮你解决AI学习 入门所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部