2021-02-06机器学习(上)

机器学习

人工智能----机器学习----深度学习
机器学习领域:自然语言处理、图像识别、传统预测
框架:Tensorflow、Caffe、Theano
一、机器学习
1.概念
数据中自动分析获得规律,并利用规律对未知数据进行预测
2.机器学习的数据:文件csv
mysql:1.性能瓶颈、读取速度 2.格式不太符合机器学习要求的数据格式
pandas:读取工具 numpy:释放了GIL
3.可用数据集
①kaggle特点:数据量大、真实 ②UCI特点:360个数据集,各个领域,数据量几十万 ③scikit-learn特点:数据量小、方便
4.数据的结构组成
结构:特征值+目标值
sklearn:对特征的处理提供了强大的接口
缺失值:数据转换 重复值:不需要重复去重
5.特征工程
原始数据转换为更好地代表预测模型的潜在问题的特征,从而提高了对未知数据的预测准确性
二、数据的特征抽取
1.释义:把文本、字符串转换为数据
2.字典特征抽取
作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer
DictVectorizer语法
DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回值:返回sparse矩阵
DictVectorizer.inverse _transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数数据格式
DictVectorizer.get_feature_names()
返回类别名称
DictVectorizer.transform(X)
按照原先的标准转换
3.文本特征抽取
作用:对文本数据进行特征值化
sklearn.feature_extraction.CountVectorizer
CountVectorizer语法
CountVectorizer()
返回词频矩阵
CountVectorizerfit_transform(X)
X:文本或者包含文本字符串的的可迭代对象
返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
Count Vectorizerget feature names()
返回值:单词列表

def countvec():
	cV = CountVectorizer()
	data = cv.fit_transform( ["life is is short,i like python", "life is too long","i dislike python"])
	print(cv.get_feature_names())
	print(data.toarray())
	"""
	1.统计所有文章当中所有的词,重复的只看一次	词的列表
	2.对每篇文章,在词的列表里进行统计每个词出现的项数
	3.单个词不统计
	"""
 	return None
if  __name__ == "__main__":
	countvec()

