python学习之机器学习第一课

人工智能、机器学习、神经网络以及深度学习之前的关系
人工智能是一种抽象的概念

机器学习:

将人工智能落地应用

神经网络:

时机器学习算法中的一个,模仿大脑神经结构狗算出的算法

深度学习:

基础是神经网络,是因为神经网络的层数太少

机器学习:

机器学习就从数据中自动分析获得规律(也叫模型),利用规律对未知数据进行预测。
通俗解释:
	1、算法模型对象:特殊的对象。该对象内部已经被集成封装好了某种形式的算法(方程-->方程还没被解出)。
	2、算法模型对象的作用:
		1).预测:可以计算出一个全新未知的结果
		2).分类:可以将一个位置类别的数据归属到一个已知的类群中
	3、样本数据:
		1).特征数据:自变量
		2).标签/目标数据:因变量
	4、模型的训练:
		1).将样本数据带入到算法模型对象内部,对其方程式进行求解的过程
		2).训练好的模型:方程有了解对象的算法模型对象
	5、算法模型分类或者预测出来的结果就是方程式的解
	6、有监督学习:
		在训练模型的时候,必须使用特征数和标签数据
	7、无监督学习:
		在训练模型的时候,只需要有特征数据即可

机器学习调用网址:https://ai.baidu.com

获取数据的平台:

kaggle:数据竞赛平台
UCI数据集:是一个常用的机器学习标准测试数据集
sklearn

特征工程:

SKlean:
是python语言中的机器学习工具,包含了很多知名的机器学习算法的实现,其文档完善,容易上手
有分类模型
回归模型
聚类模型
特征工程
获取特征使用的是CountVectorizer和DictVectorizer
一般情况下都是将特征数据转换成数组
步骤为以下:
调用sklearn.feature_extraction下的DictVectorizer

字典特征提取的方法如下:

from sklearn.feature_extraction import DictVectorizer

对数据进行转换成机器语言,并进行特征提取,

# 调用相应的工具包
from sklearn.feature_extraction import DictVectorizer
# 得到一个字典
alist = [{'city':'Beijing','name':3},{'city':'SH','name':'alain'},{'city':'NewYork','name':'Bob'},{'city':'Dj','name':'yuanye'}]
# 定义得到特征数据是按照列表还是单个保存,当false时,表示以列表的形式保存,否则就是以单个数字进行保存
d = DictVectorizer(sparse=False)
# 使用函数提取想要数据的特征
b = d.fit_transform(alist)
# 以键的形式提取相应特征,输出键对
names = d.get_feature_names_out()
print(b)  # 返回的是一个矩阵
print(names)
注意输出的是OneHot编码

输出结果如下:

[[1. 0. 0. 0. 3. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0. 1. 0.]
 [0. 0. 1. 0. 0. 1. 0. 0.]
 [0. 1. 0. 0. 0. 0. 0. 1.]]
['city=Beijing' 'city=Dj' 'city=NewYork' 'city=SH' 'name' 'name=Bob'
 'name=alain' 'name=yuanye']
Process finished with exit code 0

OneHot编码

特征抽取主要目的就是对非数值型的数据进行特征值化

文本特征提取:

在进行文本特征提取时不再时候OneHot编码,需要对文本词汇分类
需要用到的api就是:
from sklearn.feature_extraction.text import CountVectorizer
需要用到的函数
fit_transform(X):X为文本或者包含文本字符串的可迭代对象,返回sparse矩阵
inverse_transform(X):X为array数组或者sparse矩阵,返回转换之前的格式数据
-get_feature_names()
-toarray():将sparse矩阵转换成数组

在对中英混的读取时,需要引入jieba包
引入jieba会报错
但是会报错这个时候需要加以下代码

jieba.setLogLevel(jieba.logging.INFO)

报错就会取消

特征预处理

虽然我们已经通过提取得到数据的特征,但是由于刚开始提取的数值比较笼统,不便于直接使用,我们需要对数据进行预处理,

无量纲化:

	通过预处理将不同的规格的数据转换成统一规格的数据,或者将不同分布的数据转换到同一分布,我们称为无量纲化
#进行方式:
	-归一化
		归一化后的数据服从正态分布
		需要使用的包以及函数:
			API:from sklearn.preprocessing import MinMaxScaler
				参数:feature_range表示缩放范围,通常使用(0,1)
				做用:是的某一个特征对最终结果不会造成很大的影响
				缺点:当数据里有异常值会对结果造成显著性影响,极大影响结果
	-标准化
		标准化就是为了剔除异常值的影响,避免了异常值极大极小时对归一化造成致命性影响
	一般先使用归一化数据,归一化效果不好使用标准化,因为归一化更简单,更明了

特征选择

含义:从特征中选择出有意对模型有帮助的特征作文最终的机器学习输入的数据
注意:
	在进行特征选择时,有三件重要的事情:跟数据提供者联系,和数据提供者沟通,和数据提供者开会
	一定要抓住给你提供数据的人,尤其理解业务和数据含义的人,可以帮助我们更好的建立模型,我们需要业务常识
特征选择的原因:
	冗余:部分特征的相关度高,消耗计算机的性能
	噪音:部分特征对预测结果有偏执影响
特征选择的实现:
	-1、人对不相关的特征进行主观舍弃
	-2、使用一些工具如:
			Filter(过滤式)
				方差过滤,通过特征本身的方差来筛选特征的类
				使用方式:
					API:
						from sklearn.feature_selection import VarianceThreshold
						会使用VarianceThreshold(threshold = X),X参数表示方差的值,如果低于X就会删除所有低于X的值,X需要人为设置,默认值为0,表示保留所有方差为非0 的特征
						但是有时候这种一步步试错的方法不好使,需要将特征选择(一步到位),留下一半特征数,那就可以设定一个让特征总数减半的方差阈值,找出特征方差的中位数,再将这个中位数作为参数threshold的值输入
						调用:np.median(data.var(axis=0).values),先获取方差的中位数
						v = VarianceThreshold(threshold=np.median(data.var(axis=0).values))再将中位数作为筛选条件
						v.fit_transfor(data)就会得到想要的特征
			Embedded(嵌入式)
			PCA降维:
				是一种分析,简化数据集的技术,也是矩阵分解算法的核心算法
				将为的纬度值就是特征的种类
			相关性分析

你可能感兴趣的:(python,学习,机器学习)