本文共 5295 字,大约阅读时间需要 17 分钟。
目标值+特征值
行索引:可以称为样本
列索引:可以称为特征值
重复值在机器学习中不需要处理,
特征工程的含义: 是将原始数据转换为更好的代表预测模型的潜在问题的特征的过程,提高对未知数据的预测的准确性
特征工程的意义:直接影响预测结果
使用scikit-learn库
命令:sklearn.feature_extraction
作用: 对字典进行特征值化
类: sklearn.feature_extration.Dictvectorizer-------------vectorizer:向量化
特征抽取对文本等数据进行特征值化,把字典中的一些类别数据,分别转化成特征数字类型。
One-Hot编码,将特征转变成一组特征,数据表中,如果该条数据符合该特征,则赋值为1,否则为0
# 导入包,sklearn 特征提取 字典数字化from sklearn.feature_extraction import DictVectorizerif __name__ == '__main__': ''' 字典数据抽取 ''' # 实例化一个对象 # sparse 是一种数据格式 dict = DictVectorizer(sparse=False) dict = DictVectorizer(sparse=True) # 调用fit_transform L_city = [{ "city":"北京","temperature":100},{ "city":"上海","temperature":80},{ "city":"广州","temperature":200}] data = dict.fit_transform(L_city) print(dict.inverse_transform(data)) #[{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 80.0}, # {'city=广州': 1.0, 'temperature': 200.0}] print(dict.get_feature_names()) # ['city=上海', 'city=北京', 'city=广州', 'temperature'] print(data) #(0, 1) 1.0 #(0, 3) 100.0 #(1, 0) 1.0 #(1, 3) 80.0 #(2, 2) 1.0 #(2, 3) 200.0
对文本数据进行特征值化
类: sklearn.feature_extarction.text.CountVectorizer
CountVectorizer()
返回词频矩阵
CountVectorizer.fit_transform(x)
CountVectorizer.inverse_transform(x)
CountVectorizer.get_feature_names()
# 对文本进行特征值化def text_count(): '''文本数据抽取''' # 1. 实例化CountVectorizer text = CountVectorizer() # 2. 调用fit_transform 方法输入数据并转换 text_test = ['life is short, I like python','life is too long, I dislike python'] data = text.fit_transform(text_test) data_array = data.toarray()# 将sparse矩阵转换成为array矩阵 print(data,data_array) print(text.inverse_transform(data))# 对象.inverse_transform:将sparse矩阵转换成为原来的 # 数据格式 print(text.get_feature_names())# 统计文章中所有的词,重复的只记录一次,2,对每篇文章,在词的 # 列表里进行统计每个词出现的次数 # 对于单个英文字符不进行统计
文本特征抽取的使用场景:Count。文本分类,情感分析等
对于中文文本的分析,默认是不进行分词的
处理方法: 对中文文字进行分词,使用jieba工具,
jieba使用方法:1.import jieba
jieba.cut(要切割的字符串)
注意:返回值是一个词语生成器,注意返回值的格式转换
主要思想: 如果某个词或者短语在一篇文章中出现的概率高,并且在其它文章中很少出现,则认为词或者短语据 有很好的类别区分能力,适合用来分类。
TF-IDF作用:用以评估一个词对于一个文件集或一个语料库中的其它一份文件的重要性
类: sklearn.feature_extraction.text.TfidfVectorizer
TF-IDF作用: 用以评估一字词对于一个文件集或者一个语料库中的其中的一份文件的重要程度
类:sklearn
通过特定的统计方法,将数据转换成算法要求的数据:
实例化MinMaxScalar
通过fit_transform转换
归一化受最大值和最小值的影响较大,鲁棒性不好,一般用于数据量比较小的数据,很少使用
所以一般使用标准化
方差计算:每个数据与平均值做差,对差值求平方和并取均值
数据结构是存储组织数据的方式。
数据的种类有很多,字符串、整数、浮点数,同样的数据不同的组织方式就是数据结构。列表、字典都是数据结构
为了实现业务的各种方法和思路就是算法
算法是一种独立的存在,不依附于代码,代码只是实现算法思想的方式而已
将所有的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就放弃
1、 输入
2、 输出
3、 有穷性:有限的步骤之后结束,不会无限循环,并且每一个步骤可以在可接受的时间内完成
4、确定性
5、可行性
算法的时间效率依赖于算法执行步骤的数量,一般假定每个步骤的执行时间固定,算法的执行时间主要与执行的步骤数量有关
时间复杂度可以衡量一个算法的量级,表示一个算法随着问题规模不断变化的最主要的趋势
时间复杂度往往与大O记法一起使用
将主要关系都省略掉,最终形成一个表达式,这种方式称为daO记法
算法完成工作最少需要多少基本操作,即最优时间复杂度
最优一般不用,反应的只是最乐观理想的情况
算法完成工作最多需要多少基本步骤,即最坏时间复杂度
提供了一种保障,表名算法在此程度的算法中完成基本操作的最长时间,一般关注最坏时间复杂度
算法完成工作平局需要多少基本步骤,即平均时间复杂度
常数阶
线性阶
平方阶
对数阶
立方阶
时间复杂度越低,效率越高,排序如下
O(1)<O(logn) < O(n) < O(nlogn) < O(n2) < O(n3)
空间复杂度定义的是算法所消耗的存储空间
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量
是存储组织数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率,数据结构往往同高效的算法有关
相同的数据采用不同的数据结构存储带来的运行或者存储效率是不同的,数据结构是算法需要处理问题的载体,算法是为了解决实际问题而设计的
数据结构 + 算法 = 程序
整形:4个字节,字符:1个字节
线性结构:
表中的各个节点具有线性关系
非线性结构
什么是顺序表
链表
一体式结构
分离式结构
,元素之间的关系由它们的存储舒徐自然表示
一体式结构
分离式结构
转载地址:http://mvnws.baihongyu.com/