4.中文特征抽取
5.TF-IDF
Tf:term frequency:词的频率(出现的次数) idf:逆文档频率inverse document frequency
log(总文档数量/该次出现的文档数量)
log(数值):输入的数值越小,结果越小
作用:用以评估一字词对于一个文件集火一个语料库中的其中一份文件的重要程度
类:sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer语法(分类机器学习算法的重要依据)
TfidfVectorizer(stop_words=None,…)
返回词的权重矩阵
TfidfVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
TfidfVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
TfidfVectorizer.get_feature_names()
返回值:单词列表
三、数据的特征预处理
1.特征处理的定义
通过特定的统计方法(数学方法)将数据转换成算法要求的数据
2.数据类型
数值型数据:标准缩放:1.归一化 2.标准化
类别型数据:one-hot编码
时间类型:时间的切分
3.归一化
特点:通过对原始数据进行变换把数据映射到默认为(0.1)之间
公式:X’= (X - min)/(max -min)
公式:X"=X’* (mх -mi) + mi
注:作用于每一列,max为一列的最大值,min 为一列的的最小值,那么X”为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0
归一化总结:注意在特定场景下最大值最小值是变化的,而且最大值与最小值 非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
4.标准化
特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
公式:X’=x-mean/a
注:作用于每一列, mean为平均值,a为标准差var成为方差,var =(x1-mean)^2+(x2-mean) ^2+…/n(每个特征的样本数, a=根号var,其中,方差(考量数据的稳
定性)
标准化总结:在已有样本足够多的情况下比较稳定,适合现代嘈嘈杂大数据场景。
5.两者的比较
对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
6.StandardScaler语法
StandardScaler(…)
处理之后每列来说所有数据都聚集在均值0附近,标准差为1
StandardScaler.fit_transform(X)
X:numpy array格式的数提[n_samples,n_features]
返回值:转换后的形状相同的 array
StandardScaler.mean_
原始数据中每列特征的平均值
StandardScaler.std_
原始数据每列特征的方差
7.缺失值处理方法
1.删除:如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列
插补:可以通过缺失值每行或者每列的平均值、中位数来填充
2.sklearn缺失值API:sklearn.preprocessing.Imputer
四、特征选择
1.原因:
冗余:部分特征的相关度高,容易消耗计算性能
噪声:部分特征对预测结果有影响
2.定义
单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数背定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法 (三大武器): Filteg(过滤式):Variance Threshold
Embedded( 嵌入式):正则化、决策树
Wrapper(包裏式)
3.数据类型
离散型数据:都是整数,不能细分,也不能提高精确度
连续型数据:在某个范围内任取一数,非整数含小数部分
PS:离散型是区间不可分,连续型是区间内可分
4. MinMaxScaler语法
MinMaxScalar(feature_range=(0,1).)
每个特征缩放到给定范围(默认[0.1])
MinMaxScalar.fit_transform(X)
X:numpy aray格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
五、机器学习算法
1.分类
1.监督学习(预测)特征值+目标值
有标准答案
分类(离散型):近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
回归(连续型):线性回归、岭回归
2.无监督学习特征值 1000个样本
无标准答案
聚类:k-means
2.分类的概念
分类是监督学习的一个核心问题,在监督学习中,当输出变量取有限个离散值时,预测问题变成为分类问题。最基础的便是二分类间题,即判断是非,从两个类别中选择一个作为预测结果
3.建立模型:根据数据类型划分应用种类
①原始数据明确问题做什么
②数据的基本处理:pd去处理数据(缺失值,合并表。。)
③特征工程(特征进行处理)(重要)
分类、回归:
模型:算法+数据
④找到合适算法去进行预测
⑤模型的评估,判定效果------>没有合格------>01、换算法参数 02、特征工程
没有合格
⑥上线使用 以APl形式提供
4.获取数据集返回的类型
load* 和fetch返回的数据类型datasets.base.Bunch(字典格式)
data:特征数据数组,是[n_ samples * n_features]的二维numpy.ndaray 数组
target:标签数组, 是n_samples 的一维 numpy.ndarray 数组
DESCR:数据描述
feature_names: 特征名, 新闻数据、手写数字、回归数据集没有
target_names:标签名
5.scikit-learn数握集API介绍
sklearn.datasets
加载获取流行数据集
datasets load_
()
获取小规模数据集,数据包含在 datasets里
datasets feten_*(data home=None)
获取大规模数据集,需要从网络上下载,
数的第一个参数是data home,表示数据集
下载的目录默认是“/scikit_learn data/
6.数据集进行分割
sklearn.model_selection.train_test_split(*arays, **options)
x:数据集的特征值
y:数据集的标签值
test_size测试集的大小,一般为float
random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
return 训练集特征值,测试集特征值,训练标签,测试标签(默认随机取)
用于分类的大数据集
sklearn.datasets.fetch 20newsgroups(data home=None,subset=‘train’)
subset: ‘train’或者’test’,‘all’, 可选,选择要加载的数据集,训练集的“训练”,测试集的“测试”,两者的“全部”
datasets.clear _data_home(data_home=None)
清除目录下的数据
sklearn数据集划分API
sklearn.model _selection.train_test_split
sklearn主成分分析API:sklearn.decomposition
PCA是什么?
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能压缩原数据的维数,损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量
PCA:特征数量达到上百的时候,考虑数据的简化(数据也会改变,数量会减少)
PCA语法
PCA(n_components=None)
将数据分解为较低维数空间
PCA.fit_transform(X)
X:numpy aray格式的数据[n_samples,n_fatures]
返回值:转换后指定维度的array
n_components:小数0~1 90% 90-95%
整数 减少到的特征数量

instacart:把用户分成几个类别
合并到一张表中:pd.merge()
交叉表(特殊的分组工具):pd.crosstab()

总结:看着视频学了一星期的机器学习,学了一部分之后,感觉只学了浅层知识,理解不透彻。可能最近太浮躁了没静下心来钻研,接下来我会更加努力的学习!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值