先来拜见一下祖师爷(祖师爷真帅)
“人工智能之父” 艾伦.图灵 图灵测试(1950)
马文·李·闵斯基(英语:Marvin Lee Minsky,1927年8月9日-2016年1月24日),科学家,专长于认知科学与人工智能领域,麻省理工学院人工智能实验室的创始人之一,著有几部人工智能和哲学方面的作品。1969年,因为在人工智能领域的贡献,获得图灵奖。
图片艺术化 GAN神经网络
这就说明了Python天下第一
开个玩笑,语言只是工具,我写Java的时候也说Java天下第一,
PHP才是世界上最好的语言
就这些书啊,我都没有看过,不过我还年轻,以后我也不会看的。
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
注:只要记住一点,离散型是区间内不可分,连续型是区间内可分
结构:特征值+目标值
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
直接影响模型的预测结果
特征抽取实例演示
from sklearn.feature_extraction.text import CountVectorizer
# 实例化CountVectorizer
vector = CountVectorizer()
# 调用fit_transform输入并转换数据
res = vector.fit_transform(["Life is short, you need python", "Life is too long, you did not need python"])
# 打印结果
print(vector.get_feature_names())
print(res.toarray())
运行结果
['did', 'is', 'life', 'long', 'need', 'not', 'python', 'short', 'too', 'you']
[[0 1 1 0 1 0 1 1 0 1]
[1 1 1 1 1 1 1 0 1 1]]
通过演示得出结论:
注:特征值化是为了计算机更好的去理解数据
sklearn.feature_extraction
作用:对字典数据进行特征值化
类:sklearn.feature_extraction.DictVectorizer
DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
DictVectorizer.inverse_transform(X)
DictVectorizer.get_feature_names()
DictVectorizer.transform(X)
流程
[{'city': '北京','temperature':100}
{'city': '上海','temperature':60}
{'city': '深圳','temperature':30}]
from sklearn.feature_extraction import DictVectorizer
def dictvec():
"""
字典数据抽取
:return: None
"""
# 实例化
dict = DictVectorizer(sparse=False)
# 调用fit_transform
data = dict.fit_transform([
{'city': '北京', 'temperature': 100},
{'city': '上海', 'temperature': 60},
{'city': '深圳', 'temperature': 30}
])
print(dict.get_feature_names())
print(dict.inverse_transform(data))
print(data)
if __name__ == "__main__":
dictvec()
运行结果
['city=上海', 'city=北京', 'city=深圳', 'temperature']
[{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 60.0}, {'city=深圳': 1.0, 'temperature': 30.0}]
[[ 0. 1. 0. 100.]
[ 1. 0. 0. 60.]
[ 0. 0. 1. 30.]]
字典数据抽取:把字典中一些类别数据,分别进行转换成特征
数组形式,有类别的这些特征,先要转换成字典数据
作用:对文本数据进行特征值化
类:sklearn.feature_extraction.text.CountVectorizer
CountVectorizer(max_df=1.0,min_df=1,…) 返回词频矩阵
CountVectorizer.fit_transform(X,y)
CountVectorizer.inverse_transform(X)
CountVectorizer.get_feature_names()
流程
["life is short,i like python",
"life is too long,i dislike python"]
from sklearn.feature_extraction.text import CountVectorizer
def countvex():
"""
对文本进行特征值化
:return: None
"""
cv = CountVectorizer()
data = cv.fit_transform(["人生 苦短,你 需要 Python", "人生 漫长,你 不需要 Python"])
# 统计所有文章当中所有的词,重复的只看做一次 词的列表
print(cv.get_feature_names())
# 对每篇文章,在词的列表里面进行统计每个词出现的次数 单个字母不统计
print(data.toarray())
return None
if __name__ == "__main__":
countvex()
['python', '不需要', '人生', '漫长', '苦短', '需要']
[[1 0 1 0 1 1]
[1 1 1 1 0 0]]
文本特种抽取:Count
文本分类、情感分析
对于单个英文字母不统计:没有分类依据
中文需要空格才能进行抽取,所以我们需要进行分词处理
这时候就需要jieba分词,如果是Python的Web项目,jieba分词配合搜索引擎还是很常用的,跟ElasticSearch的ik分词一个效果。
1、今天很残酷,明天更残酷,后天很美好,
但绝对大部分是死在明天晚上,所以每个人不要放弃今天。
2、我们看到的从很远星系来的光是在几百万年之前发出的,
这样当我们看到宇宙时,我们是在看它的过去。
3、如果只用一种方式了解某样事物,你就不会真正了解它。
了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系
from sklearn.feature_extraction.text import CountVectorizer
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():
"""
中文特征值化
:return: None
"""
c1, c2, c3 = cutword()
print(c1, c2, c3)
cv = CountVectorizer()
data = cv.fit_transform([c1, c2, c3])
print(cv.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
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]]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0oi0Nv6-1597934569545)(http://124.70.66.191/wp-content/uploads/2020/08/20200819111131.jpg)]文章类型???
这些词语可以区分出文章的类别,但是 “所以” “我们” “明天” 这些词呢?基本上每篇文章都会出现这些词吧,所以我们需要一种方式解决这个问题。这种文本特征抽取的方式叫做 TF-IDF
TF: term frequency 词的频率
IDF:逆文档频率inverse document frequency
T F = 某 个 词 在 文 章 中 出 现 的 次 数 TF = 某个词在文章中出现的次数 TF=某个词在文章中出现的次数
I D F = l o g ( 总 文 档 数 量 该 词 出 现 的 文 档 数 量 ) IDF = log(\frac{总文档数量}{该词出现的文档数量}) IDF=log(该词出现的文档数量总文档数量)
T F − I D F = T F ( 词 频 ) × I D F ( 逆 文 档 频 率 ) TF-IDF = TF(词频)\times IDF(逆文档频率) TF−IDF=TF(词频)×IDF(逆文档频率)
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
类:sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer(stop_words=None,…)
TfidfVectorizer.fit_transform(X, y)
TfidfVectorizer.inverse_transform(X)
TfidfVectorizer.get_feature_names()
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
def tfidfvec():
"""
中文特征值化
:return: None
"""
c1, c2, c3 = cutword()
print(c1, c2, c3)
tf = TfidfVectorizer()
data = tf.fit_transform([c1, c2, c3])
print(tf.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
tfidfvec()
运行结果
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/0x/2nv8y02908b38mngk5wxzvhc0000gn/T/jieba.cache
Loading model cost 0.715 seconds.
Prefix dict has been built successfully.
今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。 我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。 如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。
['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '这样']
[[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. ]]
分类机器学习算法的的重要依据
其实吧TF-IDF也是一个过时的方法,在自然语言分析里会有一些新的技术,但是这个基本的也得知道啊!
最近在做一些毛用都没有的Vue项目,纯浪费生命,影响我在机器学习的世界里当一个快乐的调包侠,her tui~ 啥也不是!
后来包里总带把伞,因为下雨了没有谁来送伞,也没有谁陪着淋雨。
不带伞的话,站也不是走也不是,像个可怜的笑话……
2020年8月20日 Macsen Chu